Architecture et fonctionnement d'un GPU

La Tesselation

Publié le 12 mai 2005 , par Stephane CHARPENTIER - mis à jour le 03 février 2010 à 00h

ImageLa tessellation est une technologie plutôt récente sur les cartes graphiques. L'idée de base est assez simple : générer des vertices afin d'augmenter leur nombre et ainsi augmenter la finesse de la surface dont ils font partie.

Pour ce faire, la partie du GPU qui s'occupe de la tessellation (le tessellateur) n'a besoin que de deux informations : la position du vertex, et la normale. Si vous avez bien compris la page sur les vertices, vous savez qu'une normale représente simplement un vecteur perpendiculaire au vertex. Le tessellateur va interpoler la position et la normale afin de générer de nouvelles vertices entre deux vertices existantes.

Il existe plusieurs algorithmes de tessellation, qui vont définir où et quand il faut augmenter le nombre de vertices. Le plus simple est évidemment un tessellateur qui augmente le nombre de vertices jusqu'à arriver à une certaine résolution, mais ce n'est pas très utile : les objets distants seraient très détaillés mais les détails ne seraient pas visibles. Bref, du gâchis.

Une méthode plus adéquate consiste à faire varier le nombre de vertices afin que les objets proches en possèdent beaucoup et que les objets distants en possèdent peu. L'idéal serait augmenter le nombre de vertices afin que chaque vertex corresponde à un pixel à l'écran, mais cela demanderait enormément de ressources.
Sur l'image ci-dessous, on peut voir l'effet des triangles PN (Point-Normal). Ces derniers ont été initialement présentés par ATI et sont également appelés N-Patches (Normal Patches). NVIDIA a préféré l'utilisation de primitives appelées les RT-Patches (Real-Time Patches). Cependant, bien que DirectX supporte toujours ces deux types de primitives, ils ont tous les deux plus ou moins abandonné le support de la tessellation, même sur leurs cartes les plus récentes.

Image
Les triangles PN (ou N-Patches) d'ATI


Le chiffre en haut de chaque triangle représente le niveau de détail. Le niveau 0 est le niveau de "base", c'est à dire qu'il n'y a aucune tessellation. Ensuite, pour chaque niveau, le tessellateur interpole les vertices et augmente ainsi le nombre de triangles.

Dans le cas d'une surface plane comme sur l'illustration, la différence entre le niveau 0 et le niveau 5 ne sera pas visible, puisque la surface sera toujours plane. Si la surface est courbe, cependant, la différence sera très visible, comme vous pouvez le voir sur l'illustration suivante.

La tessellation d'un modèle plus complexe

Il s'agit cette fois-ci d'une mesh (en français maille), un ensemble de primitives. En plus d'interpoler les coordonnées, le tessellateur a également interpolé les normales qui, souvenez-vous, font partie de l'équation qui calcule la lumière. C'est pourquoi l'éclairage de la surface s'adapte correctement au fur et à mesure que le nombre de triangles augmente.

Image
La tessellation d'un modèle plus complexe


Bien que la tessellation ait été introduite il y a déjà quelques temps, elle est toujours très peu utilisée. D'abord, les constructeurs semblent avoir abandonné leur support. Ensuite, seul DirectX supporte la tessellation - ou de façon plus générale les surfaces de haut niveau - depuis sa version 8, alors qu'OpenGL ne possède toujours pas de support standardisé pour ces fonctionnalités. ATI et NVIDIA avaient à une époque introduit des extensions propriétaires afin d'utiliser ces possibilités, mais les pilotes actuels ne possèdent plus les extensions en question. Matrox avait également annoncé une carte exploitant la tessellation (la Parhelia), mais a fini par retirer ces informations de son site et désactiver le support de la tessellation dans le pilote.

Données primitives   Le Vertex Pipeline

Dernières réactions

jmay - ( 3 approbations ) - le 02/10/09 à 16:13
Je n'arrive à lire que la première ligne des chapitres de la première partie (de Données Vertices à Clipping,Culling et Trammage) ... Dommage ça m'intéresse.
phybb - ( 1 approbation ) - le 16/10/09 à 10:50
idem ... je ne peux lire que le début de chaque chapitre ... :(
Clercq - ( 1 approbation ) - le 13/11/09 à 12:41
Bonjour,

N'y a t'il rien a faire pour pouvoir lire cet article ? Il est pointe par plusieurs site mais ... est impossible a lire :(.

J'ai essaye avec firefox et chrome sous linux ...

Merci d'avance.
Les commentaires sur ce document sont clos.
  • Tout
  • Hi-Tech
  • Matériel
  • Mac
  • Jeux

Derniers Tests

Tous les tests