Best way to distribute foliage on terrain in UPBGE 4

I’d like to know what is the most ideal and performance efficient way to scatter a lot of objects on a surface, namely for foliage such as trees / grass / rocks. I’m using UPBGE 4.x even if it’s still in Alpha, meaning I have geometry nodes which I already use to generate voxel terrains from volume: This offers an option between the old particle system and geometry nodes.

Since geometry nodes seem like the way forward, distributing points on surface then instancing on those points seems like the best way. My question is whether that’s more optimized. Particularly if it keeps each instance common without duplicating the mesh in video memory, VBO and GPU skinning are important optimizations when duplicating the same mesh a lot… I suspect the nodes should be doing that if you don’t choose to make each instance unique.

I’ll also want foliage to waver based on wind. I’m not sure how to do that for BGE with any method, but should design in mind with features like large objects bending the grass away as they move. I presume grass flying away or leafs falling out of trees should use realtime particles, unless updating geometry nodes each frame for that too is a better idea.

1 Like