diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp
index 0d2e8da294f07c4aacd7ed839793d85b86ec7738..729603e960f4ec75c2f8e74ef17d44737f590f11 100644
--- a/indra/newview/llheroprobemanager.cpp
+++ b/indra/newview/llheroprobemanager.cpp
@@ -157,6 +157,11 @@ void LLHeroProbeManager::update()
         LL_PROFILE_ZONE_NAMED_CATEGORY_DISPLAY("hpmu - realtime");
         // Probe 0 is always our mirror probe.
         mProbes[0]->mOrigin = probe_pos;
+        
+        bool radiance_pass = gPipeline.mReflectionMapManager.isRadiancePass();
+        
+        gPipeline.mReflectionMapManager.mRadiancePass = true;
+        
         for (U32 j = 0; j < mProbes.size(); j++)
         {
             for (U32 i = 0; i < 6; ++i)
@@ -164,6 +169,8 @@ void LLHeroProbeManager::update()
                 updateProbeFace(mProbes[j], i);
             }
         }
+        
+        gPipeline.mReflectionMapManager.mRadiancePass = radiance_pass;
     }
 }
 
@@ -180,7 +187,7 @@ void LLHeroProbeManager::updateProbeFace(LLReflectionMap* probe, U32 face)
     // hacky hot-swap of camera specific render targets
     gPipeline.mRT = &gPipeline.mAuxillaryRT;
 
-    probe->update(mRenderTarget.getWidth(), face);
+    probe->update(mRenderTarget.getWidth(), face, true);
     
     gPipeline.mRT = &gPipeline.mMainRT;
 
diff --git a/indra/newview/llreflectionmap.cpp b/indra/newview/llreflectionmap.cpp
index efaf068bd2dd56fce3e29fe88b4bb018b433b9e9..022b7d11d8f8fbcec8223e79ecbbfc4855859401 100644
--- a/indra/newview/llreflectionmap.cpp
+++ b/indra/newview/llreflectionmap.cpp
@@ -49,7 +49,7 @@ LLReflectionMap::~LLReflectionMap()
     }
 }
 
-void LLReflectionMap::update(U32 resolution, U32 face)
+void LLReflectionMap::update(U32 resolution, U32 face, bool force_dynamic)
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY;
     mLastUpdateTime = gFrameTimeSeconds;
@@ -63,7 +63,8 @@ void LLReflectionMap::update(U32 resolution, U32 face)
     {
         resolution /= 2;
     }
-    gViewerWindow->cubeSnapshot(LLVector3(mOrigin), mCubeArray, mCubeIndex, face, getNearClip(), getIsDynamic());
+    
+    gViewerWindow->cubeSnapshot(LLVector3(mOrigin), mCubeArray, mCubeIndex, face, getNearClip(), getIsDynamic() || force_dynamic);
 }
 
 void LLReflectionMap::autoAdjustOrigin()
diff --git a/indra/newview/llreflectionmap.h b/indra/newview/llreflectionmap.h
index 831a6358eee3dee77cceadeb15a2a1229cb715d9..a23bdc3a9844ad46d079dae41eb047414adea41c 100644
--- a/indra/newview/llreflectionmap.h
+++ b/indra/newview/llreflectionmap.h
@@ -52,7 +52,7 @@ class alignas(16) LLReflectionMap : public LLRefCount
 
     // update this environment map
     // resolution - size of cube map to generate
-    void update(U32 resolution, U32 face);
+    void update(U32 resolution, U32 face, bool force_dynamic = false);
 
     // for volume partition probes, try to place this probe in the best spot
     void autoAdjustOrigin();
diff --git a/indra/newview/llreflectionmapmanager.h b/indra/newview/llreflectionmapmanager.h
index 7b17112814384761ea8053cf851aec4f79ad55b2..4ef6c5fdff0bee8d77ec27d2c1d987c823911008 100644
--- a/indra/newview/llreflectionmapmanager.h
+++ b/indra/newview/llreflectionmapmanager.h
@@ -104,6 +104,7 @@ class alignas(16) LLReflectionMapManager
 
 private:
     friend class LLPipeline;
+    friend class LLHeroProbeManager;
 
     // initialize mCubeFree array to default values
     void initCubeFree();