Just was running some tests when creating dense custom foliage to investigate the impact that overdraw has on performance. The initial plan was to make all foliage using simple tessellated rectangular cards and not worry about matching the shape to the outline of each leaf/blade (for speed). However, doing some testing I found some definite improvements when spending the time to get it as close as possible for certain LODs.
With a simple test, the cards with less overdraw had significantly better performance while having the same amount of tris per card (obvious, but might not be apparent how important it is to optimize the clear space as much as possible- could gain some valuable performance).
(Note :archviz grass LOD0- hence the high polycount to allow for proper bending in GrowFX):
I then started wondering how much this would matter regarding usage with billboards and distant LODs- would the added geometry to reduce overdraw instead of flat single planes win over the cost of more tris? The short answer- yes up close, but no far away. As soon as the instances reached a certain density, it was clear that the cost of the geometry used to reduce overdraw was outweighed by the fact that A: the meshes were too far away to give any real benefit to reducing overdraw and B: the triangle count was much higher (usually double) and this clearly loses regarding performance in large numbers. Billboards with attention to overdraw looked almost the same as simple crossplanes at distance in the overdraw visualizer, and had double the polycount with definite performance drops.
Here is one of the tests with a slightly tessellated LOD vs a single plane per blade LOD:
The results show that although there is less overdraw happening, the extra tris to reduce overdraw aren’t worth it at distance (single plane per blade wins):
The takeaway from this is to reduce overdraw wherever possible- mainly on close, more detailed geometry, but go as simple as you can on distant geometry LODs as a few extra triangles per mesh will start to add up when you have millions of them in the scene.
If anyone else has findings/information to add here, would be more than welcome, it’s a topic that is definitely very broad and doesn’t have a single solution to.