Browse Source

Move deband to end of tonemapping.
This avoids artifacts when using adjustments and color correction

clayjohn 2 years ago
parent
commit
fe69fedc1a
1 changed files with 6 additions and 6 deletions
  1. 6 6
      servers/rendering/renderer_rd/shaders/effects/tonemap.glsl

+ 6 - 6
servers/rendering/renderer_rd/shaders/effects/tonemap.glsl

@@ -462,12 +462,6 @@ void main() {
 	}
 	}
 #endif
 #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 = apply_tonemapping(color.rgb, params.white);
 
 
 	color.rgb = linear_to_srgb(color.rgb); // regular linear -> SRGB conversion
 	color.rgb = linear_to_srgb(color.rgb); // regular linear -> SRGB conversion
@@ -498,5 +492,11 @@ void main() {
 		color.rgb = apply_color_correction(color.rgb);
 		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;
 	frag_color = color;
 }
 }