Tessellation

cyberslag5k

Limp Gawd
Joined
Jun 29, 2004
Messages
277
Two questions:

1. Are any upcoming games known to support tessellation?

2. How on earth does it work? Does the developer add additional geometry information that gets used if tessellation is enabled, and not if it isn't? That doesn't seem right, but surely the hardware can't be doing everything like what we've seen in the Heaven benchmark. What dark magics are at work here?
 
Dirt 2
Aliens Vs Predator II
Bad Company II
BF3?

Someone posted a link to the AvP youtub video, that may answer your questions.
 
Okay so it looks like the degree of tessellation is dyanmically handled, but how is the final geometry determined? Do they, perhaps, specify the "full tessellation" geometry and the hardware interpolates to that as far as it can at runtime?
 
Someone please correct me if I'm wrong but I'll try to explain a little bit how this works.

So, typical 3D models are comprised solely of polygons, which by nature have flat triangular faces. We all know that to model a curve using polygons you have to increase the number of polygons used to approximate the curve. Traditionally, the amount of polygons actually used is stored in the model as a constant and unchanging number. If you want to make a very smooth looking curve, you need lots of polygons, which is bad for performance.

Many games try to mitigate this performance hit by having two (or more) models for each object in the game. The high detail model is only used when the object is close, otherwise the low detail model is used. There are a couple of problems with this technique however: 1) you have to store twice as many models in memory at any given time, and 2) there can be a visible "pop-in" of detail as the camera approaches an object and it switches detail level.

For games, the goal of tessellation is to be able to smoothly and gradually change between detail levels and without having to store multiples of any models. That way the performance benefit of levels-of-detail (LOD) is kept without any of the above downsides.

The trick is that models can also be made to store descriptions of curves, such as NURBS rather than storing just polygons. It can then be left to the renderer to decide just how many polygons are needed to approximate the curve. The renderer needs to take a surface and split it up into additional polygons until the curve is approximated. Tessellation, by definition, is the process of subdividing a surface or pattern. Our fancy DX11 graphics cards have specialized hardware that can subdivide a surface until the renderer says "Okay, close enough." This means that the amount of polygons used can be varied depending on what the renderer wants - and usually the extent of tessellation is based on how far away the object is, therefore providing level of detail control.

If you want to get a better idea of how this works, try out the Unigine Heaven benchmark in wireframe mode and watch how the surfaces are subdivided more and more as the camera approaches the object. Or just watch this video.

The Unigine Engine isn't just using models with NURBS, it's also using tessellation to implement displacement mapping, which is awesome :). There have been lots of folks complaining about the performance hit attributed to enabling tessellation on the Heaven benchmark, but this doesn't mean that tessellation itself is slow. All those extra polygons take a long time to render, but hopefully future games will give users a choice of just how much tessellation is wanted. And for the near future, it doesn't look like any games will be using Tessellation to the extent that it is used in Heaven. Heck, almost every single object in Heaven is subjected to tessellation.

Do they, perhaps, specify the "full tessellation" geometry and the hardware interpolates to that as far as it can at runtime?
Yes and No. The wireframe model that is stored has only the 'basic' geometry, and then additional information to 'fill in the details' is either stored as curve descriptions (like NURBS) or in displacement maps or some other form.

To sum up, Tessellation doesn't remove detail for performance, it adds details for less performance cost than other techniques.
 
Last edited:
That was really awesome, Kaldskryke. Thank you for taking the time to explain that so thoroughly and so clearly. That makes a lot of sense.

Just out of curiosity, do you know how this curve information is produced and is stored? Would it be produced by an artist with a 3D modelling program, and then stored at the polygon level?
 
Back
Top