diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/gui/OpenGLConfigScreen.java b/core/src/main/java/com/seibel/distanthorizons/core/config/gui/OpenGLConfigScreen.java index 0ff87833e..19595d6c7 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/gui/OpenGLConfigScreen.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/gui/OpenGLConfigScreen.java @@ -119,7 +119,7 @@ public class OpenGLConfigScreen extends AbstractScreen GL32.glDrawArrays(GL32.GL_TRIANGLE_FAN, 0, 4); GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT); - state.restore(); + //state.restore(MC_RENDER.getTargetFrameBuffer()); } @Override diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java index 9c6a07950..e025e4ded 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/glObject/GLState.java @@ -124,28 +124,11 @@ public class GLState public void restoreFrameBuffer() { - // explicitly unbinding the frame buffer is necessary to prevent GL_CLEAR calls from hitting the wrong buffer - //GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, 0); - - // Depth buffer - this.depthBuffer = GL32.glGenRenderbuffers(); - GL32.glBindRenderbuffer(GL32.GL_RENDERBUFFER, this.depthBuffer); - GL32.glRenderbufferStorage(GL32.GL_RENDERBUFFER, GL32.GL_DEPTH_COMPONENT, 1920, 1080); - - // Framebuffer - GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, this.fbo[0]); - //GL32.glFramebufferTexture(GL32.GL_FRAMEBUFFER, GL32.GL_COLOR_ATTACHMENT0, this.texture0, 0); - - //for (int i = 0; i < FBO_MAX; i++) - //{ - // int buffer = this.fbo[i]; - // if (i > 0 && buffer == 0) break; - // - // GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, GL32.glIsFramebuffer(buffer) ? buffer : 0); - //} + GL32.glBindTexture(GL32.GL_TEXTURE_2D, 0); + GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, 0); } - public void restore() + public void restore(int minecraftFramebufferId) { this.restoreFrameBuffer(); @@ -158,19 +141,20 @@ public class GLState GL32.glDisable(GL32.GL_BLEND); } - GL32.glActiveTexture(GL32.GL_TEXTURE0); - GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture0) ? this.texture0 : 0); - - GL32.glActiveTexture(GL32.GL_TEXTURE1); - GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture1) ? this.texture1 : 0); - - GL32.glActiveTexture(this.activeTextureNumber); + //GL32.glActiveTexture(GL32.GL_TEXTURE0); + //GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture0) ? this.texture0 : 0); + // + //GL32.glActiveTexture(GL32.GL_TEXTURE1); + //GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture1) ? this.texture1 : 0); + + //GL32.glActiveTexture(this.activeTextureNumber); GL32.glBindTexture(GL32.GL_TEXTURE_2D, GL32.glIsTexture(this.texture2D) ? this.texture2D : 0); - - GL32.glBindVertexArray(GL32.glIsVertexArray(this.vao) ? this.vao : 0); - GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, GL32.glIsBuffer(this.vbo) ? this.vbo : 0); - GL32.glBindBuffer(GL32.GL_ELEMENT_ARRAY_BUFFER, GL32.glIsBuffer(this.ebo) ? this.ebo : 0); - GL32.glUseProgram(GL32.glIsProgram(this.program) ? this.program : 0); + + GL32.glBindVertexArray(0); + GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, minecraftFramebufferId); + //GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, GL32.glIsBuffer(this.vbo) ? this.vbo : 0); + //GL32.glBindBuffer(GL32.GL_ELEMENT_ARRAY_BUFFER, GL32.glIsBuffer(this.ebo) ? this.ebo : 0); + //GL32.glUseProgram(GL32.glIsProgram(this.program) ? this.program : 0); //GL32.glDepthMask(this.writeToDepthBuffer); //GL32.glBlendFunc(this.blendSrcColor, this.blendDstColor); diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java index 8b8396237..2491f3705 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/DebugRenderer.java @@ -228,7 +228,7 @@ public class DebugRenderer } - glState.restore(); + glState.restore(MC_RENDER.getTargetFrameBuffer()); } public void renderBox(Box box) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java index cf750745e..c18ad3909 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderer.java @@ -233,12 +233,12 @@ public class LodRenderer - // Get DH's GL state + // Save Minecraft's GL state so it can be restored at the end of LOD rendering LagSpikeCatcher drawSaveGLState = new LagSpikeCatcher(); - //GLState minecraftGlState = new GLState(); + GLState minecraftGlState = new GLState(); if (ENABLE_DUMP_GL_STATE) { - //tickLogger.debug("Saving GL state: " + minecraftGlState); + tickLogger.debug("Saving GL state: " + minecraftGlState); } drawSaveGLState.end("drawSaveGLState"); @@ -299,8 +299,6 @@ public class LodRenderer this.shaderProgram.bind(); } - GL32.glActiveTexture(GL32.GL_TEXTURE0); - /*---------Get required data--------*/ int vanillaBlockRenderedDistance = MC_RENDER.getRenderDistance() * LodUtil.CHUNK_WIDTH; //Mat4f modelViewProjectionMatrix = RenderUtil.createCombinedModelViewProjectionMatrix(baseProjectionMatrix, baseModelViewMatrix, partialTicks); @@ -379,9 +377,6 @@ public class LodRenderer this.quadIBO.unbind(); } - GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, 0); - GL32.glViewport(0,0, MC_RENDER.getTargetFrameBufferViewportWidth(), MC_RENDER.getTargetFrameBufferViewportHeight()); - this.shaderProgram.unbind(); if (Config.Client.Advanced.Debugging.DebugWireframe.enableRendering.get()) @@ -394,7 +389,11 @@ public class LodRenderer //GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT); - //minecraftGlState.restore(); + //GL32.glBindTexture(GL32.GL_TEXTURE_2D, 0); + //GL32.glBindBuffer(GL32.GL_ARRAY_BUFFER, 0); + //GL32.glViewport(0,0, MC_RENDER.getTargetFrameBufferViewportWidth(), MC_RENDER.getTargetFrameBufferViewportHeight()); + + minecraftGlState.restore(MC_RENDER.getTargetFrameBuffer()); drawCleanup.end("LodDrawCleanup"); // end of internal LOD profiling diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java index 6b5e1d078..d05e1c702 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/SSAORenderer.java @@ -114,7 +114,7 @@ public class SSAORenderer SSAOApplyShader.INSTANCE.BufferTexture = this.ssaoTexture; SSAOApplyShader.INSTANCE.render(partialTicks); - state.restore(); + state.restore(MC_RENDER.getTargetFrameBuffer()); } public void free() diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java index fd91d5dfa..dbc25a89d 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/TestRenderer.java @@ -136,7 +136,7 @@ public class TestRenderer GL32.glDrawArrays(GL32.GL_TRIANGLE_FAN, 0, 4); GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT); - state.restore(); + state.restore(MC_RENDER.getTargetFrameBuffer()); spamLogger.incLogTries(); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DarkShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DarkShader.java index 0e9341faa..f61b0171a 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DarkShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/DarkShader.java @@ -58,6 +58,6 @@ public class DarkShader extends AbstractShaderRenderer ScreenQuad.INSTANCE.render(); - state.restore(); + state.restore(MC_RENDER.getTargetFrameBuffer()); } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java index d66b06eb8..770ac5212 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/shaders/FogShader.java @@ -158,6 +158,6 @@ public class FogShader extends AbstractShaderRenderer ScreenQuad.INSTANCE.render(); - state.restore(); + state.restore(MC_RENDER.getTargetFrameBuffer()); } }