From 8c1aefc17c710b55ed7a72bd9de14cbed58ccd31 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Tue, 6 Nov 2018 16:38:06 +0000
Subject: [PATCH] Remove scaleDownLight funcs and eliminate unused copy-pasted
 funcs in lighting shaders.

Also fix terrain response to atmospherics shaders (was failing to apply ambient on low end even when atmospherics was on).
---
 .../app_settings/shaders/class1/deferred/alphaF.glsl   |  7 -------
 .../shaders/class1/deferred/avatarAlphaNoColorV.glsl   |  7 -------
 .../shaders/class1/deferred/materialF.glsl             |  7 -------
 .../shaders/class1/environment/terrainF.glsl           |  4 +---
 .../shaders/class1/environment/terrainV.glsl           |  2 +-
 .../shaders/class1/lighting/lightFuncSpecularV.glsl    |  8 --------
 .../shaders/class1/lighting/sumLightsSpecularV.glsl    |  2 --
 .../shaders/class1/lighting/sumLightsV.glsl            |  2 --
 .../shaders/class1/windlight/atmosphericsF.glsl        | 10 ++++++----
 .../shaders/class1/windlight/atmosphericsHelpersF.glsl |  6 ------
 .../shaders/class1/windlight/atmosphericsHelpersV.glsl |  6 ------
 .../shaders/class2/deferred/softenLightF.glsl          | 10 +++++-----
 .../shaders/class2/lighting/sumLightsSpecularV.glsl    |  2 --
 .../shaders/class2/lighting/sumLightsV.glsl            |  3 ---
 .../shaders/class2/windlight/atmosphericsF.glsl        |  9 +++++----
 .../shaders/class2/windlight/atmosphericsHelpersF.glsl |  5 -----
 .../shaders/class2/windlight/atmosphericsHelpersV.glsl |  5 -----
 .../shaders/class2/windlight/transportF.glsl           | 10 +++++-----
 .../shaders/class3/lighting/sumLightsSpecularV.glsl    |  2 --
 .../shaders/class3/lighting/sumLightsV.glsl            |  2 --
 .../shaders/class3/windlight/transportF.glsl           |  7 +++----
 .../newview/app_settings/shaders/shader_hierarchy.txt  |  5 -----
 22 files changed, 26 insertions(+), 95 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 1cfc19267ce..3ec2ea12da4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -94,13 +94,6 @@ vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten);
 vec3 atmosFragAffectDirectionalLight(float light, vec3 sunlit);
 void calcFragAtmospherics(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 atten, out vec3 additive);
 
-vec3 calcDirectionalLight(vec3 n, vec3 l)
-{
-	float a = max(dot(n,l),0.0);
-	a = pow(a, 1.0/1.3);
-	return vec3(a,a,a);
-}
-
 vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 diffuse, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl
index f2d23007665..e68b082d43c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaNoColorV.glsl
@@ -34,7 +34,6 @@ mat4 getSkinnedTransform();
 void calcAtmospherics(vec3 inPositionEye);
 
 float calcDirectionalLight(vec3 n, vec3 l);
-float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
 
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
@@ -57,12 +56,6 @@ uniform vec3 light_direction[8];
 uniform vec3 light_attenuation[8]; 
 uniform vec3 light_diffuse[8];
 
-float calcDirectionalLight(vec3 n, vec3 l)
-{
-        float a = max(dot(n,l),0.0);
-        return a;
-}
-
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
index c001ff9ac86..c1c17532b8d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
@@ -110,13 +110,6 @@ uniform vec3 light_direction[8];
 uniform vec3 light_attenuation[8]; 
 uniform vec3 light_diffuse[8];
 
-vec3 calcDirectionalLight(vec3 n, vec3 l)
-{
-	float a = max(dot(n,l),0.0);
-	return vec3(a,a,a);
-}
-
-
 vec3 calcPointLightOrSpotLight(vec3 light_col, vec3 npos, vec3 diffuse, vec4 spec, vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight, inout float glare)
 {
 	//get light vector
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
index 46bde7f308e..668a710c042 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
@@ -59,10 +59,8 @@ void main()
 	vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
 	
 	/// Add WL Components
-	//outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+	outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
 	
-	outColor.rgb = atmosLighting(outColor.rgb);
-
 	frag_color = vec4(scaleSoftClip(outColor.rgb), 1.0);
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
index 5ffe4641724..4d6f0c67a53 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
@@ -71,7 +71,7 @@ void main()
 	/// Potentially better without it for water.
 	pos /= pos.w;
 
-	vec4 color = calcLighting(pos.xyz, norm, vec4(0), vec4(1));
+	vec4 color = calcLighting(pos.xyz, norm, vec4(1), vec4(0));
 	
 	vertex_color = color;
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl
index 85cddc647d2..20e44d74d5a 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFuncSpecularV.glsl
@@ -23,14 +23,6 @@
  * $/LicenseInfo$
  */
  
-
-
-float calcDirectionalLight(vec3 n, vec3 l)
-{
-	float a = max(dot(n,l),0.0);
-	return a;
-}
-
 float calcDirectionalSpecular(vec3 view, vec3 n, vec3 l)
 {
 	return pow(max(dot(reflect(view, n),l), 0.0),8.0);
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
index 7059ff31aed..10958025ac9 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
@@ -29,7 +29,6 @@ float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 atmosGetDiffuseSunlightColor();
-vec3 scaleDownLight(vec3 light);
 
 uniform vec4 light_position[8];
 uniform vec3 light_diffuse[8];
@@ -44,7 +43,6 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
 	vec4 specularSum = vec4(0.0);
 
 	col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
-	col.rgb = scaleDownLight(col.rgb);
 	col.rgb += atmosAmbient(baseCol.rgb);
 	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
index 41288c21c19..569b629ef8c 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
@@ -30,7 +30,6 @@ float calcDirectionalLight(vec3 n, vec3 l);
 
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
-vec3 scaleDownLight(vec3 light);
 
 vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 {
@@ -38,7 +37,6 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 	col.a = color.a;
 	
 	col.rgb = light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz);
-	col.rgb = scaleDownLight(col.rgb);
 	col.rgb += atmosAmbient(baseLight.rgb);
 	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
 	
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl
index bf0a9048f03..c1cc3679a79 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsF.glsl
@@ -25,13 +25,14 @@
  
 vec3 atmosFragAmbient(vec3 light, vec3 sunlit)
 {
-   return light;
+    /* stub function for fallback compatibility on class1 hardware */
+    return light;
 }
 
 vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten)
 {
-	/* stub function for fallback compatibility on class1 hardware */
-   return light;
+    /* stub function for fallback compatibility on class1 hardware */
+	return light;
 }
 
 vec3 atmosFragAffectDirectionalLight(float light, vec3 sunlit)
@@ -41,7 +42,8 @@ vec3 atmosFragAffectDirectionalLight(float light, vec3 sunlit)
 
 vec3 atmosLighting(vec3 light)
 {
-	return atmosFragLighting(light, vec3(0), vec3(1.0));
+    /* stub function for fallback compatibility on class1 hardware */
+	return light;
 }
 
 void calcFragAtmospherics(vec3 inPositionEye, float ambFactor, out vec3 sunlit, out vec3 amblit, out vec3 atten, out vec3 additive)
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersF.glsl
index c16e3d50a24..9e5893d32ae 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersF.glsl
@@ -41,9 +41,3 @@ vec3 atmosGetDiffuseSunlightColor()
 	return sunlight_color.rgb;
 }
 
-vec3 scaleDownLight(vec3 light)
-{
-	/* stub function for fallback compatibility on class1 hardware */
-	return light;
-}
-
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
index 9f68ca3dfaf..01f19087ffc 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
@@ -41,9 +41,3 @@ vec3 atmosGetDiffuseSunlightColor()
 	return sunlight_color.rgb;
 }
 
-vec3 scaleDownLight(vec3 light)
-{
-	/* stub function for fallback compatibility on class1 hardware */
-	return light;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index fa81317f3fb..c92dbda1851 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -83,13 +83,13 @@ vec3 atmosFragLighting(vec3 l, vec3 additive, vec3 atten);
 vec3 fullbrightScaleSoftClipFrag(vec3 l);
 vec3 scaleSoftClipFrag(vec3 l);
 
-vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten) {
-    if (no_atmo == 0)
+vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten)
+{
+    if (no_atmo == 1)
     {
-	    light *= atten.r;
-	    light += additive * 2.0;
+        return light;
     }
-	return light;
+	return (light + additive) * atten.r * 2.0;
 }
 
 vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten) {
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
index 3acf9fe883f..eef259349f9 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
@@ -31,7 +31,6 @@ vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 atmosGetDiffuseSunlightColor();
-vec3 scaleDownLight(vec3 light);
 
 uniform vec4 light_position[8];
 uniform vec3 light_attenuation[8]; 
@@ -50,7 +49,6 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
 	col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
 	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[2].xyz, light_attenuation[2].x, light_attenuation[2].y, light_diffuse[2].rgb); 
 	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[3].xyz, light_attenuation[3].x, light_attenuation[3].y, light_diffuse[3].rgb); 
-	col.rgb = scaleDownLight(col.rgb);
 						
 	// Add windlight lights
 	col.rgb += atmosAmbient(baseCol.rgb);
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
index c9987ef3b94..b42506dd404 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
@@ -28,7 +28,6 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
-vec3 scaleDownLight(vec3 light);
 
 uniform vec4 light_position[8];
 uniform vec3 light_direction[8];
@@ -45,8 +44,6 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z);
 	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z);
 
-	col.rgb = scaleDownLight(col.rgb);
-
 	// Add windlight lights
 	col.rgb += atmosAmbient(baseLight.rgb);
 	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
index 89bdbfc0e65..229f8073b06 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsF.glsl
@@ -47,12 +47,13 @@ vec3 scaleSoftClipFrag(vec3 light);
 
 vec3 atmosFragLighting(vec3 light, vec3 additive, vec3 atten)
 {
-    if (no_atmo == 0)
+    if (no_atmo == 1)
     {
-	   light *= atten.r;
-	   light += additive;
+        return light;
     }
-	return (2.0 * light);
+	light *= atten.r;
+	light += additive;
+	return light;
 }
 
 vec3 atmosLighting(vec3 light)
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersF.glsl
index 63c683c99e4..8648c38501a 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersF.glsl
@@ -37,8 +37,3 @@ vec3 atmosFragAffectDirectionalLight(float lightIntensity, vec3 sunlit)
 	return sunlit * lightIntensity;
 }
 
-vec3 scaleDownLightFrag(vec3 light)
-{
-	return (light / scene_light_strength );
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl
index 617704ff67f..a83aa95f95c 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsHelpersV.glsl
@@ -49,8 +49,3 @@ vec3 atmosGetDiffuseSunlightColor()
 	return getSunlitColor();
 }
 
-vec3 scaleDownLight(vec3 light)
-{
-	return (light / scene_light_strength );
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl
index 976e5066dc5..bf646050147 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/transportF.glsl
@@ -32,13 +32,13 @@ vec3 getAtmosAttenuation();
 
 uniform int no_atmo;
 
-vec3 atmosFragTransport(vec3 light, vec3 atten, vec3 additive) {
-    if (no_atmo == 0)
+vec3 atmosFragTransport(vec3 light, vec3 atten, vec3 additive)
+{
+    if (no_atmo == 1)
     {
-	    light *= atten.r;
-	    light += additive * 2.0;
+	    return light;
     }
-	return light;
+    return (light + additive) * atten * 2.0;
 }
 
 vec3 fullbrightFragAtmosTransport(vec3 light, vec3 atten, vec3 additive) {
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
index e043ac873eb..7870d0516fd 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
@@ -29,7 +29,6 @@ vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 atmosGetDiffuseSunlightColor();
-vec3 scaleDownLight(vec3 light);
 
 uniform vec4 light_position[8];
 uniform vec3 light_attenuation[8]; 
@@ -52,7 +51,6 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
 	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[5].xyz, light_attenuation[5].x, light_attenuation[5].y, light_diffuse[5].rgb); 
 	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[6].xyz, light_attenuation[6].x, light_attenuation[6].y, light_diffuse[6].rgb); 
 	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[7].xyz, light_attenuation[7].x, light_attenuation[7].y, light_diffuse[7].rgb); 
-	col.rgb = scaleDownLight(col.rgb);
 						
 	// Add windlight lights
 	col.rgb += atmosAmbient(baseCol.rgb);
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
index b5dcd2eba2a..9842d9ba931 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
@@ -29,7 +29,6 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
-vec3 scaleDownLight(vec3 light);
 
 uniform vec4 light_position[8];
 uniform vec3 light_direction[8];
@@ -50,7 +49,6 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].z);
 	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].z);
 	col.rgb += light_diffuse[1].rgb*calcDirectionalLight(norm, light_position[1].xyz);
-	col.rgb = scaleDownLight(col.rgb);
 
 	// Add windlight lights
 	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
diff --git a/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl b/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl
index 5c93af386bc..8195801be69 100644
--- a/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl
+++ b/indra/newview/app_settings/shaders/class3/windlight/transportF.glsl
@@ -32,14 +32,13 @@ vec3 getAtmosAttenuation();
 
 uniform int no_atmo;
 
-vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten) {
+vec3 atmosTransportFrag(vec3 light, vec3 additive, vec3 atten)
+{
     if (no_atmo == 1)
 	{
         return light;
     }
-	light *= atten.r;
-	light += additive * 2.0;
-	return light;
+	return (light + additive) * atten * 2.0;
 }
 
 vec3 fullbrightAtmosTransportFrag(vec3 light, vec3 additive, vec3 atten) {
diff --git a/indra/newview/app_settings/shaders/shader_hierarchy.txt b/indra/newview/app_settings/shaders/shader_hierarchy.txt
index d8bbf69b389..ebccaddd55d 100644
--- a/indra/newview/app_settings/shaders/shader_hierarchy.txt
+++ b/indra/newview/app_settings/shaders/shader_hierarchy.txt
@@ -7,7 +7,6 @@ avatar/avatarV.glsl - gAvatarProgram, gAvatarWaterProgram
 			sumLights() - lighting/sumLightsV.glsl
 				calcDirectionalLight() - lighting/lightFuncV.glsl
 				calcPointLight() - lighting/lightFuncV.glsl
-				scaleDownLight() - windlight/atmosphericsHelpersV.glsl
 				atmosAmbient() - windlight/atmosphericsHelpersV.glsl
 				atmosAffectDirectionalLight() - windlight/atmosphericsHelpersV.glsl
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -28,7 +27,6 @@ avatar/eyeballV.glsl - gAvatarEyeballProgram
 				atmosAmbient() - windlight/atmosphericsHelpersV.glsl
 				atmosAffectDirectionalLight() - windlight/atmosphericsHelpersV.glsl
 				atmosGetDiffuseSunlightColor() - windlight/atmosphericsHelpersV.glsl
-				scaleDownLight() - windlight/atmosphericsHelpersV.glsl
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 avatar/eyeballF.glsl - gAvatarEyeballProgram
 	main() - avatar/eyeballF.glsl
@@ -53,7 +51,6 @@ environment/terrainV.glsl - gTerrainProgram, gTerrainWaterProgram
 			sumLights() - lighting/sumLightsV.glsl
 				calcDirectionalLight() - lighting/lightFuncV.glsl
 				calcPointLight() - lighting/lightFuncV.glsl
-				scaleDownLight() - windlight/atmosphericsHelpersV.glsl
 				atmosAmbient() - windlight/atmosphericsHelpersV.glsl
 				atmosAffectDirectionalLight() - windlight/atmosphericsHelpersV.glsl
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -120,7 +117,6 @@ objects/shinyV.glsl - gObjectShinyProgram, gObjectShinyWaterProgram
 				sumLights() - lighting/sumLightsV.glsl
 					calcDirectionalLight() - lighting/lightFuncV.glsl
 					calcPointLight() - lighting/lightFuncV.glsl
-					scaleDownLight() - windlight/atmosphericsHelpersV.glsl
 					atmosAmbient() - windlight/atmosphericsHelpersV.glsl
 					atmosAffectDirectionalLight() - windlight/atmosphericsHelpersV.glsl
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -143,7 +139,6 @@ objects/simpleV.glsl - gObjectSimpleProgram, gObjectSimpleWaterProgram
 			sumLights() - lighting/sumLightsV.glsl
 				calcDirectionalLight() - lighting/lightFuncV.glsl
 				calcPointLight() - lighting/lightFuncV.glsl
-				scaleDownLight() - windlight/atmosphericsHelpersV.glsl
 				atmosAmbient() - windlight/atmosphericsHelpersV.glsl
 				atmosAffectDirectionalLight() - windlight/atmosphericsHelpersV.glsl
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
GitLab