Have you ever run into this when building a large-scale scene?
You used DrawMeshInstancedIndirect
to render millions of objects, and at first, it seemed like the perfect solution.
But then, as the number of instance types increased, things got messy. You had to break things up into multiple buffers, issue multiple draw calls—and worst of all, you had no way to know which instances were actually visible.
That means for every type of object, even if it’s not visible at all, the CPU still needs to issue a DrawMeshInstancedIndirect call to the GPU. That’s wasted draw overhead and CPU-GPU communication cost—for absolutely nothing rendered.
And on top of that? You’re manually managing transforms, rotations, scaling, and LODs for potentially millions of instances. Eventually, your scene becomes an unmaintainable blob of dense matrix data.
That’s exactly why we built Tile3DInstancer.