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.