Blender Git Commit Log

Git Commits -> Revision 518c5ce

Revision 518c5ce by Hans Goudey (master)
May 9, 2021, 04:57 (GMT)
Geometry Nodes: Improve point instance node performance

This commit uses two changes to improve the performance of the point
instance node.

**Prevent Reallocations**
At 64 bytes, the transform matrix for every instance is rather large,
so reallocating the vector as it grows can become a performance bottle-
neck. This commit reserves memory for the instances that will be added
to prevent unecessary reallocations as the instance vector grows.

In a test with 4 million instances of 3 objects in a collection, the
node was about 40% faster, from 370ms to 270ms for the node.

**Parallelization**
Currently the instances are added by appending to a vector. By changing
this slightly to fill indices instead, we can parallelize the operation
so that multiple threads can fill data at the same time. Tested on a
Ryzen 3700x, this reduced the runtime from the above 270ms to 44ms
average, bringing the total speedup to ~8x.

Note that displaying the instances in the viewport is still much slower
than the calculations in node, this change doesn't affect that.

Commit Details:

Full Hash: 518c5ce4cd75aabcc649efb9e118d18622b5ea70
Parent Commit: b7afb8e
Lines Changed: +44, -12

3 Modified Paths:

/source/blender/blenkernel/BKE_geometry_set.hh (+2, -0) (Diff)
/source/blender/blenkernel/intern/geometry_component_instances.cc (+18, -0) (Diff)
/source/blender/nodes/geometry/nodes/node_geo_point_instance.cc (+24, -12) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021