summaryrefslogtreecommitdiff
path: root/indra
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
parent70e36b3ff4673888a951f1f3487176ec3ca44fe5 (diff)
parentc162d8a060e9b48a7945eb0b1bdafbff959b7faf (diff)
Merge remote-tracking branch 'secondlife/release/2024.09-ExtraFPS' into 2024.09-ExtraFPS
Diffstat (limited to 'indra')
-rw-r--r--indra/llui/lluistring.cpp6
-rw-r--r--indra/llui/lluistring.h3
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llviewertexture.cpp22
-rw-r--r--indra/newview/pipeline.cpp35
5 files changed, 46 insertions, 31 deletions
diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp
index bfadeb8428..ab6de16639 100644
--- a/indra/llui/lluistring.cpp
+++ b/indra/llui/lluistring.cpp
@@ -47,6 +47,12 @@ void LLUIString::assign(const std::string& s)
dirty();
}
+void LLUIString::assign(const LLWString& instring)
+{
+ mOrig = wstring_to_utf8str(instring);
+ dirty();
+}
+
void LLUIString::setArgList(const LLStringUtil::format_map_t& args)
{
diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h
index b9d4ff0ebb..2512634004 100644
--- a/indra/llui/lluistring.h
+++ b/indra/llui/lluistring.h
@@ -61,10 +61,11 @@ public:
LLUIString() : mArgs(NULL), mNeedsResult(false), mNeedsWResult(false) {}
LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args);
LLUIString(const std::string& instring) : mArgs(NULL) { assign(instring); }
- LLUIString(const LLWString& instring) : mArgs(NULL) { insert(0, instring); }
+ LLUIString(const LLWString& instring) : mArgs(NULL) { assign(instring); }
~LLUIString() { delete mArgs; }
void assign(const std::string& instring);
+ void assign(const LLWString& instring);
LLUIString& operator=(const std::string& s) { assign(s); return *this; }
void setArgList(const LLStringUtil::format_map_t& args);
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a69c09d696..66813e8a67 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9364,6 +9364,17 @@
<key>Value</key>
<real>4.0</real>
</map>
+ <key>RenderUseExposureSkySettings</key>
+ <map>
+ <key>Comment</key>
+ <string>Use exposure sky settings instead of deriving from HDR scale.</string>
+ <key>Persist</key>
+ <integer>0</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>RenderDynamicExposureCoefficient</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 14647d6f84..36b6787ace 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -582,31 +582,9 @@ void LLViewerTexture::updateClass()
{
if (!was_backgrounded)
{
- std::string notification_name;
- std::string setting;
- if (is_minimized)
- {
- notification_name = "TextureDiscardMinimized";
- setting = "TextureDiscardMinimizedTime";
- }
- else
- {
- notification_name = "TextureDiscardBackgrounded";
- setting = "TextureDiscardBackgroundedTime";
- }
-
LL_INFOS() << "Viewer was " << (is_minimized ? "minimized" : "backgrounded") << " for " << discard_time
<< "s, freeing up video memory." << LL_ENDL;
- LLNotificationsUtil::add(notification_name, llsd::map("DELAY", discard_time), LLSD(),
- [=](const LLSD& notification, const LLSD& response)
- {
- if (response["Cancel_okcancelignore"].asBoolean())
- {
- LL_INFOS() << "User chose to disable texture discard on " << (is_minimized ? "minimizing." : "backgrounding.") << LL_ENDL;
- gSavedSettings.setF32(setting, -1.f);
- }
- });
last_desired_discard_bias = sDesiredDiscardBias;
was_backgrounded = true;
}
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);