diff options
author | Graham Linden <graham@lindenlab.com> | 2019-02-13 13:09:14 -0800 |
---|---|---|
committer | Graham Linden <graham@lindenlab.com> | 2019-02-13 13:09:14 -0800 |
commit | 65927e0a76aaf8ff4dc268acdb12007265ff3a14 (patch) | |
tree | a42b75a5b880849c9ec5a7f610669f4c9dd674ad /indra/newview/app_settings/shaders/class1/environment | |
parent | 5433ed60ac93c6ccc7692ad43d579a83ab544f31 (diff) |
SL-10181, SL-10546
Fix distortion map rendering in deferred mode not including underwater fog effects.
Fix distortion map rendering not including post-deferred content at all.
Fix distortion map rendering not including anything but sky when camera is underwater.
Update sun_up_factor/sunmoon_glow_factor uniforms even when sun disc isn't in use.
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/environment')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl index 68ce2843d0..856924b1e5 100644 --- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl +++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl @@ -34,46 +34,46 @@ vec3 getPositionEye(); vec4 applyWaterFogView(vec3 pos, vec4 color) { - vec3 view = normalize(pos); - //normalize view vector - float es = -(dot(view, waterPlane.xyz)); + vec3 view = normalize(pos); + //normalize view vector + float es = -(dot(view, waterPlane.xyz)); - //find intersection point with water plane and eye vector - - //get eye depth - float e0 = max(-waterPlane.w, 0.0); - - vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0); - - //get object depth - float depth = length(pos - int_v); - - //get "thickness" of water - float l = max(depth, 0.1); + //find intersection point with water plane and eye vector + + //get eye depth + float e0 = max(-waterPlane.w, 0.0); + + vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0); + + //get object depth + float depth = length(pos - int_v); + + //get "thickness" of water + float l = max(depth, 0.1); - float kd = waterFogDensity; - float ks = waterFogKS; - vec4 kc = waterFogColor; - - float F = 0.98; - - float t1 = -kd * pow(F, ks * e0); - float t2 = kd + ks * es; - float t3 = pow(F, t2*l) - 1.0; - - float L = min(t1/t2*t3, 1.0); - - float D = pow(0.98, l*kd); - - color.rgb = color.rgb * D + kc.rgb * L; - color.a = kc.a + color.a; - - return color; + float kd = waterFogDensity; + float ks = waterFogKS; + vec4 kc = waterFogColor; + + float F = 0.98; + + float t1 = -kd * pow(F, ks * e0); + float t2 = kd + ks * es; + float t3 = pow(F, t2*l) - 1.0; + + float L = min(t1/t2*t3, 1.0); + + float D = pow(0.98, l*kd); + + color.rgb = color.rgb * D + kc.rgb * L; + color.a = kc.a + color.a; + + return color; } vec4 applyWaterFog(vec4 color) { - //normalize view vector - return applyWaterFogView(getPositionEye(), color); + //normalize view vector + return applyWaterFogView(getPositionEye(), color); } |