Comprendre le rendu 3D étape par étape avec 3DMark11

Publié le 28/11/2011 par
Imprimer
Etape 5 : les ombres
3DMark 11 peut générer des ombres liées aux sources de lumière directionnelles (le soleil ou la lune) et de type spot (non présentes dans le test 3). Dans les deux cas il s'agit de la technique du shadow mapping qui consiste à projeter l'ensemble des objets de la scène du point de vue de la source lumière et d'en retenir uniquement un tampon Z qui porte alors le nom de shadow map. Contrairement à ce que son nom pourrait laisser penser, il ne s'agit pas d'une texture d'ombre qui serait appliquée sur l'image.

Une shadow map indique pour chacun de ses points la distance par rapport à la source de lumière à partir de laquelle les objets se trouvent dans l'ombre. Il suffira par la suite de croiser la position du pixel avec les informations contenues dans les shadow maps pour savoir s'il doit être éclairé ou s'il se trouve dans l'ombre.

Pour les sources de lumière directionnelles, 3DMark 11 utilise une petite variante : les shadow maps en cascade (CSM). Etant donné la surface immense éclairée par le soleil, il est difficile, même en très haute résolution (4096x4096) d'obtenir une précision suffisante pour les ombres, qui risquent de pixéliser. Les CSM évitent cela en utilisant plusieurs niveaux de shadows maps qui se focalisent progressivement sur une plus petite zone située à l'avant plan dans le champ de vision, de manière à y conserver une qualité optimale.

3DMark 11 en mode Extreme crée 5 shadow maps d'une taille de 4096x4096 qui sont générées à travers 339 commandes de rendu dont 142 font appel à la tessellation, ce qui représente l'une des charges les plus lourdes de la scène. Plus un objet est foncé, plus il est proche de la source de lumière :


La scène vue depuis le soleil : [ CSM 1 ][ CSM 2 ][ CSM 3 ][ CSM 4 ][ CSM 5 ]


Bien qu'il soit possible de calculer au préalable toutes ces shadow maps et seulement ensuite l'éclairage, Futuremark a décidé d'entrelacer les deux, ce qui rend probablement le calcul de l'éclairage un petit peu moins efficace mais permet d'éviter de faire exploser l'espace mémoire nécessaire. A un moment donné il n'y a ainsi jamais qu'une seule shadow map en mémoire, c'est la raison pour laquelle 3DMark 11 se satisfait plutôt bien des cartes graphiques équipées de seulement 768 Mo, voire 512 Mo.

Tout comme pour la création du g-buffer, il s'agit ici de passes géométriques étant donné que l'ensemble de la scène doit être projetée, ou tout du moins un subset de celle-ci pour les CSMs de niveaux inférieurs. La tessellation est également de la partie puisqu'il faut que les ombres correspondent aux objets qui les projettent, ce qui peut représenter une charge énorme. Par contre, contrairement à la passe de création du g-buffer, aucune donnée de couleur n'est calculée, seule la profondeur est utile. Depuis Doom 3 et les GeForce FX, les GPUs sont capables d'augmenter fortement leur débit dans ce mode de rendu simplifié.

Notez une exception : les objets tels que le végétation, générés à partir de fausse géométrie, soit d'alpha tests, sortent de ce mode rapide puisque des pixels doivent alors être générés pour pouvoir les placer dans la scène.

Quelques chiffres :

Temps de rendu : 22.6 ms (17.9 %)
Vertices avant tessellation : 3.35 millions
Vertices après tessellation : 8.91 millions
Primitives : 8.50 millions
Primitives éjectées du rendu : 5.17 millions
Pixels : 83.67 millions
Eléments exportés par les PS : 24.03 millions
Texels : 416.66 millions
Instructions exécutées : 725.13 millions
Quantité de données lues : 50.5 Mo
Quantité de données écrites : 0.0 Mo (les données de profondeur ne sont pas prises en compte)
Vos réactions

Top articles