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 5abae934e..959077b85 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 @@ -49,7 +49,7 @@ public class FogShader extends AbstractShaderRenderer // because disabling fog can cause the GLSL to optimize out most (if not all) uniforms - this.gModelViewProjectionUniform = this.shader.tryGetUniformLocation("gMvmProj"); + this.gModelViewProjectionUniform = this.shader.tryGetUniformLocation("gMvmProjInv"); this.gDepthMapUniform = this.shader.tryGetUniformLocation("gDepthMap"); // Fog uniforms @@ -115,13 +115,13 @@ public class FogShader extends AbstractShaderRenderer return fogColor; } + private Color getSpecialFogColor(float partialTicks) { return MC_RENDER.getSpecialFogColor(partialTicks); } public void setModelViewProjectionMatrix(Mat4f combinedModelViewProjectionMatrix) { this.shader.bind(); - this.shader.setUniform(this.gModelViewProjectionUniform, combinedModelViewProjectionMatrix); + this.shader.setUniform(this.gModelViewProjectionUniform, combinedModelViewProjectionMatrix.invert()); this.shader.unbind(); } - } diff --git a/core/src/main/resources/shaders/fog/fog.frag b/core/src/main/resources/shaders/fog/fog.frag index b5000241a..6bf4b8467 100644 --- a/core/src/main/resources/shaders/fog/fog.frag +++ b/core/src/main/resources/shaders/fog/fog.frag @@ -5,7 +5,7 @@ out vec4 fragColor; uniform sampler2D gDepthMap; // model view matrix and projection matrix -uniform mat4 gMvmProj; +uniform mat4 gMvmProjInv; uniform float fogScale; uniform float fogVerticalScale; @@ -63,7 +63,7 @@ vec3 calcViewPosition(float fragmentDepth) ndc.xyz = ndc.xyz * 2.0 - 1.0; // TODO: This inverse() should be moved CPU side - vec4 eyeCoord = inverse(gMvmProj) * ndc; + vec4 eyeCoord = gMvmProjInv * ndc; return eyeCoord.xyz / eyeCoord.w; }