Refactor: Sculpt: Specialize face set access in mask init
Part of #118145.
This commit is contained in:
@@ -144,14 +144,21 @@ static int sculpt_mask_init_exec(bContext *C, wmOperator *op)
|
||||
}
|
||||
});
|
||||
break;
|
||||
case InitMode::FaceSet:
|
||||
case InitMode::FaceSet: {
|
||||
const Mesh &mesh = *static_cast<const Mesh *>(ob.data);
|
||||
const GroupedSpan<int> vert_to_face_map = mesh.vert_to_face_map();
|
||||
const bke::AttributeAccessor attributes = mesh.attributes();
|
||||
const VArraySpan face_sets = *attributes.lookup_or_default<int>(
|
||||
".sculpt_face_set", bke::AttrDomain::Face, 1);
|
||||
|
||||
write_mask_mesh(depsgraph, ob, node_mask, [&](MutableSpan<float> mask, Span<int> verts) {
|
||||
for (const int vert : verts) {
|
||||
const int face_set = face_set::vert_face_set_get(ob, PBVHVertRef{vert});
|
||||
const int face_set = face_set::vert_face_set_get(vert_to_face_map, face_sets, vert);
|
||||
mask[vert] = BLI_hash_int_01(face_set + seed);
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
case InitMode::Island:
|
||||
islands::ensure_cache(ob);
|
||||
write_mask_mesh(depsgraph, ob, node_mask, [&](MutableSpan<float> mask, Span<int> verts) {
|
||||
|
||||
Reference in New Issue
Block a user