Wonderland: A Raycasting Voxel Engine | Dev Footage

This is the result of about nine months of working on an own raycasting voxel engine with procedural generated interactive scene in Rust/Vulkan. This implementation still needs a lot of fixes and optimizations, but for now I’m about to stop and to rewrite all on raytracing pipeline. So I’m sharing my best from this development iteration. The scene presented contains a couple of billions of voxels. The data is stored in octrees to optimize ray traversal. For one node there are 256^3 of volumetric data stored in 268^3 one-byte either voxel type, or pointer marker, or nothing marker. There are 128 nodes in this scene. Primary rays are beam optimized. Every one ray-per-pixel is casted with no use of raytracing technology (I had no RTX card for the very most part of the development), but the model uses a modern GPU solution with no graphics pipeline is used—it’s only a compute pipeline writing directly in swapchain. The project runs about 45–60 FPS in 1080 Full HD on Nvidia RTX 3060 Ti when no secondary rays are casted. But not with screen capture encoding running in parallel, so I’ve limited the frame rate down to 30 FPS to make performance stable. This video is upconverted with nearest filter to 4K to prevent YouTube’s quality loss. This is the third iteration of the project. It was firstly written in C /OpenGL and implemented with meshing on graphics pipeline. I found volumetric data meshing a non-intuitive solution, so secondly I tried to use raycasting (initially is was DDA implementation), but the performance was too far from interactive. For now, Vulkan is used with compute pipeline and octree based optimizations.
Back to Top