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 19595d6c7..7f9b82011 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 @@ -20,11 +20,13 @@ package com.seibel.distanthorizons.core.config.gui; import com.seibel.distanthorizons.api.enums.config.EGpuUploadMethod; +import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; import com.seibel.distanthorizons.core.render.glObject.GLProxy; import com.seibel.distanthorizons.core.render.glObject.GLState; import com.seibel.distanthorizons.core.render.glObject.buffer.GLVertexBuffer; import com.seibel.distanthorizons.core.render.glObject.shader.ShaderProgram; import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.VertexAttribute; +import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import org.lwjgl.opengl.GL32; import java.nio.ByteBuffer; @@ -92,7 +94,6 @@ public class OpenGLConfigScreen extends AbstractScreen System.out.println("Updated config screen with the delta of " + delta); GLState state = new GLState(); -// GL32.glBindFramebuffer(GL32.GL_FRAMEBUFFER, MC_RENDER.getTargetFrameBuffer()); GL32.glViewport(0, 0, width, height); GL32.glPolygonMode(GL32.GL_FRONT_AND_BACK, GL32.GL_FILL); GL32.glDisable(GL32.GL_CULL_FACE); @@ -119,7 +120,7 @@ public class OpenGLConfigScreen extends AbstractScreen GL32.glDrawArrays(GL32.GL_TRIANGLE_FAN, 0, 4); GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT); - //state.restore(MC_RENDER.getTargetFrameBuffer()); + state.restore(SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class).getTargetFrameBuffer()); } @Override 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 c18ad3909..1a6361c7d 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 @@ -231,8 +231,6 @@ public class LodRenderer return; } - - // Save Minecraft's GL state so it can be restored at the end of LOD rendering LagSpikeCatcher drawSaveGLState = new LagSpikeCatcher(); GLState minecraftGlState = new GLState(); @@ -243,6 +241,7 @@ public class LodRenderer drawSaveGLState.end("drawSaveGLState"); + //===================// // draw params setup // //===================// @@ -270,13 +269,12 @@ public class LodRenderer GL32.glDepthFunc(GL32.GL_LESS); - transparencyEnabled = Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled; fakeOceanFloor = Config.Client.Advanced.Graphics.Quality.transparency.get().fakeTransparencyEnabled; GL32.glDisable(GL32.GL_BLEND); // We render opaque first, then transparent GL32.glDepthMask(true); - //GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT); + /*---------Bind required objects--------*/ // Setup LodRenderProgram and the LightmapTexture if it has not yet been done @@ -346,7 +344,7 @@ public class LodRenderer FogShader.INSTANCE.setModelViewProjectionMatrix(modelViewProjectionMatrix); //FogShader.INSTANCE.render(partialTicks); - // DarkShader.INSTANCE.render(partialTicks); // A test shader to make the world darker + //DarkShader.INSTANCE.render(partialTicks); // A test shader to make the world darker if (Config.Client.Advanced.Graphics.Quality.transparency.get().transparencyEnabled) @@ -364,6 +362,14 @@ public class LodRenderer drawLagSpikeCatcher.end("LodDraw"); + // Blit the LOD framebuffer onto Minecraft's framebuffer + GL32.glBindFramebuffer(GL32.GL_READ_FRAMEBUFFER, framebufferId); + GL32.glBindFramebuffer(GL32.GL_DRAW_FRAMEBUFFER, MC_RENDER.getTargetFrameBuffer()); + GL32.glBlitFramebuffer(0, 0, MC_RENDER.getScreenWidth(), MC_RENDER.getScreenHeight(), + 0, 0, MC_RENDER.getScreenWidth(), MC_RENDER.getScreenHeight(), + GL32.GL_COLOR_BUFFER_BIT, + GL32.GL_NEAREST); + //================// // render cleanup // @@ -387,13 +393,7 @@ public class LodRenderer profiler.popPush("LOD cleanup"); } - //GL32.glClear(GL32.GL_DEPTH_BUFFER_BIT); - - //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()); + //minecraftGlState.restore(MC_RENDER.getTargetFrameBuffer()); drawCleanup.end("LodDrawCleanup"); // end of internal LOD profiling