2
0
David Rose 23 жил өмнө
parent
commit
e1102d85c5

+ 9 - 3
panda/src/display/graphicsStateGuardian.cxx

@@ -566,7 +566,8 @@ begin_decal_base_first() {
   static CPT(RenderState) decal_base_first;
   static CPT(RenderState) decal_base_first;
   if (decal_base_first == (const RenderState *)NULL) {
   if (decal_base_first == (const RenderState *)NULL) {
     decal_base_first = RenderState::make
     decal_base_first = RenderState::make
-      (DepthWriteAttrib::make(DepthWriteAttrib::M_off));
+      (DepthWriteAttrib::make(DepthWriteAttrib::M_off),
+       RenderState::get_max_priority());
   }
   }
   return decal_base_first;
   return decal_base_first;
 }
 }
@@ -588,7 +589,8 @@ begin_decal_nested() {
   static CPT(RenderState) decal_nested;
   static CPT(RenderState) decal_nested;
   if (decal_nested == (const RenderState *)NULL) {
   if (decal_nested == (const RenderState *)NULL) {
     decal_nested = RenderState::make
     decal_nested = RenderState::make
-      (DepthWriteAttrib::make(DepthWriteAttrib::M_off));
+      (DepthWriteAttrib::make(DepthWriteAttrib::M_off),
+       RenderState::get_max_priority());
   }
   }
   return decal_nested;
   return decal_nested;
 }
 }
@@ -617,7 +619,11 @@ begin_decal_base_second() {
   if (decal_base_second == (const RenderState *)NULL) {
   if (decal_base_second == (const RenderState *)NULL) {
     decal_base_second = RenderState::make
     decal_base_second = RenderState::make
       (ColorWriteAttrib::make(ColorWriteAttrib::M_off),
       (ColorWriteAttrib::make(ColorWriteAttrib::M_off),
-       TextureAttrib::make_off());
+       // On reflection, we need to leave texturing on so the alpha
+       // test mechanism can work (if it is enabled, e.g. we are
+       // rendering an object with M_dual transparency).
+       //       TextureAttrib::make_off(),
+       RenderState::get_max_priority());
   }
   }
   return decal_base_second;
   return decal_base_second;
 }
 }