Birth of a Voxel renderer

In the beginning of february, I started implementing a voxel-based renderer for my PhD. Starting from scratch was painful, but it taught me a lot about 3D geometry & maths and C++. To all you C++ enthousiasts out there, print this out and put it on a wall: Every time you want to use the ‘new’ command, sit back and think if you really, really need it. In retrospect, when building my thesis renderer, I put way too much stuff on the heap, where the stack could have done just fine – it’s a common handicap when you’ve been a Java developer. For this renderer, I’m using the Eigen and (excellent) Boost libraries.

So yes, here’s a 64x64x64 voxel field with random color cubes, rendered by per-pixel raytracing – so not just a cube with a funky texture applied. The bright pink/purple noise are numerical errors which I still have to fix: damn you IEEE standards (with 0+ and 0-, yes, I frowned too).

Here’s another 64x64x64 voxel field, with cubes having ascending RGB colors. Pretty impressive how a relatively low voxel count already gives a nice gouraud shading effect. Again, the purple clutter is noise due to numerical errors.

Without a doubt, more to come! What’s a PhD in Graphics without weekly funky pictures? :)

Leave a Reply