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:
authorPhilipp Oeser <info@graphics-engineer.com>2019-11-20 23:08:42 +0300
committerPhilipp Oeser <info@graphics-engineer.com>2019-11-21 15:20:04 +0300
commitcee94789850e99fc68dd398e7d1abd67f0e2b85d (patch)
tree5029218744baed0365dc0ecde29938a487ee73b2 /source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
parent1fbb86654a82df7bbce0566b8b335f8631116d65 (diff)
Fix T68499: weight paint gradient is broken with generative modifiers
Caused by rBac442da4a14d. Above commit tweaked the logic to not only early out, but also set the WPGradient_vertStore screen coord to FLT_MAX in case this original index was visited before [gradientVertInit__mapFunc]. For generative modifiers though, we might get here multiple times for the same orig index, resulting in a valid orig index being made invalid for gradientVertUpdate__mapFunc [which would early out in case of FLT_MAX]. Restored original logic, so that setting FLT_MAX only really happens when it should: when ED_view3d_project_float_object fails... Maniphest Tasks: T68499 Differential Revision: https://developer.blender.org/D6282
Diffstat (limited to 'source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c')
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
index f0fe2d4ebdc..ae4ef59597b 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
@@ -665,13 +665,15 @@ static void gradientVertInit__mapFunc(void *userData,
* the screen coords of the verts need to be cached because
* updating the mesh may move them about (entering feedback loop) */
if (BLI_BITMAP_TEST(grad_data->vert_visit, index)) {
- copy_v2_fl(vs->sco, FLT_MAX);
+ /* Do not copy FLT_MAX here, for generative modifiers we are getting here
+ * multiple times with the same orig index. */
return;
}
if (ED_view3d_project_float_object(
grad_data->ar, co, vs->sco, V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) !=
V3D_PROJ_RET_OK) {
+ copy_v2_fl(vs->sco, FLT_MAX);
return;
}