My experience with voxel engines started in 2000 with a small voxel renderer runing in MsDos. Unfortunatelly I didn't take any
screenshot at that time. Rendering was done based on raytracing by using a kind of Bresenham 3D line drawing algorithm to traverse
the volume in brute force way. Resolution was limited to 128x128x128 because all voxel space was kept on memory, and only 160x120
rays per frame were cast, with a 2x2 color interpolation.
Later, I did a quick test (1 hour of coding) to apply the same idea in the GPU (pixel shaders 3.0). A simple voxel was setup with a few
primitives (at 128^3 resolution again), and a brute force raymarching algorithm applied again. Result, 50 fps at 640x480 with no
interpolation at all.
There are many obvious improvement, like doing a hierchical ray-marching (kind of octree), or even a distance function stored in the voxel itself
to allow non constant and biger steps. Anyway, the idea here is NOT to calculate any acceleration structure that could make realtime animation of
voxel data impposible. Anyway, as render to texture becomes more and more feasible, may be completelly updating the voxel data and acceleraton structure
without going thru the CPU is possible in few years....
|