Skip to content
Snippets Groups Projects
Commit d0af1ca7 authored by David Parks's avatar David Parks
Browse files

SL-18780 Feedback cloud coverage into reflection probe ambiance to recover...

SL-18780 Feedback cloud coverage into reflection probe ambiance to recover legacy behavior of cloud coverage brightening ambient lighting without destroying the ability to have good probe driven ambiance.
parent ad1ecfd9
No related branches found
No related tags found
2 merge requests!3Update to main branch,!2Rebase onto current main branch
......@@ -1437,6 +1437,16 @@ F32 LLSettingsSky::getReflectionProbeAmbiance() const
return mSettings[SETTING_REFLECTION_PROBE_AMBIANCE].asReal();
}
F32 LLSettingsSky::getTotalReflectionProbeAmbiance() 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;
return probe_ambiance;
}
F32 LLSettingsSky::getSkyBottomRadius() const
{
return mSettings[SETTING_SKY_BOTTOM_RADIUS].asReal();
......
......@@ -133,8 +133,12 @@ class LLSettingsSky: public LLSettingsBase
F32 getSkyDropletRadius() const;
F32 getSkyIceLevel() const;
// get the probe ambiance setting as stored in the sky settings asset
F32 getReflectionProbeAmbiance() const;
// get the probe ambiance setting to use for rendering (adjusted by cloud shadow, aka cloud coverage)
F32 getTotalReflectionProbeAmbiance() const;
// Return first (only) profile layer represented in LLSD
LLSD getRayleighConfig() const;
LLSD getMieConfig() const;
......
......@@ -695,7 +695,7 @@ void LLReflectionMapManager::updateUniforms()
LLEnvironment& environment = LLEnvironment::instance();
LLSettingsSky::ptr_t psky = environment.getCurrentSky();
F32 minimum_ambiance = psky->getReflectionProbeAmbiance();
F32 minimum_ambiance = psky->getTotalReflectionProbeAmbiance();
for (auto* refmap : mReflectionMaps)
{
......
......@@ -717,7 +717,8 @@ void LLSettingsVOSky::applySpecial(void *ptarget, bool force)
shader->uniform3fv(LLShaderMgr::AMBIENT_LINEAR, linearColor3v(getAmbientColor()/3.f)); // note magic number 3.f comes from SLIDER_SCALE_SUN_AMBIENT
shader->uniform3fv(LLShaderMgr::SUNLIGHT_LINEAR, linearColor3v(getSunlightColor()));
shader->uniform3fv(LLShaderMgr::MOONLIGHT_LINEAR,linearColor3v(getMoonlightColor()));
shader->uniform1f(LLShaderMgr::REFLECTION_PROBE_AMBIANCE, getReflectionProbeAmbiance());
shader->uniform1f(LLShaderMgr::REFLECTION_PROBE_AMBIANCE, getTotalReflectionProbeAmbiance());
shader->uniform1i(LLShaderMgr::SUN_UP_FACTOR, getIsSunUp() ? 1 : 0);
shader->uniform1f(LLShaderMgr::SUN_MOON_GLOW_FACTOR, getSunMoonGlowFactor());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment