Creative Technology, Part II
Last week I wrote an article about the need for graphics programmers to be more creative, rather than simply going out and grabbing existing tech. This week, I’d like to add to that with an example of this kind of methodology in action. One major technology that fits in this category is Megatextures. It can run on very low end hardware, and provides a massive boost in visual quality. It also puts a cap on how much graphics memory is required for texturing, and subsequently, texture bandwidth usage. It makes things like decals and detail-textures totally irrelevant!
Another technology that is a slightly less relevant example is real-time ray tracing of voxel environments. Because all static scene elements are treated like textures, you get all of the benefits of Megatextures along with the upper-cap on performance that ray tracing provides! In my current project, I find that even the performance of an unoptimized ray-tracer runs quite fast (1024 x 1024, approx 1 sec in my test cases, single-threaded and unoptimized). I’m hopeful that even a CPU-based ray-tracer would be possible, but a GPU implementation is certainly doable. When I first started tinkering with the technology, it seemed like it would require a very high-end graphics card to run it, but as time goes by and I implement more algorithmic-level optimizations, it seems more and more likely that even low-end hardware can support this technology (I intend to post results of some of my experimental optimizations in the near future).
That said, I’m very hopeful that we’ll see more people playing with uncommon technology and hopefully bringing in some very cool solutions to some very real problems such as micropolygons and streaming. I personally think that voxels will begin to take over realtime rendering in the next 10 years, and it’s pretty much unexplored territory as far as our industry is concerned. Hopefully there will be plenty of similar unique technologies picking up steam in our industry!
