Those of you who have been around DailyGame for the past few years know that what draws me to game-engine discussions is my strong belief that graphics still have a long way to go before they are there. Months ago I mused that bouncing light and shadows were responsible for most graphical tricks, and that those elements are exactly what a Pixar film can do that video games can’t. I used Splinter Cell as an example, because when you step out of the light you disappear — because the light isn’t bouncing.
This is called (light)ray tracing, which is what game-engine luminary John Carmack discussed in a recent interview with PC Perspective. John Carmack is kind of like the Alan Greenspan of video games, as far as I’m concerned. And let me tell you, he is the master of light bouncing in videogames.
PC Perspective asked Carmack: “What is your take on current ray tracing arguments floating around, such as those featured in a couple of different articles here at PC Perspective? Have you been doing any work on ray tracing yourself? Carmack responded:
I have my own personal hobby horse in this race and have some fairly firm opinions on the way things are going right now. I think that ray tracing in the classical sense, of analytically intersecting rays with conventionally defined geometry, whether they be triangle meshes or higher order primitives, I’m not really bullish on that taking over for primary rendering tasks which is essentially what Intel is pushing. (Ed: information about Intel’s research is here.) There are large advantages to rasterization from a performance standpoint and many of the things that they argue as far as using efficient culling technologies to be able to avoid referencing a lot of geometry, those are really bogus arguments because you could do similar things with occlusion queries and conditional renders with rasterization. Head to head rasterization is just a vastly more efficient use of whatever transistors you have available.
OK, I know, “what the hell?” But if you actually try and make a 3D engine and go by the bouncing light, that bouncing light will hit the arm of your action hero and you’ll have to know which colors light up. Quite simply, it’s the color of the TEXTURE the designers put there. A texture is a flat tile of graphics drawn by an artist with a computer — or taken with a camera, but still polished by an artist.
But, I do think that there is a very strong possibility as we move towards next generation technologies for a ray tracing architecture that uses a specific data structure; rather than just taking triangles like everybody uses and tracing rays against them and being really, really expensive. There is a specific format I have done some research on that I am starting to ramp back up on for some proof of concept work for next generation technologies. It involves ray tracing into a sparse voxel octree which is essentially a geometric evolution of the mega-texture technologies that we’re doing today for uniquely texturing entire worlds.
I know, Carmack-speak is rough to understand, but the lingo he uses in the interview gets even heavier. The light hitting the texture is something done in all graphics, but Carmack has a different method of doing textures. However, none of the graphics companies will listen to him, which (trust me) is the nature of programmers. I know this to be true; I work with programmers every day, and it’s almost in their genes to not to listen to one other. Carmack himself says:
I’ve been pitching this idea to both NVIDIA and Intel and just everybody about directions as we look toward next-generation technologies. But this is one of those aspects where changing the paradigm of rendering from rasterization-based approach to a ray-casting approach — or any other approach — is not out of the question, but I do think that the direction that Intel is going about it as a conventional ray tracer is unlikely to win out.
The actual idea that Carmack has been pushing is to have the designers in the 3D world literally spray-painting texture onto the environment. Unfortunately and ironically, designers can NOT do this right now. Currently, textures are flat squares of graphics that are drawn separately by artists and added to the 3D graphics after the fact. Artists can not spray paint in a videogame 3D environment. Check any article or engine; you won’t find it.
However, and this is the genius of John Carmack, here’s a guy who has figured out a way to do that — but the graphics companies refuse to support it. Carmack is too “out there” and “different.” Carmack’s response:
[This] is why I’m hoping to be able to do my part and provide some proof of concept demo technology this year. We’re working on our RAGE project and the id Tech 5 code base, but I’ve been talking to all the relevant people about what we think might be going on and what our goals are for an id Tech 6 generation. Which may very well involve, I’m certainly hoping it involves, ray tracing in the “sparse voxel octree” because at least I think I can show a real win.
Man … there goes the woody. What the companies don’t understand is that Carmack is not competitive. He gives away all of his information for free. Ask any engine designer, including me, and they will fall to their knees over Carmack. Japanese game developers had a difficult time coming West and learning Carmack’s 3D tricks, but they all came over eventually. Carmack gave away his 3D inventions for free. And he’s looking to do the same thing with his next stroke of genius.
John Carmack was so far ahead of everyone with DOOM that it’s foolish not to keep an eye on what he’s working on. He may not have the “big hit,” but he doesn’t care; he’s already rich many times over. Carmack tries to keep hitting the industry with his gifted hammer, trying to get programmers and graphics companies to understand that his ideas — at least on a basic level — make sense, even though he may not be able to express them. Carmack’s technology will always be very far reaching. Dismissing his ideas as too “out there” would be a tragic mistake.
— Rob Dusseau