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

* fixed applying the render back faces shadows option during creating a shadow filter.
fix-456
Alexandr Brui 8 years ago committed by Rémy Bouquet
parent b21cff5cfa
commit 10bc250db7
  1. 21
      jme3-core/src/main/java/com/jme3/shadow/AbstractShadowRenderer.java
  2. 21
      jme3-vr/src/main/java/com/jme3/shadow/AbstractShadowRendererVR.java

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

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

Loading…
Cancel
Save