diff --git a/indra/newview/app_settings/shaders/class1/deferred/pbralphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pbralphaV.glsl
index da27be6e7f173a5d205784418bf17ddfa17913f2..b7715fbe6ec976d28e6c3432a3805aae83ba4bbd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pbralphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pbralphaV.glsl
@@ -49,10 +49,9 @@ uniform mat3 texture_normal_matrix;
 uniform mat3 texture_metallic_roughness_matrix;
 uniform mat3 texture_emissive_matrix;
 
-#ifdef HAS_SUN_SHADOW
 out vec3 vary_fragcoord;
+
 uniform float near_clip;
-#endif
 
 in vec3 position;
 in vec4 diffuse_color;
@@ -86,9 +85,7 @@ void main()
 #endif
     gl_Position = vert;
 
-#ifdef HAS_SUN_SHADOW
     vary_fragcoord.xyz = vert.xyz + vec3(0,0,near_clip);
-#endif
 
 	basecolor_texcoord = (texture_matrix0 * vec4(texture_basecolor_matrix * vec3(texcoord0,1), 1)).xy;
 	normal_texcoord = (texture_matrix0 * vec4(texture_normal_matrix * vec3(texcoord0,1), 1)).xy;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
index 35ccc65a8edb5837edc73d1f67941960cf76f6cb..a95feb8e2f7b079e2d2b843e5704777eb3cebb4f 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/pbralphaF.glsl
@@ -46,8 +46,9 @@ uniform vec3 moon_dir;
 
 out vec4 frag_color;
 
+in vec3 vary_fragcoord;
+
 #ifdef HAS_SUN_SHADOW
-  in vec3 vary_fragcoord;
   uniform vec2 screen_res;
 #endif
 
@@ -191,8 +192,9 @@ void main()
     vec3 atten;
     calcAtmosphericVarsLinear(pos.xyz, norm, light_dir, sunlit, amblit, additive, atten);
 
-#ifdef HAS_SUN_SHADOW
     vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;
+
+#ifdef HAS_SUN_SHADOW
     scol = sampleDirectionalShadow(pos.xyz, norm.xyz, frag);
 #endif
 
@@ -211,7 +213,7 @@ void main()
     float gloss      = 1.0 - perceptualRoughness;
     vec3  irradiance = vec3(0);
     vec3  radiance  = vec3(0);
-    sampleReflectionProbes(irradiance, radiance, vec2(0), pos.xyz, norm.xyz, gloss);
+    sampleReflectionProbes(irradiance, radiance, vary_position.xy*0.5+0.5, pos.xyz, norm.xyz, gloss);
     // Take maximium of legacy ambient vs irradiance sample as irradiance
     // NOTE: ao is applied in pbrIbl (see pbrBaseLight), do not apply here
     irradiance       = max(amblit,irradiance);
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index d0688d26a954b73bc35c90dcaadd74dbf0e26e49..a4578c0e98b02c0e347c4e05de4cc30408118093 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7821,18 +7821,6 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, LLRenderTarget* light_
         stop_glerror();
     }
 
-    channel = shader.enableTexture(LLShaderMgr::SCENE_MAP);
-    if (channel > -1)
-    {
-        gGL.getTexUnit(channel)->bind(&mSceneMap);
-    }
-
-    channel = shader.enableTexture(LLShaderMgr::SCENE_DEPTH);
-    if (channel > -1)
-    {
-        gGL.getTexUnit(channel)->bind(&mSceneMap, true);
-    }
-
     if (shader.getUniformLocation(LLShaderMgr::VIEWPORT) != -1)
     {
 		shader.uniform4f(LLShaderMgr::VIEWPORT, (F32) gGLViewport[0],
@@ -8765,6 +8753,21 @@ void LLPipeline::bindReflectionProbes(LLGLSLShader& shader)
 
         setEnvMat(shader);
     }
+
+    // reflection probe shaders generally sample the scene map as well for SSR
+    channel = shader.enableTexture(LLShaderMgr::SCENE_MAP);
+    if (channel > -1)
+    {
+        gGL.getTexUnit(channel)->bind(&mSceneMap);
+    }
+
+    channel = shader.enableTexture(LLShaderMgr::SCENE_DEPTH);
+    if (channel > -1)
+    {
+        gGL.getTexUnit(channel)->bind(&mSceneMap, true);
+    }
+
+
 }
 
 void LLPipeline::unbindReflectionProbes(LLGLSLShader& shader)