DRTVWR-559 Add controls for tonemapper to advanced preferences.

meow-7.2.2
Dave Parks 2023-02-24 15:41:51 -06:00
parent 2bbbb8fe87
commit 9606f2afbb
6 changed files with 99 additions and 10 deletions

View File

@ -10402,9 +10402,31 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
<integer>8</integer>
<real>8</real>
</map>
<key>RenderTonemapper</key>
<map>
<key>Comment</key>
<string>Which tone mapping function to use (0 - Linear, 1 - ACES Narkowicz, 2 - ACES Hill)</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>U32</string>
<key>Value</key>
<real>1</real>
</map>
<key>RenderExposure</key>
<map>
<key>Comment</key>
<string>Exposure value to send to tonemapper.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>1</real>
</map>
<key>RenderReflectionProbeDrawDistance</key>
<map>
<key>Comment</key>
@ -10414,7 +10436,7 @@
<key>Type</key>
<string>F32</string>
<key>Value</key>
<real>64</real>
<integer>64</integer>
</map>
<key>RenderReflectionProbeAmbiance</key>
<map>

View File

@ -127,14 +127,11 @@ vec3 toneMapACES_Hill(vec3 color)
return color;
}
#define TONEMAP_ACES_NARKOWICZ
//#define TONEMAP_ACES_HILL_EXPOSURE_BOOST
float u_Exposure = 1;
uniform float exposure;
vec3 toneMap(vec3 color)
{
color *= u_Exposure;
color *= exposure;
#ifdef TONEMAP_ACES_NARKOWICZ
color = toneMapACES_Narkowicz(color);

View File

@ -681,6 +681,7 @@ void settings_setup_listeners()
setting_setup_signal_listener(gSavedSettings, "RenderReflectionsEnabled", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderScreenSpaceReflections", handleReflectionProbeDetailChanged);
setting_setup_signal_listener(gSavedSettings, "RenderShadowDetail", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderTonemapper", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderDeferredSSAO", handleSetShaderChanged);
setting_setup_signal_listener(gSavedSettings, "RenderPerformanceTest", handleRenderPerfTestChanged);
setting_setup_signal_listener(gSavedSettings, "ChatFontSize", handleChatFontSizeChanged);

View File

@ -2518,6 +2518,16 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
gDeferredPostGammaCorrectProgram.mFeatures.hasSrgb = true;
gDeferredPostGammaCorrectProgram.mFeatures.isDeferred = true;
gDeferredPostGammaCorrectProgram.mShaderFiles.clear();
gDeferredPostGammaCorrectProgram.clearPermutations();
U32 tonemapper = gSavedSettings.getU32("RenderTonemapper");
if (tonemapper == 1)
{
gDeferredPostGammaCorrectProgram.addPermutation("TONEMAP_ACES_NARKOWICZ", "1");
}
else if (tonemapper == 2)
{
gDeferredPostGammaCorrectProgram.addPermutation("TONEMAP_ACES_HILL_EXPOSURE_BOOST", "1");
}
gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoTCV.glsl", GL_VERTEX_SHADER));
gDeferredPostGammaCorrectProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredGammaCorrect.glsl", GL_FRAGMENT_SHADER));
gDeferredPostGammaCorrectProgram.mShaderLevel = mShaderLevel[SHADER_DEFERRED];

View File

@ -7575,9 +7575,13 @@ void LLPipeline::renderFinalize()
gDeferredPostGammaCorrectProgram.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, screenTarget()->getWidth(), screenTarget()->getHeight());
F32 gamma = gSavedSettings.getF32("RenderDeferredDisplayGamma");
static LLCachedControl<F32> exposure(gSavedSettings, "RenderExposure", 1.f);
gDeferredPostGammaCorrectProgram.uniform1f(LLShaderMgr::DISPLAY_GAMMA, (gamma > 0.1f) ? 1.0f / gamma : (1.0f / 2.2f));
F32 e = llclamp(exposure(), 0.5f, 4.f);
static LLStaticHashedString s_exposure("exposure");
gDeferredPostGammaCorrectProgram.uniform1f(s_exposure, e);
mScreenTriangleVB->setBuffer();
mScreenTriangleVB->drawArrays(LLRender::TRIANGLES, 0, 3);

View File

@ -712,6 +712,61 @@
value="2"/>
</combo_box>
<text
type="string"
length="1"
follows="left|top"
height="16"
layout="topleft"
left="420"
name="RenderTonemapperText"
text_readonly_color="LabelDisabledColor"
top_delta="24"
width="128">
Tonemapper:
</text>
<combo_box
control_name="RenderTonemapper"
height="18"
layout="topleft"
left_delta="130"
top_delta="0"
name="ToneMapper"
width="150">
<combo_box.item
label="Linear"
name="0"
value="0"/>
<combo_box.item
label="ACES Narkowicz"
name="1"
value="1"/>
<combo_box.item
label="ACES Hill"
name="2"
value="2"/>
</combo_box>
<slider
control_name="RenderExposure"
decimal_digits="1"
follows="left|top"
height="16"
increment="0.1"
initial_value="160"
label="Exposure:"
label_width="145"
layout="topleft"
left="420"
min_val="0.5"
max_val="4.0"
name="RenderExposure"
show_text="true"
top_delta="20"
width="260">
</slider>
<!-- End of Advanced Settings block -->
<view_border
bevel_style="in"