So, John Carmack has been talking about raytracing voxel octrees. Iain is officially the man for pointing me at this stuff. It's interesting in itself, but what's more interesting to me is that it sounds a lot like the voxel rendering I've been doing. I've just been using grids, so my memory usage is through the roof, but way back when I came up with the algorithm I did think about kd trees and octrees. I came pretty close to trying an octree, but got caught up with how to avoid duplicating data and put it off as too hard for the moment, so it never got done. The simple answer is so what if you duplicate some stuff, it's still far more efficient. The other problem is how to do it fast, I was looking at 30+ comparisons per lookup per ray due to the octree, but I've had some interesting thoughts about that lately. Essentially, I think I can do it.
To give you an idea about how long ago I started with this stuff, I posted back in 05 with a demo which was old even then. When I wrote that demo I thought this stuff was the bees knees, but my math wasn't good enough to do a proper job of it. I emailed Ken Silverman about it, and he was nice enough (given I was some random 16ish year old) but didn't seem that interested. I figured the technique didn't have as much potential as I thought. I've only recently come back to it and got a reasonably fast and accurate renderer going.
I was going to post a description of the algorithm, but maybe I'll put that off yet longer (I still don't want to go through the math again). I would really, really like to do some cool stuff before Carmack shows off a demo and makes me look silly. It's basically inevitable that he'll blow me out of the water in a few months, but until then I can show people what I'm made of. Except that I don't have any time. Sigh.
|