From 31924129227eb28bae6949e4b2b8fd6d5cffed61 Mon Sep 17 00:00:00 2001
From: Ptolemy <ptolemy@lindenlab.com>
Date: Sun, 16 Aug 2020 14:16:17 -0700
Subject: [PATCH] SL-13465 Partially restore atmospheric effects for the moon.

---
 .../app_settings/shaders/class1/deferred/moonF.glsl  | 12 ++++++++++++
 .../app_settings/shaders/class1/windlight/moonF.glsl |  9 +++++++++
 2 files changed, 21 insertions(+)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
index 80f232948ac..4fac46fdfb6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
@@ -45,6 +45,12 @@ uniform float blend_factor; // interp factor between moon A/B
 VARYING vec2 vary_texcoord0;
 
 vec3 srgb_to_linear(vec3 c);
+
+vec3 getAdditiveColor();
+
+/// Soft clips the light with a gamma correction
+vec3 scaleSoftClip(vec3 light);
+
 void main() 
 {
     vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
@@ -65,6 +71,12 @@ void main()
 
     //c.rgb *= moonlight_color.rgb;
 
+    // Partial atmospherics calculation
+    vec3 ac = getAdditiveColor();
+    c.rgb += ac;
+
+    c.rgb = scaleSoftClip(c.rgb);
+
     frag_data[0] = vec4(c.rgb, c.a);
     frag_data[1] = vec4(0.0);
     frag_data[2] = vec4(0.0f);
diff --git a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl
index 24f3992e32f..310bb15fdfc 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl
@@ -44,6 +44,9 @@ uniform sampler2D altDiffuseMap;
 uniform float blend_factor; // interp factor between moon A/B
 VARYING vec2 vary_texcoord0;
 
+vec3 getAdditiveColor();
+vec3 scaleSoftClip(vec3 light);
+
 void main() 
 {
     vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
@@ -59,6 +62,12 @@ void main()
     c.rgb = pow(c.rgb, exp);
     //c.rgb *= moonlight_color.rgb;
 
+    // Partial atmospherics calculation
+    vec3 ac = getAdditiveColor();
+    c.rgb += ac;
+
+    c.rgb = scaleSoftClip(c.rgb);
+
     frag_color = vec4(c.rgb, c.a);
 }
 
-- 
GitLab