diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 8dda96984ed3839b0bab91c2b264ac65c7e564e1..7f2c5add16a0ab0caf1147aedf0db7c40967672e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -43,7 +43,6 @@ uniform mat3 env_mat;
 uniform mat3 ssao_effect_mat;
 
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 
 #if HAS_SHADOW
 uniform sampler2DShadow shadowMap0;
@@ -286,12 +285,9 @@ void main()
 	calcFragAtmospherics(pos.xyz, 1.0, sunlit, amblit, additive, atten);
 
 	vec2 abnormal	= encode_normal(norm.xyz);
-	 norm.xyz   = decode_normal(abnormal.xy);
+		 norm.xyz   = decode_normal(abnormal.xy);
 
-	float da_sun = dot(norm.xyz, sun_dir.xyz);
-	float da_moon = dot(norm.xyz, moon_dir.xyz);
-
-    float da = max(da_sun, da_moon);
+	float da = dot(norm.xyz, sun_dir.xyz);
 
     float final_da = da;
           final_da = min(final_da, shadow);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
index 4dc15dbc89316af234b9c67c9bbf77686bc9dc33..6e06453a5bed9a0685b415a24f0bbaf3260095cc 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/materialF.glsl
@@ -98,7 +98,6 @@ uniform mat3 env_mat;
 uniform mat3 ssao_effect_mat;
 
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 VARYING vec2 vary_fragcoord;
 
 VARYING vec3 vary_position;
@@ -389,9 +388,7 @@ void main()
 	
 	vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
 
-	float da_sun =dot(norm.xyz, sun_dir.xyz);
-	float da_moon =dot(norm.xyz, moon_dir.xyz);
-	float da = max(da_sun, da_moon);
+	float da =dot(norm.xyz, sun_dir.xyz);
 
     float final_da = da;
           final_da = min(final_da, shadow);
@@ -421,9 +418,7 @@ void main()
 		// the old infinite-sky shiny reflection
 		//
 				
-		float sa_sun = dot(refnormpersp, sun_dir.xyz);
-		float sa_moon = dot(refnormpersp, moon_dir.xyz);
-        float sa = max(sa_sun, sa_moon);
+        float sa = dot(refnormpersp, sun_dir.xyz);
 
 		vec3 dumbshiny = sunlit*shadow*(texture2D(lightFunc, vec2(sa, spec.a)).r);
 							
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index a4543c325ee03aece4816d21f4b3df29bdf8003a..ec3c0cb68db5b62c713d0318eb8f606ce2504341 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -56,7 +56,6 @@ uniform mat3 env_mat;
 uniform mat3 ssao_effect_mat;
 
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
@@ -107,9 +106,7 @@ void main()
 	float envIntensity = norm.z;
 	norm.xyz = decode_normal(norm.xy); // unpack norm
 		
-	float da_sun = dot(norm.xyz, sun_dir.xyz);
-	float da_moon = dot(norm.xyz, moon_dir.xyz);
-	float da = max(da_sun, da_moon);
+	float da = dot(norm.xyz, sun_dir.xyz);
 
 	float final_da = max(0.0,da);
               final_da = min(final_da, 1.0f);
@@ -151,9 +148,7 @@ void main()
 			// the old infinite-sky shiny reflection
 			//
 			
-			float sa_sun = dot(refnormpersp, sun_dir.xyz);
-			float sa_moon = dot(refnormpersp, moon_dir.xyz);
-			float sa = max(sa_sun, sa_moon);
+			float sa = dot(refnormpersp, sun_dir.xyz);
 
 			vec3 dumbshiny = sunlit*(texture2D(lightFunc, vec2(sa, spec.a)).r);
 			
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index 5046ede00da99ce054a24f6c72425ad21213d03c..1e2c49215f3ad1884f78be8aa89fc1c97d173bdc 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -67,7 +67,6 @@ uniform vec4 shadow_clip;
 uniform mat3 ssao_effect_mat;
 
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
@@ -117,9 +116,7 @@ void main()
 	float envIntensity = norm.z;
 	norm.xyz = decode_normal(norm.xy); // unpack norm
 		
-	float da_sun = max(dot(norm.xyz, sun_dir.xyz), 0.0);
-	float da_moon = max(dot(norm.xyz, moon_dir.xyz), 0.0);
-	float da = max(da_sun, da_moon);
+	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
 
 	float light_gamma = 1.0/1.3;
 	da = pow(da, light_gamma);
@@ -170,9 +167,7 @@ void main()
 			// the old infinite-sky shiny reflection
 			//
 			
-			float sa_sun = dot(refnormpersp, sun_dir.xyz);
-			float sa_moon = dot(refnormpersp, moon_dir.xyz);
-			float sa = max(sa_sun, sa_moon);
+			float sa = dot(refnormpersp, sun_dir.xyz);
 			vec3 dumbshiny = sunlit*scol_ambocc.r*(texture2D(lightFunc, vec2(sa, spec.a)).r);
 			
 			// add the two types of shiny together
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 11ccdf638c8bf1431d513b9cf4318bb6b4e08628..aa5e99a2f7b08199319223c35d1ee28f2166726e 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -59,7 +59,6 @@ uniform mat4 inv_proj;
 uniform vec2 screen_res;
 uniform vec2 proj_shadow_res;
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 
 uniform vec2 shadow_res;
 uniform float shadow_bias;
@@ -140,14 +139,10 @@ void main()
 	}*/
 	
 	float shadow = 0.0;
-    float da_sun = dot(norm, sun_dir.xyz);
-    float da_moon = dot(norm, moon_dir.xyz);
-    float da = max(da_sun, da_moon);
-
-	float dp_directional_light = max(0.0, da);
+	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
 	
 	vec3 shadow_pos = pos.xyz;
-	vec3 offset = ((da_sun > da_moon) ? sun_dir.xyz  : moon_dir.xyz) * (1.0-dp_directional_light);
+	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
 	
 	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
 	
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
index 4fccb1d33c733d3b5f1597a700385e24cff59e00..58f3f2f91ee6cce5ef22914ae73cb0e1ba2b788e 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
@@ -59,7 +59,6 @@ uniform mat4 inv_proj;
 uniform vec2 screen_res;
 uniform vec2 proj_shadow_res;
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 
 uniform vec2 shadow_res;
 
@@ -201,13 +200,10 @@ void main()
 	}*/
 	
 	float shadow = 0.0;
-    float da_sun = dot(norm, sun_dir.xyz);
-    float da_moon = dot(norm, moon_dir.xyz);
-    float da = max(da_sun, da_moon);
-	float dp_directional_light = max(0.0, da);
+	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
 	
 	vec3 shadow_pos = pos.xyz;
-	vec3 offset = ((da_sun > da_moon) ? sun_dir.xyz : moon_dir.xyz) * (1.0-dp_directional_light);
+	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
 	
 	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
 	
diff --git a/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl
index 43c0505046ec8b6ae6779bf35a301d0035a3f211..47fa0efe060ad381c500037348b933b1d519a8f8 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/skyF.glsl
@@ -34,7 +34,6 @@ in vec3 view_dir;
 
 uniform vec3 cameraPosLocal;
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 uniform float sun_size;
 
 uniform sampler2D transmittance_texture;
diff --git a/indra/newview/app_settings/shaders/class3/windlight/advancedAtmoF.glsl b/indra/newview/app_settings/shaders/class3/windlight/advancedAtmoF.glsl
index bdb54a1d63a26c59bff730bdbda28d3331b4244c..fed3edf7de1a8bd7eae03e873bf822e70cb1d3a1 100644
--- a/indra/newview/app_settings/shaders/class3/windlight/advancedAtmoF.glsl
+++ b/indra/newview/app_settings/shaders/class3/windlight/advancedAtmoF.glsl
@@ -33,7 +33,6 @@ in vec3 view_dir;
 
 uniform vec3 cameraPosLocal;
 uniform vec3 sun_dir;
-uniform vec3 moon_dir;
 uniform float sun_size;
 
 uniform sampler2D transmittance_texture;
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 899da3e42093835dcc8d1b0db11a370c4bea73f4..64be033fdcb5b8d2d7f77cad26f0126997331b44 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -1418,8 +1418,11 @@ void LLVOSky::updateReflectionGeometry(LLDrawable *drawable, F32 H,
 void LLVOSky::updateFog(const F32 distance)
 {
     LLEnvironment& environment = LLEnvironment::instance();
-    LLVector3 light_dir = LLVector3(environment.getClampedLightNorm());
-    m_legacyAtmospherics.updateFog(distance, light_dir);
+    if (environment.getCurrentSky() != nullptr)
+    {
+        LLVector3 light_dir = LLVector3(environment.getClampedLightNorm());
+        m_legacyAtmospherics.updateFog(distance, light_dir);
+    }
 }
 
 void LLVOSky::setSunAndMoonDirectionsCFR(const LLVector3 &sun_dir_cfr, const LLVector3 &moon_dir_cfr)