
Les
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

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

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.