GeForce

La tessellation DirectX 11

 
 

La tessellation DirectX 11 : définition et intérêt

Les rumeurs sur DirectX 11 allant bon train dernièrement, vous avez certainement entendu dire beaucoup de choses sur l'une de ses principales nouvelles fonctionnalités : la tessellation. Question concept, la tessellation est relativement simple : vous prenez un polygone et vous le décomposez en morceaux plus petits. Pourquoi, alors, est-ce si intéressant ? Et qu'est-ce que cela peut apporter aux jeux ? Dans cet article, nous allons analyser pourquoi la tessellation apporte des changements radicaux aux graphismes 3D sur PC, et comment les GPU NVIDIA® GeForce® GTX série 400 fournissent d'importantes performances en matière de tessellation.

Sous sa forme la plus basique, la tessellation consiste à décomposer des polygones en morceaux plus petits. Par exemple, si vous prenez un carré et le coupez en deux le long de sa diagonale, vous le « tessellez » en deux triangles. En soi, la tessellation fait peu pour améliorer le réalisme. Par exemple, dans un jeu, le fait qu'un carré soit rendu sous la forme de deux ou de deux mille triangles n'a pas vraiment d'importance car la tessellation n'améliore le réalisme que si les nouveaux triangles sont utilisés pour ajouter de nouvelles informations.

Triangle Mapping Displacement Mapping
Lorsqu'une displacement map (ici à gauche) est appliquée sur une surface plate, la surface obtenue (à droite) permet d'exprimer les informations de hauteur contenues dans la displacement map d'origine.

La manière la plus simple et la plus répandue permettant d'ajouter des détails à ces nouveaux triangles est une technique appelée le displacement mapping. Une « displacement map » est une texture avec des informations de hauteur. Lorsqu'on l'applique sur une surface, les vertex de surface peuvent ainsi être étirés vers le haut ou vers le bas selon les informations de hauteur relatives. Par exemple, un infographiste peut ainsi utiliser une dalle de marbre puis étirer ses vertex afin de lui donner du volume et par exemple créer une sculpture. Une autre technique très répandue consiste à appliquer les displacement maps sur des éléments de terrain pour créer des cratères, des canyons et des crêtes.

Comme la tessellation, le displacement mapping n'est pas une nouveauté mais il ne suscitait encore que peu d'intérêt. La raison de cet accueil maussade était simple : pour que le displacement mapping soit efficace, il faut que la surface à laquelle il est appliqué soit composée d'un grand nombre de vertex. Pour en revenir à l'exemple du marbre sculpté, si notre bloc est composé de huit vertex, aucune quantité de déplacement relatif entre ces vertex ne permettra jamais d'obtenir un dragon en relief. Il n'est possible de former un relief détaillé que si le nombre de vertex du mesh de base est suffisant pour dessiner la forme voulue. En bref, le displacement mapping a besoin de la tessellation et vice versa.

DirectX 11 réunit la tessellation et le displacement mapping pour la plus grande joie des développeurs qui sautent le pas avec bonheur. Des jeux populaires comme Alien vs. Predator et Metro 2033 utilisent la tessellation pour produire des modèles à l'apparence harmonieuse, et des développeurs comme ceux de Valve et id Software ont réalisé des travaux prometteurs en appliquant ces techniques sur des personnages préexistants.

Coarse Model
Une fois la tessellation appliquée sur un modèle brut (à gauche), on obtient un modèle lisse (au milieu). Après l'application du displacement mapping (à droite), le personnage atteint un niveau de détail saisissant. © Kenneth Scott, id Software 2008

Étant donné que le pipeline de tessellation DirectX 11 est programmable, il peut être utilisé pour résoudre un grand nombre de problèmes graphiques. Nous allons examiner quatre exemples.

Du bump mapping irréprochable

Model Comparision

Sous sa forme la plus basique, le displacement mapping peut être utilisé comme un substitut pour des techniques de bump mapping existantes. Les techniques actuelles comme le normal mapping permettent de créer l'illusion de surfaces bosselées grâce à un meilleur pixel shading. Toutes ces techniques ne fonctionnent que dans des cas bien précis et, quand elles fonctionnent, ne sont que partiellement convaincantes. Prenons le cas du parallax occlusion mapping, une forme très avancée de bump mapping. Bien que cette technique produise l'illusion de superpositions géométriques, elle ne fonctionne que sur des surfaces planes et à l'intérieur de l'objet (voir image ci-dessus). Le vrai displacement mapping ne présente quant à lui aucun de ces problèmes et donne des résultats précis sous toutes les perspectives.

Des personnages plus lisses

Smoothing Character
PN-Triangles permet d'automatiser le lissage des personnages sans l'intervention d'un artiste. Le réalisme de la géométrie et des éclairages est ainsi amélioré.

Les autres partenaires naturels de la tessellation sont les algorithmes de raffinement. Un algorithme de raffinement part d'un modèle brut pour créer, avec l'aide la tessellation, un modèle d'aspect plus lisse. Un exemple populaire est celui de PN-Triangles (aussi appelés N-patches). L'algorithme PN-Triangles convertit les modèles en basse résolution en surfaces arrondies qui sont ensuite redessinées sous la forme d'un mesh de triangles finement tessellés. La plupart des artefacts visuels avec lesquels nous sommes obligés de composer dans les jeux actuels (les articulations en blocs des personnages, les roues de véhicule au look polygonal et les traits de visage plutôt grossiers) peuvent être éliminés avec ces algorithmes. Par exemple, PN-Triangles est utilisé dans Stalker: Call of Pripyat pour produire des personnages plus fluides qui semblent plus naturels.

Un niveau de détail optimisé

Dans les jeux offrant de grands environnements ouverts, vous avez sans doute remarqué que les objets distants semblent surgir et disparaître brusquement. C'est dû au fait que le moteur du jeu bascule d'un niveau de détail à l'autre (LOD) pour garder la charge de travail géométrique à carreau. Jusqu'à aujourd'hui, il n'était pas facile de faire varier le niveau de détail de manière continue car cela exigeait de conserver plusieurs versions d'un même modèle ou environnement. La tessellation dynamique résout ce problème en permettant de faire varier le niveau de détail à la volée. Par exemple, lorsqu'un bâtiment distant apparaît pour la première fois, dix triangles peuvent suffire pour le rendu. Plus vous vous rapprochez, plus les détails se voient et des triangles supplémentaires sont alors utilisés pour souligner les détails comme la fenêtre ou le toit. Quand vous atteignez enfin la porte, un millier de triangles se dédient au rendu de la seule poignée ancienne en laiton tandis que toutes les rainures sont méticuleusement sculptées grâce au displacement mapping. Avec la tessellation dynamique le brusque surgissement des objets est éliminé et il devient possible d'augmenter progressivement le niveau de détail géométrique pratiquement sans limite.

Un processus artistique rationnalisé

Pour les développeurs, la tessellation augmente considérablement l'efficacité du pipeline de création de contenu. Invité à s'exprimer sur les raisons qui les avaient poussés à utiliser la tessellation, Jason Mitchell (Valve) a expliqué : « Nous sommes intéressés par la capacité de créer des éléments qui nous permettent d'augmenter et de diminuer progressivement l'échelle. Plus précisément, nous voulons construire un modèle et en augmenter la qualité jusqu'à une qualité cinématographique… Inversement, nous voulons pouvoir diminuer de manière naturelle la qualité d'un élément pour répondre aux besoins de rendu en temps réel sur un système donné. » Cette capacité de créer un modèle une fois et de l'utiliser sur diverses plates-formes se traduit par des temps de développement écourtés et, pour les joueurs sur PC, par la plus haute qualité d'image possible sur GPU.

Comment les GPU GeForce GTX 400 gèrent-ils la tessellation ?

Les modèles de GPU traditionnels utilisent un seul moteur géométrique pour exécuter la tessellation. Cette approche est analogue aux premiers modèles de GPU qui utilisaient un seul pipeline de pixels pour exécuter les opérations de pixel shading. Au vu de la façon dont les pipelines de pixels ont évolué d'une seule unité à une multitude d'unités parallèles afin de gagner en réalisme 3D, nous avons conçu dès le début notre architecture de tessellation pour qu'elle soit parallèle.

Les GPU GeForce GTX 400 intègrent jusqu'à 15 unités de tessellation, possédant toutes des ressources dédiées pour le VTF (vertex texture fetch), la tessellation et la transformation de coordonnées. Ces unités fonctionnent avec jusqu'à quatre moteurs de rastérisation parallèles pour transformer des triangles récemment tessellisés en un flux constant de pixels pour le shading. Au final, les performances de tessellation sont révolutionnaires, avec jusqu'à 1,6 milliard de triangles par seconde en performances suivies. En comparaison avec le meilleur produit de la concurrence, le GPU GeForce GTX 480 s'avère jusqu'à 7,8 fois plus rapide, comme le souligne le site Internet indépendant Bjorn3D.

Conclusion

Après des années de tâtonnements et d'erreurs, la tessellation devient enfin réalité sur PC. Des jeux époustouflants comme Metro 2033 prouvent déjà le potentiel de la tessellation. Prochainement, la tessellation sera aussi cruciale et importante que le pixel shading. NVIDIA a pris conscience de l'importance de la tessellation et a accéléré ce processus de transition technologique en développant d'emblée une architecture de tessellation parallèle. Le résultat a pris forme avec la gamme de GPU GeForce GTX série 400, une véritable révolution en matière de réalisme géométrique et de performances de tessellation.



 
 
FacebookTwitterGoogle+LinkedInPinterest