Game Development Reference
In-Depth Information
Tiled Forward Shading
Markus Billeter, Ola Olsson, and Ulf Assarsson
We will explore the tiled forward shading algorithm in this chapter. Tiled forward
shading is an extension or modification of tiled deferred shading [Balestra and
Engstad 08, Swoboda 09, Andersson 09, Lauritzen 10, Olsson and Assarsson 11],
which itself improves upon traditional deferred shading methods [Hargreaves and
Harris 04, Engel 09].
Deferred shading has two main features: decoupling of lighting and shading
from geometry management and minimization of the number of lighting computa-
tions performed [Hargreaves and Harris 04]. The former allows for more ecient
geometry submission and management [Shishkovtsov 05] and simplifies shaders
and management of shader resources. However the latter is becoming less of an
issue on modern GPUs, which allow complex flow control in shaders, and support
uniform buffers and more complex data structures in GPU memory.
Traditional forward pipelines typically render objects one by one and consider
each light for each rasterized fragment. In deferred shading, one would instead
render a representation of the geometry into a screen-sized G-buffer [Saito and
Takahashi 90], which contains shading data for each pixel, such as normal and
depth/position. Then, in a separate pass, the lighting and shading is computed
by, for example, rendering light sources one by one (where each light source is
represented by a bounding volume enclosing the light's influence region). For
each generated fragment during this pass, data for the corresponding pixel is
fetched from the G-buffer, shading is computed, and the results are blended into
an output buffer. The number of lighting computations performed comes very
close to the optimum of one per light per visible sample (somewhat depending
on the bounding volumes used to represent light sources).
Deferred shading thereby succeeds in reducing the amount of computations
needed for lighting, but at the cost of increased memory requirements (the G-
buffer is much larger than a color buffer) and much higher memory bandwidth
usage. Tiled deferred shading fixes the latter ( Section 4.2 ) , but still requires large
Search Nedrilad ::

Custom Search