diff --git a/src/main/resources/assets/sodium/shaders/include/fog.glsl b/src/main/resources/assets/sodium/shaders/include/fog.glsl index 70ef8c14d0..198d566d3c 100644 --- a/src/main/resources/assets/sodium/shaders/include/fog.glsl +++ b/src/main/resources/assets/sodium/shaders/include/fog.glsl @@ -3,8 +3,11 @@ const int FOG_SHAPE_CYLINDRICAL = 1; vec4 _linearFog(vec4 fragColor, float fragDistance, vec4 fogColor, float fogStart, float fogEnd) { #ifdef USE_FOG - float factor = smoothstep(fogStart, fogEnd, fragDistance * fogColor.a); // alpha value of fog is used as a weight - vec3 blended = mix(fragColor.rgb, fogColor.rgb, factor); + if (fragDistance <= fogStart) { + return fragColor; + } + float factor = fragDistance < fogEnd ? smoothstep(fogStart, fogEnd, fragDistance) : 1.0; // alpha value of fog is used as a weight + vec3 blended = mix(fragColor.rgb, fogColor.rgb, factor * fogColor.a); return vec4(blended, fragColor.a); // alpha value of fragment cannot be modified #else