Aller au contenu

Deferred Shading

Un article de Wikipédia, l'encyclopédie libre.
G-Buffer de couleur
Z-Buffer
G-Buffer de normales
Résultat final

En Image de synthèse, le deferred shading (ombrage différé) est une technique de rendu dans laquelle le calcul de l’algorithme d'ombrage est divisé en tâches plus réduites qui écrivent dans des tampons intermédiaires dans le but d'être combinées a posteriori, plutôt que d'écrire immédiatement le résultat du shader dans la mémoire vidéo. Les implémentations sur du matériel récent tendent à utiliser de multiples tampons de rendu (MRT) afin d'éviter des transformations géométriques redondantes. Habituellement, une fois tous les tampons nécessaires construits (sous la forme de textures), un algorithme d'ombrage y accède (utilisant une équation d'illumination) et les combine pour produire l'image finale. De cette façon, les calculs et les accès à la mémoire nécessaires à l'ombrage de la scène sont réduits aux seules portions visibles, diminuant ainsi la complexité des appels aux shaders.

Une des utilisations spécifiques touche à l'éclairage. Les tampons de rendu, collectivement appelés g-buffer (avec un G pour géométrie) stockent divers paramètres utiles à l'algorithme d'illumination. Les données stockées sont généralement la couleur, les normales ou la position dans le repère écran, bien qu'en théorie tout type de donnée puisse être stockée à destination de la passe d'éclairage. Du fait de l'utilisation de multiples tampons de rendu, souvent en virgule flottante, la bande passante mémoire employée est supérieure à celle du Forward Rendering. Les cartes graphiques récentes affichent des performances en calcul supérieures à leurs temps d'accès. Ce facteur, renforcé par l'hypothèse que l'écart entre puissance de calcul et transfert mémoire se creuse à l'avenir, pourrait indiquer que le deferred rendering ne constitue pas une solution à long terme.

Un désavantage majeur du deferred rendering réside dans l'impossibilité de gérer la transparence à l’intérieur même de l'algorithme, bien qu'en réalité ce problème soit général au rendu des scènes avec Z-buffer scenes et qu'il tende à être géré en retardant et en triant des portions transparentes de la scène[1].

Cette technique est utilisée de façon grandissante dans les jeux vidéo en raison du contrôle qu'elle offre lorsqu'il s'agit d'utiliser un grand nombre de sources lumineuses tout en réduisant la complexité et le nombre d'instructions des shaders. La société Sony Computer Entertainment a édité plusieurs jeux qui utilisent le deferred shading, dont Killzone 2 de Guerrilla Games, LittleBigPlanet de Media Molecule, inFamous de Sucker Punch Productions. Les autres jeux connus pour exploiter le deferred shading sont S.T.A.L.K.E.R.: Shadow of Chernobyl de GSC Game World, Dead Space d'Electronic Arts[2], NCSoft's Tabula Rasa[3], Crackdown de Realtime Worlds', Grand Theft Auto IV de Rockstar Games et StarCraft II de Blizzard Entertainment[4]. Le CryENGINE3 de Crytek propose aussi une implémentation du deferred shading[5].

Références

[modifier | modifier le code]
  1. (en) « NVIDIA SDK 9.51 - Featured Code Samples », NVIDIA, (consulté le )
  2. (en) « Dead Space by Electronic Arts », NVIDIA (consulté le )
  3. (en) « Deferred shading in Tabula Rasa » [archive du ], NVIDIA (consulté le )
  4. [PDF] (en) « StarCraft II Effects & techniques » [archive du ], AMD (consulté le )
  5. (en) « CryENGINE 3 Specifications » [archive du ], Crytek GmbH (consulté le )

Articles connexes

[modifier | modifier le code]