diff options
Diffstat (limited to 'indra/newview/llviewercontrol.cpp')
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 59 |
1 files changed, 1 insertions, 58 deletions
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index dd2357ae8f..0c93b24751 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -112,63 +112,6 @@ static bool handleRenderAvatarMouselookChanged(const LLSD& newvalue) return true; } -// Per-tier texture quality preset. Data-driven so adding a setting is -// "add a column", and the tier values are visible side-by-side. Index is -// RenderTextureQuality: 0=Low, 1=Medium, 2=High, 3=Ultra. -namespace -{ - struct TexturePreset - { - const char* name; - U32 max_resolution; - F32 pixel_to_texel_ratio; // TexturePixelToTexelRatio (R_max, texels per pixel) - F32 pressure_tighten_rate; // TexturePressureTightenRate (ratio units/sec) - F32 pressure_relax_rate; // TexturePressureRelaxRate (ratio units/sec) - F32 channel_ratio_normal; // TextureChannelRatioNormal - F32 channel_ratio_basecolor; // TextureChannelRatioBaseColor - F32 channel_ratio_specular; // TextureChannelRatioSpecular - F32 channel_ratio_emissive; // TextureChannelRatioEmissive - }; - - // Tier values: Low (2-4GB), Medium (4-8GB), High (8-16GB), Ultra (16+GB). - // Quality ladder, expressed in pixel:texel (texels per pixel): - // - pixel_to_texel_ratio is the baseline quality: how many texels per - // screen pixel the tier allocates when VRAM is comfortable (1.0 = 1:1). - // Under pressure the runtime drives the global ratio below this with no - // floor (down to 0 = deepest mips), so there is no per-tier minimum. - // - the channel ratios coarsen specular/emissive/normal relative to base - // color (each is a multiplier on the global ratio). - // The pressure water marks (TexturePressureHighWater/LowWater) are NOT tiered - they're a - // physical "crossed the budget" threshold (0.90 / 0.70), constant across - // tiers. Lower tiers start blurrier (lower R_max) and tighten faster. - // max_res Rmax tight relax N BC S E - static constexpr TexturePreset TEXTURE_PRESETS[4] = { - /* 0 Low */ { "Low", 1024, 0.10f, 0.50f, 0.05f, 0.50f, 1.00f, 0.25f, 0.25f }, - /* 1 Medium */ { "Medium", 2048, 0.40f, 0.35f, 0.08f, 1.00f, 1.00f, 0.50f, 0.50f }, - /* 2 High */ { "High", 2048, 0.80f, 0.25f, 0.10f, 1.00f, 1.00f, 0.50f, 1.00f }, - /* 3 Ultra */ { "Ultra", 2048, 1.00f, 0.15f, 0.12f, 1.00f, 1.00f, 1.00f, 1.00f }, - }; -} - -static bool handleRenderTextureQualityChanged(const LLSD& newvalue) -{ - U32 quality = (U32)newvalue.asInteger(); - if (quality > 3) quality = 3; - const TexturePreset& p = TEXTURE_PRESETS[quality]; - - gSavedSettings.setU32("RenderMaxTextureResolution", p.max_resolution); - gSavedSettings.setF32("TexturePixelToTexelRatio", p.pixel_to_texel_ratio); - gSavedSettings.setF32("TexturePressureTightenRate", p.pressure_tighten_rate); - gSavedSettings.setF32("TexturePressureRelaxRate", p.pressure_relax_rate); - gSavedSettings.setF32("TextureChannelRatioNormal", p.channel_ratio_normal); - gSavedSettings.setF32("TextureChannelRatioBaseColor", p.channel_ratio_basecolor); - gSavedSettings.setF32("TextureChannelRatioSpecular", p.channel_ratio_specular); - gSavedSettings.setF32("TextureChannelRatioEmissive", p.channel_ratio_emissive); - - LL_INFOS("TextureStream") << "Applied texture quality preset: " << p.name << LL_ENDL; - return true; -} - static bool handleRenderFarClipChanged(const LLSD& newvalue) { if (LLStartUp::getStartupState() >= STATE_STARTED) @@ -872,7 +815,6 @@ 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); @@ -884,6 +826,7 @@ void settings_setup_listeners() setting_setup_signal_listener(gSavedSettings, "OctreeMaxNodeCapacity", handleRepartition); setting_setup_signal_listener(gSavedSettings, "OctreeAlphaDistanceFactor", handleRepartition); setting_setup_signal_listener(gSavedSettings, "OctreeAttachmentSizeFactor", handleRepartition); + setting_setup_signal_listener(gSavedSettings, "RenderMaxTextureIndex", handleSetShaderChanged); setting_setup_signal_listener(gSavedSettings, "RenderUIBuffer", handleWindowResized); setting_setup_signal_listener(gSavedSettings, "RenderDepthOfField", handleReleaseGLBufferChanged); setting_setup_signal_listener(gSavedSettings, "RenderFSAAType", handleReleaseGLBufferChanged); |
