« Les cartes graphiques/Les architectures de type tiled rendering » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 9 :
La première solution demande d'utiliser une classe de carte 3D légèrement différente de celles vues précédemment. Sur ces architectures, l'écran/image à rendre est découpé en rectangles, rendus indépendamment, uns par uns. Ces rectangles sont appelés des tiles, d'où le nom d''''architectures à tiles''' donné à ce type de cartes graphiques. Le rendu se fait ''tile'' par ''tile''. Le rendu commence par calculer tout ce qui a trait à la géométrie associée à une ''tile''. Le résultat des calculs géométriques est mémorisé en mémoire vidéo dans une '''''display list''''', avant d'être rastérisé et texturé. Par la suite, il suffit de rasterizer, placer les textures et exécuter les shaders chaque tile, avant d'envoyer le tout aux ROP.
 
Cette séparation est intéressante car elle permet à la carte graphique de calculer la géométrie de plusieurs tiles pendant que le traitement des pixels est en train de se faire. Les tiles calculées en avance sont placées dans une file d'attente en mémoire vidéo, dont elles sortent pour subir l'étape de traitement des pixels. De plus, l'élimination des pixels et triangles cachés s'effectue dès que la profondeur est disponible, c'est à dire à l'étape de rastérisation. L'architecture globale d'une carte graphique à tiles change peu comparé à une carte à rastérisation, si ce n'est que le rasterizer est modifié et qu'il est suivi d'une unité d'élimination des pixels cachés : l'Image Synthesis Processor, ou ISP. Le rasterizer se voit ajouter un nouveau rôle : décider dans quelle tile se trouve un triangle. Pour cela, le rasterizer va calculer le rectangle qui contient un triangle (souvenez-vous le chapitre sur la rastérisation), et va vérifier dans quelle tile celui-ci est inclus : cela demande de faire quelques comparaison entre les sommets du rectangle et les sommets des tiles.
 
LeL'avantage rasterizerdes searchitectures voiten ajouter''tiles'' unest nouveauqu'elles rôlepermettent :d'éliminer déciderrapidement dansles quelleportions tilenon-affichées sede trouvela unscène triangle. Pour cela3D, le rasterizer va calculer le rectangle qui contient un triangle (souvenez-vous le chapitre surdès la rastérisation), et va vérifier dans quelle tile celui-ci est inclus : cela demandesortie de fairela quelques comparaison entre les sommets du rectangle et les sommets des tilesrastérisation. L'Image Synthesis Processor remplace en quelque sorte le Z-Buffer et les circuits d'élimination des pixels cachés. UneDe plus, une architecture à tile a juste besoin d'un Z-Buffer pour la tile en cours de traitement, là où les cartes graphiques normales ont besoin d'un Z-buffer pour toute l'image. De plus, les tiles sont tellement petites que l'on peut stocker tout le Z-Buffer dans uneun mémoirecache tampon integréeintegré dans l'ISP., Cettece qui permet de finaliser le calcul du ''tile'' dans le cache et d'écrire uniquement le résultat final en mémoire tamponvidéo. Ce cache réduit fortement les besoins en bande passante et en débit mémoire, ce qui rend inutile de nombreuses optimisations, comme la compression du Z-buffer. Le rendu en mode immédiat ne permet pas ce genre de facéties
 
Le principal défaut du rendu en ''tiles'' est que le rendu se fait en deux passes, avec une mémorisation du résultat de la première passe en mémoire vidéo. Et cette mémorisation demande beaucoup de lectures et d'écritures : d'écritures pour mémoriser le résultat de la première passe, de lectures pour l'utiliser dans la seconde passe. La mémoire vidéo est donc beaucoup utilisée, ce qui est un désavantage pour les cartes graphiques à haute performance. L'usage de mémoires cache compense cependant ce désavantage pour les architectures à ''tiles''. Finalement, ce qui est économisé d'un côté est gaspillé de l'autre et tout est histoire de compromis. De plus, diverses optimisations spécifiques permettent d'éliminer des lectures/écritures "superflues", ce qui complexifie la comparaison avec une carte graphique normale.
 
==L'élimination précoce des pixels sur les cartes graphiques en rendu immédiat==