« Les cartes graphiques/Les cartes accélératrices 3D » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 43 :
|[[File:Occlusion culling example PL.svg|vignette|''Occlusion culling'' : les objets en bleu sont visibles, ceux en rouge sont masqués par les objets en bleu.]]
|}
 
Pour résumer, les portions de la scène 3D qui ne sont pas visibles à l'écran ne doivent pas être calculées. Les cartes graphiques embarquent divers méthodes de ''culling'' pour abandonner les calculs quand elles s’aperçoivent que ceux-ci portent sur une partie non-affichée de l'image. Cela fait des économies de puissance de calcul assez appréciables et un gain en performance assez important. Précisons que le ''culling'' peut être plus ou moins précoce suivant le type de rendu 3D utilisé, mais nous verrons cela dans la suite du chapitre.
 
==Le pipeline graphique==
Ligne 66 ⟶ 68 :
* Vient ensuite une phase de '''traitement de la géométrie''', où les vertices sont assemblées en triangles, points, ou lignes, voire en polygones. Ces formes géométriques de base sont ensuite traitées telles quelles par la carte graphique. Sur les cartes graphiques récentes, cette étape peut être gérée par le programmeur : il peut programmer les divers traitements à effectuer lui-même.
 
Vient ensuite la traduction des formes (triangles) rendues dans une scène 3D en un affichage à l'écran. Cette étape de rasterization va projeter l'image visible sur notre caméra. Et cela nécessite de faire quelques calculs. Tout d'abord, la scènecarte 3Dgraphique vaeffectue devoirdivers passer par une phasealgorithmes de '''clipping'culling'' : les triangles, qui neéliminent sontles pasportions non-visibles depuis la caméras sont oubliés. Ensuite, ils passent par une phase de l'''culling''', qui élimine les pixels cachés par un objet géométriqueimage. EnfinEnsuite, chaque pixel de l'écran se voit attribuer un ou plusieurs triangle(s). Cela signifie que sur le pixel en question, c'est le triangle attribué au pixel qui s'affichera. C'est lors de cette phase de '''rasterisation''' que la perspective est gérée, en fonction de la position de la caméra.
 
À la suite de cela, les textures sont appliquées sur la géométrie. La carte graphique sait à quel triangle correspond chaque pixel et peut donc colorier le pixel en question en fonction de la couleur de la texture appliquée sur la géométrie. C'est la phase de '''Texturing'''. Sur les cartes graphiques récentes, cette étape peut être gérée par le programmeur : il peut programmer les divers traitements à effectuer lui-même. En plus de cela, les pixels de l'écran peuvent subir des traitements divers et variés avant d'être enregistrés et affichés à l'écran. Un effet de brouillard peut être ajouté, des tests de visibilité sont effectués, l'antialiasing est ajouté, etc.
Ligne 78 ⟶ 80 :
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 et doit avoir un débit suffisant. Ce qui est un désavantage pour les cartes graphiques à haute performance. L'usage de mémoires cache compense cependant encore plus le désavantage pour les architectures à tile. Le rendu en mode immédiat et en tile permettent tous deux l'utilisation de mémoires caches, notamment pour ce qui est des textures et des sommets. Mais le rendu en tile permet d'utiliser des caches pour les étapes finales du traitement des pixels, là où le rendu en mode immédiat ne le peut pas vraiment. L'idée est d'utiliser un cache capable de mémoriser une tile complète, ce qui permet de finaliser le calcul de la tile dans le cache et d'écrire uniquement le résultat final en mémoire vidéo. Le rendu en mode immédiat ne permet pas ce genre de facéties.
 
Un autre avantage des architectures en tile est qu'elles permettent d'éliminer rapidement les portions non-affichées de la scène 3D. Ces portions ne sont donc pas calculées et cela fait des économies de puissance de calcul assez appréciables. Le rendu en mode immédiat a certes des techniques pour éviter de calculer les portions non-visibles d'une'culling'' scèneassez 3Davancées. IlMais leurelles estsont possibleeffectuées ddans l'abandonner les calculs si on s’aperçoit que ceux-ci portent sur une partie non-affichéeétape de l'image.rasterization, Maisce cet abandonqui est souvent assez tardif comparé à ce qu'on observe sur les architectures à tiles, pour diverses raisons techniques.
 
Finalement, ce qui est économisé d'un coté est gaspillé de l'autre et tout est histoire de compromis. De plus, diverses optimisations spécifiques à chaque approche permettent d'éliminer des lectures/écritures "superflues", ce qui complexifie la comparaison entre les deux approches.