summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders
diff options
context:
space:
mode:
authorGraham Linden <graham@lindenlab.com>2019-05-21 16:00:45 -0700
committerGraham Linden <graham@lindenlab.com>2019-05-21 16:00:45 -0700
commite9dbee00262a437e4b3f971b37ea636e92032133 (patch)
tree57f79641ee532f3f80b0fbd89d3a1f42de398829 /indra/newview/app_settings/shaders
parent78e62fe0f16d95a2afb6c4205b121db189c297b9 (diff)
SL-11238
Fix ambient light inputs to the renderer. Fix 3rd sky shader w/ mistaken density mod conversion. Make ambient clamp apply to all modes. Tune ALM ambient clamp to match non-ALM.
Diffstat (limited to 'indra/newview/app_settings/shaders')
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/materialF.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl13
-rw-r--r--indra/newview/app_settings/shaders/class1/lighting/lightV.glsl3
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/skyF.glsl7
-rw-r--r--indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl19
-rw-r--r--indra/newview/app_settings/shaders/class2/windlight/skyV.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class3/lighting/lightV.glsl3
9 files changed, 37 insertions, 20 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index b439fbbff6..e0bf58a5c2 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -223,7 +223,9 @@ void main()
float ambient = da;
ambient *= 0.5;
ambient *= ambient;
- ambient = min(getAmbientClamp(), 1.0 - ambient);
+
+ float ambient_clamp = getAmbientClamp() + 0.2;
+ ambient = (1.0 - ambient) * ambient_clamp;
vec3 sun_contrib = min(final_da, shadow) * sunlit;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
index 0880a73b26..b9c16bfa11 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
@@ -320,7 +320,9 @@ void main()
float ambient = da;
ambient *= 0.5;
ambient *= ambient;
- ambient = min(getAmbientClamp(), 1.0 - ambient);
+
+ float ambient_clamp = getAmbientClamp() + 0.2;
+ ambient = (1.0 - ambient) * ambient_clamp;
vec3 sun_contrib = min(final_da, shadow) * sunlit;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index c81d0f97da..40bb705326 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -106,7 +106,10 @@ void main()
float ambient = da;
ambient *= 0.5;
ambient *= ambient;
- ambient = min(getAmbientClamp(), 1.0 - ambient);
+
+ ambient = (1.0 - ambient);
+ float ambient_clamp = getAmbientClamp() + 0.1;
+ ambient *= ambient_clamp;
vec3 sun_contrib = final_da * sunlit;
@@ -179,11 +182,10 @@ vec3 post_atmo = color.rgb;
bloom = fogged.a;
#endif
+// srgb colorspace debuggables
//color.rgb = amblit;
-//color.rgb = vec3(ambient);
//color.rgb = sunlit;
//color.rgb = post_ambient;
-//color.rgb = vec3(final_da);
//color.rgb = sun_contrib;
//color.rgb = post_sunlight;
//color.rgb = diffuse_srgb.rgb;
@@ -197,6 +199,11 @@ vec3 post_atmo = color.rgb;
color.rgb = srgb_to_linear(color.rgb);
}
+// linear debuggables
+//color.rgb = vec3(final_da);
+//color.rgb = vec3(ambient);
+//color.rgb = vec3(scol);
+
frag_color.rgb = color.rgb;
frag_color.a = bloom;
}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
index 38230836eb..cf635ffa3f 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
@@ -28,11 +28,12 @@
// All lights, no specular highlights
vec3 atmosAmbient();
vec4 sumLights(vec3 pos, vec3 norm, vec4 color);
+float getAmbientClamp();
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color)
{
vec4 c = sumLights(pos, norm, color);
- c.rgb += atmosAmbient() * color.rgb * 0.5;
+ c.rgb += atmosAmbient() * color.rgb * 0.5 * getAmbientClamp();
return c;
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl
index 68eb671e7c..55ffbdcc46 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl
@@ -44,7 +44,7 @@ uniform float sun_moon_glow_factor;
float getAmbientClamp()
{
- return 0.45f;
+ return 0.9;
}
void calcAtmosphericVars(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 additive, out vec3 atten) {
diff --git a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
index eb95890e08..dca2862b5a 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
@@ -88,6 +88,7 @@ vec3 halo22(float d)
/// Soft clips the light with a gamma correction
vec3 scaleSoftClip(vec3 light);
+vec3 srgb_to_linear(vec3 c);
void main()
{
@@ -194,10 +195,12 @@ void main()
color.rgb += halo_22;
- color *= 2.;
+ color.rgb *= 2.;
+ color.rgb = scaleSoftClip(color.rgb);
+ color.rgb = srgb_to_linear(color.rgb);
/// Gamma correct for WL (soft clip effect).
- frag_data[0] = vec4(scaleSoftClip(color.rgb), 1.0);
+ frag_data[0] = vec4(color.rgb, 1.0);
frag_data[1] = vec4(0.0,0.0,0.0,0.0);
frag_data[2] = vec4(0.5,0.5,0.0,1.0); //1.0 in norm.w masks off fog
}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 1b2b835ad1..94abcf08ed 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -24,6 +24,7 @@
*/
#extension GL_ARB_texture_rectangle : enable
+#extension GL_ARB_shader_texture_lod : enable
/*[EXTRA_CODE_HERE]*/
@@ -87,14 +88,11 @@ void main()
float da = dot(normalize(norm.xyz), light_dir.xyz);
da = clamp(da, -1.0, 1.0);
-
-
float final_da = da;
final_da = clamp(final_da, 0.0, 1.0);
- vec4 diffuse_srgb = texture2DRect(diffuseRect, tc);
- vec4 diffuse_linear = vec4(srgb_to_linear(diffuse_srgb.rgb), diffuse_srgb.a);
-
+ vec4 diffuse_linear = texture2DRect(diffuseRect, tc);
+ vec4 diffuse_srgb = vec4(linear_to_srgb(diffuse_linear.rgb), diffuse_linear.a);
// clamping to alpha value kills underwater shadows...
//scol = max(scol_ambocc.r, diffuse_linear.a);
@@ -116,7 +114,10 @@ void main()
float ambient = da;
ambient *= 0.5;
ambient *= ambient;
- ambient = min(getAmbientClamp(), 1.0 - ambient);
+
+ float ambient_clamp = getAmbientClamp() + 0.1;
+ ambient = (1.0 - ambient);
+ ambient *= ambient_clamp;
vec3 sun_contrib = min(scol, final_da) * sunlit;
@@ -129,7 +130,7 @@ vec3 post_ambient = color.rgb;
vec3 post_sunlight = color.rgb;
- color.rgb *= diffuse_srgb.rgb;
+ color.rgb *= diffuse_linear.rgb;
vec3 post_diffuse = color.rgb;
@@ -155,7 +156,7 @@ vec3 post_diffuse = color.rgb;
float scontrib = fres*texture2D(lightFunc, vec2(nh, spec.a)).r*gt/(nh*da);
vec3 sp = sun_contrib*scontrib / 16.0;
sp = clamp(sp, vec3(0), vec3(1));
- bloom += dot (sp, sp) / 6.0;
+ bloom += dot(sp, sp) / 6.0;
color += sp * spec.rgb;
}
}
@@ -163,7 +164,7 @@ vec3 post_diffuse = color.rgb;
vec3 post_spec = color.rgb;
#ifndef WATER_FOG
- color.rgb += diffuse_srgb.a * diffuse_srgb.rgb;
+ color.rgb = mix(color.rgb, diffuse_srgb.rgb, diffuse_srgb.a);
#endif
if (envIntensity > 0.0)
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
index a23a5d4076..5b1eb55e0c 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
@@ -88,7 +88,7 @@ void main()
vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
vec4 light_atten;
- float dens_mul = density_multiplier * 0.45;
+ float dens_mul = density_multiplier;
// Sunlight attenuation effect (hue and brightness) due to atmosphere
// this is used later for sunlight modulation at various altitudes
diff --git a/indra/newview/app_settings/shaders/class3/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class3/lighting/lightV.glsl
index 48c883d98a..effe4c5971 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/lightV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/lightV.glsl
@@ -28,11 +28,12 @@
// All lights, no specular highlights
vec3 atmosAmbient();
vec4 sumLights(vec3 pos, vec3 norm, vec4 color);
+float getAmbientClamp();
vec4 calcLighting(vec3 pos, vec3 norm, vec4 color)
{
vec4 c = sumLights(pos, norm, color);
- c.rgb += atmosAmbient() * color.rgb;
+ c.rgb += atmosAmbient() * color.rgb * getAmbientClamp();
return c;
}