Просмотр исходного кода

Fix of the one parameter of shadows render. (#688)

* fixed applying the render back faces shadows option during creating a shadow filter.
Alexandr Brui 8 лет назад
Родитель
Сommit
10bc250db7

+ 10 - 13
jme3-core/src/main/java/com/jme3/shadow/AbstractShadowRenderer.java

@@ -32,11 +32,7 @@
 package com.jme3.shadow;
 
 import com.jme3.asset.AssetManager;
-import com.jme3.export.InputCapsule;
-import com.jme3.export.JmeExporter;
-import com.jme3.export.JmeImporter;
-import com.jme3.export.OutputCapsule;
-import com.jme3.export.Savable;
+import com.jme3.export.*;
 import com.jme3.material.Material;
 import com.jme3.material.RenderState;
 import com.jme3.math.ColorRGBA;
@@ -99,7 +95,7 @@ public abstract class AbstractShadowRenderer implements SceneProcessor, Savable,
     protected CompareMode shadowCompareMode = CompareMode.Hardware;
     protected Picture[] dispPic;
     protected RenderState forcedRenderState = new RenderState();
-    protected Boolean renderBackFacesShadows = true;
+    protected boolean renderBackFacesShadows = true;
     protected AppProfiler prof;
 
     /**
@@ -192,6 +188,7 @@ public abstract class AbstractShadowRenderer implements SceneProcessor, Savable,
         setEdgeFilteringMode(edgeFilteringMode);
         setShadowIntensity(shadowIntensity);
         initForcedRenderState();
+        setRenderBackFacesShadows(isRenderBackFacesShadows());
     }
 
     protected void initForcedRenderState() {
@@ -558,19 +555,20 @@ public abstract class AbstractShadowRenderer implements SceneProcessor, Savable,
             for (int j = 0; j < nbShadowMaps; j++) {
                 mat.setMatrix4(lightViewStringCache[j], lightViewProjectionsMatrices[j]);
             }
+
             for (int j = 0; j < nbShadowMaps; j++) {
                 mat.setTexture(shadowMapStringCache[j], shadowMaps[j]);
             }
+
             mat.setBoolean("HardwareShadows", shadowCompareMode == CompareMode.Hardware);
             mat.setInt("FilterMode", edgeFilteringMode.getMaterialParamValue());
             mat.setFloat("PCFEdge", edgesThickness);
             mat.setFloat("ShadowIntensity", shadowIntensity);
+            mat.setBoolean("BackfaceShadows", renderBackFacesShadows);
+
             if (fadeInfo != null) {
                mat.setVector2("FadeInfo", fadeInfo);
             }
-            if(renderBackFacesShadows != null){
-                mat.setBoolean("BackfaceShadows", renderBackFacesShadows);
-            }
 
             setMaterialParameters(mat);
         }
@@ -610,9 +608,7 @@ public abstract class AbstractShadowRenderer implements SceneProcessor, Savable,
         if (fadeInfo != null) {
             postshadowMat.setVector2("FadeInfo", fadeInfo);
         }
-        if(renderBackFacesShadows != null){
-            postshadowMat.setBoolean("BackfaceShadows", renderBackFacesShadows);
-        }
+        postshadowMat.setBoolean("BackfaceShadows", renderBackFacesShadows);
     }
     
     /**
@@ -788,10 +784,11 @@ public abstract class AbstractShadowRenderer implements SceneProcessor, Savable,
 
     /**
      * if this processor renders back faces shadows
+     *
      * @return true if this processor renders back faces shadows
      */
     public boolean isRenderBackFacesShadows() {
-        return renderBackFacesShadows != null?renderBackFacesShadows:false;
+        return renderBackFacesShadows;
     }
 
     @Override

+ 8 - 15
jme3-vr/src/main/java/com/jme3/shadow/AbstractShadowRendererVR.java

@@ -33,11 +33,7 @@ package com.jme3.shadow;
  */
 
 import com.jme3.asset.AssetManager;
-import com.jme3.export.InputCapsule;
-import com.jme3.export.JmeExporter;
-import com.jme3.export.JmeImporter;
-import com.jme3.export.OutputCapsule;
-import com.jme3.export.Savable;
+import com.jme3.export.*;
 import com.jme3.material.Material;
 import com.jme3.material.RenderState;
 import com.jme3.math.ColorRGBA;
@@ -57,8 +53,6 @@ import com.jme3.renderer.queue.RenderQueue.ShadowMode;
 import com.jme3.scene.Geometry;
 import com.jme3.scene.Spatial;
 import com.jme3.scene.debug.WireFrustum;
-import com.jme3.shadow.CompareMode;
-import com.jme3.shadow.EdgeFilteringMode;
 import com.jme3.texture.FrameBuffer;
 import com.jme3.texture.Image.Format;
 import com.jme3.texture.Texture.MagFilter;
@@ -99,7 +93,7 @@ public abstract class AbstractShadowRendererVR implements SceneProcessor, Savabl
     protected CompareMode shadowCompareMode = CompareMode.Hardware;
     protected Picture[] dispPic;
     protected RenderState forcedRenderState = new RenderState();
-    protected Boolean renderBackFacesShadows;
+    protected boolean renderBackFacesShadows;
 
     protected AppProfiler profiler = null;
     
@@ -193,6 +187,7 @@ public abstract class AbstractShadowRendererVR implements SceneProcessor, Savabl
         setEdgeFilteringMode(edgeFilteringMode);
         setShadowIntensity(shadowIntensity);
         initForcedRenderState();
+        setRenderBackFacesShadows(isRenderBackFacesShadows());
     }
 
     protected void initForcedRenderState() {
@@ -572,12 +567,11 @@ public abstract class AbstractShadowRendererVR implements SceneProcessor, Savabl
             mat.setInt("FilterMode", edgeFilteringMode.getMaterialParamValue());
             mat.setFloat("PCFEdge", edgesThickness);
             mat.setFloat("ShadowIntensity", shadowIntensity);
+            mat.setBoolean("BackfaceShadows", renderBackFacesShadows);
+
             if (fadeInfo != null) {
                mat.setVector2("FadeInfo", fadeInfo);
             }
-            if(renderBackFacesShadows != null){
-                mat.setBoolean("BackfaceShadows", renderBackFacesShadows);
-            }
 
             setMaterialParameters(mat);
         }
@@ -617,9 +611,7 @@ public abstract class AbstractShadowRendererVR implements SceneProcessor, Savabl
         if (fadeInfo != null) {
             postshadowMat.setVector2("FadeInfo", fadeInfo);
         }
-        if(renderBackFacesShadows != null){
-            postshadowMat.setBoolean("BackfaceShadows", renderBackFacesShadows);
-        }
+        postshadowMat.setBoolean("BackfaceShadows", renderBackFacesShadows);
     }
     
     /**
@@ -800,10 +792,11 @@ public abstract class AbstractShadowRendererVR implements SceneProcessor, Savabl
 
     /**
      * if this processor renders back faces shadows
+     *
      * @return true if this processor renders back faces shadows
      */
     public boolean isRenderBackFacesShadows() {
-        return renderBackFacesShadows != null?renderBackFacesShadows:false;
+        return renderBackFacesShadows;
     }
 
     /**