Tessellation - why is it so important ?
Tessellation -- why is it so important ?
Well to explain that we first need to understand what it is really.
First off, let me say that I am visiting our forums often and have seen the way you guys react on Tesselation, like it is a non-feature. And with the current games and titles out there, sure I agree. That doesn't mean that it isn't a huge step forward with games to come though as you can add object complexity in a fairly cheap series of compute cycles on over the GPU -- game developers want this as it saves them time creating complex geometry and objects. So in the future what you will see in games is a much more complex and better looking environment. Detailed terrain, complex characters .. Tesselation can be applied on numerous objects in a 3D scene.
DX 11 pipeline - from input assembly:
- Patch assembly
- Primitive assembly
So the biggest DirectX 11 feature that I am excited about personally is that we'll finally have a hardware tessellation unit inside the GPU that DirectX can utilize. We are going to spend an entire page on this feature that both DX11 class graphics cards from NVIDIA and ATI will have embedded.
What is tessellation? Simply put it's adding more detail to 3D objects, real-time on the fly. With the arrival of DX11 class graphics cards ATI and NVIDIA now include hardware tessellation units inside the GPU's, fully programmable.
Tessellation simply means increasing your polygon count to get more detail. Look at the image below.
Tessellation is the process of subdividing a surface into smaller shapes. To describe object surface patterns, tessellation breaks down the surface of an object into manageable polygons. Triangles or quadrilaterals are two commonly used polygons in drawing graphical objects because computer hardware can easy manipulate and calculate these two simple polygons. An object divided into quads and subdivided into triangles for convenient calculation.
Now at the first frame you can see a face. There's a small number of polygons in there. It's anno 2010, and we demand more detailed objects in our 3D scene. So by recursively applying a subdivision rule we can increase the number of polygons. Now look at the second and third faces. There's so much more detail. This process can now be done 100% at GPU level in hardware without a significant impact on performance.
For DirectX 11 the tessellation portion of the pipeline has been wrapped with two new shader types that can be used, the Hull Shader and the Domain Shader.
Now some of you might have noticed it already from previous reviews. Tessellation isn't something new, ATI already had a hardware tessellation unit in their GPUs for years. But the older units could not be addressed whatsoever in DirectX as the API did not support it
Another good example for the usage of tessellation would be terrain building. This technique is especially useful for creating complex-looking terrain using a combination of very simple base geometry with a height map, and a texture map. And perhaps more interesting is that this generated terrain can be deformed dynamically by manipulating the height map.
NVIDIA has been showing examples with a new water demo and a real-time rendered hair demo, in the water demo the number of detail increases with a magnitude of 3 (5000 times more detail) while performance goes down by only a factor of factor two compared to the same scene without Tessellation. Check that out:
This scene could have much polygonal complexity closer to the viewer or camera, and fewer polygons as distance from the camera increases. So let's do that.
There you go, tessellated complex rocks and yes, the water is tessellated as well. Tessellation will allow much higher quality rendering and animation at fairly low GPU compute cost. The generic rule here is the more tessellation, the slower the GPU gets, yet since there's now dedicated core logic for it on the GPU, it's fast and can boost your detail massively, thus giving an impression of sharpness and much finer quality.
The new DX 11 tessellation unit is programmable though two new shaders, the Domain and Hull shader. And remember, the higher the level of tessellation, the closer to realism the sharpness of the surface approaches.
Tessellation of course was something that was not available for the GT200 series of product and NVIDIA had to come up with a solution on GF100. They implemented significant tessellation and geometry performance increases thanks to the Polymorph engines we talked about earlier,
In the example above you can see the performance difference in-between a Radeon HD 5870 and GF100 At highly tessellated sequences of the Unigine demo, now this is not the overall score -- again this is in highly tessellated specific regions of the demo AND the results are provided by NVIDIA. But as you can see, we can assume that NVIDIA did their homework.