John Carmack needs no introduction - since 1991 he's been the main engine development guy for id Software . Shortly after his 40th birthday, we caught up with the tru engineer for a quick 8-question Q&A.
Do you have a target performance level or specific platform in mind when you begin planning your engines?
For this generation, we picked the 360 / PS3 as the target platform, knowing that the PC platform would be well past that performance level when we were done. I am thinking about the next generation now, which is rather difficult because we don’t know much about what is being considered for future consoles. I may just try to see what I can do with a state of the art PC platform in research mode.
What’s been the most challenging aspect of building the id Tech 5 engine?
The enormous virtual textures have been challenging for both the workflow and runtime code, but that was the core bet that we made for the project.
We’re curious to hear your take on hardware-accelerated tessellation. Any thoughts?
Tesselation has been expected to be “the next big thing” for the last three hardware generations. It hasn’t been. Extreme geometric smoothness is needed for movie rendering where it is common for a character’s face to occupy the entire screen for extended periods of times, but that isn’t common for games. In most cases, the additional vertexes needed for the control mesh on traditional geometric patches could be better spent on additional interesting triangular detail.
With the very latest generation of hardware, we may finally be at a point where displacement mapped surfaces are a credible design target. It has been possible to do it for a while, but it only makes good sense when the average triangle size gets down to only a couple pixels, which used to waste large fractions of the fill rate on GPUs. Good anti-aliasing is also required to prevent all those tessellated and displaced edges from turning into a ton of noise on screen.
If it doesn’t turn out that some form of ray tracing can cut it for our next gen game engine, my fallback plan has always been to extend the current megatexture architecture and workflow to support unique displacement maps on the entire world.