Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-05-21 11:07:41 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-22 14:29:04 +0300
commit657165db94f14150416c2ee2221eeeafa32603f3 (patch)
tree3c58d8e6240ca7fbffbe484eaa1f9339046f4cea /source/blender/draw
parent774022260a215dbd9ec3f978c1259f288fecb77c (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/blender/draw')
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_aa.c1
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_taa.c2
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h8
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;
}
}