Blender Git Commit Log
Git Commits -> Revision 44e4f07
Revision 44e4f07 by Hans Goudey (master) September 28, 2021, 16:36 (GMT) |
Geometry Nodes: Run nodes once on unique instance data As described in T91672, often it can be much more efficient to run each node only on the unique geometry of the instances, rather than realizing all instances and potentially processing redundant data. Sometimes the performance difference can be completely smooth vs. completely unusable. Geometry nodes used to hide that choice from users by always realizing instances, but recently we have decided to expose it. So this commit makes nodes run once per unique reference in the entire tree of nested instances in their input geometries, continuing the work started in rB0559971ab377 and rBf94164d89629f0d2. For the old behavior, a realize instances node can be added before the nodes, which is done in the versioning code. Differential Revision: https://developer.blender.org/D12656 |
Commit Details:
Full Hash: 44e4f077a9d7b5b609f6199874802675d75f7266
Parent Commit: b32b38b
Lines Changed: +279, -131
17 Modified Paths:
/source/blender/blenkernel/BKE_blender_version.h (+1, -1) (Diff)
/source/blender/blenkernel/BKE_geometry_set.hh (+1, -0) (Diff)
/source/blender/blenkernel/intern/geometry_set.cc (+10, -0) (Diff)
/source/blender/blenloader/intern/versioning_300.c (+75, -0) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc (+0, -2) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_remove.cc (+0, -2) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_boolean.cc (+5, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc (+37, -27) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc (+32, -15) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc (+0, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc (+15, -8) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc (+33, -20) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_trim.cc (+28, -15) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_material_replace.cc (+3, -5) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_mesh_subdivide.cc (+25, -22) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_separate_components.cc (+6, -4) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc (+8, -8) (Diff)
/source/blender/blenkernel/BKE_geometry_set.hh (+1, -0) (Diff)
/source/blender/blenkernel/intern/geometry_set.cc (+10, -0) (Diff)
/source/blender/blenloader/intern/versioning_300.c (+75, -0) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc (+0, -2) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_attribute_remove.cc (+0, -2) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_boolean.cc (+5, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_convex_hull.cc (+37, -27) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc (+32, -15) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_length.cc (+0, -1) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_resample.cc (+15, -8) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_to_mesh.cc (+33, -20) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_curve_trim.cc (+28, -15) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_material_replace.cc (+3, -5) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_mesh_subdivide.cc (+25, -22) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_separate_components.cc (+6, -4) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_triangulate.cc (+8, -8) (Diff)