Computer Graphics Stack Exchange is a question and answer site for computer graphics researchers and programmers. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In recent games I have noticed something called Tessellation, Turning the thing ON destroys my frame rate.

I have noticed that it when turned on it looks like Anti - Aliasing.

Can someone give me further information on what exactly the GPU does.

share|improve this question
2  
Oh dear, 2 answers and no picture computer graphicists on their best. – joojaa Feb 9 at 14:03
up vote 21 down vote accepted

Tesselation is a technique that allows you to generate primitives (triangles, lines, points and such) on the graphics-card. Specifically, it lets you repeatedly subdivide the current geometry into a finer mesh.

This allows you to load a relatively coarse mesh on your graphics card, generate more vertices and triangles dynamically and then have a mesh on the screen that looks much smoother.

Tessellation example

Most of the time this tesselation is done anew in each single frame and this could be the reason that your frame-rate drops once you enable this.

Tesselation is done in multiple stages, and it is done AFTER the vertex shader.

Stages

The terms for each stage varies based on the API. In DirectX, it is the Hull Shader, Hardware Tessellation, and the Domain Shader. In OpenGL, they are called the Tessellation Control Shader, Tesselation Primitive Generation, and the Tessellation Evaluation Shader.

The first and the last stage is programmable, the actual tesselation is done by the hardware in a fixed function stage.

In the Tesselation Control shader you set the type and number of subdivisions.

Then the hardware tessellator divides the geometry according to the Control Shader.

Lastly, the Tessellation Evaluation Shader is called for each newly generated vertex. In this shader, you set the type of primitive you want to generate and how the vertices are spaced and many other things. This shader can also be used to do all sorts of per-vertex calculations just like a vertex shader. It is guaranteed to be called at least once for each generated vertex.

If you want to do any further work on the primitives, you can add a Geometry shader.

share|improve this answer
1  
@Nicol Thank you. I edited the answer accordingly. – Dragonseel Feb 9 at 23:54

It activate 3 stages in the pipeline.

The first is the tessellation control shader (hull shader in D3D) which looks at a set of vertices and then outputs how it should be divided up in separate triangles.

The second is a fixed function stage that will generate the requested triangles.

The third stage the tessellation evalutation shader (domain shader in D3D) which is run per generated vertex and will put it in the correct place based on the barycentric coordinates of the generated vertex.

This is used for level of detail to generate more triangles when the mesh is closer to the camera.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.