[Bf-blender-cvs] [6b0670951f5] blender2.8: Workbench: TAA quick fix for AMD cards

Jeroen Bakker noreply at git.blender.org
Tue Jun 26 18:15:58 CEST 2018


Commit: 6b0670951f513e57b64da155f8c7e21a568a0ad2
Author: Jeroen Bakker
Date:   Tue Jun 26 18:14:19 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB6b0670951f513e57b64da155f8c7e21a568a0ad2

Workbench: TAA quick fix for AMD cards

Seems to be that mix(a, b, 1.0) will not give you b. on nvidia this is
not a problem as a was initialized with 0.0, but on AMD it can be any
floating point number, resulting that mix(inf, b, 1.0) was still more to
inf than to b.

===================================================================

M	source/blender/draw/engines/workbench/shaders/workbench_effect_taa_frag.glsl

===================================================================

diff --git a/source/blender/draw/engines/workbench/shaders/workbench_effect_taa_frag.glsl b/source/blender/draw/engines/workbench/shaders/workbench_effect_taa_frag.glsl
index d962ffedf1f..cbd55322777 100644
--- a/source/blender/draw/engines/workbench/shaders/workbench_effect_taa_frag.glsl
+++ b/source/blender/draw/engines/workbench/shaders/workbench_effect_taa_frag.glsl
@@ -9,7 +9,13 @@ void main()
 {
 	ivec2 texel = ivec2(gl_FragCoord.xy);
 
-	vec4 history_buffer = texelFetch(historyBuffer, texel, 0);
 	vec4 color_buffer = texelFetch(colorBuffer, texel, 0);
-	colorOutput = mix(history_buffer, color_buffer, mixFactor);
+	if (mixFactor == 1.0)
+	{
+		colorOutput = color_buffer;
+	}
+	else {
+		vec4 history_buffer = texelFetch(historyBuffer, texel, 0);
+		colorOutput = mix(history_buffer, color_buffer, mixFactor);
+	}
 }
\ No newline at end of file



More information about the Bf-blender-cvs mailing list