summaryrefslogtreecommitdiff
path: root/indra/newview/pipeline.cpp
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2024-12-10 13:02:09 +0800
committerErik Kundiman <erik@megapahit.org>2024-12-10 13:02:09 +0800
commit91cc1af25286c9a1a55bd99949a4d02cb19c2a3e (patch)
tree7439f3aee7dfa9c29e67264b2a7ab13789f1fa4d /indra/newview/pipeline.cpp
parent70e36b3ff4673888a951f1f3487176ec3ca44fe5 (diff)
parentc162d8a060e9b48a7945eb0b1bdafbff959b7faf (diff)
Merge remote-tracking branch 'secondlife/release/2024.09-ExtraFPS' into 2024.09-ExtraFPS
Diffstat (limited to 'indra/newview/pipeline.cpp')
-rw-r--r--indra/newview/pipeline.cpp35
1 files changed, 27 insertions, 8 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 47c2f2ffa9..85af326005 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -7119,18 +7119,37 @@ void LLPipeline::generateExposure(LLRenderTarget* src, LLRenderTarget* dst, bool
LLSettingsSky::ptr_t sky = LLEnvironment::instance().getCurrentSky();
F32 probe_ambiance = LLEnvironment::instance().getCurrentSky()->getReflectionProbeAmbiance(should_auto_adjust);
- F32 exp_min = sky->getHDRMin();
- F32 exp_max = sky->getHDRMax();
- if (dynamic_exposure_enabled)
+ F32 exp_min = 1.f;
+ F32 exp_max = 1.f;
+
+ static LLCachedControl<bool> use_exposure_sky_settings(gSavedSettings, "RenderUseExposureSkySettings", false);
+
+ if (use_exposure_sky_settings)
{
- exp_min = sky->getHDROffset() - exp_min;
- exp_max = sky->getHDROffset() + exp_max;
+ if (dynamic_exposure_enabled)
+ {
+ exp_min = sky->getHDROffset() - sky->getHDRMin();
+ exp_max = sky->getHDROffset() + sky->getHDRMax();
+ }
+ else
+ {
+ exp_min = sky->getHDROffset();
+ exp_max = sky->getHDROffset();
+ }
}
- else
+ else if (dynamic_exposure_enabled)
{
- exp_min = sky->getHDROffset();
- exp_max = sky->getHDROffset();
+ if (probe_ambiance > 0.f)
+ {
+ F32 hdr_scale = sqrtf(LLEnvironment::instance().getCurrentSky()->getGamma()) * 2.f;
+
+ if (hdr_scale > 1.f)
+ {
+ exp_min = 1.f / hdr_scale;
+ exp_max = hdr_scale;
+ }
+ }
}
shader->uniform1f(dt, gFrameIntervalSeconds);