diff --git a/engine/src/core/com/jme3/post/FilterPostProcessor.java b/engine/src/core/com/jme3/post/FilterPostProcessor.java index e4bb26c55..cb2b50fa6 100644 --- a/engine/src/core/com/jme3/post/FilterPostProcessor.java +++ b/engine/src/core/com/jme3/post/FilterPostProcessor.java @@ -40,7 +40,7 @@ import com.jme3.export.InputCapsule; import com.jme3.export.OutputCapsule; import com.jme3.export.Savable; import com.jme3.material.Material; -import com.jme3.post.filters.TranslucentBucketFilter; +import com.jme3.material.RenderState; import com.jme3.renderer.Camera; import com.jme3.renderer.Caps; import com.jme3.renderer.RenderManager; @@ -164,9 +164,12 @@ public class FilterPostProcessor implements SceneProcessor, Savable { filterCam.resize(buff.getWidth(), buff.getHeight(), true); fsQuad.setPosition(0, 0); } + if (mat.getAdditionalRenderState().isDepthWrite()) { + mat.getAdditionalRenderState().setDepthTest(false); mat.getAdditionalRenderState().setDepthWrite(false); } + fsQuad.setMaterial(mat); fsQuad.updateGeometricState(); @@ -174,6 +177,10 @@ public class FilterPostProcessor implements SceneProcessor, Savable { r.setFrameBuffer(buff); r.clearBuffers(false, true, true); renderManager.renderGeometry(fsQuad); + + //re applying default render state at the end of the render + // to avoid depth write issues, MUST BE A BETTER WAY + r.applyRenderState(RenderState.DEFAULT); } public boolean isInitialized() { diff --git a/engine/src/core/com/jme3/renderer/RenderContext.java b/engine/src/core/com/jme3/renderer/RenderContext.java index 34834a1a1..57071c4a6 100644 --- a/engine/src/core/com/jme3/renderer/RenderContext.java +++ b/engine/src/core/com/jme3/renderer/RenderContext.java @@ -54,7 +54,7 @@ public class RenderContext { public boolean alphaTestEnabled = false; - public boolean depthWriteEnabled = false; + public boolean depthWriteEnabled = true; public boolean colorWriteEnabled = true; diff --git a/engine/src/core/com/jme3/renderer/RenderManager.java b/engine/src/core/com/jme3/renderer/RenderManager.java index 54108e7da..b353c4786 100644 --- a/engine/src/core/com/jme3/renderer/RenderManager.java +++ b/engine/src/core/com/jme3/renderer/RenderManager.java @@ -423,8 +423,6 @@ public class RenderManager { } else { g.getMaterial().render(g, this); } - //re applying default render state at the end of the render to avoid depth write issues, MUST BE A BETTER WAY - renderer.applyRenderState(RenderState.DEFAULT); } public void renderGeometryList(GeometryList gl) { diff --git a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java index 54444a19e..55deba25e 100644 --- a/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java +++ b/engine/src/lwjgl-ogl/com/jme3/renderer/lwjgl/LwjglRenderer.java @@ -548,6 +548,7 @@ public class LwjglRenderer implements Renderer { context.polyOffsetUnits = 0; } } + if (state.getFaceCullMode() != context.cullMode) { if (state.getFaceCullMode() == RenderState.FaceCullMode.Off) { glDisable(GL_CULL_FACE); diff --git a/engine/src/test/jme3test/post/TestDepthOfField.java b/engine/src/test/jme3test/post/TestDepthOfField.java index 64d7afba9..2cf435624 100644 --- a/engine/src/test/jme3test/post/TestDepthOfField.java +++ b/engine/src/test/jme3test/post/TestDepthOfField.java @@ -161,7 +161,7 @@ public class TestDepthOfField extends SimpleApplication { rock.setWrap(WrapMode.Repeat); matRock.setTexture("DiffuseMap_2", rock); matRock.setFloat("DiffuseMap_2_scale", 128); - Texture normalMap0 = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.png"); + Texture normalMap0 = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.jpg"); normalMap0.setWrap(WrapMode.Repeat); Texture normalMap1 = assetManager.loadTexture("Textures/Terrain/splat/dirt_normal.png"); normalMap1.setWrap(WrapMode.Repeat); diff --git a/engine/src/test/jme3test/post/TestRenderToMemory.java b/engine/src/test/jme3test/post/TestRenderToMemory.java index c7c5ceb03..4a97844ff 100644 --- a/engine/src/test/jme3test/post/TestRenderToMemory.java +++ b/engine/src/test/jme3test/post/TestRenderToMemory.java @@ -59,8 +59,6 @@ import java.awt.Graphics2D; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.BufferedImage; -import java.awt.image.DataBufferByte; -import java.awt.image.WritableRaster; import java.nio.ByteBuffer; import javax.swing.JFrame; import javax.swing.JPanel;