diff options
author | Jacques Lucke <jacques@blender.org> | 2020-12-14 17:28:24 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2020-12-14 17:29:50 +0300 |
commit | 9ee7270e0acc6d60c8eac9e25cca00aa384c0879 (patch) | |
tree | f36bc3cae2166c2cbe1d06a8f816492b492ad838 /source/blender/modifiers | |
parent | 6714b800d1716f7c7dec9a640d1c615bbf1a938f (diff) |
Geometry Nodes: require vertex groups data in nodes modifier
Without this, the modifier evaluation code might remove any
vertex groups from the mesh for performance reasons.
We can't say for sure whether the node group will need the vertex
groups, but it is quite likely.
Ref T83357.
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc index 6730ce1c8a8..652558655ce 100644 --- a/source/blender/modifiers/intern/MOD_nodes.cc +++ b/source/blender/modifiers/intern/MOD_nodes.cc @@ -1063,6 +1063,15 @@ static void freeData(ModifierData *md) } } +static void requiredDataMask(Object *UNUSED(ob), + ModifierData *UNUSED(md), + CustomData_MeshMasks *r_cddata_masks) +{ + /* We don't know what the node tree will need. If there are vertex groups, it is likely that the + * node tree wants to access them. */ + r_cddata_masks->vmask |= CD_MASK_MDEFORMVERT; +} + ModifierTypeInfo modifierType_Nodes = { /* name */ "GeometryNodes", /* structName */ "NodesModifierData", @@ -1087,7 +1096,7 @@ ModifierTypeInfo modifierType_Nodes = { /* modifyVolume */ nullptr, /* initData */ initData, - /* requiredDataMask */ nullptr, + /* requiredDataMask */ requiredDataMask, /* freeData */ freeData, /* isDisabled */ isDisabled, /* updateDepsgraph */ updateDepsgraph, |