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

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 1 :
Précédemment, dans ce cours, nous avons vu que certaines portions d'une scène 3D ne sont pas affichées à l'écran. Soit parce qu'elles sont en-dehors du champ de vision de la caméra, soit parce qu'elles sont masquées par un autre objet, ou encore parce que la face avant d'un objet cache la partie arrière. Il est primordial ne ne pas texturer et calculer les portions de l'image qui ne sont pas visibles à l'écran, en utilisant des algorithmes de ''culling'' adaptés, mais ce n'est pas facile à faire. Il est possible d'éliminer rapidement les parties arrières cachées des objets, ainsi que ce qui est hors du champ de vision de la caméra, dès l'étape de rasterisation, soit assez tôt. Mais les objets cachés par d'autres plus proches posent problèmes, car ils sont éliminés à la toute fin du pipeline. Cependant, la profondeur d'un pixel est connue dès la fin de l'étape de rasterisation, ce qui permet en théorie de détecter précocement quel pixel est devant un autre. Mais cela demande d'utiliser des techniques d'élimination précoce.
 
==Le ''Tiled rendering''==
 
[[File:Tiled rendering architecture.jpg|droite|thumb|Tiled rendering architecture.]]
 
LaLes premièrearchitectures solutionen demande d'utiliser'tiles'' sont 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.