diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt index 88ceafe73..62795fb17 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/FogManager.kt @@ -135,6 +135,7 @@ class FogManager( val start = interpolatedFogStart * interpolatedFogStart val end = interpolatedFogEnd * interpolatedFogEnd val color = interpolatedFogColor + val distance = end - start for (shader in renderWindow.renderSystem.shaders) { if (FOG_COLOR !in shader.uniforms) { @@ -145,6 +146,7 @@ class FogManager( shader["uFogStart"] = start shader["uFogEnd"] = end + shader["uFogDistance"] = distance if (color == null) { shader[USE_FOG_COLOR] = false } else { diff --git a/src/main/resources/assets/minosoft/rendering/shader/includes/fog.glsl b/src/main/resources/assets/minosoft/rendering/shader/includes/fog.glsl index 89a518efa..3cf3ba5d6 100644 --- a/src/main/resources/assets/minosoft/rendering/shader/includes/fog.glsl +++ b/src/main/resources/assets/minosoft/rendering/shader/includes/fog.glsl @@ -17,6 +17,7 @@ in vec3 finFragmentPosition; uniform vec3 uCameraPosition; uniform float uFogStart = 60.0f * 60.0f; uniform float uFogEnd = 75.0f * 75.0f; +uniform float uFogDistance = 15.0f * 15.0f; uniform vec4 uFogColor; uniform bool uUseFogColor = false; @@ -28,7 +29,7 @@ float calulate_fog_alpha(float distance2) { return 0.0f; } - return pow(1.0f - (distance2 - uFogStart) / (uFogEnd - uFogStart), 2); + return pow(1.0f - (distance2 - uFogStart) / uFogDistance, 2); } float calculate_fog() {