With RenderDoc and PIX I noticed how the foliage in unreal is rendered in clusters with a couple of instances. There’s 2 issues with this :
- Consecutive draw calls using the same vertex buffer which could’ve been merged into the same draw call. I know it uses an instance buffer, but if the entire buffer would’ve been bound all data could be fetched with SV_InstanceID anyway.
- The instances are sort of in view, but many times quite a number of them, ranging from 10% up to 50% of the instances are not in view. This basically tells me that the culling is not per object. Looking in the source it has a sort of octree spatialization but I can’t figure out where to change its smallest unit so that objects outside the frustum are never rendered.