diff --git a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderProgram.java b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderProgram.java index 90d07b631..19d43ed23 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderProgram.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/render/renderer/LodRenderProgram.java @@ -30,6 +30,7 @@ import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.VertexAtt import com.seibel.distanthorizons.core.render.glObject.vertexAttribute.VertexPointer; import com.seibel.distanthorizons.core.util.LodUtil; import com.seibel.distanthorizons.core.render.fog.LodFogConfig; +import com.seibel.distanthorizons.core.util.RenderUtil; import com.seibel.distanthorizons.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.distanthorizons.coreapi.util.math.Mat4f; import com.seibel.distanthorizons.coreapi.util.math.Vec3f; @@ -41,7 +42,7 @@ public class LodRenderProgram extends ShaderProgram public static final String VERTEX_CURVE_SHADER_PATH = "shaders/curve.vert"; public static final String FRAGMENT_SHADER_PATH = "shaders/flat_shaded.frag"; private static final IVersionConstants VERSION_CONSTANTS = SingletonInjector.INSTANCE.get(IVersionConstants.class); - private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class); + //private static final IMinecraftRenderWrapper MC_RENDER = SingletonInjector.INSTANCE.get(IMinecraftRenderWrapper.class); public final AbstractVertexAttribute vao; @@ -123,10 +124,6 @@ public class LodRenderProgram extends ShaderProgram if (earthRadiusUniform != -1) setUniform(earthRadiusUniform, /*6371KM*/ 6371000.0f / fogConfig.earthCurveRatio); - // Fog/Clip Uniforms - float vanillaBlockRenderedDistance = ((float)MC_RENDER.getRenderDistance() - 0.5f) * LodUtil.CHUNK_WIDTH; - setUniform(clipDistanceUniform, vanillaBlockRenderedDistance); - // Noise Uniforms setUniform(noiseEnabledUniform, fogConfig.noiseEnable); setUniform(noiseStepsUniform, fogConfig.noiseSteps); @@ -175,10 +172,10 @@ public class LodRenderProgram extends ShaderProgram vao.unbindBuffersFromAllBindingPoint(); } - public void fillUniformData(Mat4f combinedMatrix, int lightmapBindPoint, int worldYOffset, int vanillaDrawDistance) + public void fillUniformData(Mat4f combinedMatrix, int lightmapBindPoint, int worldYOffset, float partialTicks) { super.bind(); - vanillaDrawDistance += 32; // Give it a 2 chunk boundary for near fog. + //vanillaDrawDistance += 32; // Give it a 2 chunk boundary for near fog. // uniforms setUniform(combinedMatUniform, combinedMatrix); setUniform(mircoOffsetUniform, 0.01f); // 0.01 block offset @@ -191,6 +188,10 @@ public class LodRenderProgram extends ShaderProgram // Debug setUniform(whiteWorldUniform, Config.Client.Advanced.Debugging.enableWhiteWorld.get()); + // Fog/Clip Uniforms + //float vanillaBlockRenderedDistance = ((float)MC_RENDER.getRenderDistance() - 0.5f) * LodUtil.CHUNK_WIDTH; + float dhNearClipDistance = RenderUtil.getNearClipPlaneDistanceInBlocks(partialTicks); + setUniform(clipDistanceUniform, dhNearClipDistance); } public void setModelPos(Vec3f modelPos) 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 d8c8af92c..1f2b4633f 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 @@ -365,7 +365,7 @@ public class LodRenderer } /*---------Get required data--------*/ - int vanillaBlockRenderedDistance = MC_RENDER.getRenderDistance() * LodUtil.CHUNK_WIDTH; + //int vanillaBlockRenderedDistance = MC_RENDER.getRenderDistance() * LodUtil.CHUNK_WIDTH; //Mat4f modelViewProjectionMatrix = RenderUtil.createCombinedModelViewProjectionMatrix(baseProjectionMatrix, baseModelViewMatrix, partialTicks); Mat4f projectionMatrix = RenderUtil.createLodProjectionMatrix(baseProjectionMatrix, partialTicks); @@ -375,7 +375,7 @@ public class LodRenderer /*---------Fill uniform data--------*/ this.shaderProgram.fillUniformData(modelViewProjectionMatrix, /*Light map = GL_TEXTURE0*/ 0, - MC.getWrappedClientLevel().getMinHeight(), vanillaBlockRenderedDistance); + MC.getWrappedClientLevel().getMinHeight(), partialTicks); lightmap.bind(); if (ENABLE_IBO) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/util/RenderUtil.java b/core/src/main/java/com/seibel/distanthorizons/core/util/RenderUtil.java index ed351f84c..060ed38bd 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/util/RenderUtil.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/util/RenderUtil.java @@ -152,7 +152,7 @@ public class RenderUtil // Set new far and near clip plane values. lodProj.setClipPlanes( - getNearClipPlaneDistanceInBlocks(partialTicks), + 16f, (float) ((farPlaneDistanceInBlocks + LodUtil.REGION_WIDTH) * Math.sqrt(2))); return lodProj;