SL-18780 Turn down contribution of cloud shadow to reflection probe ambiance and make the value a debug setting.

meow-7.2.2
Dave Parks 2023-02-07 12:59:38 -06:00
parent 8926242d09
commit 055883beb5
5 changed files with 20 additions and 5 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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>

View File

@ -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;

View File

@ -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());