Saturday, March 2, 2013

Voxel Engine Part 1

In the last weeks Unity announced the winners of the DirectX11 Competition.  It was submited many amazing projects, but this one in particular caught attention: "Voxel Cone Tracing created by Kurt Loeffer".
For those who do not know me, I'm addicted to computer graphics and Global Illumination has always been one of my favorite lightning technics. 
So I decided to learn more and try to implement my own version based on the following Nvidia paper: Voxel-Cone-Tracing-Octree-Real-Time-Illumination

There is also some interesting stuff on the book GPU Gems3, that thanks to Nvidia can be found here for free.

As the name implies, this technique is based on voxelization then I thought it would be interesting to study some voxel engines first. I dunno exactly how or when, but a few moments after I started my studies I found myself trying to recreate some of Minecraft features using Unity.

Here follows some results:

 This world can be "infinity" in all directions. As you can see, even the Y-Axis is split into Chunks.
This map was generated using the Simplex3D Noise 

Fake Ambient Occlusion and Fog
 Cave Generation and diffrent block types
Hard Light & Soft Light
Ambient Occlusion, Soft Light
Hard Light flood
Soft Light flood

The engine is pretty basic, but I think that covers some of main features. It deals with world/cave generation, only render the faces that can be seen, player can create/destroy blocks, dynamic soft light flood (and all other types as well), different block types... In terms of CPU/Memory it's not so optimized right now, but still runs well on my iPad4 and Samsung Galaxy S2. 
I have to clean up the code and soon I will post the entire project here.

Meanwhile, here is the material that I used to learn more about voxels (the main articles are highlighted):


No comments:

Post a Comment