Deferred Shading

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

En Image de synthèse, le deferred shading 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 multiple tampons de rendus (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,‎ 17 janvier 2007 (consulté le 28 mars 2007)
  2. (en) « Dead Space by Electronic Arts », NVIDIA (consulté le 14 février 2008)
  3. (en) « Deferred shading in Tabula Rasa », NVIDIA (consulté le 14 février 2008)
  4. [PDF] (en) « StarCraft II Effects & techniques », AMD (consulté le 28 février 2010)
  5. (en) « CryENGINE 3 Specifications », Crytek GmbH (consulté le 12 mars 2009)

Voir aussi[modifier | modifier le code]