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.
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.
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.
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.
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.
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.