Eniko Fox built a software-rendered occlusion culler so a voxel game can run well on old, weak GPUs. The final system draws conservative cube occluders into a 256×128 CPU depth buffer and moves the work onto a background thread.
The design keeps correctness ahead of its culling rate:
- Near objects use fine-grained block occluders; distant objects use progressively larger subchunks.
- Only fully opaque regions with visible faces become occluders.
- Occluders shrink by one screen pixel to avoid hiding geometry through low-resolution gaps.
- Near-plane ambiguity is resolved conservatively: uncertain candidates remain visible.
- Compact snapshots of candidate and occluder data keep the worker away from mutable chunk state.
The optimization sequence is the useful part:
- Cheaper view-space transforms reduced the original 150 ms pass to about 99 ms.
- World-space frustum culling brought it to roughly 61 ms.
- Rejecting geometry without visible faces cut it to about 34 ms.
- Favoring nearby occluders and distant candidates reached about 29 ms.
- A mipmap-like hierarchy of distance-dependent subchunks reduced it to roughly 4 ms.
The largest gain came from changing the representation and doing less work, not from SIMD or clever instruction tuning. In favorable caves the culler removes more than 95% of surviving chunks; in weak cases it simply becomes less effective without making visible geometry disappear.