What is the difference between tessellation and displacement/bump mapping?

2

As can be read here LINK displacement mapping is in some cases a "better substitute" for bump mapping, tessellation is based on displacement mapping. So what is the main difference between those 3? Do tessellation somehow require less GPU core or memory usage, has a better smoother looking models? Which of them actually affects the object geometry?

NightKn8

Posted 2013-11-12T10:36:13.547

Reputation: 161

Answers

7

Tessellation in general terms is just subdividing a given geometry into multiple chunks (Usually triangles)

What you reference to is the tessellation shading stage introduced in Direct X11 and OpenGL 4.

The tessellation shading unit gets as an input an arbitrary mesh (like a quad, triangle, line,..) and can subdivide it dynamically into multiple primitives. For instance, based on the fact how far a quad of a mesh is away from the camera and if it can be seen by the viewer at all, it can say to discard the quad entirely, just handle it as 2 triangles or even at 8192 triangles.

In Bump mapping, you would render a quad and given a texture with further information, you would still render it as a single quad but make it look like it would be more detailed. E.g. by computing the lighting of the "real" object from an additional texture and apply this to the quad. The graphic in your referenced article demonstrates this quite good:

http://www.nvidia.com/docs/IO/91797/model_comparision.jpg

You see, the bump mapping object is still a sphere, even though it looks like it has bumps due to correct shadows applied.

On the other hand, displacement mapping really transforms the mesh vertices based on a texture, not just act as it would have been transformed and do further computations like lighting with this information. This comes to the high cost of way way more primitives (vertices) to be rendered. To pick up the previous statement, to see your mesh in full resolution, you would have to render 8192 triangles instead of just a quad for all the quads in your mesh, so you would need to render everything in highest resolution and make the rendering up to 4000 times slower.

At this point, the tessellation shading stage comes into the game. You say dynamically which parts of the mesh shall be subdivided further, e.g. based on the current viewpoint and then use a displacement map to make the object look more realistic. So parts of the mesh will be resoluted higly and have a lot of details due to the displacement map and others will be just rendered in very low resolution and thus very fast. So that's already the story.

Theo

Posted 2013-11-12T10:36:13.547

Reputation: 193

This was an excellent explanation. Thank you. – Chris Cooper – 2016-06-20T18:41:49.880