Deferred shading
In computer graphics, deferred shading is a three dimensional shading technique in which the input registers of the pixel shading equation are written to framebuffer storage as visibility is determined, instead of immediately writing a shaded result as a pixel color. Implementations on modern hardware tend use multiple screen-sized render targets (MRT). Once visibility is determined these framebuffer (or auxiliary buffer) results are then read as input to a shading algorithm (for example a lighting equation) without the need to reissue the geometry of the original rendering. In this way the computation and memory bandwidth required to shade a scene is reduced to those visible portions, thereby reducing the shaded depth complexity. The primary advantage of deferred rendering is mitigated by the availability of coarse z buffer and early z buffer testing, however other advantages are still claimed for the approach. These advantages may include the simpler management of complex lighting resources, ease of managing other complex shader resources and the simplification of the software rendering pipeline. [1]
These are somewhat more marginal advantages that software developers decide on during their development process and they are endlessly debated. One key disadvantage of deferred rendering is the inability to handle transparency within the algorithm, although this problem is a generic one in z buffered scenes and it tends to be handled by delaying and sorting the rendering of transparent portions of the scene.
History
The idea of deferred shading was originally introduced by Michael Deering and his colleagues in a paper[2] published in 1988 entitled The triangle processor and normal vector shader: a VLSI system for high performance graphics.[3] Although the paper never uses the word "deferred", the concept that is presented therein, which is only recently becoming practical for applications such as video games, is the same as the idea widely referred to as deferred shading, or deferred lighting, in computer graphics circles today.
References
- ^ "NVIDIA SDK 9.51 - Featured Code Samples". NVIDIA. Jan 17, 2007. Retrieved 2007-03-28.
- ^ Deering, Michael. "The triangle processor and normal vector shader: a VLSI system for high performance graphics". ACM SIGGRAPH Computer Graphics. 22 (4). ACM Press: 21–30.
{{cite journal}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - ^ "Deferred Shading" (PDF). NVIDIA. Retrieved 2007-03-28.