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.
This commit is contained in:
Jeroen Bakker 2020-03-23 17:04:40 +01:00
parent 24b27ea231
commit 58ac113b76
Notes: blender-bot 2023-02-14 09:34:18 +01:00
Referenced by commit b759857825, Revert "Fix T74782: WorkBench TAA Artifacts During Painting/Drawing"
Referenced by issue #75050, GPencil: Strokes get darker while drawing in SOLID mode
Referenced by issue #74782, Drawing in 3D viewport changes object colors
1 changed files with 4 additions and 0 deletions

View File

@ -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) {