- Deferred Shading
-
En Image de synthèse, le deferred shading est une technique de rendu dans laquelle le calcul de l'algoritme 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 materiel 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 algoritme 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écessaire à 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éometrie) 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 superieures à 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 gerer la transparence à l'interieur 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èene[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
- NVIDIA SDK 9.51 - Featured Code Samples, NVIDIA, 2007-01-17. Consulté le 2007-03-28
- Dead Space by Electronic Arts, NVIDIA. Consulté le 2008-02-14
- Deferred shading in Tabula Rasa, NVIDIA. Consulté le 2008-02-14
- StarCraft II Effects & techniques, AMD. Consulté le 2010-02-28
- CryENGINE 3 Specifications, Crytek GmbH. Consulté le 2009-03-12
Voir aussi
- S.T.A.L.K.E.R.
- Killzone 2
- GameStats
- Esenthel
- Leadwerks
- Unity
- Rockstar Advanced Game Engine
Wikimedia Foundation. 2010.