summaryrefslogtreecommitdiff
path: root/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
diff options
context:
space:
mode:
authorclayjohn <claynjohn@gmail.com>2022-09-23 11:43:27 -0700
committerclayjohn <claynjohn@gmail.com>2022-09-23 11:46:40 -0700
commitfe69fedc1aebf6998488f03f98ea2383c986d3d8 (patch)
treec6e2eed3da4956eef9a83bb237b69eafa0ac1d41 /servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
parentf74491fdee9bc2d68668137fbacd8f3a7e7e8df7 (diff)
Move deband to end of tonemapping.
This avoids artifacts when using adjustments and color correction
Diffstat (limited to 'servers/rendering/renderer_rd/shaders/effects/tonemap.glsl')
-rw-r--r--servers/rendering/renderer_rd/shaders/effects/tonemap.glsl12
1 files changed, 6 insertions, 6 deletions
diff --git a/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl b/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
index e459756c6a..a1836e3455 100644
--- a/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
+++ b/servers/rendering/renderer_rd/shaders/effects/tonemap.glsl
@@ -462,12 +462,6 @@ void main() {
}
#endif
- if (params.use_debanding) {
- // For best results, debanding should be done before tonemapping.
- // Otherwise, we're adding noise to an already-quantized image.
- color.rgb += screen_space_dither(gl_FragCoord.xy);
- }
-
color.rgb = apply_tonemapping(color.rgb, params.white);
color.rgb = linear_to_srgb(color.rgb); // regular linear -> SRGB conversion
@@ -498,5 +492,11 @@ void main() {
color.rgb = apply_color_correction(color.rgb);
}
+ if (params.use_debanding) {
+ // Debanding should be done at the end of tonemapping, but before writing to the LDR buffer.
+ // Otherwise, we're adding noise to an already-quantized image.
+ color.rgb += screen_space_dither(gl_FragCoord.xy);
+ }
+
frag_color = color;
}