diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-21 11:07:41 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-22 14:29:04 +0300 |
commit | 657165db94f14150416c2ee2221eeeafa32603f3 (patch) | |
tree | 3c58d8e6240ca7fbffbe484eaa1f9339046f4cea /source | |
parent | 774022260a215dbd9ec3f978c1259f288fecb77c (diff) |
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.
Diffstat (limited to 'source')
3 files changed, 7 insertions, 4 deletions
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; } } |