summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/app_settings/settings.xml13
-rw-r--r--indra/newview/featuretable.txt20
-rw-r--r--indra/newview/featuretable_mac.txt20
-rw-r--r--indra/newview/llviewercontrol.cpp32
-rw-r--r--indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml32
5 files changed, 82 insertions, 35 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index d7026d2dce..9de8892c5e 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8005,7 +8005,7 @@
<key>RenderMaxTextureResolution</key>
<map>
<key>Comment</key>
- <string>Maximum texture resolution to download for non-boosted textures.</string>
+ <string>Maximum texture resolution to download for non-boosted textures. Driven by RenderTextureQuality.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
@@ -8013,6 +8013,17 @@
<key>Value</key>
<integer>2048</integer>
</map>
+ <key>RenderTextureQuality</key>
+ <map>
+ <key>Comment</key>
+ <string>Texture quality preset: 0=Low, 1=Medium, 2=High, 3=Ultra. Drives RenderMaxTextureResolution and TextureChannelPriority.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>2</integer>
+ </map>
<key>RenderDownScaleMethod</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
index 1090dd8ffb..c408edf963 100644
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,4 @@
-version 74
+version 75
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@@ -85,7 +85,7 @@ RenderExposure 1 4
RenderTonemapType 1 1
RenderTonemapMix 1 1
RenderDisableVintageMode 1 1
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 3
RenderReflectionProbeCount 1 256
//
@@ -128,7 +128,7 @@ RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
-RenderMaxTextureResolution 1 512
+RenderTextureQuality 1 0
RenderReflectionProbeCount 1 1
//
@@ -171,7 +171,7 @@ RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
-RenderMaxTextureResolution 1 1024
+RenderTextureQuality 1 0
RenderReflectionProbeCount 1 32
//
@@ -213,7 +213,7 @@ RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 1
RenderReflectionProbeCount 1 64
//
@@ -255,7 +255,7 @@ RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 1
RenderReflectionProbeCount 1 64
//
@@ -297,7 +297,7 @@ RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 2
RenderReflectionProbeCount 1 128
//
@@ -339,7 +339,7 @@ RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 2
RenderReflectionProbeCount 1 256
//
@@ -381,7 +381,7 @@ RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 3
RenderReflectionProbeCount 1 256
//
@@ -415,7 +415,7 @@ RenderShadowDetail 0 0
RenderReflectionProbeDetail 0 -1
RenderMirrors 0 0
RenderDisableVintageMode 1 0
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 2
RenderReflectionProbeCount 0 0
list Intel
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index c3e2dd0c41..7bb0e3f7f1 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,4 @@
-version 73
+version 74
// The version number above should be incremented IF AND ONLY IF some
// change has been made that is sufficiently important to justify
// resetting the graphics preferences of all users to the recommended
@@ -85,7 +85,7 @@ RenderTonemapType 1 1
RenderTonemapMix 1 1
RenderDisableVintageMode 1 1
RenderDownScaleMethod 1 0
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 3
RenderReflectionProbeCount 1 256
//
@@ -128,7 +128,7 @@ RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
-RenderMaxTextureResolution 1 512
+RenderTextureQuality 1 0
RenderReflectionProbeCount 1 1
//
@@ -171,7 +171,7 @@ RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
RenderDisableVintageMode 1 0
-RenderMaxTextureResolution 1 1024
+RenderTextureQuality 1 0
RenderReflectionProbeCount 1 32
//
@@ -213,7 +213,7 @@ RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 1
RenderReflectionProbeCount 1 64
//
@@ -255,7 +255,7 @@ RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 1
RenderReflectionProbeCount 1 64
//
@@ -297,7 +297,7 @@ RenderCASSharpness 1 0
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 2
RenderReflectionProbeCount 1 128
//
@@ -339,7 +339,7 @@ RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 2
RenderReflectionProbeCount 1 256
//
@@ -381,7 +381,7 @@ RenderCASSharpness 1 0.4
RenderExposure 1 1
RenderTonemapType 1 1
RenderTonemapMix 1 0.7
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 3
RenderReflectionProbeCount 1 256
//
@@ -414,7 +414,7 @@ RenderDeferredSSAO 0 0
RenderShadowDetail 0 0
RenderMirrors 0 0
RenderDisableVintageMode 1 0
-RenderMaxTextureResolution 1 2048
+RenderTextureQuality 1 2
RenderReflectionProbeCount 0 0
list TexUnit8orLess
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);
diff --git a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
index 2a18134491..2942ce67ef 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences_graphics_advanced.xml
@@ -127,31 +127,35 @@
top_delta="16"
left="30"
width="160"
- name="MaxTextureResolutionLabel"
+ name="TextureQualityLabel"
text_readonly_color="LabelDisabledColor">
- Maximum LOD resolution:
+ Texture quality:
</text>
<combo_box
- control_name="RenderMaxTextureResolution"
+ control_name="RenderTextureQuality"
height="19"
layout="topleft"
left_pad="10"
top_delta="0"
- name="MaxTextureResolution"
- tool_tip="Maximum resolution for 'level of detail' textures"
+ name="TextureQuality"
+ tool_tip="Controls maximum texture resolution and how aggressively textures stream by channel. Higher quality keeps more detail in memory."
width="90">
<combo_box.item
- label="512"
- name="512"
- value="512"/>
+ label="Low"
+ name="Low"
+ value="0"/>
+ <combo_box.item
+ label="Medium"
+ name="Medium"
+ value="1"/>
<combo_box.item
- label="1024"
- name="1024"
- value="1024"/>
+ label="High"
+ name="High"
+ value="2"/>
<combo_box.item
- label="2048"
- name="2048"
- value="2048"/>
+ label="Ultra"
+ name="Ultra"
+ value="3"/>
</combo_box>
<check_box