C++ Voxel Prototype

This is a project that developed from my DirectX 11 learning process, it started out as a simple voxel mesh to test DirectX. From there I expanded it into multiple chunks with a chunk manager and added basic terrain. I also experimented with hlsl shaders to create the water effect on lower parts of terrain.

vp1
As I got more adventurous through the project I added multi-threaded chunk generation, this was a huge help with FPS and it amazed me at how efficient it could be. The chunk manager runs on it’s on thread and then starts more threads for the individual chunk’s terrain and mesh generation. I spent a while working out thread safe ways to integrate it with D3D11 API. Another feature I added to the render thread is chunk view culling, it is currently a basic implementation which I hope to expand on in a future project.

vp2

I spent a fair amount of time researching C++ noise generation libraries and I tried both libnoise and Accidental Noise Library for this project. Although both of them are very feature heavy I felt they had not been designed for intensive real-time use. This pushed me to start working on my own noise library, I had been wanting to look into how noise generation works, previously I had been using noise libraries in a black box style. The main aim of my noise library is speed and generating 3D terrains, the progress can be seen in the screenshots above. I hope to make a post in the future on the noise library when it is more fully fledged and possibly release it.

Edit: FastNoise

Leave a Reply