Voxeltest is an experimental render engine developed with DirectXTK and C++ intended to render out procedurally generated voxel worlds with multiple complex rendering features, such as procedural meshing, Shadowmapping and Chunksplitting.
Voxeltest uses thread pooling and locks to implement basic multithreading while converting raw chunk data into completed and renderable meshes.
When creating a Voxel-based game it’s important to define how the engine will split chunks so they can be appropriately meshed, building one large chunk will generally result in poor performance as the game struggles to mesh in an adequate amount of time after every change. Moreover, to design a potentially infinite play space, you must split the world into chunks to remove chunks no longer required for gameplay.
Voxeltest implements a Perlin noise-based world generator that generates all chunks in a given world.
Voxeltest uses shadow casting to generate Shadowmaps to sample from during rendering. In this process, a depth texture is drawn from the camera’s perspective and used to figure out if pixels should be considered obscured from the Shadowmap camera’s perspective. This is then improved with a small offset and sampling the Shadowmap multiple times to create smooth and appealing shadows.
The source for this project is located here. No compiled binaries have been created for this project as it is still a work in progress.