feat: Blit LOD framebuffer to MC's rendertarget framebuffer
Currently non-functional, since it renders black.
This commit is contained in:
+3
-2
@@ -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
|
||||
|
||||
+12
-12
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user