From 657165db94f14150416c2ee2221eeeafa32603f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 21 May 2019 10:07:41 +0200 Subject: Workbench: Fix TAA logic Having both TAA and FXAA enabled at the same time resulted in conflicts. The jitter_index was incremented twice before being used instead of once. --- source/blender/draw/engines/workbench/workbench_effect_aa.c | 1 + source/blender/draw/engines/workbench/workbench_effect_taa.c | 2 +- source/blender/draw/engines/workbench/workbench_private.h | 8 +++++--- 3 files changed, 7 insertions(+), 4 deletions(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/engines/workbench/workbench_effect_aa.c b/source/blender/draw/engines/workbench/workbench_effect_aa.c index b4cdcfcfc99..965f5a5ca4f 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_aa.c +++ b/source/blender/draw/engines/workbench/workbench_effect_aa.c @@ -49,6 +49,7 @@ void workbench_aa_create_pass(WORKBENCH_Data *vedata, GPUTexture **tx) } else { psl->effect_aa_pass = NULL; + effect_info->jitter_index = 0; } } diff --git a/source/blender/draw/engines/workbench/workbench_effect_taa.c b/source/blender/draw/engines/workbench/workbench_effect_taa.c index 69f41f56440..7fd68babc13 100644 --- a/source/blender/draw/engines/workbench/workbench_effect_taa.c +++ b/source/blender/draw/engines/workbench/workbench_effect_taa.c @@ -243,7 +243,7 @@ void workbench_taa_draw_scene_start(WORKBENCH_Data *vedata) const int jitter_index = effect_info->jitter_index; const float *transform_offset = samples[jitter_index]; - effect_info->taa_mix_factor = 1.0f / (effect_info->jitter_index + 1); + effect_info->taa_mix_factor = 1.0f / (jitter_index + 1); effect_info->jitter_index = (jitter_index + 1) % num_samples; /* construct new matrices from transform delta */ diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h index af9401959ab..240d06c1e79 100644 --- a/source/blender/draw/engines/workbench/workbench_private.h +++ b/source/blender/draw/engines/workbench/workbench_private.h @@ -326,7 +326,8 @@ BLI_INLINE bool workbench_is_taa_enabled(WORKBENCH_PrivateData *wpd) } } else { - return wpd->preferences->viewport_aa > SCE_DISPLAY_AA_FXAA && !wpd->is_playback; + return !(IS_NAVIGATING(wpd) || wpd->is_playback) && + wpd->preferences->viewport_aa > SCE_DISPLAY_AA_FXAA; } } @@ -346,8 +347,9 @@ BLI_INLINE bool workbench_is_fxaa_enabled(WORKBENCH_PrivateData *wpd) return true; } - /* when navigating or animation playback use FXAA. */ - return (IS_NAVIGATING(wpd) || wpd->is_playback) && workbench_is_taa_enabled(wpd); + /* when navigating or animation playback use FXAA if scene uses TAA. */ + return (IS_NAVIGATING(wpd) || wpd->is_playback) && + wpd->preferences->viewport_aa > SCE_DISPLAY_AA_FXAA; } } -- cgit v1.2.3