Pas mal de choses peuvent influencer les performances du vertex
pipeline. Il est donc intéressant de savoir ce qui peut faire qu'une
carte graphique sera plus rapide qu'une autre. Aussi, voici quelques
éléments de réponse à la question : "qu'est-ce qui fait qu'une carte
graphique est rapide ?". Mais uniquement au niveau du vertex pipeline.
Unités de traitement des vertices
Ou vertex units, pour les anglais. Chaque unité représente en quelque
sorte un vertex pipeline. Puisqu'un vertex pipeline (ou un vertex
shader) ne traite qu'un seul et unique vertex à la fois, l'ajout de
plusieurs de ces unités de traitement permet de traiter plusieurs
vertices en parallèle. L'avantage est évidemment considérable,
puisqu'au niveau du traitement des vertices les performances augmentent
de façon pratiquement linéaires.
Vertex shader d'éclairage anisotropique (nVIDIA)
En effet, la carte graphique reçoit généralement un très grand nombre
de vertices à la fois (plusieurs milliers, voire millions), et il est
donc très simple de traiter 2, 4, 8, 12 ou 16 vertices d'un coup au
lieu d'une seule. Les performances sont ainsi doublées, quadruplées,
etc.
Taille et vitesse du bus mémoire
Il s'agit, dans les spécifications de la carte graphique, du
"128-bit"
ou "256-bit" qui se trouve à côté de la quantité de mémoire présente
sur la carte. Cette taille influence la quantité de données pouvant
être transféree entre la mémoire et le GPU. On pourrait se dire que
seules les textures se trouvent dans la mémoire de la carte graphique,
mais il est en fait possible d'y mettre plus ou moins n'importe quel
type d'information, y compris des vertices. L'avantage est évidemment
d'avoir les données à promixité du GPU, et de pouvoir ainsi y accéder
très rapidement.
La taille du bus mémoire et sa fréquence détermineront à quelle vitesse
les vertices peuvent être envoyés au GPU. Il faut cependant faire
attention lors de la lecture de ces informations. Ainsi, une carte
disposant d'un bus 128-bit et de mémoire à 300 MHz sera plus lente
qu'une carte disposant d'un bus 256-bit et de mémoire à 200 MHz. Le
plus simple est de multiplier le nombre de bits par la fréquence pour
obtenir une valeur permettant de donner un ordre de performance.
Taille des vertices
Probablement pas l'élément le plus important à prendre en compte au
niveau des performances, il a pourtant un certain impact sur les
performances. Comme expliqué dans le chapitre concernant les vertices,
ceux-ci ont une taille variable. Si cette taille dépasse une certaine
valeur, qui est en général spécifique à une génération de chipset, les
performances seront réduites.
Le problème, dans ce cas-ci, c'est que les constructeurs ne
communiquent généralement pas ces valeurs aux consommateurs (vous ne
verrez jamais cette valeur sur la boite de la carte graphique), et les
développeurs de jeux ne communiquent jamais la taille des vertices
utilisée dans leurs jeux, puisque celle-ci est variable. Il est donc au
final inutile de tenir compte de cet élément lors de l'achat d'une
carte graphique, mais il est intéressant de savoir qu'il existe.
Nombre d'instructions d'un shader
Le nombre d'instructions d'un vertex shader a beaucoup d'influence sur
les performances de celui-ci. En effet, sans même tenir compte du fait
que certaines instructions prennent plus de temps que d'autres, les
performances d'un vertex shader diminuent très vite avec l'augmentation
du nombre d'instructions. Encore une fois, tout comme pour la taille
des vertices, ce type d'information est difficile à obtenir, aussi bien
au niveau des constructeurs que des développeurs.