A voxel engine built from scratch. Real-time global illumination, ray-traced shadows, procedural worlds.
Rust + wgpu — ~32k lines of code
Everything built from the ground up — no game engine, no shortcuts.
Real-time GI in a 256³ voxel volume using DDA ray marching. Hard and soft shadows via voxel tracing — no shadow maps. Per-vertex AO baked with DDA hemisphere tracing using Amanatides & Woo traversal.
Reduces triangle count 10-20x versus naive cubes. Multi-draw indirect rendering batches ~2,200 chunks into a single draw call. 4 LOD levels by distance with compute shader frustum culling on GPU.
God rays via a 3-pass pipeline: half-res DDA ray march, bilateral blur, and composite. Temporal dithering with Henyey-Greenstein phase function, adjustable 24-72 sample steps.
Heightfield rendering with pipe-model flow simulation. Ray-marched fullscreen water pass with wave animation, Fresnel reflections, refraction, and underwater fog.
8 biomes (grasslands, desert, jungle, tundra, mountains, ocean, swamp, cavernous highlands) with 3D Perlin caves, ore veins, procedural trees, vegetation, and ruins. Region file persistence with zstd compression at 3:1 ratio.
3D positional audio with material-based sound categories. DDA raycast occlusion crossfades ambience between environments. Convolution reverb in caves, footstep material detection, and music system with crossfade transitions.
3rd-person camera with skeletal animation and FBX model loading via ufbx. Character customization for outfits, hair, and heads. Body part editor with bone-driven skinned meshes lit by the voxel GI system.
Hybrid morphological-temporal AA with depth edge detection, pattern matching, temporal accumulation, and sharpening. Depth of field with near/far blur layers. Bloom, SSAO, and greedy-meshed voxel clouds with terrain shadows.
Some of the implementation details.
Mosaic is an open-source voxel engine written from scratch in Rust and wgpu. It is not a game engine plugin or a wrapper around an existing renderer — every system (rendering pipeline, world generation, meshing, lighting, audio, ECS) was built ground-up across approximately 32,000 lines of code.
The primary technical focus is real-time voxel global illumination: light is propagated through a 256³ voxel volume each frame using DDA ray marching, enabling hard and soft shadows without shadow maps. The engine targets graphics and game-engine developers interested in low-level rendering techniques rather than end users.
The source is available on GitHub under an open-source license. It runs on Windows, macOS, and Linux via wgpu’s Vulkan, DirectX 12, and Metal backends.
When each approach makes sense — an honest look.
Engines like Bevy or Unity with a voxel plugin are the right starting point for most projects. You get a scene hierarchy, input handling, asset pipeline, editor tooling, and an ecosystem of plugins from day one. A voxel terrain plugin in Bevy, for instance, can have procedural chunks rendering in a few hundred lines.
Building from scratch makes sense when the rendering technique is the point. Mosaic exists to explore what real-time voxel GI looks like in practice at the system level: how a 256³ GI volume integrates with chunk streaming, how DDA traversal budgets interact with frame time, how greedy meshing must be structured to keep per-vertex AO correct across chunk boundaries. None of these questions are answerable inside an engine abstraction that hides the GPU pipeline.
The tradeoff is real: ~32k lines of Rust to reach parity with features an engine gives you for free. If you need a voxel game shipped, use an engine. If you need to understand the renderer at the instruction level — or want a clean reference implementation of DDA voxel GI in wgpu — Mosaic is that reference.