« Les cartes graphiques/Les unités de gestion de la géométrie » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 35 :
===Le tampon de sommets===
 
[[File:Mesh fv.jpg|vignette|Représentation face-sommet.]]
Enfin, nous arrivons à la dernière technique, qui permet de stocker chaque sommet en un seul exemplaire dans le tampon de sommets. Le tampon de sommets est couplé à un '''tampon d'indices'''. Ces indices servent à localiser le sommet dans le tampon de sommets. Pour charger un sommet, il suffit de fournir l'indice du sommet. Pour charger plusieurs fois le même sommet, il suffira de fournir le même indice à l'input assembler.
 
Enfin, nous arrivons à la dernière technique, qui permet de limiter l'empreinte mémoire tout en facilitant la manipulation de la géométrie. Cette technique est appelée la '''représentation face-sommet'''. Elle consiste à stocker les informations sur les triangles et sur les sommets séparément. Le tampon de sommet contient juste les coordonnées des sommets, mais ne dit rien sur la manière dont ils sont reliés. Les informations sur les triangles sont quand à elles, non pas reconstituées à la volée, mais mémorisées dans un tableau séparé. Ce dernier est appelé le ''tampon d'indices'' et n'est rien de plus qu'une liste de triangles.
Dit comme cela, on ne voit pas vraiment où se trouve le gain en mémoire. On se retrouve avec deux tableaux : un pour les indices, un pour les vertices. Le truc, c'est qu'un indice prend beaucoup moins de place qu'une vertice. Un indice tient au grand maximum sur 32 bits, là où une vertice peut prendre 128 à 256 bits facilement. Entre copier 7 fois la même vertice, et avoir 7 indices et une vertice, le gain en mémoire est du côté de la solution à base d'index.
 
Chaque triangle dans le tampon d'indices est codé non pas par ses trois coordonnées, mais par trois indices. Un indice est tout simplement un numéro qui indique la position du sommet dans le tampon de sommet. On pourrait se demander pourquoi ne pas utiliser les coordonnées du sommet directement. La raison est que les sommets étant partagés entre plusieurs triangle, il y aurait beaucoup de redondance. Si un sommet est partagé entre N triangles, les coordonnées du sommets seraient copiés en N exemplaires. Avec la technique du tampon d'indice, les coordonnées sont codées en un seul exemplaire, mais le tampon d'indice contiendra N exemplaires de l'indice. Dit comme cela, on ne voit pas vraiment où se trouve le gain en mémoire. On se retrouve avec deux tableaux : un pour les indices, un pour les vertices. Sauf qu'un indice prend moins de place qu'un sommet : entre un indice et trois coordonnées, le choix est vite fait. Et entre 7 exemplaires d'un sommets, et 7 exemplaire d'un indice et un sommet associé, le gain en mémoire est du côté de la solution à base d'index.
Avec un tampon d'indices, un sommet peut être chargé plusieurs fois depuis la mémoire vidéo. Pour exploiter cette propriété, les cartes graphiques intercalent une mémoire ultra-rapide entre la mémoire vidéo et la sortie de l'input assembler : le '''cache de sommets'''. Chaque sommet est stocké dans ce cache avec son indice en guise de Tag. Sur les cartes graphiques assez anciennes, ce cache est souvent très petit, à peine 30 à à 50 sommets. Pour profiter le plus possible de ce cache, les concepteurs de jeux vidéo peuvent changer l'ordre des sommets en mémoire.
 
: On pourrait remplacer les indices par des pointeur, ce qui donnerait un cas particulier d'une structure de données connue sous le nom de vecteur de Liffe. Mais ce n'est pas très pratique et n'est pas utilisé dans le domaine du rendu 3D.
 
Avec un tampon d'indices, un sommet peut être chargé plusieurs fois depuis la mémoire vidéo. Pour exploiter cette propriété, les cartes graphiques intercalent une mémoire ultra-rapidecache entrepour lamémoriser mémoireles vidéosommets etdéjà la sortie de l'input assemblerchargés : le '''cache de sommets'''. Chaque sommet est stocké dans ce cache avec son indice en guise de Tag. Sur les cartes graphiques assez anciennes, ce cache est souvent très petit, à peine 30 à à 50 sommets. Pour profiter le plus possible de ce cache, les concepteurs de jeux vidéo peuvent changer l'ordre des sommets en mémoire.
 
[[File:Vertex cache.png|centre|vignette|upright=2.0|Cache de sommets.]]