diff options
| author | Cosmic Linden <cosmic@lindenlab.com> | 2023-07-06 12:53:42 -0700 | 
|---|---|---|
| committer | Cosmic Linden <cosmic@lindenlab.com> | 2023-07-12 15:17:32 -0700 | 
| commit | afcb421bdc666d9b45fb5adb7098b7e433042823 (patch) | |
| tree | c391d1467ac791ab15c593efbaf1b5af5a9d3691 /indra | |
| parent | effb14913b7b5fd7024528ccab5df6fa030e7581 (diff) | |
SL-19567: (WIP) Add options to use higher precision for glow and post-process buffers. Disabled by default.
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 22 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/pipeline.cpp | 8 | 
3 files changed, 30 insertions, 2 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 09eda2534c..9f3a5bd5b9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9340,6 +9340,17 @@      <key>Value</key>      <integer>0</integer>    </map> +  <key>RenderPostProcessingHDR</key> +  <map> +    <key>Comment</key> +    <string>Enable HDR for post processing buffer</string> +    <key>Persist</key> +    <integer>1</integer> +    <key>Type</key> +    <string>Boolean</string> +    <key>Value</key> +    <integer>0</integer> +  </map>    <key>RenderMaxOpenGLVersion</key>    <map>      <key>Comment</key> @@ -10155,6 +10166,17 @@        <key>Value</key>        <integer>9</integer>      </map> +    <key>RenderGlowHDR</key> +    <map> +      <key>Comment</key> +      <string>Enable HDR for glow map</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>RenderGlowStrength</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index aae4409167..9707a2a7e6 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -700,6 +700,7 @@ void settings_setup_listeners()      setting_setup_signal_listener(gSavedSettings, "RenderUIBuffer", handleWindowResized);      setting_setup_signal_listener(gSavedSettings, "RenderDepthOfField", handleReleaseGLBufferChanged);      setting_setup_signal_listener(gSavedSettings, "RenderFSAASamples", handleReleaseGLBufferChanged); +    setting_setup_signal_listener(gSavedSettings, "RenderPostProcessingHDR", handleReleaseGLBufferChanged);      setting_setup_signal_listener(gSavedSettings, "RenderSpecularResX", handleLUTBufferChanged);      setting_setup_signal_listener(gSavedSettings, "RenderSpecularResY", handleLUTBufferChanged);      setting_setup_signal_listener(gSavedSettings, "RenderSpecularExponent", handleLUTBufferChanged); @@ -708,6 +709,7 @@ void settings_setup_listeners()      setting_setup_signal_listener(gSavedSettings, "RenderGlow", handleReleaseGLBufferChanged);      setting_setup_signal_listener(gSavedSettings, "RenderGlow", handleSetShaderChanged);      setting_setup_signal_listener(gSavedSettings, "RenderGlowResolutionPow", handleReleaseGLBufferChanged); +    setting_setup_signal_listener(gSavedSettings, "RenderGlowHDR", handleReleaseGLBufferChanged);      setting_setup_signal_listener(gSavedSettings, "RenderGammaFull", handleSetShaderChanged);      setting_setup_signal_listener(gSavedSettings, "RenderVolumeLODFactor", handleVolumeLODChanged);      setting_setup_signal_listener(gSavedSettings, "RenderAvatarLODFactor", handleAvatarLODChanged); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 0c767e7767..4183990261 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -840,7 +840,9 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)          mSceneMap.allocate(resX, resY, GL_RGB, true);      } -    mPostMap.allocate(resX, resY, GL_RGBA); +	const bool post_hdr = gSavedSettings.getBOOL("RenderPostProcessingHDR"); +    const U32 post_color_fmt = post_hdr ? GL_RGBA16F : GL_RGBA; +    mPostMap.allocate(resX, resY, post_color_fmt);      //HACK make screenbuffer allocations start failing after 30 seconds      if (gSavedSettings.getBOOL("SimulateFBOFailure")) @@ -1163,9 +1165,11 @@ void LLPipeline::createGLBuffers()      // allocate screen space glow buffers      const U32 glow_res = llmax(1, llmin(512, 1 << gSavedSettings.getS32("RenderGlowResolutionPow"))); +	const bool glow_hdr = gSavedSettings.getBOOL("RenderGlowHDR"); +    const U32 glow_color_fmt = glow_hdr ? GL_RGBA16F : GL_RGBA;      for (U32 i = 0; i < 3; i++)      { -        mGlow[i].allocate(512, glow_res, GL_RGBA); +        mGlow[i].allocate(512, glow_res, glow_color_fmt);      }      allocateScreenBuffer(resX, resY); | 
