Tesselation est une technique qui vous permet de générer des primitives (triangles, lignes, points et autres) sur la carte graphique. Plus précisément, il vous permet de subdiviser à plusieurs reprises la géométrie actuelle en un maillage plus fin.
Cela vous permet de charger un maillage relativement grossier sur votre carte graphique, de générer dynamiquement plus de sommets et de triangles, puis d'avoir un maillage à l'écran qui semble beaucoup plus fluide.
La plupart du temps, cette tesselation est refaite dans chaque trame et cela pourrait être la raison pour laquelle votre taux de trame baisse une fois que vous l'avez activé.
La tesselation se fait en plusieurs étapes, et elle se fait APRÈS le vertex shader.
Les conditions de chaque étape varient en fonction de l'API. Dans DirectX, il s'agit du Hull Shader, du Hardware Tessellation et du Domain Shader. Dans OpenGL, ils sont appelés le Tessellation Control Shader, Tesselation Primitive Generation et Tessellation Evaluation Shader.
La première et la dernière étape sont programmables, la tesselation réelle est effectuée par le matériel dans une étape de fonction fixe.
Dans le shader Tesselation Control, vous définissez le type et le nombre de subdivisions.
Le tessellateur matériel divise ensuite la géométrie en fonction du Control Shader.
Enfin, le Tessellation Evaluation Shader est appelé pour chaque sommet nouvellement généré. Dans ce shader, vous définissez le type de primitive que vous souhaitez générer et comment les sommets sont espacés et bien d'autres choses. Ce shader peut également être utilisé pour effectuer toutes sortes de calculs par sommet, tout comme un vertex shader. Il est garanti d'être appelé au moins une fois pour chaque sommet généré.
Si vous souhaitez effectuer d'autres travaux sur les primitives, vous pouvez ajouter un ombrage géométrique.