summaryrefslogtreecommitdiff
path: root/indra/newview/llviewercontrol.cpp
diff options
context:
space:
mode:
authorJonathan "Geenz" Goodman <geenz@geenzo.com>2026-04-29 18:03:03 -0400
committerJonathan "Geenz" Goodman <geenz@geenzo.com>2026-04-29 18:03:03 -0400
commit5d5c74c27f7354dba499acb3534c64a9a7fa3dc7 (patch)
tree05feb1586c32ca8ac8c1d952eee4cf500acbccf3 /indra/newview/llviewercontrol.cpp
parent96fd196edcf542c8110a1b197eba68daee78dbd9 (diff)
Get texture quality settings setup and tuned.
Diffstat (limited to 'indra/newview/llviewercontrol.cpp')
-rw-r--r--indra/newview/llviewercontrol.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 0c93b24751..d4d07f24ea 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -112,6 +112,37 @@ static bool handleRenderAvatarMouselookChanged(const LLSD& newvalue)
return true;
}
+static bool handleRenderTextureQualityChanged(const LLSD& newvalue)
+{
+ // 0=Low, 1=Medium, 2=High, 3=Ultra. Drives max-resolution and per-channel
+ // streaming aggressiveness. Channel order is X=normals, Y=diffuse,
+ // Z=specular/metallic, W=emissive (matches TextureChannelPriority).
+ U32 quality = (U32)newvalue.asInteger();
+ U32 max_res = 2048;
+ LLVector4 channel_priority(5.f, 7.5f, 20.f, 7.5f);
+ switch (quality)
+ {
+ case 0: // Low
+ max_res = 1024;
+ channel_priority.setVec(20.f, 30.f, 80.f, 30.f);
+ break;
+ case 1: // Medium
+ channel_priority.setVec(10.f, 15.f, 40.f, 15.f);
+ break;
+ case 2: // High
+ // defaults above
+ break;
+ case 3: // Ultra
+ default:
+ if (quality > 3) quality = 3;
+ channel_priority.setVec(1.f, 1.f, 1.f, 1.f);
+ break;
+ }
+ gSavedSettings.setU32("RenderMaxTextureResolution", max_res);
+ gSavedSettings.setVector4("TextureChannelPriority", channel_priority);
+ return true;
+}
+
static bool handleRenderFarClipChanged(const LLSD& newvalue)
{
if (LLStartUp::getStartupState() >= STATE_STARTED)
@@ -815,6 +846,7 @@ void settings_setup_listeners()
{
LL_PROFILE_ZONE_SCOPED;
setting_setup_signal_listener(gSavedSettings, "FirstPersonAvatarVisible", handleRenderAvatarMouselookChanged);
+ setting_setup_signal_listener(gSavedSettings, "RenderTextureQuality", handleRenderTextureQualityChanged);
setting_setup_signal_listener(gSavedSettings, "RenderFarClip", handleRenderFarClipChanged);
setting_setup_signal_listener(gSavedSettings, "RenderTerrainScale", handleTerrainScaleChanged);
setting_setup_signal_listener(gSavedSettings, "RenderTerrainPBRScale", handlePBRTerrainScaleChanged);