← All projectsProjects / Grafted2023 · solo

Grafted

A GPU-resident L-system: growth, culling and rendering all live in compute buffers, and the CPU never learns how many branches there are.

WebGL canvas · no build
No WebGL build uploaded for this project yet
Drag orbitScroll zoomSpace reseedH hide UIRuns at 60 fps on integrated graphics. Nothing leaves your machine.

What I actually built

GPU L-system

Rules expand in a compute shader against an append buffer. One dispatch per generation, no readback.

Indirect draw

DrawMeshInstancedIndirect straight off the growth buffer, so instance count is never known CPU-side.

Culling

Frustum and distance culling in the same pass that writes the draw args. Free, in the way that only GPU work is.

Colour

Hue drifts with generation depth. Entirely decorative and the reason anyone looks at it twice.

Screens


Devlog

6 entries · newest first
Week 4

Removed the last readback and doubled the count

A million instances at 60 fps, on a laptop. The trick was to stop asking the GPU questions.

All 6 entries →