diff options
author | Jonathan "Geenz" Goodman <geenz@lindenlab.com> | 2023-07-12 18:58:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-12 18:58:15 -0700 |
commit | 880a1ee695f0d6b57c081c9a04d406712c17f058 (patch) | |
tree | b83d918400925f2b8dc504d0033ef42d5c6a09b8 /indra/newview/app_settings | |
parent | f6369a2f2246cf3828078f2c89736398e9f29869 (diff) | |
parent | 66283201301b0e55336f4b20407fed811acdc739 (diff) |
Merge pull request #275 from secondlife/SL-19567
SL-19567: Mitigate glow banding
Diffstat (limited to 'indra/newview/app_settings')
-rw-r--r-- | indra/newview/app_settings/settings.xml | 33 | ||||
-rw-r--r-- | indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl | 15 |
2 files changed, 47 insertions, 1 deletions
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 09eda2534c..8e5e092250 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> @@ -10203,6 +10225,17 @@ <key>Value</key> <real>1.3</real> </map> + <key>RenderGlowNoise</key> + <map> + <key>Comment</key> + <string>Enables glow noise (dithering). Reduces banding from glow in certain cases.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <real>1</real> + </map> <key>DisableAllRenderTypes</key> <map> <key>Comment</key> 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); } |