Voxel Heightmap Rendering

I spent most of yesterday developing and implementing a really unique voxel renderer.  I have so far only heard of ray casting methods for drawing voxel landscapes, but the approach I came up with is radically different.  The performance is really great however, and is comparable to any ray casting approach.  I don’t know whether to keep the algorythm under wraps just now, since I think it could have a lot of potential.

Currently the rendering is only isometric, but it should be possible to modify it for perspective rendering too if I sit down with the math.  There is no pre computation for this method so the height map and terrain texture can all be updated on the fly, opening up lots of amazing possibilities.  Zooming, rotation, and tilting are all free performance wise since they are fundamental parts of the algorithm.  The terrain resolution is also independent from the performance of the algorithm surprisingly, so there is no penalty for a very detailed landscape.

Over the next few days I really want to push this technique and see if I can squeeze more from it.  I have plans to implement ambient occlusion and dynamic hemispheric lighting.  Also dynamic light mapping could be integrated.  The possibilities are really inspiring.

screenshot

Here is an extreme close up where you can see the individual voxels.

closeup

One thought on “Voxel Heightmap Rendering

  1. I know this is a really old post, but could you elaborate on your algorithm a bit? It seems quite effective and different from approaches I’ve seen so far. Also, somewhere on your blog you said you were able to cast rays in a wolfenstein fashion without too much math to generate rays for each column (i.e no trig or square calls), which sounds weird, is there any way you could explain this technique in detail? Again, I would understand if you’d prefer to keep these tricks your own 🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s