prix

Stéphane Charpentier | 12/05/2005
Accès direct :

Données vertices

ImageLes vertices sont à la base de tout affichage. Ils permettent en effet de créer des formes géométriques.

Un vertex contient ainsi un certain nombre d'informations, nombre qui peut varier selon l'utilisation qui sera faite du vertex. Les seules informations requises sont les coordonnées du vertex. Ces coordonnées se présentent sous la forme d'un simple vecteur à deux, trois ou quatre composantes :

  • X, la gauche et la droite
  • Y, le haut et le bas
  • Z, la profondeur
  • W, la coordonnée homogène

Les trois premières se passent probablement de commentaires, il s'agit simplement de la position du vertex, en trois dimensions. La quatrième, par contre, est généralement moins connue. Elle agit comme simple modificateur sur X, Y et Z. Ainsi, les coordonnées finales sont X' = X / W, Y' = Y / W, Z' = Z / W. Par défaut, la coordonnée homogène vaut 1, ce qui n'affecte donc pas les coordonnées.

Chaque vertex peut également posséder de nombreuses autres informations. Depuis l'avènement des GPUs programmables (vertex shaders), il est même possible d'ajouter au vertex des informations qui n'ont aucune signification particulière pour la carte graphique. Voici cependant une courte description des informations les plus courantes :

Couleur diffuse et spéculaire

Ces informations sont quasiment toujours présentes, et définissent la couleur d'un vertex. En imaginant qu'un vertex fait partie du modèle d'un vase, la couleur diffuse est la couleur qu'aura le vase là où se trouve le vertex lorsque celui-ci est éclairé avec de la lumière parfaitement blanche. La couleur spéculaire, quant à elle, est la couleur réfléchie par le vase où se trouve le vertex lorsque la lumière entre en contact avec celui-ci. Les deux types de couleurs sont définis par trois ou quatre composantes :

  • rouge
  • vert
  • bleu
  • alpha (utilisé notamment pour la transparence)

Normale

Image La normale est également quasiment toujours présente. Elle est en effet très importante, mais surtout très utile. En imaginant que trois vertices forment une surface plane (un triangle), la normale est le vecteur perpendiculaire à cette surface. La normale est ainsi utilisée à de nombreuses reprises lors de calculs permettant de calculer les éclairages, entre autres.

Le calcul d'une normale est assez simple, puisqu'il s'agit d'un produit croisé (en anglais cross product) : la multiplication entre eux de tous les composants de deux vecteurs définissant le plan auquel la normale doit être perpendiculaire. Les vertex shaders disposent d'une instruction capable de faire un produit croisé.

Coordonnées de textures

Image Les coordonnées de textures permettent de positionner une texture sur une primitive. Ainsi, pour afficher une image simple, il suffit d'avoir quatre vertices formant un carré. Le vertex se trouvant en bas à gauche possèdera les coordonnées correspondant au côté gauche en bas de la texture. Ce système permet de nombreuses astuces lorsqu'une texture est appliquée à un objet. Ces coordonnées sont donc deux (ou trois dans le cas des textures 3D) composantes : U et V. Sur l'axe des abscisses (horizontal), 0 se trouve a gauche, 0.5 au milieu, et 1.0 à droite. En effet, les valeurs sont normalisées, excepté dans certains cas particuliers. A noter qu'il est courant qu'un vertex possède plus d'un jeu de coordonnées de textures. Ainsi, lors de l'application de plusieurs textures, chaque jeu de coordonnées sera utilisé pour la texture y correspondant.

Taille du point

Déjà plus rare, cette information est utilisée dans les systèmes de particules. Elle permet de donner une taille à un point, ce qui améliore grandement les performances puisqu'au lieu d'afficher un carré ou cercle (et donc de passer de nombreuses vertices), il est possible d'envoyer à la carte un seul vertex et la taille du point voulu.

Poids du vertex

Il s'agit de la dernière, mais surtout de la plus complexe des informations. Tout comme les coordonnées de textures, il peut y en avoir plusieurs. Il s'agit de matrices définissant le poids d'un vertex. Cependant, aucun rapport avec le chiffre indiqué par la balance, il s'agit ici d'une valeur prise en compte lors de l'affichage des vertices afin d'effectuer du vertex blending. Pour faire simple (il y aurait de quoi remplir 80 pages) le vertex blending permet d'obtenir un mouvement fluide des vertices lors de l'animation de modèles, ainsi que d'éviter que des "trous" apparaissent aux jointures.

Impact sur les performances

Toutes ces informations ont une certaine taille en mémoire. Ainsi, les coordonnées font généralement 16 octets, la couleur 4 octets, la normale 12 octets, etc. Rien qu'avec ces trois informations, assez basiques, on arrive à 32 octets. La carte graphique dispose d'une sorte de cache, où vont les vertices. Ce cache à une certaine taille, et l'utilisation d'un vertex faisant exactement sa taille est l'idéal. Bien sûr, il est impossible de le connaître, et quand bien même ce serait possible, il serait inconcevable d'adapter le rendu afin d'utiliser moins d'informations. De nos jours, les cartes peuvent sans problème gérer des vertices de 64, 128 voire même 256 octets. Ce ne fut pas toujours le cas, et le dépassement de cette taille "idéale" pour la carte graphique réduisait grandement les performances.
 
 
 

Actualités relatives Cartes graphiques