diff options
-rw-r--r-- | indra/llinventory/llsettingssky.cpp | 5 | ||||
-rw-r--r-- | indra/llinventory/llsettingssky.h | 2 | ||||
-rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
-rw-r--r-- | indra/newview/llreflectionmapmanager.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llsettingsvo.cpp | 3 |
5 files changed, 20 insertions, 5 deletions
diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp index 4004793ffd..c976307936 100644 --- a/indra/llinventory/llsettingssky.cpp +++ b/indra/llinventory/llsettingssky.cpp @@ -1437,12 +1437,13 @@ F32 LLSettingsSky::getReflectionProbeAmbiance() const return mSettings[SETTING_REFLECTION_PROBE_AMBIANCE].asReal(); } -F32 LLSettingsSky::getTotalReflectionProbeAmbiance() const +F32 LLSettingsSky::getTotalReflectionProbeAmbiance(F32 cloud_shadow_scale) const { // feed cloud shadow back into reflection probe ambiance to mimic pre-reflection-probe behavior // without brightening dark/interior spaces F32 probe_ambiance = getReflectionProbeAmbiance(); - probe_ambiance += (1.f - probe_ambiance) * getCloudShadow()*0.5f; + + probe_ambiance += (1.f - probe_ambiance) * getCloudShadow()*cloud_shadow_scale; return probe_ambiance; } diff --git a/indra/llinventory/llsettingssky.h b/indra/llinventory/llsettingssky.h index b17b32ebb1..7ae569dd4c 100644 --- a/indra/llinventory/llsettingssky.h +++ b/indra/llinventory/llsettingssky.h @@ -137,7 +137,7 @@ public: F32 getReflectionProbeAmbiance() const; // get the probe ambiance setting to use for rendering (adjusted by cloud shadow, aka cloud coverage) - F32 getTotalReflectionProbeAmbiance() const; + F32 getTotalReflectionProbeAmbiance(F32 cloud_shadow_scale) const; // Return first (only) profile layer represented in LLSD LLSD getRayleighConfig() const; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index bbf04a6889..304932dd1a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8828,6 +8828,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderCloudShadowAmbianceFactor</key> + <map> + <key>Comment</key> + <string>Amount that cloud shadow (aka cloud coverage) contributes to reflection probe ambiance</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>0.1</real> + </map> <key>RenderComplexityColorMin</key> <map> <key>Comment</key> diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index 4fd10b85ad..04bce58114 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -780,7 +780,9 @@ void LLReflectionMapManager::updateUniforms() LLEnvironment& environment = LLEnvironment::instance(); LLSettingsSky::ptr_t psky = environment.getCurrentSky(); - F32 minimum_ambiance = psky->getTotalReflectionProbeAmbiance(); + static LLCachedControl<F32> cloud_shadow_scale(gSavedSettings, "RenderCloudShadowAmbianceFactor", 0.125f); + F32 minimum_ambiance = psky->getTotalReflectionProbeAmbiance(cloud_shadow_scale); + F32 ambscale = gCubeSnapshot && !isRadiancePass() ? 0.f : 1.f; diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index c3aaac3ede..1752b2494f 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -733,7 +733,8 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force) shader->uniform3fv(LLShaderMgr::SUNLIGHT_LINEAR, linearColor3v(sunDiffuse)); shader->uniform3fv(LLShaderMgr::MOONLIGHT_LINEAR,linearColor3v(moonDiffuse)); - shader->uniform1f(LLShaderMgr::REFLECTION_PROBE_AMBIANCE, getTotalReflectionProbeAmbiance()); + static LLCachedControl<F32> cloud_shadow_scale(gSavedSettings, "RenderCloudShadowAmbianceFactor", 0.125f); + shader->uniform1f(LLShaderMgr::REFLECTION_PROBE_AMBIANCE, getTotalReflectionProbeAmbiance(cloud_shadow_scale)); shader->uniform1i(LLShaderMgr::SUN_UP_FACTOR, getIsSunUp() ? 1 : 0); shader->uniform1f(LLShaderMgr::SUN_MOON_GLOW_FACTOR, getSunMoonGlowFactor()); |