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:
authorJeroen Bakker <j.bakker@atmind.nl>2020-05-14 15:30:34 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2020-05-14 15:30:34 +0300
commit236794d07a707a5cf4b8aff9d441f88590d69901 (patch)
treeeb309de08263b2c0c5b4928ee1f112b1c3cd60bf /source/blender/draw/engines/workbench
parentc9360b239bc7ebe09721b7d740995f01ee7d8bb3 (diff)
parent7965c735f12b885803933363e9b1ca8e85067af6 (diff)
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source/blender/draw/engines/workbench')
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_antialiasing.c8
-rw-r--r--source/blender/draw/engines/workbench/workbench_engine.c5
-rw-r--r--source/blender/draw/engines/workbench/workbench_private.h2
3 files changed, 13 insertions, 2 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
index 5c8730ac8f9..d2bd653a656 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
@@ -176,6 +176,14 @@ void workbench_antialiasing_engine_init(WORKBENCH_Data *vedata)
}
}
+ /* Reset the TAA when we have already draw a sample, but the sample count differs from previous
+ * time. This removes render artifacts when the viewport anti-aliasing in the user preferences is
+ * set to a lower value. */
+ if (wpd->taa_sample_len != wpd->taa_sample_len_previous) {
+ wpd->taa_sample = 0;
+ wpd->taa_sample_len_previous = wpd->taa_sample_len;
+ }
+
if (wpd->view_updated) {
wpd->taa_sample = 0;
wpd->view_updated = false;
diff --git a/source/blender/draw/engines/workbench/workbench_engine.c b/source/blender/draw/engines/workbench/workbench_engine.c
index e75ba80608b..270a33fdd85 100644
--- a/source/blender/draw/engines/workbench/workbench_engine.c
+++ b/source/blender/draw/engines/workbench/workbench_engine.c
@@ -55,6 +55,7 @@ void workbench_engine_init(void *ved)
if (!stl->wpd) {
stl->wpd = MEM_callocN(sizeof(*stl->wpd), __func__);
+ stl->wpd->taa_sample_len_previous = -1;
stl->wpd->view_updated = true;
}
@@ -118,7 +119,7 @@ static void workbench_cache_sculpt_populate(WORKBENCH_PrivateData *wpd,
if (use_single_drawcall) {
DRWShadingGroup *grp = workbench_material_setup(wpd, ob, 0, color_type, NULL);
- DRW_shgroup_call_sculpt(grp, ob, false, false, use_vcol);
+ DRW_shgroup_call_sculpt(grp, ob, false, false);
}
else {
const int materials_len = DRW_cache_object_material_count_get(ob);
@@ -126,7 +127,7 @@ static void workbench_cache_sculpt_populate(WORKBENCH_PrivateData *wpd,
for (int i = 0; i < materials_len; i++) {
shgrps[i] = workbench_material_setup(wpd, ob, i + 1, color_type, NULL);
}
- DRW_shgroup_call_sculpt_with_materials(shgrps, materials_len, ob, false);
+ DRW_shgroup_call_sculpt_with_materials(shgrps, materials_len, ob);
}
}
diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h
index 2191e09bc24..967bdf9bae0 100644
--- a/source/blender/draw/engines/workbench/workbench_private.h
+++ b/source/blender/draw/engines/workbench/workbench_private.h
@@ -261,6 +261,8 @@ typedef struct WORKBENCH_PrivateData {
/* Temporal Antialiasing */
/** Total number of samples to after which TAA stops accumulating samples. */
int taa_sample_len;
+ /** Total number of samples of the previous TAA. When changed TAA will be reset. */
+ int taa_sample_len_previous;
/** Current TAA sample index in [0..taa_sample_len[ range. */
int taa_sample;
/** Inverse of taa_sample to divide the accumulation buffer. */