R600: Finally DX10 Hardware from ATI

Tessellation - Needed Or Preemptive?

The Concept

Natalya Tatarchuk from ATI's 3D applications research lab gave several addresses during the Tunis event. One of these sessions was strictly on tessellation. I wondered then how it could be possible to devote an entire hour and a half to a presentation on making more polygons.

Source: "Subdivision for Modeling and Animation," Zorin and Schröder, 2000 http://www.multires.caltech.edu/pubs/sig00notes.pdf (Warning: This is a 27 MB download)

The concept of tessellation involves the breaking down of polygon meshes into higher poly meshes. From the image above, taking a simple polygon mesh and breaking each polygon down into smaller units allows the surface of the object/model to become smoother and lifelike. So what is the cost of amplifying a model's surface via tessellation instead of just rendering the high-poly mesh? Well, that is what kept me in my seat for the rest of the presentation. The following example used a frame from "Shrek."

Source: ATI [Yee04, PDI/Dreamworks]

The differences between trying to render "Shrek" using a high poly and a low poly with tessellation and displacement mapping are startling! While the movie industry has plenty of time on their hands to render one frame, those of us in the gaming arena want at least 60 of them in one second or less. The following chart shows the differences between typical game models and the CG animated characters we see in movies.

Swipe to scroll horizontally
Pre-FrameShrekTypical GameHollywood vs. your PC
Content Size100 M polygons200-500 K polygons200x to 500x more
Animation Quality350 bones skinned on the CPU32-40 bones skinned on the GPUUp to 10x more
Rendering Time8,000 seconds a frame on a P40.015 seconds or less per frame533,333x more

The two scenarios are amazingly different. A lot of research has looked into better methods for subdividing polygons. Do a search for the following items: N-Patches, Catmull-Clark, B-Spline and NURBs. The fact that a lot of the work required in a high-poly mesh can be done in a lot less time utilizing the power of a GPU is amazing. The only way tessellation could be done with DX9 hardware was to pass it over and over through the pipeline or just cram a high-poly mesh through it.