From 27ca7760cc4126c8c45a5c22edafee5d2984a742 Mon Sep 17 00:00:00 2001
From: Ptolemy <ptolemy@lindenlab.com>
Date: Tue, 21 Jun 2022 22:23:38 -0700
Subject: [PATCH] SL-17274: Remove hard-coded magic number checking if G-Buffer
 flag is set

---
 indra/llrender/llshadermgr.cpp                               | 5 +++--
 .../app_settings/shaders/class1/deferred/softenLightF.glsl   | 2 +-
 .../app_settings/shaders/class2/deferred/softenLightF.glsl   | 2 +-
 .../app_settings/shaders/class3/deferred/softenLightF.glsl   | 2 +-
 4 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index f1996b65e96..4700d351f79 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -790,8 +790,9 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 
     // Use alpha float to store bit flags
     // See: C++: addDeferredAttachment(), shader: frag_data[2]
-    extra_code_text[extra_code_count++] = strdup("#define GBUFFER_FLAG_SKIP_ATMOS   1.0\n"); // atmo kill
-    extra_code_text[extra_code_count++] = strdup("#define GBUFFER_FLAG_HAS_ATMOS    0.0\n");
+    extra_code_text[extra_code_count++] = strdup("#define GBUFFER_FLAG_SKIP_ATMOS   0.0\n"); // atmo kill
+    extra_code_text[extra_code_count++] = strdup("#define GBUFFER_FLAG_HAS_ATMOS    1.0\n");
+    extra_code_text[extra_code_count++] = strdup("#define GET_GBUFFER_FLAG(flag)    (norm.w>0.5)\n");
 
 	if (defines)
 	{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 7f2c603f87a..918e119c319 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -142,7 +142,7 @@ void main()
             color = mix(color.rgb, reflected_color, envIntensity);
         }
        
-        if (norm.w < 0.5)
+        if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS))
         {
             color = mix(atmosFragLighting(color, additive, atten), fullbrightAtmosTransportFrag(color, additive, atten), diffuse.a);
             color = mix(scaleSoftClipFrag(color), fullbrightScaleSoftClip(color), diffuse.a);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 7700d16007a..dfb93c17dc5 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -139,7 +139,7 @@ void main()
         color                = mix(color.rgb, reflected_color, envIntensity);
     }
 
-    if (norm.w < 0.5)
+    if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS))
     {
         color = mix(atmosFragLighting(color, additive, atten), fullbrightAtmosTransportFrag(color, additive, atten), diffuse.a);
         color = mix(scaleSoftClipFrag(color), fullbrightScaleSoftClip(color), diffuse.a);
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index 61757882bb0..ea89a7626f4 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -170,7 +170,7 @@ void main()
         applyLegacyEnv(color, legacyenv, spec, pos.xyz, norm.xyz, envIntensity);
     }
 
-    if (norm.w < 0.5)
+    if (GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_ATMOS))
     {
         color = mix(atmosFragLighting(color, additive, atten), fullbrightAtmosTransportFrag(color, additive, atten), diffuse.a);
         color = mix(scaleSoftClipFrag(color), fullbrightScaleSoftClip(color), diffuse.a);
-- 
GitLab