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

Contenu supprimé Contenu ajouté
Ligne 5 :
[[File:Tiled rendering architecture.jpg|droite|thumb|Tiled rendering architecture.]]
 
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. Sur celles-ci, l'élimination des pixels et triangles cachés s'effectue dès que la profondeur est disponible, c'est à dire à l'étape de rasterization. Sur ces architectures, le résultat des calculs géométriques est mémorisé en mémoire vidéo, avant d'être traité tile par tile. Chaque tile se voit attribuer la liste des triangles qu'elle contient : cette liste est appelée la Display List, et elle est enregistrée en mémoire vidéo. Par la suite, il suffit de rasterizer, placer les textures et exécuter les shaders chaque tile, avant d'envoyer le tout aux ROP. L'architecture globale d'une carte graphique à tiles change peu comparé à une carte à rasterization, 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 rendu se fait ''tile'' par ''tile''. Le rendu commence par calculer tout ce qui a trait à la géométrie associée à une ''tile'', avant d'en rendre les pixels. Cette séparation entre rendu de la géométrie et traitement des pixels n'est pas anodin et ressemble à ce qui se fait avec la rasterisation normale. Sauf qu'ici, le calcul de la géométrie ne se fait pas triangle par triangle mais tile par tile. La carte 3D calcule toute la géométrie d'une tile, puis mémorise le résultat en mémoire vidéo et effectue ensuite le traitement des pixels de la tile. 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.
 
Sur celles-ci, l'élimination des pixels et triangles cachés s'effectue dès que la profondeur est disponible, c'est à dire à l'étape de rasterization. Sur ces architectures, le résultat des calculs géométriques est mémorisé en mémoire vidéo, avant d'être traité tile par tile. Chaque tile se voit attribuer la liste des triangles qu'elle contient : cette liste est appelée la Display List, et elle est enregistrée en mémoire vidéo. Par la suite, il suffit de rasterizer, placer les textures et exécuter les shaders chaque tile, avant d'envoyer le tout aux ROP. L'architecture globale d'une carte graphique à tiles change peu comparé à une carte à rasterization, 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 rasterization), et va vérifier das quelle tile celui-ci est inclus : cela demande de faire quelques comparaison entre les sommets du rectangle et les sommets des tiles. L'Image Synthesis Processor remplace en quelque sorte le Z-Buffer et les circuits d'élimination des pixels cachés. 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 une mémoire tampon integrée dans l'ISP. Cette mémoire tampon 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.