Blender Git Loki
Git Commits -> Revision e5ee7e9
Revision e5ee7e9 by Jacques Lucke (master) January 14, 2021, 14:52 (GMT) |
Geometry Nodes: don't delete existing attribute before new attribute is computed This fixes the behavior of some nodes when the same attribute name is used for input and output. If both attributes have a different type, they can't exist at the same time. Therefore, the input attribute has to be removed in order to create the output attribute. Previously, the input attribute was remove before it was used in any computations. Now, the output is written to a temporary buffer and only later saved in the geometry component. This allows both attributes to coexist within the node. The temporary attribute is only create when necessary. The normal case without name collisions still works the same as before. Differential Revision: https://developer.blender.org/D10109 Ref T83793. |
Commit Details:
Full Hash: e5ee7e9a2df93d7f28f9e1f8bc0eb2d33dfadfb4
Parent Commit: 53bd589
Lines Changed: +263, -57
15 Modified Paths:
/source/blender/blenkernel/BKE_geometry_set.hh (+66, -7) (Diff)
/source/blender/blenkernel/intern/attribute_access.cc (+151, -14) (Diff)
/source/blender/functions/FN_spans.hh (+8, -0) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_align_rotation_to_vector.cc (+3, -3) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_color_ramp.cc (+2, -2) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_compare.cc (+3, -4) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_fill.cc (+3, -5) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc (+2, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_mix.cc (+2, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_randomize.cc (+3, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_vector_math.cc (+2, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc (+9, -9) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_rotate.cc (+3, -3) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_scale.cc (+3, -3) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_translate.cc (+3, -3) (Diff)
/source/blender/blenkernel/intern/attribute_access.cc (+151, -14) (Diff)
/source/blender/functions/FN_spans.hh (+8, -0) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_align_rotation_to_vector.cc (+3, -3) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_color_ramp.cc (+2, -2) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_compare.cc (+3, -4) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_fill.cc (+3, -5) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_math.cc (+2, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_mix.cc (+2, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_randomize.cc (+3, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_vector_math.cc (+2, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_distribute.cc (+9, -9) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_rotate.cc (+3, -3) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_scale.cc (+3, -3) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_translate.cc (+3, -3) (Diff)