Carmack On 'Infinite Detail,' Integrated GPUs, and Future Gaming Tech
Vigile writes "John Carmack sat down for an interview during Quakecon 2011 to talk about the future of technology for gaming. He shared his thoughts on the GPU hardware race (hardware doesn't matter but drivers are really important), integrated graphics solutions on Sandy Bridge and Llano (with a future of shared address spaces they may outperform discrete GPUs) and of course some thoughts on 'infinite detail' engines (uninspired content viewed at the molecular level is still uninspired content). Carmack does mention a new-found interest in ray tracing, and how it will 'eventually win' the battle for rendering in the long run."
Years ago he posted here on occasion and I even remember seeing small active discussions on rendering technique technical points etc.
It has been ages since I've last seen this, which makes me ponder if he even reads slashdot these days when topics related to him are posted.
It should be noted that John Carmack believes that Ray Casting, not Ray Tracing, will win out in the long term.
Unfortunately, many people outside of the graphics field confuse the two. Ray Casting is a subset of Ray Tracing in which only a single sample is taken per pixel, or in other words, in which a single ray is cast per pixel into the scene and a single intersection is taken with the geometry data set (or in the case of a translucent surface, the ray my be propagated in the same direction a finite number of times until an opaque surface is found). No recursive bouncing of rays is done. Lighting is handled through another means, such as with traditional forward shading against a dataset of light sources, or using a separate deferred shading pass to un-hinge the combinatorial explosion of overhead caused by scaling up the number of lights in a scene.
John Carmack has been quoted on saying that full-blown ray-tracing just isn't feasible for real-time graphics due to the poor memory access patterns involved, as casting multiple rays per pixel, with multiple recursive steps ends up touching a lot of memory in your geometry data set, which just thrashes the cache on CPU and modern/future GPU hardware alike.
When people talk about real-time ray-tracing, they almost always invariably are referring to real-time ray-casting.
The Euclideon infinite detail technology was exposed in a recent interview to be efficient sparse voxel octree ray-casting with contours (instead of axis-aligned cubes), which was previously investigated by nVidia researchers and others.
http://www.tml.tkk.fi/~samuli/publications/laine2010tr1_paper.pdf
It's still not quite competitive enough with conventional rasterization techniques if you also try to do decent lighting with it along with all of the other stuff that goes into developing a game. Maybe in couple of more GPU generations. And in the Euclideon demos, you can see they're only getting 15-25 frames per second, and yet they're using a simplistic lighting model with a single global light.
Also, you can merge polygon rasterization and voxel ray-casting under the same rendering architecture if you employ deferred shading and composition. That way you can have your static models as a voxel-octree that you ray-cast into your geometry-buffer, rasterize your dynamic polygonal models in a second pass into the same geometry-buffer, and then perform your lighting passes with the geometry-buffer as input, and then your final scene composition and post-processing passes. In fact, I bet you that in 5-6 years time, this will become a standard practice among PC game developers. Unfortunately, I think the upcoming next console generation, with hardware from Sony and MS due out next year, will miss out on being able to handle this.
Speak for yourself! ;-)
you had me at #!
There are a lot of reasons people still follow him closely.
He's really smart, hard-working, and open with his opinions. If something blows, he doesn't sugar coat it out of fear for his relationship with the company whose product he's bagging on.
He's also fiercely empirical. Moreso than a lot of his competitors, he doesn't buy into his own bullshit. If he has an idea, he makes an experiment to test it, and if it doesn't cut the mustard, he adjusts his view on the subject. He reverses his opinions over time and points out when he's been wrong. You'd think that trait would be common amoungst coders, what being lovers of science and engineering in general, and you'd be wrong.
He's also open with his source code, and a lot of coders have actually learned how to write games by reading his source for Doom & Quake. In addition to being a fast coder, he writes very clean code with a very crisp style, and that code has been a really positive influence on the next generation of game programmers.
But if you're looking for Jesus, you need look no further. I was one of the first coders John hired, and if you recall, Jesus is the *son* of God, and like Jesus, I was cast out from Heaven to muck about with mortals and spread the good word. Also, unlike John but more like Jesus, I believe my own bullshit without the need to test it. Crucially, if you look up "gamer" under Google images, I'm on the first page, and you'll see conclusively that I can rock the long Jesus hair. I am also skinny, emaciated, and have been repeatedly crucified. If you choose to become a disciple, I will welcome you with open arms. I just won't respect you.
So how many games will the 'Horns win this year?
I write software tools for high-performance computing that work on a variety of hardware, including all variations of x86, POWER, PowerPC and Cell, ARM, GPUs, multi-core, clusters... and other more confidential architectures (many-core, VLIW, FPGA, ASICs...)
Supporting a lot of different hardware is not an insurmountable problem if you have a good design (and a good test farm).
What we call graphics drivers nowadays is not just the code that allows to interact with the hardware. It's an OpenGL and DirectX implementation.
With the advent of programmable GPUs, this abstraction has become much too high-level. A C compiler is quite a better one.