Browse Source

Fix glow in Mix mode not working correctly when FXAA is enabled

Glow must be performed after FXAA to ensure correct appearance.
Hugo Locurcio 3 years ago
parent
commit
787a1e006b
1 changed files with 5 additions and 4 deletions
  1. 5 4
      servers/rendering/renderer_rd/shaders/effects/tonemap.glsl

+ 5 - 4
servers/rendering/renderer_rd/shaders/effects/tonemap.glsl

@@ -448,6 +448,11 @@ void main() {
 
 	// Early Tonemap & SRGB Conversion
 #ifndef SUBPASS
+	if (params.use_fxaa) {
+		// FXAA must be performed before glow to preserve the "bleed" effect of glow.
+		color.rgb = do_fxaa(color.rgb, exposure, uv_interp);
+	}
+
 	if (params.use_glow && params.glow_mode == GLOW_MODE_MIX) {
 		vec3 glow = gather_glow(source_glow, uv_interp) * params.luminance_multiplier;
 		if (params.glow_map_strength > 0.001) {
@@ -455,10 +460,6 @@ void main() {
 		}
 		color.rgb = mix(color.rgb, glow, params.glow_intensity);
 	}
-
-	if (params.use_fxaa) {
-		color.rgb = do_fxaa(color.rgb, exposure, uv_interp);
-	}
 #endif
 
 	if (params.use_debanding) {