Use range-based fog instead of z-plane based.
[oweals/minetest.git] / client / shaders / water_surface_shader / opengl_fragment.glsl
index 1fa6695413d3b7b5ca4fb8af5cb17704d5b13f20..1aa721f831383bca47715f7f484162488df19b29 100644 (file)
@@ -153,13 +153,13 @@ vec4 base = texture2D(baseTexture, uv).rgba;
 #if MATERIAL_TYPE == TILE_MATERIAL_LIQUID_TRANSPARENT || MATERIAL_TYPE == TILE_MATERIAL_LIQUID_OPAQUE
        float alpha = gl_Color.a;
        if (fogDistance != 0.0) {
-               float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
+               float d = max(0.0, min(length(eyeVec) / fogDistance * 1.5 - 0.6, 1.0));
                alpha = mix(alpha, 0.0, d);
        }
        col = vec4(col.rgb, alpha);
 #else
        if (fogDistance != 0.0) {
-               float d = max(0.0, min(vPosition.z / fogDistance * 1.5 - 0.6, 1.0));
+               float d = max(0.0, min(length(eyeVec) / fogDistance * 1.5 - 0.6, 1.0));
                col = mix(col, skyBgColor, d);
        }
        col = vec4(col.rgb, base.a);