I actually wanted to make a post like this yesterday, but limited to geometry.
Such as best practices for geometry. There are many options, and it can a little confusing until a user really wraps their head around them (at least in my case).
Super inefficient: unique geometry per mesh. Runs terribly with enough meshes.
Reusing geometry: Caching geometry and creating multiple meshes from the same cached geometry. This did not work very well. It saved plenty of memory but the rendering performance was still pretty garbage with enough meshes.
Merging geometry: Create one large geometry object from many smaller parts and use it in a single mesh. This works extremely well, however there are some caveats.
Instanced Geometry: I guess push the geometry object to the gpu once and have the shader place all of the predetermined number of instances in unique positions/rotations (at least i think that’s how it works). Haven’t quite found the courage to move on to this one. Though @pailhead has created an abstraction class for this and I am looking forward to playing with it.
A pro/con sheet for these would be helpful maybe?