A GPU-resident L-system: growth, culling and rendering all live in compute buffers, and the CPU never learns how many branches there are.
Rules expand in a compute shader against an append buffer. One dispatch per generation, no readback.
DrawMeshInstancedIndirect straight off the growth buffer, so instance count is never known CPU-side.
Frustum and distance culling in the same pass that writes the draw args. Free, in the way that only GPU work is.
Hue drifts with generation depth. Entirely decorative and the reason anyone looks at it twice.
A million instances at 60 fps, on a laptop. The trick was to stop asking the GPU questions.