Professional Documents
Culture Documents
SIGGRAPH 2016
Deferred Lighting in
Uncharted 4
Ramy El Garawany
DEFERRED LIGHTING
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Goals and Motivations
Many screen-space effects that need to
read/modify material data:
Particles
Decals
More importantly: SSR, cubemaps, indirect
shadows, etc
Cant get away from saving material data.
Advances in Real-Time Rendering Course
SIGGRAPH 2016
Options
Experimented with a cheap GBuffer
pass that had few outputs (color, normal,
dominant indirect direction, etc)
accompanied by a Forward geometry pass
Geometry passes arent cheap in current
hardware
We have dense objects
GBuffer 0 GBuffer 1
R r g ambientTranslucenc
R sunShadowHigh specOcclusion
y
G b spec sunShadowL
G heightmapShadowing ow metallic
B normalx normaly
B dominantDirectionX dominantDirectionY
A iblUseParent normalExtra roughness
thinWallTranslucenc
A ao extraMaterialMask sheen
y
table. if (groupIndex == 0)
{
uint tileIndex =
tileBuffers[shaderIndex][tileIndex] =
calculated. It holds the }
groupId.x | (groupId.y << 16);
if (groupIndex == 0)
will light. {
uint tileIndex =
AtomicIncrement(shaderGdsOffsets[permutationIndex]);
for a dispatchIndirect
argument buffer.
example. }