From d56b519bedfc5cf9b38a744d784b0931ef50408f Mon Sep 17 00:00:00 2001 From: Kitty Barnett <develop@catznip.com> Date: Tue, 27 Mar 2018 20:07:07 +0200 Subject: [PATCH] Added 'RenderResolutionMultiplier' as an more fine-tuned alternative to 'RenderResolutionDivisor' --HG-- branch : RLVa --- indra/newview/app_settings/settings.xml | 11 ++++++++ indra/newview/llviewercontrol.cpp | 3 +++ indra/newview/pipeline.cpp | 35 +++++++++++++++++++------ indra/newview/pipeline.h | 3 +++ 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b0894f562c..d341e98a38 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10254,6 +10254,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>RenderResolutionMultiplier</key> + <map> + <key>Comment</key> + <string>Multiplier for rendering 3D scene at reduced resolution.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>1.0</real> + </map> <key>RenderShaderLightingMaxLevel</key> <map> <key>Comment</key> diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index e83bda40e0..03a59712f7 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -635,6 +635,9 @@ void settings_setup_listeners() gSavedSettings.getControl("RenderDebugGL")->getSignal()->connect(boost::bind(&handleRenderDebugGLChanged, _2)); gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _2)); gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2)); +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 + gSavedSettings.getControl("RenderResolutionMultiplier")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _2)); +// [/SL:KB] gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2)); gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 0d3bea3269..4db9bde572 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -141,6 +141,9 @@ bool LLPipeline::RenderDeferred; F32 LLPipeline::RenderDeferredSunWash; U32 LLPipeline::RenderFSAASamples; U32 LLPipeline::RenderResolutionDivisor; +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 +F32 LLPipeline::RenderResolutionMultiplier; +// [/SL:KB] bool LLPipeline::RenderUIBuffer; S32 LLPipeline::RenderShadowDetail; bool LLPipeline::RenderDeferredSSAO; @@ -586,6 +589,9 @@ void LLPipeline::init() connectRefreshCachedSettingsSafe("RenderDeferredSunWash"); connectRefreshCachedSettingsSafe("RenderFSAASamples"); connectRefreshCachedSettingsSafe("RenderResolutionDivisor"); +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 + connectRefreshCachedSettingsSafe("RenderResolutionMultiplier"); +// [/SL:KB] connectRefreshCachedSettingsSafe("RenderUIBuffer"); connectRefreshCachedSettingsSafe("RenderShadowDetail"); connectRefreshCachedSettingsSafe("RenderDeferredSSAO"); @@ -792,17 +798,20 @@ void LLPipeline::resizeScreenTexture() GLuint resX = gViewerWindow->getWorldViewWidthRaw(); GLuint resY = gViewerWindow->getWorldViewHeightRaw(); -// [RLVa:KB] - Checked: 2014-02-23 (RLVa-1.4.10) - U32 resMod = RenderResolutionDivisor, resAdjustedX = resX, resAdjustedY = resY; - if ( (resMod > 1) && (resMod < resX) && (resMod < resY) ) +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 + if ( (RenderResolutionDivisor > 1) && (RenderResolutionDivisor < resX) && (RenderResolutionDivisor < resY) ) { - resAdjustedX /= resMod; - resAdjustedY /= resMod; + resX /= RenderResolutionDivisor; + resY /= RenderResolutionDivisor; } + else if (RenderResolutionMultiplier != 1.f) + { + resX *= RenderResolutionMultiplier; + resY *= RenderResolutionMultiplier; + } +// [/SL:KB] - if ( (resAdjustedX != mScreen.getWidth()) || (resAdjustedY != mScreen.getHeight()) ) -// [/RLVa:KB] -// if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight())) + if ((resX != mScreen.getWidth()) || (resY != mScreen.getHeight())) { releaseScreenBuffers(); if (!allocateScreenBuffer(resX,resY)) @@ -938,6 +947,13 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) resX /= res_mod; resY /= res_mod; } +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 + else if (RenderResolutionMultiplier != 1.f) + { + resX *= RenderResolutionMultiplier; + resY *= RenderResolutionMultiplier; + } +// [/SL:KB] if (RenderUIBuffer) { @@ -1116,6 +1132,9 @@ void LLPipeline::refreshCachedSettings() RenderDeferredSunWash = gSavedSettings.getF32("RenderDeferredSunWash"); RenderFSAASamples = gSavedSettings.getU32("RenderFSAASamples"); RenderResolutionDivisor = gSavedSettings.getU32("RenderResolutionDivisor"); +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 + RenderResolutionMultiplier = gSavedSettings.getF32("RenderResolutionMultiplier"); +// [/SL:KB] RenderUIBuffer = gSavedSettings.getBOOL("RenderUIBuffer"); RenderShadowDetail = gSavedSettings.getS32("RenderShadowDetail"); RenderDeferredSSAO = gSavedSettings.getBOOL("RenderDeferredSSAO"); diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 42d23ca02d..fa500148b2 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -871,6 +871,9 @@ public: static F32 RenderDeferredSunWash; static U32 RenderFSAASamples; static U32 RenderResolutionDivisor; +// [SL:KB] - Patch: Settings-RenderResolutionMultiplier | Checked: Catznip-5.4 + static F32 RenderResolutionMultiplier; +// [/SL:KB] static bool RenderUIBuffer; static S32 RenderShadowDetail; static bool RenderDeferredSSAO; -- GitLab