I'm creating Sierpiński triangle by chaining "Instance on Points" nodes like so:
The 🟢Instance socket implicitly converts the passed geometry to an instance. Upon conversion to an instance, instances in the geometry aren't realized; this means the first IoP node receives a simple instance of a triangle, but the second IoP receives an instance that doesn't contain its own mesh data - it just contains 3 other instances, with their properties (position, rotation, scale). The third IoP receives an even more complex instance, and so on.
However, at some point it breaks: (empty output)
Inserting a "Realize Instances" node before reaching the recursion depth limit, fixes the output:
But then again after 7 IoP nodes in a row, the output becomes empty:
Adding another "Realize Instances" node, and 4 more IoP nodes takes about a second for the node tree to evaluate, though the timing of the "Group Output" lies it took only 53 ms. Then adding yet another "Realize Instances" (this time it's not needed, but just for benchmarking purposes), lags the evaluation of the node tree considerably for over 10 seconds (though the measured timing says 2000 ms), which reveals the problem of realizing instances especially when generating very complex geometries.
Apparently only the last "Realize Instances" node is needed. What I understand by it, is that geometry nodes don't see a problem with the complexity (depth of recursion) of an instance, only the viewport/render can't support an instance more complex than this:
Perhaps worth to note, "Join Geometry" node adds another level of complexity if it mixes instances with other type of geometry:
Therefore it would be nice to just change the limit of recursion, so when an instance owns an instance, which owns an instance, which owns an instance, which owns an instance, which owns an instance, this last instance can still own an instance (which owns another instance, which owns yet another instance, which…)
The need for optimization is perhaps not obvious with the simple example of a Sierpiński Triangle, but I stopped working on animating the extruded tetrahedron, in hopes I could save some CO₂ emissions: