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:
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
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue