Zen Garden

rake sand  ·  place stones  ·  find stillness

Classic
Three.js renderer with pointer and touch input. Rake drag trails across a sand plane.
three.js
GPU Spike
WebGPU / WebGL2 compute sand simulation with GLSL ping-pong fallback for older devices.
webgpu · webgl2
GPU Particles
16 384 sand particles with full 3D position and velocity. Rake strokes eject particles into the air; gravity, floor bounce, and a home spring return them to rest.
webgpu · particles · physics
Heightmap Sand
128×128 CPU heightmap with conserved-volume rake displacement. Grooves deposit exact volume into ridges perpendicular to travel.
cpu · volume-conserved
Cellular Automaton Sand
64×64 grid with 4-iteration Gauss-Seidel repose-angle relaxation. Piles slump naturally; grooves widen and flatten over time.
cpu · repose-angle
GPU Ping-Pong Sand
256×256 heightmap simulated entirely in a fragment shader. Repose-angle flow and groove carving run in parallel on the GPU each frame.
gpu · shader-displacement