summaryrefslogtreecommitdiff
path: root/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
diff options
context:
space:
mode:
authorRunitaiLinden <davep@lindenlab.com>2024-03-28 14:06:11 -0500
committerGitHub <noreply@github.com>2024-03-28 14:06:11 -0500
commit617436b7cb9a574c08e49974046c330da1b706e0 (patch)
tree71de96f51f258a5a6100c50542c03cd881a0de27 /indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
parent74b2f5b2ddd7889b3763be0a7124ce66b23e4c8d (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.glsl18
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));
}