Sélectionner une page
Comment votre ordinateur arrive-t-il afficher des images tridimensionnelles si ralistes ? Quelles sont les tapes ncessaires au rendu d’une frame (image). Voici ce que nous allons essayer d’expliquer le plus simplement possible. Nous avons choisi de prendre une carte intgrant un moteur de transformation gomtrique pour expliquer les diffrentes tapes. Quelques dtails peuvent donc changer avec d’anciennes cartes graphiques. Ce schma de rendu ne s’applique pas aux chips utilisant la technologie PowerVR (tile rendering) comme le Kyro II.

Par : Damien
Triolet
Date : le 21 mai 2001
Copyright tt-hardware.com 2001, tous droits rservs

Prparation de la scne 3D

Cette premire tape ne fait pas vraiment
partie du rendu 3D bien qu’elle soit la base de l’image. Elle concerne le
moteur graphique d’un jeu par exemple. Celui-ci va dfinir la scne graphique :
quels lments doivent tre prsents, o doivent-ils se trouver Ces
informations tant fournies par le moteur du jeu suivant la vitesse de
l’lment, sa trajectoire etc. La position de la camra (dont nous voyons
l’image sur l’cran) est galement dfinie.

Lors de cette phase, le moteur du jeu prpare
un schma de construction de l’image qui sera utilis par le systme graphique.

Envoi des informations au GPU

Une fois la scne 3D dfinie, les polygones qui
la composent sont envoys au chip graphique via le bus AGP, mais tout en
passant par la mmoire centrale. Les donnes sont sous forme de vertices
(sommets) des polygones. Tous les objets sont donc composs de petites facettes
triangulaires. Il y a cependant un petit inconvnient ce systme : les
donnes devant tre transmises au GPU peuvent tre trs importantes et la bande
passante du bus AGP peut s’avrer rapidement sature, ainsi que la bande
passante de la mmoire centrale. Ceci peut-tre plus ou moins vit en utilisant le mode Fast Writes qui permet au CPU d’aller directement crire des informations dans la mmoire vido, sans passer par la mmoire centrale. Malheureusement, pour des raisons de compatibilit et de stabilit, le Fast Writes est dsactiv dans beaucoup de cartes graphiques (toutes les cartes base de chip n’Vidia…).

Microsoft a donc dcid d’inclure dans DirectX
8 un nouveau format de donnes : les High-Order Surfaces. Les polygones sont
ainsi abandonns au profit de fonctions mathmatiques (y=x+1 etc.). Ces fonctions tant courbes, elles
permettent de dfinir simplement des polygones trs complexes. Par exemple, une
sphre demande des milliers de facettes alors que quelques fonctions
mathmatiques peuvent la dfinir avec une prcision beaucoup plus importante.
Petite info au passage : ces fonctions sont les rpliques de celles utilises dans
les moteurs graphiques base de Voxel comme dans le fabuleux Outcast. Une fois
que la carte graphique a reu ces objets sous forme mathmatique, elle les
transforme en triangle suivant un certain niveau de dtail (elle peut aussi
bien dcomposer une sphre en 30 triangles qu’en 30000 ; cela peut galement
permettre de grer facilement diffrents niveaux de dtails suivant la position
de l’objet dans l’espace). Cette opration porte le nom de tesselation. La
tesselation est en fait la premire opration effectue en hardware par le
circuit graphique. A l’heure actuelle, seul le GeForce 3 peut travailler avec
les HOS, mais il est parier que tous les prochains acclrateurs graphiques
en feront de mme.

Transform & Lighting

Le chip graphique dispose maintenant de la
scne graphique dcompose en triangles. Il peut facilement travailler avec ces
triangles. Il va commencer par les oprations de Transformation. Elles
consistent dplacer l’objet pour le positionner dans l’espace l o il doit
tre par rapport aux autres objets. Plusieurs oprations sont effectues : translation, rotation et mise chelle. Tout cela est
ralis trs rapidement par du calcul matriciel. Lors de ces oprations, il
sort exactement le mme nombre de triangles qu’il en est rentr. Si un objet
est fortement agrandi, il ne bnficiera pas de triangles supplmentaires.

Ensuite vient le lighting. Il est galement
appel vertex lighting par opposition aux light maps (cfr Quake III). Chaque vertex reoit un ou des paramtres qui dfinissent les effets de lumire
qui s’y appliquent. Un paquet de paramtres sont pris en compte. Cela va de la
couleur et de l’intensit de chaque source de lumire de la scne la couleur
et au matriau de l’objet auquel appartient le vertex. Ces oprations demandent
normment de calculs. Mme les GPU actuels se retrouvent facilement genoux
face de nombreuses sources de lumire.

Ces 2 tapes taient, avant le GeForce 256,
ralises par le processeur central avant l’envoi des donnes. L’intgration hardware
du Transform & Lighting tait destine soulager ce CPU pour qu’il puisse
s’occuper d’autres choses comme d’un moteur physique complexe, d’une IA
avance Malheureusement, dans la ralit, le T&L; commence seulement tre
pleinement utilis. Le dcalage entre son apparition et son utilisation fait
que les CPU actuels (1 GHz) sont maintenant capables de se passer dans bien
des cas de T&L; hardware.

Une nouvelle volution de ce moteur gomtrique
vient de voir le jour avec la GeForce 3. Il est maintenant devenu programmable.
Cela permet aux dveloppeurs de crer des effets de dformation, d’animation
trs complexes. Esprons qu’il soit utilis avant que les CPU soient capables
de s’en passer

Triangle Setup

Le reste du rendu est incapable de travailler
avec des triangles. Le Triangle Engine va se charger de dcomposer ces
triangles en petits lments : les pixels. Ceux-ci seront utiliss par le reste
du pipeline graphique afin d’obtenir leur couleur finale. Petite prcision :
certains de ces petits lments peuvent tre plus petits qu’un pixel. Ce sont
les sub-pixels. Ils sont ncessaires pour permettre la visualisation d’objets
trs loigns ou trs minces comme un fil lectrique.

Texturing et Fogging

Le Texturing est l’opration la plus connue.
Son fonctionnement est pourtant loin d’tre trs simple. Grossirement, il
consiste prendre un point dans chaque texture (nous prendrons comme exemple
du bi-texturing) et mlanger leur couleur pour obtenir le pixel.
Malheureusement, ce n’est pas si simple. Premirement, il faut prendre en
compte les donnes de lighting qui accompagnent chaque vertex. Dans un systme
classique, les donnes de lumire de chaque pixel sont interpoles partir des
3 sommets du triangle. Il s’agit d’une approximation dont nous nous sommes
contents jusqu’il y a peu.

Aprs cela, il faut texturer le pixel.
Cependant, il ne suffit pas d’aller chercher le texel qui correspond au pixel
dans la texture puisqu’il n’existe pas ! Il faut en fait dterminer un texel
qui est le plus proche du point dsir. Cette technique n’offrait pas de bons
rsultats. A l’avant plan, la texture devenait pixelise et donc affreuse. Les
constructeurs ont donc dcid d’utiliser le bilinear filtering. Il consiste
prendre non pas le point le plus proche, mais le carr de 4 pixels le plus
proche et de les mlanger pour n’en faire qu’un “texel” (il s’agit
donc d’un point fictif qui n’existe pas dans la texture). Rsultat : mme en
zoomant sur une texture, nous observons toujours un dgrad de couleurs. Le
mme principe est appliqu toutes les textures.


Une fois textur, le pixel se voit appliquer
ventuellement le brouillard (fog). Celui-ci peut-tre de diffrents types. En
gnral il est appliqu aux pixels reprsentant l’arrire plan pour permettre
un affichage moins brusque des nouveaux lments de la scne 3D (viter le
clipping). Un brouillard peut galement tre appliqu dans l’tape suivante.

C’est galement ce moment que sont
appliqus d’autres effets avancs comme le bump mapping, le Per-Pixel Lighting
etc. Le Per-Pixel Lighting permet de conserver le dynamisme du Vertex Lighting
tout en gardant la qualit de dfinition des Light Maps. Une texture
supplmentaire appele Normal Map est ncessaire. Elle indique en gros le
positionnement de la surface par rapport aux sources de lumire. Les clairages
et le bump mapping s’en trouvent largement amliors. La famille des GeForce 2
ainsi que la Radeon d’ATI supportent cette fonction.

La GeForce 3 apporte galement une nouveaut
ce niveau puisqu’elle permet de programmer les effets par pixel. Il devient
donc possible pour les dveloppeurs de crer des clairages encore plus
avancs, du bump mapping dynamique, et plein d’autres effets sympathiques.

Alpha Blending et Depth Testing

Une fois la couleur relle du pixel dfinie
(dans la scne 3D), il est temps de dterminer sa couleur finale telle que
l’observateur la voit. Il reste donc encore un paramtre dfinir : le pixel
sera-t-il visible ? Sera-t-il masqu par un autre pixel ? C’est ce qui porte le
nom de Depth Testing. Ensuite, le pixel qui le masque est-il opaque ou
transparent ? Si le pixel est masqu par un autre pixel opaque, il est oubli.
Il a t calcul pour rien. Par contre, s’il est derrire une surface ou un
objet transparent, les couleurs des 2 (ou plus) pixels seront mlanges (en
appliquant un facteur alpha dfinissant le degr de transparence chaque
couleur). Le pixel final est ainsi form. Il faut raliser la mme opration
pour tous les pixels de la scne 3D. Ce nombre peut-tre trs important suivant
la rsolution : prs de 2 millions de pixels (sans compter les pixels
“abandonns” en cours de route) pour une seule image en 1600×1200 !!!

Stencil Buffer

A la frame nouvellement forme, va tre
appliqu une sorte de masque stock dans le stencil buffer. Ce masque contient
par exemple des zones noires et des zones sans rien (compltement transparentes
donc). Il va venir se positionner sur l’image ou sur une partie de l’image. Il
permet par exemple d’appliquer des ombres assez ralistes. Le P-Buffer ou Pixel
Buffer permet d’aller beaucoup plus loin que le Stencil Buffer. Il devrait tre
couramment utilis dans les jeux venir.

Frame Buffer Blending

Nous voici arrivs au terme de la ralisation
de l’image. Il reste juste un petit dtail rgler : le FSAA. Dans le cas du
supersampling (calcul de l’image dans une rsolution suprieure celle
utilise pour l’affichage ; technique utilise par les GeForce, les Radeon et
les Kyro), l’opration inverse est effectue dans le frame buffer : le
downsampling afin d’obtenir l’image finale au bon format ou plutt dans le
bonne rsolution. Dans le cas du multi-sampling (utilis sur les Voodoo 4 et
5), un blending (mlange) est effectu entre plusieurs pixels de
frames pouvant tre diffrentes. Il ne reste plus qu’ inverser les 2 buffers
(celui dans lequel le chip travaille et celui qui contient l’image qui vient
d’tre affiche) et de tout recommencer encore et encore !