[Bf-blender-cvs] [58ac113b76d] master: Fix T74782: WorkBench TAA Artifacts During Painting/Drawing

Jeroen Bakker noreply at git.blender.org
Mon Mar 23 17:14:04 CET 2020


Commit: 58ac113b76d950c72c7319094f7e6cc61c70dc59
Author: Jeroen Bakker
Date:   Mon Mar 23 17:04:40 2020 +0100
Branches: master
https://developer.blender.org/rB58ac113b76d950c72c7319094f7e6cc61c70dc59

Fix T74782: WorkBench TAA Artifacts During Painting/Drawing

When the TAA is finished the screen can still be redrawn by other
operations without the TAA needs to be reset.
If that happened the TAA did add a blank sample to the result.

This patch will add an early exit in the case TAA was finished. Note
that there are still some cases still not working. The overlay engine
can in certain circumstances draw directly into the default_fb what can
lead to render artifacts.

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

M	source/blender/draw/engines/workbench/workbench_effect_antialiasing.c

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

diff --git a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
index 3050093062f..05ce4c8395b 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
@@ -422,6 +422,7 @@ void workbench_antialiasing_draw_pass(WORKBENCH_Data *vedata)
    * If TAA accumulation is finished, we only blit the result.
    */
 
+  const bool taa_finished = (wpd->taa_sample >= wpd->taa_sample_len) && wpd->taa_sample_len > 1;
   if (wpd->taa_sample == 0) {
     /* In playback mode, we are sure the next redraw will not use the same viewmatrix.
      * In this case no need to save the depth buffer. */
@@ -440,6 +441,9 @@ void workbench_antialiasing_draw_pass(WORKBENCH_Data *vedata)
     if (workbench_in_front_history_needed(vedata)) {
       GPU_framebuffer_blit(fbl->antialiasing_in_front_fb, 0, dfbl->in_front_fb, 0, GPU_DEPTH_BIT);
     }
+    if (taa_finished) {
+      return;
+    }
   }
 
   if (!DRW_state_is_image_render() || wpd->taa_sample + 1 == wpd->taa_sample_len) {



More information about the Bf-blender-cvs mailing list