[Bf-blender-cvs] [e696280b882] sculpt-dev: Sculpt IPMask: Fix crash in original data updates
Pablo Dobarro
noreply at git.blender.org
Mon Mar 1 22:16:01 CET 2021
Commit: e696280b882b91304504a509513e1ccc24be33f5
Author: Pablo Dobarro
Date: Mon Mar 1 22:14:22 2021 +0100
Branches: sculpt-dev
https://developer.blender.org/rBe696280b882b91304504a509513e1ccc24be33f5
Sculpt IPMask: Fix crash in original data updates
===================================================================
M source/blender/editors/sculpt_paint/sculpt_filter_mask.c
===================================================================
diff --git a/source/blender/editors/sculpt_paint/sculpt_filter_mask.c b/source/blender/editors/sculpt_paint/sculpt_filter_mask.c
index f06f4e1ae96..341db1d4f07 100644
--- a/source/blender/editors/sculpt_paint/sculpt_filter_mask.c
+++ b/source/blender/editors/sculpt_paint/sculpt_filter_mask.c
@@ -820,6 +820,7 @@ static void ipmask_filter_apply_from_original_task_cb(void *__restrict userdata,
SculptOrigVertData orig_data;
const eSculptIPMaskFilterType filter_type = data->filter_type;
bool update = false;
+ SCULPT_orig_vert_data_init(&orig_data, data->ob, node);
BKE_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_UNIQUE)
{
if (SCULPT_automasking_factor_get(filter_cache->automasking, ss, vd.index) < 0.5f) {
@@ -837,7 +838,7 @@ static void ipmask_filter_apply_from_original_task_cb(void *__restrict userdata,
case IPMASK_FILTER_INVERT: {
const float strength = clamp_f(data->filter_strength, 0.0f, 1.0f);
const float mask_invert = 1.0f - orig_data.mask;
- new_mask = interpf(orig_data.mask, mask_invert, strength);
+ new_mask = interpf(mask_invert, orig_data.mask, strength);
break;
}
@@ -864,12 +865,14 @@ static void ipmask_filter_apply_from_original_task_cb(void *__restrict userdata,
}
}
-static void sculpt_ipmask_apply_from_original_mask_data(SculptSession *ss,
+static void sculpt_ipmask_apply_from_original_mask_data(Object *ob,
eSculptIPMaskFilterType filter_type,
const float strength)
{
+ SculptSession *ss = ob->sculpt;
FilterCache *filter_cache = ss->filter_cache;
SculptThreadedTaskData data = {
+ .ob = ob,
.ss = ss,
.nodes = filter_cache->nodes,
.filter_strength = strength,
@@ -921,7 +924,7 @@ static int sculpt_ipmask_filter_modal(bContext *C, wmOperator *op, const wmEvent
BKE_sculpt_update_object_for_edit(depsgraph, ob, true, true, false);
if (sculpt_ipmask_filter_uses_apply_from_original(filter_type)) {
- sculpt_ipmask_apply_from_original_mask_data(ss, filter_type, full_step_strength);
+ sculpt_ipmask_apply_from_original_mask_data(ob, filter_type, full_step_strength);
}
else {
sculpt_ipmask_filter_update_to_target_step(ss, target_step, iteration_count, step_interpolation);
More information about the Bf-blender-cvs
mailing list