diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index d520e31d711406c7b048f8f271af79211efe90a6..547a17587b13f46ad0b69a21d48f3dda8eb75fa1 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -10674,7 +10674,7 @@
       <key>Comment</key>
       <string>Render influence volumes of Reflection Probes</string>
       <key>Persist</key>
-      <integer>1</integer>
+      <integer>0</integer>
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
@@ -10869,16 +10869,27 @@
     <key>Value</key>
     <real>0</real>
   </map>
-  <key>RenderAutomaticReflectionProbes</key>
+  <key>RenderDefaultProbeUpdatePeriod</key>
   <map>
     <key>Comment</key>
-    <string>Automatic reflection probes control.  0 - disable, 1 - Terrain/water only, 2- Terrain/water + objects.  Requires restart.</string>
+    <string>When RenderReflectionProbeLevel is 0, amount of time in seconds to wait between updates to reflection map.</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>F32</string>
+    <key>Value</key>
+    <real>20.0</real>
+  </map>
+  <key>RenderReflectionProbeLevel</key>
+  <map>
+    <key>Comment</key>
+    <string>Reflection probes control.  0 - disable (one probe to rule them all), 1 - manual probes only, 2 - manual + terrain/water, 3 - Manual + Terrain/water + objects.</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>S32</string>
     <key>Value</key>
-    <integer>2</integer>
+    <integer>3</integer>
   </map>
   <key>RenderReflectionRes</key>
     <map>
diff --git a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl
index 55a43f76d0f5b6b7b701d6a3ace12c7e160bdf69..36b5262104dbbadbf3b9267a3c91ae9a7baed5f3 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/reflectionProbeF.glsl
@@ -122,6 +122,7 @@ bool shouldSampleProbe(int i, vec3 pos)
 // populate "probeIndex" with N probe indices that influence pos where N is REF_SAMPLE_COUNT
 void preProbeSample(vec3 pos)
 {
+#if REFMAP_LEVEL > 0
     // TODO: make some sort of structure that reduces the number of distance checks
     for (int i = 1; i < refmapCount; ++i)
     {
@@ -213,6 +214,9 @@ void preProbeSample(vec3 pos)
     { // probe at index 0 is a special probe for smoothing out automatic probes
         probeIndex[probeInfluences++] = 0;
     }
+#else
+    probeIndex[probeInfluences++] = 0;
+#endif
 }
 
 // from https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-sphere-intersection
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
index 08e55ece162e1dc8ab10c07d64339d48fee63f7e..2de934de667d2ebcbaae3dd7990f7e06326b05e9 100644
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
@@ -245,20 +245,6 @@ void main()
         
         vec3 refnormpersp = reflect(pos.xyz, norm.xyz);
 
-#if 0 // wrong implementation
-        if (spec.a > 0.0)  // specular reflection
-        {
-            float sa        = dot(normalize(refnormpersp), light_dir.xyz);
-            vec3  dumbshiny = sunlit * scol * (texture2D(lightFunc, vec2(sa, spec.a)).r);
-
-            // add the two types of shiny together
-            vec3 spec_contrib = dumbshiny * spec.rgb;
-            color.rgb += spec_contrib;
-
-            // add radiance map
-            applyGlossEnv(color, glossenv, spec, pos.xyz, norm.xyz);
-        }
-#else //right implementation (ported from pointLightF.glsl)
         if (spec.a > 0.0)
         {
             vec3  lv = light_dir.xyz;
@@ -283,7 +269,6 @@ void main()
             // add radiance map
             applyGlossEnv(color, glossenv, spec, pos.xyz, norm.xyz);
         }
-#endif
 
         color.rgb = mix(color.rgb, baseColor.rgb, baseColor.a);
         
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 58509b37f3a68248f62c8d79b9fbc11b179afe2d..14a064a5b37cbfed9ecf453d9120b17d4aa532cb 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,4 @@
-version 54
+version 55
 // The version number above should be incremented IF AND ONLY IF some
 // change has been made that is sufficiently important to justify
 // resetting the graphics preferences of all users to the recommended
@@ -62,6 +62,7 @@ Disregard96DefaultDrawDistance	1	1
 RenderCompressTextures		1	1
 RenderShaderLightingMaxLevel	1	3
 RenderReflectionProbeCount  1   256
+RenderReflectionProbeLevel  1   3
 RenderDeferred				1	1
 RenderDeferredSSAO			1	1
 RenderShadowDetail			1	2
@@ -102,6 +103,7 @@ WLSkyDetail					1	96
 RenderFSAASamples			1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   8
+RenderReflectionProbeLevel  1   0
 
 //
 // Medium Low Graphics Settings
@@ -130,6 +132,7 @@ WLSkyDetail					1	96
 RenderFSAASamples			1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   16
+RenderReflectionProbeLevel  1   1
 
 //
 // Medium Graphics Settings (standard)
@@ -158,6 +161,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   32
+RenderReflectionProbeLevel  1   2
 
 //
 // Medium High Graphics Settings (deferred enabled)
@@ -186,6 +190,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   64
+RenderReflectionProbeLevel  1   2
 
 //
 // High Graphics Settings (deferred + SSAO)
@@ -214,6 +219,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   128
+RenderReflectionProbeLevel  1   3
 
 //
 // High Ultra Graphics Settings (deferred + SSAO + shadows)
@@ -242,6 +248,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   256
+RenderReflectionProbeLevel  1   3
 
 //
 // Ultra graphics (REALLY PURTY!)
@@ -270,6 +277,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  1
 RenderReflectionProbeCount  1   256
+RenderReflectionProbeLevel  1   3
 
 //
 // Class Unknown Hardware (unknown)
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index c5610b5e41dda7cd685ad28118866dfa824c3f33..c8f8ce57ae711b3a92f3647459bcdf5c61b7230f 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 49
+version 50
 // The version number above should be incremented IF AND ONLY IF some
 // change has been made that is sufficiently important to justify
 // resetting the graphics preferences of all users to the recommended
@@ -72,7 +72,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	2
 RenderScreenSpaceReflections 1  1
 RenderReflectionProbeCount  1   256
-RenderReflectionProbeResolution 1 128
+RenderReflectionProbeLevel  1   3
 
 //
 // Low Graphics Settings
@@ -101,6 +101,7 @@ RenderReflectionsEnabled    1   0
 RenderReflectionProbeDetail	1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   8
+RenderReflectionProbeLevel  1   0
 
 //
 // Medium Low Graphics Settings
@@ -129,6 +130,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   16
+RenderReflectionProbeLevel  1   1
 
 //
 // Medium Graphics Settings (standard)
@@ -157,6 +159,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   32
+RenderReflectionProbeLevel  1   2
 
 //
 // Medium High Graphics Settings (deferred enabled)
@@ -185,6 +188,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	0
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   64
+RenderReflectionProbeLevel  1   2
 
 //
 // High Graphics Settings (deferred + SSAO)
@@ -213,6 +217,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   128
+RenderReflectionProbeLevel  1   3
 
 //
 // High Ultra Graphics Settings (deferred + SSAO + shadows)
@@ -241,6 +246,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  0
 RenderReflectionProbeCount  1   256
+RenderReflectionProbeLevel  1   3
 
 //
 // Ultra graphics (REALLY PURTY!)
@@ -269,6 +275,7 @@ RenderReflectionsEnabled    1   1
 RenderReflectionProbeDetail	1	1
 RenderScreenSpaceReflections 1  1
 RenderReflectionProbeCount  1   256
+RenderReflectionProbeLevel  1   3
 
 //
 // Class Unknown Hardware (unknown)
diff --git a/indra/newview/llreflectionmap.cpp b/indra/newview/llreflectionmap.cpp
index 9e51ec686a646c1ba1f371fc8e20550241588e39..9998e7dbbd9e1a136b05db47adf52e062601674b 100644
--- a/indra/newview/llreflectionmap.cpp
+++ b/indra/newview/llreflectionmap.cpp
@@ -263,6 +263,30 @@ bool LLReflectionMap::isActive()
     return mCubeIndex != -1;
 }
 
+bool LLReflectionMap::isRelevant()
+{
+    static LLCachedControl<S32> RenderReflectionProbeLevel(gSavedSettings, "RenderReflectionProbeLevel", 3);
+
+    if (mViewerObject && RenderReflectionProbeLevel > 0)
+    { // not an automatic probe
+        return true;
+    }
+
+    if (RenderReflectionProbeLevel == 3)
+    { // all automatics are relevant
+        return true;
+    }
+
+    if (RenderReflectionProbeLevel == 2)
+    { // terrain and water only, ignore probes that have a group
+        return !mGroup;
+    }
+
+    // no automatic probes, yes manual probes
+    return mViewerObject != nullptr;
+}
+
+
 void LLReflectionMap::doOcclusion(const LLVector4a& eye)
 {
     LL_PROFILE_ZONE_SCOPED_CATEGORY_PIPELINE;
diff --git a/indra/newview/llreflectionmap.h b/indra/newview/llreflectionmap.h
index d639f6a54c5eec7295d9bba0186df151775a9089..803f7bdc97dd312666987519de9429784adaf348 100644
--- a/indra/newview/llreflectionmap.h
+++ b/indra/newview/llreflectionmap.h
@@ -72,6 +72,9 @@ class alignas(16) LLReflectionMap : public LLRefCount
     // perform occlusion query/readback
     void doOcclusion(const LLVector4a& eye);
 
+    // return false if this probe isn't currently relevant (for example, disabled due to graphics preferences)
+    bool isRelevant();
+
     // point at which environment map was last generated from (in agent space)
     LLVector4a mOrigin;
     
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp
index 77f16925a33671342d19688c32432e0a8278b9d4..03d4c79f98e54b3c6097ad6c0641f3478556dd81 100644
--- a/indra/newview/llreflectionmapmanager.cpp
+++ b/indra/newview/llreflectionmapmanager.cpp
@@ -173,6 +173,8 @@ void LLReflectionMapManager::update()
     bool did_update = false;
     
     static LLCachedControl<S32> sDetail(gSavedSettings, "RenderReflectionProbeDetail", -1);
+    static LLCachedControl<S32> sLevel(gSavedSettings, "RenderReflectionProbeLevel", 3);
+
     bool realtime = sDetail >= (S32)LLReflectionMapManager::DetailLevel::REALTIME;
     
     LLReflectionMap* closestDynamic = nullptr;
@@ -198,6 +200,11 @@ void LLReflectionMapManager::update()
             continue;
         }
         
+        if (probe != mDefaultProbe && !probe->isRelevant())
+        {
+            continue;
+        }
+
         probe->mProbeIndex = i;
 
         LLVector4a d;
@@ -270,6 +277,13 @@ void LLReflectionMapManager::update()
         mRadiancePass = radiance_pass;
     }
 
+    static LLCachedControl<F32> sUpdatePeriod(gSavedSettings, "RenderDefaultProbeUpdatePeriod", 20.f);
+    if (sLevel == 0 &&
+        gFrameTimeSeconds - mDefaultProbe->mLastUpdateTime < sUpdatePeriod)
+    { // when probes are disabled don't update the default probe more often than once every 20 seconds
+        oldestProbe = nullptr;
+    }
+
     // switch to updating the next oldest probe
     if (!did_update && oldestProbe != nullptr)
     {
@@ -360,17 +374,13 @@ void LLReflectionMapManager::getReflectionMaps(std::vector<LLReflectionMap*>& ma
 
 LLReflectionMap* LLReflectionMapManager::registerSpatialGroup(LLSpatialGroup* group)
 {
-    static LLCachedControl<S32> automatic_probes(gSavedSettings, "RenderAutomaticReflectionProbes", 2);
-    if (automatic_probes > 1)
+    if (group->getSpatialPartition()->mPartitionType == LLViewerRegion::PARTITION_VOLUME)
     {
-        if (group->getSpatialPartition()->mPartitionType == LLViewerRegion::PARTITION_VOLUME)
+        OctreeNode* node = group->getOctreeNode();
+        F32 size = node->getSize().getF32ptr()[0];
+        if (size >= 15.f && size <= 17.f)
         {
-            OctreeNode* node = group->getOctreeNode();
-            F32 size = node->getSize().getF32ptr()[0];
-            if (size >= 15.f && size <= 17.f)
-            {
-                return addProbe(group);
-            }
+            return addProbe(group);
         }
     }
 
diff --git a/indra/newview/llreflectionmapmanager.h b/indra/newview/llreflectionmapmanager.h
index 066b1e380fb8551ae06af1243718b041ea2de093..234bde51a81bdb53a9035296dc9eee8b723816ae 100644
--- a/indra/newview/llreflectionmapmanager.h
+++ b/indra/newview/llreflectionmapmanager.h
@@ -77,6 +77,7 @@ class alignas(16) LLReflectionMapManager
 
     // presently hacked into LLViewerObject::setTE
     // Used by LLViewerObjects that are Reflection Probes
+    // vobj must not be null
     // Guaranteed to not return null
     LLReflectionMap* registerViewerObject(LLViewerObject* vobj);
 
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 16259697794c12a3c7f560baf5e90b050f32b1cd..b1383640e35921584266a0a393991f91e710365c 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -449,6 +449,7 @@ static bool handleReflectionProbeDetailChanged(const LLSD& newvalue)
         gPipeline.releaseGLBuffers();
         gPipeline.createGLBuffers();
         LLViewerShaderMgr::instance()->setShaders();
+        gPipeline.mReflectionMapManager.reset();
     }
     return true;
 }
@@ -686,7 +687,7 @@ void settings_setup_listeners()
 // [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4
 	setting_setup_signal_listener(gSavedSettings, "RenderResolutionMultiplier", handleRenderResolutionDivisorChanged);
 // [/SL:KB]
-	//setting_setup_signal_listener(gSavedSettings, "RenderWaterRefResolution", handleReleaseGLBufferChanged); // DEPRECATED
+    setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeLevel", handleReflectionProbeDetailChanged);
 	setting_setup_signal_listener(gSavedSettings, "RenderReflectionProbeDetail", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
     setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index 62c5fe30be7b35ebc14db1ffccf5a7454a174ec5..85e078cb738a815d0061a61a4aab8ee8b56d699f 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1303,43 +1303,40 @@ U32 LLViewerRegion::getNumOfVisibleGroups() const
 
 void LLViewerRegion::updateReflectionProbes()
 {
-    static LLCachedControl<S32> automatic_probes(gSavedSettings, "RenderAutomaticReflectionProbes", 2);
-    if (automatic_probes > 0)
-    {
-        const F32 probe_spacing = 32.f;
-        const F32 probe_radius = sqrtf((probe_spacing * 0.5f) * (probe_spacing * 0.5f) * 3.f);
-        const F32 hover_height = 2.f;
+    LL_PROFILE_ZONE_SCOPED_CATEGORY_DISPLAY;
+    const F32 probe_spacing = 32.f;
+    const F32 probe_radius = sqrtf((probe_spacing * 0.5f) * (probe_spacing * 0.5f) * 3.f);
+    const F32 hover_height = 2.f;
 
-        F32 start = probe_spacing * 0.5f;
+    F32 start = probe_spacing * 0.5f;
 
-        U32 grid_width = REGION_WIDTH_METERS / probe_spacing;
+    U32 grid_width = REGION_WIDTH_METERS / probe_spacing;
 
-        mReflectionMaps.resize(grid_width * grid_width);
+    mReflectionMaps.resize(grid_width * grid_width);
 
-        F32 water_height = getWaterHeight();
-        LLVector3 origin = getOriginAgent();
+    F32 water_height = getWaterHeight();
+    LLVector3 origin = getOriginAgent();
 
-        for (U32 i = 0; i < grid_width; ++i)
+    for (U32 i = 0; i < grid_width; ++i)
+    {
+        F32 x = i * probe_spacing + start;
+        for (U32 j = 0; j < grid_width; ++j)
         {
-            F32 x = i * probe_spacing + start;
-            for (U32 j = 0; j < grid_width; ++j)
-            {
-                F32 y = j * probe_spacing + start;
+            F32 y = j * probe_spacing + start;
 
-                U32 idx = i * grid_width + j;
+            U32 idx = i * grid_width + j;
 
-                if (mReflectionMaps[idx].isNull())
-                {
-                    mReflectionMaps[idx] = gPipeline.mReflectionMapManager.addProbe();
-                }
+            if (mReflectionMaps[idx].isNull())
+            {
+                mReflectionMaps[idx] = gPipeline.mReflectionMapManager.addProbe();
+            }
 
-                LLVector3 probe_origin = LLVector3(x, y, llmax(water_height, mImpl->mLandp->resolveHeightRegion(x, y)));
-                probe_origin.mV[2] += hover_height;
-                probe_origin += origin;
+            LLVector3 probe_origin = LLVector3(x, y, llmax(water_height, mImpl->mLandp->resolveHeightRegion(x, y)));
+            probe_origin.mV[2] += hover_height;
+            probe_origin += origin;
 
-                mReflectionMaps[idx]->mOrigin.load3(probe_origin.mV);
-                mReflectionMaps[idx]->mRadius = probe_radius;
-            }
+            mReflectionMaps[idx]->mOrigin.load3(probe_origin.mV);
+            mReflectionMaps[idx]->mRadius = probe_radius;
         }
     }
 }
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index cdf9cf59ce07ad425ddbca8e51438391919202f4..7e547994874c02b78f058440a4d2bc6446a6af2f 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -673,6 +673,7 @@ std::string LLViewerShaderMgr::loadBasicShaders()
 	bool has_reflection_probes = gSavedSettings.getBOOL("RenderReflectionsEnabled") && gGLManager.mGLVersion > 3.99f;
 
 	S32 probe_count = llclamp(gSavedSettings.getS32("RenderReflectionProbeCount"), 1, LL_MAX_REFLECTION_PROBE_COUNT);
+    S32 probe_level = llclamp(gSavedSettings.getS32("RenderReflectionProbeLevel"), 0, 3);
 
     if (ambient_kill)
     {
@@ -709,6 +710,7 @@ std::string LLViewerShaderMgr::loadBasicShaders()
 	if (has_reflection_probes)
 	{
 		attribs["REFMAP_COUNT"] = std::to_string(probe_count);
+        attribs["REFMAP_LEVEL"] = std::to_string(probe_level);
 		attribs["REF_SAMPLE_COUNT"] = "32";
 	}
 
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
index cedeab463ed3dec4e73ae8599a112ebba9a4a5e7..dce6e58dee03127e67c7c89060ba6b059cfaf83d 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
@@ -682,27 +682,13 @@
        value="2"/>
   </combo_box>
 
-  <check_box
-    control_name="RenderReflectionsEnabled"
-    height="16"
-    initial_value="true"
-    label="Reflections"
-    layout="topleft"
-    left="420"
-    name="ReflectionsEnabled"
-    top_delta="16"
-    width="240">
-    <check_box.commit_callback
-      function="Pref.RenderOptionUpdate" />
-  </check_box>
-
   <check_box
     control_name="RenderScreenSpaceReflections"
     height="16"
     initial_value="true"
     label="Screen Space Reflections"
     layout="topleft"
-    left="440"
+    left="420"
     name="ScreenSpaceReflections"
     top_delta="16"
     width="240">
@@ -716,7 +702,7 @@
     follows="left|top"
     height="16"
     layout="topleft"
-    left="440"
+    left="420"
     name="ReflectionDetailText"
     text_readonly_color="LabelDisabledColor"
     top_delta="16"
@@ -728,7 +714,7 @@
    control_name="RenderReflectionProbeDetail"
    height="18"
    layout="topleft"
-   left_delta="110"
+   left_delta="130"
    top_delta="0"
    name="ReflectionDetail"
    width="150">
@@ -746,7 +732,6 @@
       value="2"/>
   </combo_box>
 
-
   <text
     type="string"
     length="1"
@@ -754,63 +739,40 @@
     height="16"
     layout="topleft"
     left="420"
-    name="RenderTonemapperText"
+    name="ReflectionProbeText"
     text_readonly_color="LabelDisabledColor"
-    top_delta="24"
+    top_delta="16"
     width="128">
-    Tonemapper:
+    Reflection Coverage:
   </text>
+
   <combo_box
-   control_name="RenderToneMapType"
+   control_name="RenderReflectionProbeLevel"
    height="18"
    layout="topleft"
    left_delta="130"
    top_delta="0"
-   name="ToneMapper"
+   name="ReflectionLevel"
    width="150">
-	<combo_box.item
-		label="Linear"
-		name="toneLinear"
-		value="1" />
-	<combo_box.item
-		label="Reinhard"
-		name="toneReinhard"
-		value="2" />
-	<combo_box.item
-		label="Reinhard2"
-		name="toneReinhard2"
-		value="3" />
-	<combo_box.item
-		label="Filmic"
-		name="toneFilmic"
-		value="4" />
-	<combo_box.item
-		label="Unreal"
-		name="toneUnreal"
-		value="5" />
-	<combo_box.item
-		label="ACES Narkowicz"
-		name="toneACES"
-		value="6" />
-	<combo_box.item
-		label="ACES Hill"
-		name="toneACES"
-		value="10" />
-	<combo_box.item
-		label="Uchimura"
-		name="toneUchimura"
-		value="7" />
-	<combo_box.item
-		label="AMD Tonemapper"
-		name="toneAMD"
-		value="8" />
-	<combo_box.item
-		label="Uncharted"
-		name="toneUncharted"
-		value="9" />
+    <combo_box.item
+      label="None"
+      name="0"
+      value="0"/>
+    <combo_box.item
+      label="Manual only"
+      name="1"
+      value="1"/>
+    <combo_box.item
+      label="Manual + terrain and water"
+      name="2"
+      value="2"/>
+    <combo_box.item
+      label="Full scene"
+      name="3"
+      value="3"/>
   </combo_box>
 
-    <slider
+  <slider
     control_name="RenderExposure"
     decimal_digits="1"
     follows="left|top"