Fix T95489: support writing to vertex groups with geometry nodes again
Technically, this can't be relied upon in the long term. It worked more or less accidentally before. It was broken by a previous fix accidentally. I mainly bring it back because rBa985f558a6eb16cd6f0 was not expected to have this side effect. Note, this change can result in slower performance. Writing to a vertex groups is less efficient than using a generic attribute.
This commit is contained in:
parent
5088d907e5
commit
b8a634cb1d
Notes:
blender-bot
2023-02-14 07:45:38 +01:00
Referenced by issue #95610, Writing to an attribute that is also a vertexgroup results in black when used in a shader Referenced by issue #95611, Regression: Capture Attribute in Face Corner mode produces garbage data Referenced by issue #95489, Write to Vertex Groups from Geometry Nodes is not working anymore
|
@ -996,21 +996,18 @@ static void store_computed_output_attributes(
|
|||
{
|
||||
for (const OutputAttributeToStore &store : attributes_to_store) {
|
||||
GeometryComponent &component = geometry.get_component_for_write(store.component_type);
|
||||
/* Try deleting an existing attribute, so that we can just use `attribute_try_create` to pass
|
||||
* in the data directly. */
|
||||
component.attribute_try_delete(store.name);
|
||||
if (component.attribute_exists(store.name)) {
|
||||
/* Copy the data into an existing attribute. */
|
||||
blender::bke::WriteAttributeLookup write_attribute = component.attribute_try_get_for_write(
|
||||
store.name);
|
||||
if (write_attribute) {
|
||||
write_attribute.varray.set_all(store.data.data());
|
||||
store.data.type().destruct_n(store.data.data(), store.data.size());
|
||||
MEM_freeN(store.data.data());
|
||||
if (write_attribute.tag_modified_fn) {
|
||||
write_attribute.tag_modified_fn();
|
||||
}
|
||||
}
|
||||
store.data.type().destruct_n(store.data.data(), store.data.size());
|
||||
MEM_freeN(store.data.data());
|
||||
}
|
||||
else {
|
||||
component.attribute_try_create(store.name,
|
||||
|
|
Loading…
Reference in New Issue