diff options
| author | Cosmic Linden <cosmic@lindenlab.com> | 2023-07-11 09:51:14 -0700 | 
|---|---|---|
| committer | Cosmic Linden <cosmic@lindenlab.com> | 2023-07-12 15:44:15 -0700 | 
| commit | 66283201301b0e55336f4b20407fed811acdc739 (patch) | |
| tree | 30b9a2d1eeb1a2e353984145e87cb7842e55027c /indra/newview/app_settings/shaders/class1 | |
| parent | afcb421bdc666d9b45fb5adb7098b7e433042823 (diff) | |
SL-19567: Add option RenderGlowNoise for low precision glow dithering, enabled by default
Diffstat (limited to 'indra/newview/app_settings/shaders/class1')
| -rw-r--r-- | indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl | 15 | 
1 files changed, 14 insertions, 1 deletions
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl index 7a5e14566b..b5437d43d2 100644 --- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl +++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl @@ -28,6 +28,10 @@  out vec4 frag_color;  uniform sampler2D diffuseMap; +#if HAS_NOISE +uniform sampler2D glowNoiseMap; +uniform vec2 screen_res; +#endif  uniform float minLuminance;  uniform float maxExtractAlpha;  uniform vec3 lumWeights; @@ -44,7 +48,16 @@ void main()  	float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) );  	float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) );  -	frag_color.rgb = col.rgb;  +#if HAS_NOISE +    float TRUE_NOISE_RES = 128; // See mTrueNoiseMap +    // *NOTE: Usually this is vary_fragcoord not vary_texcoord0, but glow extraction is in screen space +    vec3 glow_noise = texture(glowNoiseMap, vary_texcoord0.xy * (screen_res / TRUE_NOISE_RES)).xyz; +    // Dithering. Reduces banding effects in the reduced precision glow buffer. +    float NOISE_DEPTH = 64.0; +    col.rgb += glow_noise / NOISE_DEPTH; +    col.rgb = max(col.rgb, vec3(0)); +#endif +	frag_color.rgb = col.rgb;  	frag_color.a = max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha);  }  | 
