From 1522a9902481b69b3d04bee5edd79102a796630b Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Fri, 3 May 2019 10:12:56 -0700
Subject: [PATCH] SL-11070

Gave clouds the Bob Ross treatment.
---
 indra/llinventory/llsettingssky.cpp              |  4 ++--
 .../shaders/class1/deferred/cloudsF.glsl         | 16 ++++++----------
 .../shaders/class1/deferred/cloudsV.glsl         | 10 +++++-----
 .../shaders/class1/deferred/skyV.glsl            |  2 +-
 .../shaders/class2/deferred/skyF.glsl            |  2 +-
 .../shaders/class2/windlight/cloudsV.glsl        |  2 +-
 .../shaders/class2/windlight/skyV.glsl           |  2 +-
 7 files changed, 17 insertions(+), 21 deletions(-)

diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index a090a7be322..def492c2038 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -1189,7 +1189,7 @@ LLColor3 LLSettingsSky::getTotalDensity() const
 // this is used later for sunlight modulation at various altitudes
 LLColor3 LLSettingsSky::getLightAttenuation(F32 distance) const
 {
-    F32         density_multiplier = getDensityMultiplier();
+    F32         density_multiplier = getDensityMultiplier() * 0.45f;
     LLColor3    blue_density       = getBlueDensity();
     F32         haze_density       = getHazeDensity();
     // Approximate line integral over requested distance
@@ -1200,7 +1200,7 @@ LLColor3 LLSettingsSky::getLightAttenuation(F32 distance) const
 LLColor3 LLSettingsSky::getLightTransmittance() const
 {
     LLColor3 total_density      = getTotalDensity();
-    F32      density_multiplier = getDensityMultiplier();
+    F32      density_multiplier = getDensityMultiplier() * 0.45f;
     // Transparency (-> density) from Beer's law
     LLColor3 transmittance = componentExp(total_density * -density_multiplier);
     return transmittance;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
index 595efdf6fed..6ff97fd1e98 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
@@ -1,5 +1,5 @@
 /** 
- * @file WLCloudsF.glsl
+ * @file class1\deferred\cloudsF.glsl
  *
  * $LicenseInfo:firstyear=2005&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -86,14 +86,14 @@ void main()
     vec2 disturbance2 = vec2(cloudNoise((uv1 + uv3) / 4.0f).x, cloudNoise((uv4 + uv2) / 8.0f).x) * cloud_variance * (1.0f - cloud_scale * 0.25f);
 
     // Offset texture coords
-    uv1 += cloud_pos_density1.xy;// + (disturbance * 0.02);    //large texture, visible density
+    uv1 += cloud_pos_density1.xy + (disturbance * 0.02);    //large texture, visible density
     uv2 += cloud_pos_density1.xy;   //large texture, self shadow
     uv3 += cloud_pos_density2.xy;   //small texture, visible density
     uv4 += cloud_pos_density2.xy;   //small texture, self shadow
 
     float density_variance = min(1.0, (disturbance.x* 2.0 + disturbance.y* 2.0 + disturbance2.x + disturbance2.y));
 
-    //cloudDensity *= 1.0 - (density_variance * density_variance);
+    cloudDensity *= 1.0 - (density_variance * density_variance);
 
     // Compute alpha1, the main cloud opacity
 
@@ -104,8 +104,8 @@ void main()
     alpha1 = 1. - alpha1 * alpha1;
     alpha1 = 1. - alpha1 * alpha1;  
 
-    //alpha1 *= altitude_blend_factor;
-    //alpha1 = clamp(alpha1, 0.0, 1.0);
+    alpha1 *= altitude_blend_factor;
+    alpha1 = clamp(alpha1, 0.0, 1.0);
 
     // Compute alpha2, for self shadowing effect
     // (1 - alpha2) will later be used as percentage of incoming sunlight
@@ -120,11 +120,7 @@ void main()
     vec4 color;
     color = (cloudColorSun*(1.-alpha2) + cloudColorAmbient);
     color.rgb= max(vec3(0), color.rgb);
-    //color.rgb = linear_to_srgb(color.rgb);
-
-//alpha1 = 1.0;
-//color.rgb = cloudColorAmbient.rgb;
-color.rgb = vec3(1,0,1);
+    color.rgb *= 2.0;
 
     /// Gamma correct for WL (soft clip effect).
     frag_data[0] = vec4(scaleSoftClip(color.rgb), alpha1);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
index 10425bb91f7..f1eb1af90c5 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
@@ -99,14 +99,14 @@ void main()
 	vec4 temp2 = vec4(0.);
 	vec4 blue_weight;
 	vec4 haze_weight;
-	//vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
-    vec4 sunlight = sunlight_color;
+	vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
 	vec4 light_atten;
 
+    float dens_mul = density_multiplier * 0.45;
 
 	// Sunlight attenuation effect (hue and brightness) due to atmosphere
 	// this is used later for sunlight modulation at various altitudes
-	light_atten = (blue_density + vec4(haze_density * 0.25)) * (density_multiplier * max_y);
+	light_atten = (blue_density + vec4(haze_density * 0.25)) * (dens_mul * max_y);
 
 	// Calculate relative weights
 	temp1 = blue_density + haze_density;
@@ -119,7 +119,7 @@ void main()
 	sunlight *= exp( - light_atten * temp2.y);
 
 	// Distance
-	temp2.z = Plen * density_multiplier;
+	temp2.z = Plen * dens_mul;
 
 	// Transparency (-> temp1)
 	// ATI Bugfix -- can't store temp1*temp2.z in a variable because the ati
@@ -138,7 +138,7 @@ void main()
 	temp2.x = pow(temp2.x, glow.z);
 		// glow.z should be negative, so we're doing a sort of (1 / "angle") function
 
-    //temp2.x *= sun_moon_glow_factor;
+    temp2.x *= sun_moon_glow_factor;
 
 	// Add "minimum anti-solar illumination"
 	temp2.x += .25;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
index bee8e2dab5f..4603c69f2a0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
@@ -87,7 +87,7 @@ void main()
 	vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
 	vec4 light_atten;
 
-    float dens_mul = density_multiplier;
+    float dens_mul = density_multiplier * 0.45;
 
 	// 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/class2/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
index a8eb7102edb..bd0ca0a46e4 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/skyF.glsl
@@ -117,7 +117,7 @@ void main()
     vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
     vec4 light_atten;
 
-    float dens_mul = density_multiplier;
+    float dens_mul = density_multiplier * 0.45;
 
     // 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/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
index 5c5cd0294af..43500bc5e35 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
@@ -103,7 +103,7 @@ void main()
     vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
     vec4 light_atten;
 
-    float dens_mul = density_multiplier;
+    float dens_mul = density_multiplier * 0.45;
 
     // 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/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
index 6d6b3dafa72..f6bef3e6bc8 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
@@ -87,7 +87,7 @@ void main()
 	vec4 sunlight = (sun_up_factor == 1) ? sunlight_color : moonlight_color;
 	vec4 light_atten;
 
-    float dens_mul = density_multiplier;
+    float dens_mul = density_multiplier * 0.45;
 
 	// Sunlight attenuation effect (hue and brightness) due to atmosphere
 	// this is used later for sunlight modulation at various altitudes
-- 
GitLab