Commit: 1d253b6652518a68731a5d8a5909c8b29174b894 Author: Jacques Lucke Date: Tue Jan 17 18:40:28 2023 +0100 Branches: master https://developer.blender.org/rB1d253b6652518a68731a5d8a5909c8b29174b894
Fix T103945: incorrect anonymous attribute references The case where the same field group input is evaluated on more than one geometry inputs was not handled correctly. =================================================================== M source/blender/nodes/intern/geometry_nodes_lazy_function.cc =================================================================== diff --git a/source/blender/nodes/intern/geometry_nodes_lazy_function.cc b/source/blender/nodes/intern/geometry_nodes_lazy_function.cc index 4aec8d405ea..54f8c3c912d 100644 --- a/source/blender/nodes/intern/geometry_nodes_lazy_function.cc +++ b/source/blender/nodes/intern/geometry_nodes_lazy_function.cc @@ -2250,15 +2250,18 @@ struct GeometryNodesLazyFunctionGraphBuilder { AttributeReferenceKey key; key.type = AttributeReferenceKeyType::InputField; key.index = relation.field_input; - r_attribute_reference_keys.add_new(key); - AttributeReferenceInfo info; - lf::OutputSocket &lf_field_socket = *const_cast<lf::OutputSocket *>( - mapping_->group_input_sockets[relation.field_input]); - info.lf_attribute_set_socket = &add_get_attributes_node(lf_field_socket); + const int key_index = r_attribute_reference_keys.index_of_or_add(key); + if (key_index >= r_attribute_reference_infos.size()) { + AttributeReferenceInfo info; + lf::OutputSocket &lf_field_socket = *const_cast<lf::OutputSocket *>( + mapping_->group_input_sockets[relation.field_input]); + info.lf_attribute_set_socket = &add_get_attributes_node(lf_field_socket); + r_attribute_reference_infos.append(info); + } + AttributeReferenceInfo &info = r_attribute_reference_infos[key_index]; for (const bNode *bnode : btree_.group_input_nodes()) { info.initial_geometry_sockets.append(&bnode->output_socket(relation.geometry_input)); } - r_attribute_reference_infos.append(std::move(info)); } /* Find group outputs that attributes need to be propagated to. */ for (const aal::PropagateRelation &relation : tree_relations.propagate_relations) { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs