Index: ps/trunk/binaries/data/mods/public/shaders/glsl/common/los_fragment.h =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/glsl/common/los_fragment.h +++ ps/trunk/binaries/data/mods/public/shaders/glsl/common/los_fragment.h @@ -12,7 +12,7 @@ #if !IGNORE_LOS float los = texture2D(losTex, v_los).r; float threshold = 0.03; - return (los - threshold) / (1.0 - threshold); + return clamp(los - threshold, 0.0, 1.0) / (1.0 - threshold); #else return 1.0; #endif Index: ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs =================================================================== --- ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs +++ ps/trunk/binaries/data/mods/public/shaders/glsl/water_high.fs @@ -271,6 +271,14 @@ void main() { + float los = getLOS(); + // We don't need to render a water fragment if it's invisible. + if (los < 0.001) + { + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + return; + } + #if USE_FANCY_EFFECTS vec4 fancyeffects = texture2D(waterEffectsTex, gl_FragCoord.xy / screenSize); #else @@ -306,5 +314,5 @@ color = applyFog(color); - gl_FragColor = vec4(applyDebugColor(color * getLOS(), 1.0, refrColor.a, 0.0), refrColor.a); + gl_FragColor = vec4(applyDebugColor(color * los, 1.0, refrColor.a, 0.0), refrColor.a); }