From 100a58778b6f96513978369820fcf328dcb21226 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Thu, 30 Aug 2018 00:16:44 +0100
Subject: MAINT-8944 Fix missed mNextFooTextureId updates when jumping between
 keyframes by forcing mReplaced when sky is replaced.

---
 indra/newview/llenvironment.cpp | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'indra')

diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 8f703d0035..6e19df0a94 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -1622,7 +1622,10 @@ void LLEnvironment::DayInstance::setSky(const LLSettingsSky::ptr_t &psky)
     mType = TYPE_FIXED;
     mInitialized = false;
 
+    bool different_sky = mSky != psky;
+    
     mSky = psky;
+    mSky->mReplaced |= different_sky;
     mSky->update();
     mBlenderSky.reset();
 
-- 
cgit v1.2.3


From 51451e0b92177ee887ba8310e304bb30e90685a9 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Thu, 30 Aug 2018 01:50:03 +0100
Subject: MAINT-9028 put back original pass order to allow depth testing to
 hide areas where bloom should not show through from sunlight

---
 indra/newview/lldrawpool.h | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h
index 11d8dd2e1c..bc299cc89f 100644
--- a/indra/newview/lldrawpool.h
+++ b/indra/newview/lldrawpool.h
@@ -46,22 +46,22 @@ public:
 	enum
 	{
 		// Correspond to LLPipeline render type
-        POOL_SKY = 1,
-		POOL_WL_SKY,
-        POOL_TERRAIN,		
+		POOL_SIMPLE = 1,
 		POOL_GROUND,
-        POOL_GRASS,
-        POOL_VOIDWATER,
-		POOL_WATER,
-		POOL_SIMPLE,        
 		POOL_FULLBRIGHT,
 		POOL_BUMP,
-		POOL_MATERIALS,		
+		POOL_MATERIALS,
+		POOL_TERRAIN,	
+		POOL_SKY,
+		POOL_WL_SKY,
 		POOL_TREE,
 		POOL_ALPHA_MASK,
-		POOL_FULLBRIGHT_ALPHA_MASK,		
+		POOL_FULLBRIGHT_ALPHA_MASK,
+		POOL_GRASS,
 		POOL_INVISIBLE, // see below *
-		POOL_AVATAR,		
+		POOL_AVATAR,
+		POOL_VOIDWATER,
+		POOL_WATER,
 		POOL_GLOW,
 		POOL_ALPHA,
 		NUM_POOL_TYPES,
-- 
cgit v1.2.3


From 6dd9dd3ab63cb0daa7682a400ff0408fd894ba77 Mon Sep 17 00:00:00 2001
From: Graham Linden <graham@lindenlab.com>
Date: Thu, 30 Aug 2018 17:54:59 +0100
Subject: MAINT-9064

Fix binding of current/next sun/moon textures.

Remove redundant code in GLSLShader determination of tex uniform bindings.

Unhack mix calls in sun/moon shaders to reverse sense of blending (was working around reversed bindings).
---
 indra/llrender/llglslshader.cpp                    |  6 ------
 .../shaders/class1/deferred/moonF.glsl             |  2 +-
 .../shaders/class1/deferred/sunDiscF.glsl          |  2 +-
 .../shaders/class1/windlight/moonF.glsl            |  2 +-
 .../shaders/class1/windlight/sunDiscF.glsl         |  2 +-
 indra/newview/lldrawpoolwlsky.cpp                  | 23 +++++++++++-----------
 6 files changed, 15 insertions(+), 22 deletions(-)

(limited to 'indra')

diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index ff79efcc5b..639033f143 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -799,12 +799,6 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms)
 				continue;
 			}
 
-			if (-1 == specularMap && std::string(name) == "specularMap")
-			{
-				specularMap = i;
-				continue;
-			}
-
 			if (-1 == bumpMap && std::string(name) == "bumpMap")
 			{
 				bumpMap = i;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
index 2bfc4f3d2f..e86bca3ddd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/moonF.glsl
@@ -49,7 +49,7 @@ void main()
 {
 	vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
 	vec4 moonB = texture2D(altDiffuseMap, vary_texcoord0.xy);
-    vec4 c     = mix(moonB, moonA, blend_factor);
+    vec4 c     = mix(moonA, moonB, blend_factor);
 
 	c.rgb = pow(c.rgb, vec3(0.7f));
 	c.rgb = fullbrightAtmosTransport(c.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl
index bbc5049f1c..3557c0766e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunDiscF.glsl
@@ -45,7 +45,7 @@ void main()
 {
 	vec4 sunDiscA = texture2D(diffuseMap, vary_texcoord0.xy);
 	vec4 sunDiscB = texture2D(altDiffuseMap, vary_texcoord0.xy);
-    vec4 c     = mix(sunDiscB, sunDiscA, blend_factor);
+    vec4 c     = mix(sunDiscA, sunDiscB, blend_factor);
     c.rgb = clamp(c.rgb, vec3(0), vec3(1));
 	c.rgb = pow(c.rgb, vec3(0.7f));
 	c.rgb = fullbrightAtmosTransport(c.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl
index 480a0e1dc4..933625986c 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/moonF.glsl
@@ -49,7 +49,7 @@ void main()
 {
 	vec4 moonA = texture2D(diffuseMap, vary_texcoord0.xy);
 	vec4 moonB = texture2D(altDiffuseMap, vary_texcoord0.xy);
-    vec4 c     = mix(moonB, moonA, blend_factor);
+    vec4 c     = mix(moonA, moonB, blend_factor);
 
     c.rgb = pow(c.rgb, vec3(0.45f));
 	c.rgb = fullbrightAtmosTransport(c.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl b/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
index 05251e7e96..3f2375ee4d 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
@@ -45,7 +45,7 @@ void main()
 {
 	vec4 sunA = texture2D(diffuseMap, vary_texcoord0.xy);
 	vec4 sunB = texture2D(altDiffuseMap, vary_texcoord0.xy);
-    vec4 c     = mix(sunB, sunA, blend_factor);
+    vec4 c     = mix(sunA, sunB, blend_factor);
     c.rgb = pow(c.rgb, vec3(0.7f));
 	c.rgb = fullbrightAtmosTransport(c.rgb);
     c.rgb = fullbrightScaleSoftClip(c.rgb);
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 6b32c196dc..4bf47f4fd6 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -379,6 +379,9 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
 		LLViewerTexture* tex_a = face->getTexture(LLRender::DIFFUSE_MAP);
         LLViewerTexture* tex_b = face->getTexture(LLRender::ALTERNATE_DIFFUSE_MAP);
 
+        gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+        gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
+
         // if we even have sun disc textures to work with...
         if (tex_a || tex_b)
         {
@@ -391,20 +394,18 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
             if (tex_a && (!tex_b || (tex_a == tex_b)))
             {
                 // Bind current and next sun textures
-		        gGL.getTexUnit(0)->bind(tex_a);
-                gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
+                sun_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_a, LLTexUnit::TT_TEXTURE);
                 blend_factor = 0;
             }
             else if (tex_b && !tex_a)
             {
-                gGL.getTexUnit(0)->bind(tex_b);
-                gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
+                sun_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE);
                 blend_factor = 0;
             }
             else if (tex_b != tex_a)
             {
-                gGL.getTexUnit(0)->bind(tex_a);
-                gGL.getTexUnit(1)->bind(tex_b);
+                sun_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_a, LLTexUnit::TT_TEXTURE);
+                sun_shader->bindTexture(LLShaderMgr::ALTERNATE_DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE);
             }
 
 		    LLColor4 color(gSky.mVOSkyp->getSun().getInterpColor());
@@ -445,20 +446,18 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
         if (tex_a && (!tex_b || (tex_a == tex_b)))
         {
             // Bind current and next sun textures
-		    gGL.getTexUnit(0)->bind(tex_a);
-            gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
+            moon_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_a, LLTexUnit::TT_TEXTURE);
             blend_factor = 0;
         }
         else if (tex_b && !tex_a)
         {
-            gGL.getTexUnit(0)->bind(tex_b);
-            gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);
+            moon_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE);
             blend_factor = 0;
         }
         else if (tex_b != tex_a)
         {
-            gGL.getTexUnit(0)->bind(tex_a);
-            gGL.getTexUnit(1)->bind(tex_b);
+            moon_shader->bindTexture(LLShaderMgr::DIFFUSE_MAP, tex_a, LLTexUnit::TT_TEXTURE);
+            moon_shader->bindTexture(LLShaderMgr::ALTERNATE_DIFFUSE_MAP, tex_b, LLTexUnit::TT_TEXTURE);
         }
 
         if (can_use_vertex_shaders)
-- 
cgit v1.2.3