From a8e51a64d21f34710eb7de8f06d1e0dc4bf4951a Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 23 Apr 2010 13:37:03 +0100
Subject: [PATCH] Restore a bit of the non-deferred renderer's sun/moon
 waterglow in deferred rendering.  This also adds a slight pinch of glow to
 shiny sun-spots.  So be it. (transplanted from
 5a0d9e5b5cfb2ecd96685f0275ab8e999ab86263) (transplanted from
 90f0ce75b2d7bb9fc03e84245db27a16508cde63)

---
 .../app_settings/shaders/class1/deferred/softenLightF.glsl    | 4 +++-
 .../app_settings/shaders/class2/deferred/softenLightF.glsl    | 4 +++-
 .../app_settings/shaders/class3/deferred/softenLightF.glsl    | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index bf5dd4155c2..65540ad6fe9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -270,6 +270,7 @@ void main()
 	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
 	float scol = max(scol_ambocc.r, diffuse.a); 
 	float ambocc = scol_ambocc.g;
+	float glowresult = 0.0;
 	
 	calcAtmospherics(pos.xyz, ambocc);
 	
@@ -285,6 +286,7 @@ void main()
 		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
 		float sa = dot(refnormpersp, vary_light.xyz);
 		vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+		glowresult = 0.08 * dot(dumbshiny.rgb, spec.rgb);
 
 		// screen-space cheap fakey reflection map
 		//
@@ -334,5 +336,5 @@ void main()
 	col = scaleSoftClip(col);
 		
 	gl_FragColor.rgb = col;
-	gl_FragColor.a = 0.0;
+	gl_FragColor.a = glowresult;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 28cfc6322e0..67ef3d52807 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -269,6 +269,7 @@ void main()
 	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
 	float scol = max(scol_ambocc.r, diffuse.a); 
 	float ambocc = scol_ambocc.g;
+	float glowresult = 0.0;
 	
 	calcAtmospherics(pos.xyz, ambocc);
 	
@@ -284,6 +285,7 @@ void main()
 		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
 		float sa = dot(refnormpersp, vary_light.xyz);
 		vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+		glowresult = 0.08 * dot(dumbshiny.rgb, spec.rgb);
 
 		// screen-space cheap fakey reflection map
 		//
@@ -334,5 +336,5 @@ void main()
 	col = scaleSoftClip(col);
 		
 	gl_FragColor.rgb = col;
-	gl_FragColor.a = 0.0;
+	gl_FragColor.a = glowresult;
 }
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index 9f94b9e8eaa..b5c6693d3b6 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -272,6 +272,7 @@ void main()
 	vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
 	float scol = max(scol_ambocc.r, diffuse.a); 
 	float ambocc = scol_ambocc.g;
+	float glowresult = 0.0;
 	
 	calcAtmospherics(pos.xyz, ambocc);
 	
@@ -287,6 +288,7 @@ void main()
 		vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
 		float sa = dot(refnormpersp, vary_light.xyz);
 		vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
+		glowresult = 0.08 * dot(dumbshiny.rgb, spec.rgb);
 
 		// screen-space cheap fakey reflection map
 		//
@@ -340,7 +342,7 @@ void main()
 	gl_FragColor.rgb = col;
 	
 	//gl_FragColor.rgb = gi_col.rgb;
-	gl_FragColor.a = 0.0;
+	gl_FragColor.a = glowresult;
 	
 	//gl_FragColor.rg = scol_ambocc.rg;
 	//gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb;
-- 
GitLab