The Importance of TessellationRemember how impressed we all were when Doom 3 came out? How we now had human looking faces (though they still were pretty plastic looking). Remember how turned off we were when we saw how pointy those heads were? Those shoulders were not really well rounded off either. Normal maps were able to give characters a lot more perceived polygons, but did not in fact improve the actual geometry of the models.
Tessellation is not just for bodies and monsters! The hair demo uses a combination of tessellation and geometry acceleration/collision to achieve lifelike results. The water’s surface and the rock face also have tessellation applied to them to make a more pleasing and detailed scene.
Adding geometry to models is actually quite simple. The problem is getting good performance out of these multi-million triangle models on current hardware. The memory requirements for such models are phenomenal, which is why the industry has used normal maps applied to simple geometric models. The answer to this problem is tessellation.
Tessellation is the ability to create complex geometries, yet consume as little memory as possible. This is done by mathematically increasing the geometry of a model in realtime, rather than relying on a complex fully realized model that takes up a huge amount of memory and bandwidth.
Take these results with a grain of salt, since they are directly from NV. However, considering the architecture of both chips, I don’t think these results are too far from what we will be seeing in the next few months.
What is essentially happening is that a “simple” model is being loaded into the card, but it comes with some complex mathematical formulas. These formulas, while complex, do not take up a huge amount of space in memory. In cases such as increasing the geometric complexity of a fixed model, these formulas are represented by displacement maps. The SMs then take these simple models, and using the PolyMorph engine and the CUDA cores, apply the displacement maps to the simple models and increase the geometrical complexity. So a 10,000 triangle model is then turned into a 1 million triangle model… all without increasing the memory footprint and bandwidth needs 100 fold even though the model is 100 times more complex. In situations such as fluid, displacement maps are not used, rather we go back to the complex mathematical formulas that a dictate fluid’s behavior in precise situations.
The way that NVIDIA has implemented the PolyMorph engine with the SMs should allow a 4x increase in tessellation performance over that of the competition. While tessellation in current DX11 games is limited to certain situations (for example in Dirt 2 tessellation is applied to the crowds watching the races as well as the water), it will become more and more common to apply these effects in future games once tessellating hardware becomes more prevalent.