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

EnImage de synthèse,ledeferred shading(ombrage différé) est une technique derendudans 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éesa posteriori,plutôt que d'écrire immédiatement le résultat dushaderdans lamé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ésg-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 duForward 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 avecZ-bufferscenes 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 Entertainmenta édité plusieurs jeux qui utilisent le deferred shading, dontKillzone 2deGuerrilla Games,LittleBigPlanetdeMedia Molecule,inFamousdeSucker Punch Productions.Les autres jeux connus pour exploiter le deferred shading sontS.T.A.L.K.E.R.: Shadow of ChernobyldeGSC Game World,Dead Spaced'Electronic Arts[2],NCSoft'sTabula Rasa[3],CrackdowndeRealtime Worlds',Grand Theft Auto IVdeRockstar GamesetStarCraft IIdeBlizzard Entertainment[4].LeCryENGINE3deCrytekpropose aussi une implémentation du deferred shading[5].

  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]