Architecture et fonctionnement d'un GPU

Données primitives

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

ImageUne primitive est une forme géométrique simple, allant du point au polygone. Le type de primitive le plus utilisé est le triangle ainsi que ses dérivés : le triangle fan et - surtout - le triangle strip.

Les vertices permettent de former ces formes géométriques. Ainsi, dans le cas d'une primitive de type point, un seul vertex correspondra à une seule primitive. Dans le cas d'un triangle, il en faudra trois pour former la primitive. Il existe quelques types de primitives et les plus utilisées sont :

  • point
  • ligne
  • triangle
  • triangle fan
  • triangle strip

Les points

Pendant longtemps, les points étaient une primitive quasiment inutilisée, excepté dans les logiciels de conception assistée par ordinateur. Dans les jeux, cependant, des billboards étaient généralement utilisés à leur place pour créer des effets de particule. Un billboard est un simple carré qui a la particularité d'être aligné par rapport à la caméra de façon à toujours lui faire face.

ImageLes point sprites

Mais depuis maintenant quelques générations de GPU, il existe des primitives nommées point sprites. Celles-ci fonctionnent exactement comme les points, sauf que le GPU va créer lui-même le billboard. Ainsi, au lieu de fournir 4 vertices à la carte pour un carré, un seul sera fourni pour chaque point, ce qui améliore grandement les performances et permet ainsi d'afficher plus de particules.

Les lignes

Les lignes sont utilisées en tant que telles. Il s'agit en fait d'une primitive assez simple, qui nécessite deux vertices. Elle possèdera cependant les mêmes propriétés qu'un triangle : une texture, une couleur, etc. A noter que pour afficher en mode "fil de fer", il ne faut pas modifier tout le système d'affichage pour utiliser des lignes : la carte graphique est capable de créer les lignes a partir de toutes les autres primitives.

Le triangle strip

Image Les triangle strips sont généralement utilisés à la place des triangles, puisque les performances sont meilleures lors de leur utilisation. En effet, pour un triangle, il faut trois vertices. Pour deux triangles, six vertices, etc. Le nombre de vertices est donc égal au nombre de primitives multiplié par trois. Les triangle strips, quant à eux, utilisent les trois premiers vertices pour le premier triangle, et ensuite un seul vertex supplémentaire pour les triangles suivants. A chaque fois, les trois derniers vertices sont utilisés pour définir le triangle. Le nombre de vertices est donc égal au nombre de primitives + deux.

L'avantage est donc très net : pour 150 000 triangles, en utilisant des primitives de type triangle, il faudrait 450 000 vertices. En utilisant un triangle strip, il n'en faudrait que 150 002. Un tiers de données à transférer, plutôt pas mal comme optimisation.

ImageLe triangle fan

Le second type de primitive dérivé du triangle, le triangle fan, est proche du triangle strip. Au lieu d'utiliser les trois derniers vertices pour créer chaque primitive, ce sont les deux derniers vertices ainsi que le premier qui sont utilisés. Moins souvent utilisés que les triangle strips, les triangles fans permettent néanmoins de facilement créer des cercles, halos de lumière, etc. Au niveau des performances, ils sont similaires aux triangle strips.

Les tampons d'indexation

Une dernière technique très utile afin de diminuer la quantité de données à envoyer à la carte graphique est l'utilisation d'un index. Ainsi, dans une forme complexe (le modèle du héros d'un jeu, par exemple), il arrive souvent qu'un même point soit utilisé par plusieurs primitives, et le vertex s'en retrouve ainsi dupliqué. L'utilisation des index permet de se passer de ces copies en disant à la carte graphique quel vertex utiliser via un numéro, en quelque sorte. L'avantage étant que là où un vertex fait très vite 32 voire 64 octets, un index ne fait que 2 ou 4 octets.

Données vertices   La Tesselation

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