diff options
author | RunitaiLinden <davep@lindenlab.com> | 2024-03-28 14:06:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-28 14:06:11 -0500 |
commit | 617436b7cb9a574c08e49974046c330da1b706e0 (patch) | |
tree | 71de96f51f258a5a6100c50542c03cd881a0de27 /indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl | |
parent | 74b2f5b2ddd7889b3763be0a7124ce66b23e4c8d (diff) |
#1046 Tweak auto-exposure to not underexpose bright scenes (#1084)
Diffstat (limited to 'indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl')
-rw-r--r-- | indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl index c8afacf9bb..95b2f80e06 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl @@ -34,6 +34,8 @@ in vec2 vary_fragcoord; uniform sampler2D diffuseRect; uniform sampler2D emissiveRect; +uniform sampler2D normalMap; +uniform float diffuse_luminance_scale; float lum(vec3 col) { @@ -45,7 +47,21 @@ void main() { vec2 tc = vary_fragcoord*0.6+0.2; tc.y -= 0.1; // HACK - nudge exposure sample down a little bit to favor ground over sky - vec3 c = texture(diffuseRect, tc).rgb + texture(emissiveRect, tc).rgb; + vec3 c = texture(diffuseRect, tc).rgb; + + vec4 norm = texture(normalMap, tc); + + if (!GET_GBUFFER_FLAG(GBUFFER_FLAG_HAS_HDRI) && + !GET_GBUFFER_FLAG(GBUFFER_FLAG_SKIP_ATMOS)) + { + // Apply the diffuse luminance scale to objects but not the sky + // Prevents underexposing when looking at bright environments + // while still allowing for realistically bright skies. + c *= diffuse_luminance_scale; + } + + c += texture(emissiveRect, tc).rgb; + float L = lum(c); frag_color = vec4(max(L, 0.0)); } |