summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2020-10-19 22:38:20 +0200
committerHugo Locurcio <hugo.locurcio@hugo.pro>2020-10-19 22:53:28 +0200
commit15d033e25f867d4a96610dde8e8aa91fd36df3b0 (patch)
tree1fc08a411301975c95a7ee221f4233ba098edab0
parent7480a7d17848d7ab9749d6e5af257233588eaea3 (diff)
Fix debanding slightly brightening the whole viewport
Thanks to Mikkel Gjoel on Twitter for the tip :)
-rw-r--r--servers/rendering/rasterizer_rd/shaders/tonemap.glsl6
1 files changed, 4 insertions, 2 deletions
diff --git a/servers/rendering/rasterizer_rd/shaders/tonemap.glsl b/servers/rendering/rasterizer_rd/shaders/tonemap.glsl
index a464048ebd..2a13db4cd1 100644
--- a/servers/rendering/rasterizer_rd/shaders/tonemap.glsl
+++ b/servers/rendering/rasterizer_rd/shaders/tonemap.glsl
@@ -311,7 +311,8 @@ vec3 screen_space_dither(vec2 frag_coord) {
vec3 dither = vec3(dot(vec2(171.0, 231.0), frag_coord));
dither.rgb = fract(dither.rgb / vec3(103.0, 71.0, 97.0));
- return dither.rgb / 255.0;
+ // Subtract 0.5 to avoid slightly brightening the whole viewport.
+ return (dither.rgb - 0.5) / 255.0;
}
void main() {
@@ -338,7 +339,8 @@ void main() {
color = do_fxaa(color, exposure, uv_interp);
}
if (params.use_debanding) {
- // Debanding should be done before tonemapping.
+ // For best results, debanding should be done before tonemapping.
+ // Otherwise, we're adding noise to an already-quantized image.
color += screen_space_dither(gl_FragCoord.xy);
}
color = apply_tonemapping(color, params.white);