SlideShare una empresa de Scribd logo
1 de 42
Light Pre-Pass
-Deferred Lighting: Latest Development-


             by Wolfgang Engel
              August 3rd, 2009
Screenshot
Screenshot
Agenda
• Rendering Many Lights History
• Light Pre-Pass (LPP)
• LPP Implementation
  • Efficient Light rendering on DX8, 9, 10, 11 and PS3
    hardware
  • Balance Quality / Performance
• MSAA Implementation on DX 10.0, 10.1, XBOX
  360, 11 and PS3 hardware
Rendering Many Lights History
• Forward / Z Pre-Pass rendering
  – Re-render geometry for each light -> lots of
    geometry throughput (still an option on older
    hardware)
  – Write pixel shader with four or eight lights -> draw
    lights per-object -> need to split up geometry
    following light distribution
  – Store light properties in textures and index into
    this texture -> dependent texture look-up and
    lights are not fully dynamic
Rendering Many Lights History
• Deferred Shading / Rendering
  Split up rendering into a geometry pass and a
  lighting pass -> makes lights independent from
  geometry
• Geometry pass stores all material and light
  properties




Killzone 2’s G-Buffer Layout (courtesy of Michal Valient)
Rendering Many Lights History
Deferred Shading / Rendering

             Render opaque objects                             Transparent objects

                Specular /      Albedo /
   Normals                                     Depth Buffer
                Motion Vec      Shadow




                     Deferred
                     Lighting         Switch off depth write




                                                                    Forward
                                                                                Sort Back-To-Front
                                                                   Rendering
Rendering Many Lights History
• Advantages:
   – Only one geometry pass for the main view (probably more
     than a dozen for other views like shadows, reflections,
     transparent objects etc.)
   – Lights are blit and therefore only limited by memory
     bandwidth
• Disadvantages:
   – Memory bandwidth (reading four render targets for each
     light)
   – Recalculate full lighting equation for every light
   – Limited material representation in G-Buffer
   – MSAA difficult compared to Forward Renderer
Light Pre-Pass
• Light Pre-Pass / Deferred Lighting
        Render opaque Geometry sorted front-to-back


           Normals
                                   Depth                      Color
        Specular Power



                           Blit Lights into Light Buffer (sorted front-to-back)


                    Light Buffer


                           Render opaque Geometry sorted front-to-back
                           or
                           Blit ambient term and other lighting terms into final image


                   Frame Buffer
Light Pre-Pass
• Version A:
  – Geometry pass: fill up normal and depth buffer
  – Lighting pass: store light properties in light buffer
  – 2. Geometry pass: fetch light buffer and apply
    different material terms per surface by re-
    constructing the lighting equation
Light Pre-Pass
• Version B (similar to S.T.A.L.K.E.R: Clear Skies
  [Lobanchikov]):
  – Geometry pass: fill up normal + spec. power and
    depth buffer and a color buffer for the ambient
    pass
  – Lighting pass: store light properties in light buffer
  – Ambient + Resolve (MSAA) pass: fetch light buffer
    use its content as diffuse and specular content
    and add the ambient term while resolving into the
    main buffer
Light Pre-Pass




S.T.A.L.K.E.R: Clear Skies
Light Pre-Pass
• Light Properties that are stored in light buffer

• Light buffer layout




• Dred/green/blue is the light color
Light Pre-Pass
• Specular stored as luminance
• Reconstructed with diffuse chromacity
Light Pre-Pass




CryEngine 3: On the right the approx. specular term of the light buffer and on the left
   a correct specular term with its own specular color (courtesy of Martin Mittring)
Light Pre-Pass




CryEngine 3: On the right the approx. specular term of the light buffer and on the left
   the final image (courtesy of Martin Mittring)
Light Pre-Pass
• Advantage of Version A: offers more material
  variety




• Version B faster: does not need to render
  scene geometry a second time
Light Pre-Pass Implementation
                       • Memory Bandwidth Optimizations (DirectX 9)
                         – Depth-fail Stencil lights: render light volume in stencil and
                           then blit light [Hargreaves][Valient]
Distance from Camera




                         – Geometry lights: render bounding geometry -> never get
                           inside light -> avoid depth func change [Thibieroz04]
                         – Scissor lights: construct scissor rectangle from bounding
                           volume and set it [Placeres] (PS3: depth bound testing ~
                           scissor in 3D)
                         – Batched lights: sort lights by size, x and y position in
                           screenspace. Render close lights in batches of 4, 8, 16
Light Pre-Pass Implementation
• Memory Bandwidth Optimizations (DirectX
  10, 10.1, 11)
  – GS bounding box: construct bounding box in
    geometry shader
  – Implement lighting with the compute shader
• Memory Bandwidth Optimizations (DirectX 8)
  – Same as DirectX 9 if supported
  – Re-render geometry per light as alternative
Light Pre-Pass Implementation
• Memory Bandwidth Optimizations (PS3)
1. Full GPU solution [Lee]: like DirectX9 with depth buffer access
   and depth bounds testing + batched light support
2. SPE (Synergistic Processing Element) + GPU solution [Palestra]
   : divide light buffer in tiles:
    a) Cull tile frustum against light frustum on SPE and keep
         track of which light goes into which tile
    b) Render lights in batches per tile on GPU into light buffer
3. Full SPE solution [Swoboda][Tovey]: like 2 a) but render lights
   in batches on the SPE into the light buffer
Light Pre-Pass Implementation




Resistance 2TM in-game screenshot; first row on the left is the depth buffer, on the right
   is the normal buffer; in the second row is the diffuse light buffer and on the right is
   the specular light buffer; in the last row is the final result.
Light Pre-Pass Implementation




UnchartedTM in-game screenshot
Light Pre-Pass Implementation




BlurTM in-game screenshot
Light Pre-Pass Implementation
• Balance Quality / Performance
  – Stop rendering dynamic lights after a certain
    range for example 40 meters and render glow
    cards instead
  – Use smaller light buffer for distant lights and scale
    up
Light Zoning
• Advanced interzone lighting analysis [Lengyel]
• Problem: e.g. light shines on other side of wall
  on the floor
  -> have special light types that deal with the
  problem like a 180 degree spotlight; artists
  have to place this
MSAA




Multisample Anti-Aliasing (courtesy of Nicolas Thibieroz)
MSAA
• LPP Version A
  1. Geometry pass: render into MSAA’ed normal
     and depth buffer
  2. Lighting pass (ideal world): render by reading
     each sample in the MSAA’ed buffer and write
     into each sample in the MSAA’ed light buffer
  3. Second Geometry pass: render geometry into
     MSAA’ed accumulation buffer by reading the
     MSAA’ed light buffer, depth and normal buffer
     and re-constructing the lighting equation
  4. Resolve: into main buffer
MSAA
• LPP Version B
  1. Geometry pass: render into MSAA’ed normal,
     depth and color buffer
  2. Lighting pass (ideal world): render by reading
     each sample in the MSAA’ed buffer and write
     into a sample in the MSAA’ed light buffer
  3. Ambient pass: resolve light buffer and color
     buffer into main buffer by adding the ambient
     term
MSAA
• Lighting pass: MSAA lighting is required e.g.
  one sample is covered by a green light and
  three by a red light
• Per sample is expensive- > optimize by
  detecting polygon edges
  – Run screen-space edge detection filter with
    normal and/or depth buffer
  – Or use centroid sampling
MSAA
• Store result in stencil buffer
• Two shaders:
     – run the per-sample shader only on edges
     – rest -> run per-pixel shader
// if MSAA is used
for (int p = 0; p < 2; p++)
{
…
      renderer->setDepthState(stencilTest, (p == 0)? 0x1 : 0x0);
      renderer->setShader(lighting[p]);
…
}
MSAA
• Centroid Sampling Trick:




Edge detection with centroid sampling (courtesy of Nicolas Thibieroz)
MSAA
• Centroid Sampling Trick II
  – Sample without and with centroid sampling -> find
    out if the second sample coordinate is offset
    [Thieberoz]
  – Check the fractional part of the position value if it
    equals 0.5 -> no polygon edge [Persson]
MSAA
• Centroid sampling Trick III:
  Disclaimer:
  – Probably only works with 2xMSAA
  – PC Hardware might return the center point for
    4xMSAA [Shishkovtsov]
MSAA
…
// shader that fills the G-Buffer
struct PsIn
{
  centroid float4 position : SV_Position;
…
};

// find polygon edge with centroid sampling
Out.base.a = dot(abs(frac(In.position.xy) - 0.5), 1000.0);
// shader that resolves the color buffer with the edge data in alpha
// resolve color buffer and write out 1 into a non-MSAA’ed render target
return (base.a > 0.0);
// shader that creates the stencil buffer mask
clip(BackBuffer.Sample(filter, In.texCoord).a - 0.5);
…
MSAA
• DirectX 10.1, 11, XBOX 360: execute pixel
  shader per sample
struct PsIn
{
…
  uint uSample : SV_SAMPLEINDEX; // Sample frequency
};

float4 PSLightPass_EdgeSampleOnly(PsIn In) : SV_TARGET
{
  // Sample GBuffers
  C = Color.Load( nScreenCoordinates, In.uSample);
  Norm = Normal.Load( nScreenCoordinates, In.uSample);
  D = Depth.Load( nScreenCoordinates, In.uSample);

     // extract data from GBuffers
    //…

    // do the lighting
    return LightEquation(…);
}
MSAA
• DirectX 9:
  – Can’t run shader at sample frequency or support
    of mask
  – no MSAA’ed depth buffer read and write
• DirectX 10
  – Can write with a mask into samples and read from
    samples -> shader runs per-pixel
  – No MSAA’ed depth buffer read and write officially
    (maybe if you ask your hardware support engineer
    )
MSAA
• PS3
1. Full GPU solution:
   –   Use write mask to write into each sample per-pixel
   –   Use edge detection to fill up stencil buffer and run per-sample only
       on the edges (stencil buffer is after pixel shader -> not very effective)
1. SPE + GPU solution: same as 1.
2. Full SPE solution [Swoboda]: use SPE to render per-sample
Future
• The story of the Light Pre-Pass / Deferred
  Lighting is still not fully written and there are
  many things waiting to be discovered in the
  future …
Future
• Compute Shader Implementation




Johan Andersson, DICE -> check out the Beyond Programmable Shading course
Acknowledgements
•   Nathaniel Hoffmann
•   Nicolas Thibieroz
•   Matt Swoboda
•   Steven Torvey
•   Michael Krehan
•   Emil Persson
•   Martin Mittring
•   Mark Lee
•   Peter Santoki
•   Allan Green
•   Stephen Hill
Thank you
wolfgang.engel@gmail.com
References
[Hargreaves] Shawn Hargreaves, “Deferred Shading”, http://www.talula.demon.co.uk/DeferredShading.pdf
[Lobanchikov] Igor A. Lobanchikov, “ GSC Game World‘s S.T.A.L.K.E.R : Clear Sky – a showcase for Direct3D
     10.0/1”, http://developer.amd.com/gpu_assets/01GDC09AD3DDStalkerClearSky210309.ppt
[Mittring] Martin Mittring, “A bit more Deferred – Cry Engine 3”, http://www.slideshare.net/guest11b095/a-
     bit-more-deferred-cry-engine3
[Lee] Mark Lee, “Resistance 2 Prelighting”,
     http://www.insomniacgames.com/tech/articles/0409/files/GDC09_Lee_Prelighting.pdf
[Lengyel] Eric Lengyel, “Advanced Light and Shadow Culling Methods”,
     http://www.terathon.com/lengyel/#slides
[Placeres] Frank Puig Placeres, “Overcoming Deferred Shading Drawbacks,” pp. 115 – 130, ShaderX5
[Shishkovtsov] Oles Shishkovtsov, “Making some use out of hardware multisampling”; http://oles-
     rants.blogspot.com/2008/08/making-some-use-out-of-hardware.html
[Swoboda] Matt Swoboda, “Deferred Lighting and Post Processing on PLAYSTATION®3,
     http://research.scee.net/presentations
[Tovey] Steven J. Tovey, Stephen McAuley, “Parallelized Light Pre-Pass Rendering with
the Cell Broadband EngineTM”, to appear in GPU Pro – Advanced Rendering Techniques,
AK Peters, March 2010.
[Thibieroz04] Nick Thibieroz, “Deferred Shading with Multiple-Render-Targets,” pp. 251 – 269, ShaderX2 –
     Shader Programming Tips & Tricks with DirectX9
[Thibieroz] Nick Thibieroz, “Deferred Shading with Multisampling Anti-Aliasing in DirectX 10” , ShaderX7 –
     Advanced Rendering Techniques, pp. ??? - ???
[Valient] Michael Valient, “Deferred Rendering in Killzone 2,”

Más contenido relacionado

La actualidad más candente

Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Tiago Sousa
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2Guerrilla
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3stevemcauley
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Guerrilla
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The SurgeMichele Giacalone
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Johan Andersson
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
 
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)Johan Andersson
 
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringElectronic Arts / DICE
 
Approaching zero driver overhead
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overheadCass Everitt
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Johan Andersson
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3Electronic Arts / DICE
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
 

La actualidad más candente (20)

Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016
 
Stochastic Screen-Space Reflections
Stochastic Screen-Space ReflectionsStochastic Screen-Space Reflections
Stochastic Screen-Space Reflections
 
Triangle Visibility buffer
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility buffer
 
Frostbite on Mobile
Frostbite on MobileFrostbite on Mobile
Frostbite on Mobile
 
Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666Siggraph2016 - The Devil is in the Details: idTech 666
Siggraph2016 - The Devil is in the Details: idTech 666
 
The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2
 
Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3Calibrating Lighting and Materials in Far Cry 3
Calibrating Lighting and Materials in Far Cry 3
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
 
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
Terrain Rendering in Frostbite using Procedural Shader Splatting (Siggraph 2007)
 
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal FilteringStable SSAO in Battlefield 3 with Selective Temporal Filtering
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
 
Approaching zero driver overhead
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overhead
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
 
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
 
Lighting the City of Glass
Lighting the City of GlassLighting the City of Glass
Lighting the City of Glass
 
Beyond porting
Beyond portingBeyond porting
Beyond porting
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 

Destacado

Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2ozlael ozlael
 
Z Buffer Optimizations
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizationspjcozzi
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Takahiro Harada
 
Physically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbiteElectronic Arts / DICE
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lightingozlael ozlael
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングSatoshi Kodaira
 

Destacado (6)

Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
 
Z Buffer Optimizations
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizations
 
Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)
 
Physically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in Frostbite
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
 

Similar a Light prepass

Paris Master Class 2011 - 01 Deferred Lighting, MSAA
Paris Master Class 2011 - 01 Deferred Lighting, MSAAParis Master Class 2011 - 01 Deferred Lighting, MSAA
Paris Master Class 2011 - 01 Deferred Lighting, MSAAWolfgang Engel
 
Develop2012 deferred sanchez_stachowiak
Develop2012 deferred sanchez_stachowiakDevelop2012 deferred sanchez_stachowiak
Develop2012 deferred sanchez_stachowiakMatt Filer
 
Rendering basics
Rendering basicsRendering basics
Rendering basicsicedmaster
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
Paris Master Class 2011 - 05 Post-Processing Pipeline
Paris Master Class 2011 - 05 Post-Processing PipelineParis Master Class 2011 - 05 Post-Processing Pipeline
Paris Master Class 2011 - 05 Post-Processing PipelineWolfgang Engel
 
Edge detection-based post-processing in Warlords of Draenor
Edge detection-based post-processing in Warlords of DraenorEdge detection-based post-processing in Warlords of Draenor
Edge detection-based post-processing in Warlords of DraenorGael Hofemeier
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngineSlide_N
 
A new Post-Processing Pipeline
A new Post-Processing PipelineA new Post-Processing Pipeline
A new Post-Processing PipelineWolfgang Engel
 
A modern Post-Processing Pipeline
A modern Post-Processing PipelineA modern Post-Processing Pipeline
A modern Post-Processing PipelineWolfgang Engel
 
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" DemoThe Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demodrandom
 
Epic_GDC2011_Samaritan
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_SamaritanMinGeun Park
 
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...Unity Technologies
 
Extended Light Maps
Extended Light MapsExtended Light Maps
Extended Light Mapsstefan_b
 
Advanced Lighting for Interactive Applications
Advanced Lighting for Interactive ApplicationsAdvanced Lighting for Interactive Applications
Advanced Lighting for Interactive Applicationsstefan_b
 
Practical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsNaughty Dog
 
Paris Master Class 2011 - 07 Dynamic Global Illumination
Paris Master Class 2011 - 07 Dynamic Global IlluminationParis Master Class 2011 - 07 Dynamic Global Illumination
Paris Master Class 2011 - 07 Dynamic Global IlluminationWolfgang Engel
 
Practical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsxPractical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsxMannyK4
 
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)Mark Kilgard
 

Similar a Light prepass (20)

Paris Master Class 2011 - 01 Deferred Lighting, MSAA
Paris Master Class 2011 - 01 Deferred Lighting, MSAAParis Master Class 2011 - 01 Deferred Lighting, MSAA
Paris Master Class 2011 - 01 Deferred Lighting, MSAA
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 
Develop2012 deferred sanchez_stachowiak
Develop2012 deferred sanchez_stachowiakDevelop2012 deferred sanchez_stachowiak
Develop2012 deferred sanchez_stachowiak
 
Rendering basics
Rendering basicsRendering basics
Rendering basics
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
Paris Master Class 2011 - 05 Post-Processing Pipeline
Paris Master Class 2011 - 05 Post-Processing PipelineParis Master Class 2011 - 05 Post-Processing Pipeline
Paris Master Class 2011 - 05 Post-Processing Pipeline
 
Deferred lighting
Deferred lightingDeferred lighting
Deferred lighting
 
Edge detection-based post-processing in Warlords of Draenor
Edge detection-based post-processing in Warlords of DraenorEdge detection-based post-processing in Warlords of Draenor
Edge detection-based post-processing in Warlords of Draenor
 
The Next Generation of PhyreEngine
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngine
 
A new Post-Processing Pipeline
A new Post-Processing PipelineA new Post-Processing Pipeline
A new Post-Processing Pipeline
 
A modern Post-Processing Pipeline
A modern Post-Processing PipelineA modern Post-Processing Pipeline
A modern Post-Processing Pipeline
 
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" DemoThe Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo
 
Epic_GDC2011_Samaritan
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_Samaritan
 
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons...
 
Extended Light Maps
Extended Light MapsExtended Light Maps
Extended Light Maps
 
Advanced Lighting for Interactive Applications
Advanced Lighting for Interactive ApplicationsAdvanced Lighting for Interactive Applications
Advanced Lighting for Interactive Applications
 
Practical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT Methods
 
Paris Master Class 2011 - 07 Dynamic Global Illumination
Paris Master Class 2011 - 07 Dynamic Global IlluminationParis Master Class 2011 - 07 Dynamic Global Illumination
Paris Master Class 2011 - 07 Dynamic Global Illumination
 
Practical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsxPractical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsx
 
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
 

Más de changehee lee

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glchangehee lee
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicschangehee lee
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetizationchangehee lee
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기changehee lee
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기changehee lee
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphchangehee lee
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee lee
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!changehee lee
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희changehee lee
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developingchangehee lee
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your gameschangehee lee
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance korchangehee lee
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_reschangehee lee
 

Más de changehee lee (20)

Visual shock vol.2
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2
 
Shader compilation
Shader compilationShader compilation
Shader compilation
 
Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
Smedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphics
 
Fortugno nick design_and_monetization
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetization
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
Paper games 2013
Paper games 2013Paper games 2013
Paper games 2013
 
모바일 엔진 개발기
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
 
V8
V8V8
V8
 
Wecanmakeengine
WecanmakeengineWecanmakeengine
Wecanmakeengine
 
Mobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraph
 
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
 
개발자여! 스터디를 하자!
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
Gamificated game developing
Gamificated game developingGamificated game developing
Gamificated game developing
 
Windows to reality getting the most out of direct3 d 10 graphics in your games
Windows to reality   getting the most out of direct3 d 10 graphics in your gamesWindows to reality   getting the most out of direct3 d 10 graphics in your games
Windows to reality getting the most out of direct3 d 10 graphics in your games
 
Basic ofreflectance kor
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
 
C++11(최지웅)
C++11(최지웅)C++11(최지웅)
C++11(최지웅)
 
Valve handbook low_res
Valve handbook low_resValve handbook low_res
Valve handbook low_res
 

Último

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 

Último (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

Light prepass

  • 1. Light Pre-Pass -Deferred Lighting: Latest Development- by Wolfgang Engel August 3rd, 2009
  • 4. Agenda • Rendering Many Lights History • Light Pre-Pass (LPP) • LPP Implementation • Efficient Light rendering on DX8, 9, 10, 11 and PS3 hardware • Balance Quality / Performance • MSAA Implementation on DX 10.0, 10.1, XBOX 360, 11 and PS3 hardware
  • 5. Rendering Many Lights History • Forward / Z Pre-Pass rendering – Re-render geometry for each light -> lots of geometry throughput (still an option on older hardware) – Write pixel shader with four or eight lights -> draw lights per-object -> need to split up geometry following light distribution – Store light properties in textures and index into this texture -> dependent texture look-up and lights are not fully dynamic
  • 6. Rendering Many Lights History • Deferred Shading / Rendering Split up rendering into a geometry pass and a lighting pass -> makes lights independent from geometry • Geometry pass stores all material and light properties Killzone 2’s G-Buffer Layout (courtesy of Michal Valient)
  • 7. Rendering Many Lights History Deferred Shading / Rendering Render opaque objects Transparent objects Specular / Albedo / Normals Depth Buffer Motion Vec Shadow Deferred Lighting Switch off depth write Forward Sort Back-To-Front Rendering
  • 8. Rendering Many Lights History • Advantages: – Only one geometry pass for the main view (probably more than a dozen for other views like shadows, reflections, transparent objects etc.) – Lights are blit and therefore only limited by memory bandwidth • Disadvantages: – Memory bandwidth (reading four render targets for each light) – Recalculate full lighting equation for every light – Limited material representation in G-Buffer – MSAA difficult compared to Forward Renderer
  • 9. Light Pre-Pass • Light Pre-Pass / Deferred Lighting Render opaque Geometry sorted front-to-back Normals Depth Color Specular Power Blit Lights into Light Buffer (sorted front-to-back) Light Buffer Render opaque Geometry sorted front-to-back or Blit ambient term and other lighting terms into final image Frame Buffer
  • 10. Light Pre-Pass • Version A: – Geometry pass: fill up normal and depth buffer – Lighting pass: store light properties in light buffer – 2. Geometry pass: fetch light buffer and apply different material terms per surface by re- constructing the lighting equation
  • 11. Light Pre-Pass • Version B (similar to S.T.A.L.K.E.R: Clear Skies [Lobanchikov]): – Geometry pass: fill up normal + spec. power and depth buffer and a color buffer for the ambient pass – Lighting pass: store light properties in light buffer – Ambient + Resolve (MSAA) pass: fetch light buffer use its content as diffuse and specular content and add the ambient term while resolving into the main buffer
  • 13. Light Pre-Pass • Light Properties that are stored in light buffer • Light buffer layout • Dred/green/blue is the light color
  • 14. Light Pre-Pass • Specular stored as luminance • Reconstructed with diffuse chromacity
  • 15. Light Pre-Pass CryEngine 3: On the right the approx. specular term of the light buffer and on the left a correct specular term with its own specular color (courtesy of Martin Mittring)
  • 16. Light Pre-Pass CryEngine 3: On the right the approx. specular term of the light buffer and on the left the final image (courtesy of Martin Mittring)
  • 17. Light Pre-Pass • Advantage of Version A: offers more material variety • Version B faster: does not need to render scene geometry a second time
  • 18. Light Pre-Pass Implementation • Memory Bandwidth Optimizations (DirectX 9) – Depth-fail Stencil lights: render light volume in stencil and then blit light [Hargreaves][Valient] Distance from Camera – Geometry lights: render bounding geometry -> never get inside light -> avoid depth func change [Thibieroz04] – Scissor lights: construct scissor rectangle from bounding volume and set it [Placeres] (PS3: depth bound testing ~ scissor in 3D) – Batched lights: sort lights by size, x and y position in screenspace. Render close lights in batches of 4, 8, 16
  • 19. Light Pre-Pass Implementation • Memory Bandwidth Optimizations (DirectX 10, 10.1, 11) – GS bounding box: construct bounding box in geometry shader – Implement lighting with the compute shader • Memory Bandwidth Optimizations (DirectX 8) – Same as DirectX 9 if supported – Re-render geometry per light as alternative
  • 20. Light Pre-Pass Implementation • Memory Bandwidth Optimizations (PS3) 1. Full GPU solution [Lee]: like DirectX9 with depth buffer access and depth bounds testing + batched light support 2. SPE (Synergistic Processing Element) + GPU solution [Palestra] : divide light buffer in tiles: a) Cull tile frustum against light frustum on SPE and keep track of which light goes into which tile b) Render lights in batches per tile on GPU into light buffer 3. Full SPE solution [Swoboda][Tovey]: like 2 a) but render lights in batches on the SPE into the light buffer
  • 21. Light Pre-Pass Implementation Resistance 2TM in-game screenshot; first row on the left is the depth buffer, on the right is the normal buffer; in the second row is the diffuse light buffer and on the right is the specular light buffer; in the last row is the final result.
  • 24. Light Pre-Pass Implementation • Balance Quality / Performance – Stop rendering dynamic lights after a certain range for example 40 meters and render glow cards instead – Use smaller light buffer for distant lights and scale up
  • 25. Light Zoning • Advanced interzone lighting analysis [Lengyel] • Problem: e.g. light shines on other side of wall on the floor -> have special light types that deal with the problem like a 180 degree spotlight; artists have to place this
  • 27. MSAA • LPP Version A 1. Geometry pass: render into MSAA’ed normal and depth buffer 2. Lighting pass (ideal world): render by reading each sample in the MSAA’ed buffer and write into each sample in the MSAA’ed light buffer 3. Second Geometry pass: render geometry into MSAA’ed accumulation buffer by reading the MSAA’ed light buffer, depth and normal buffer and re-constructing the lighting equation 4. Resolve: into main buffer
  • 28. MSAA • LPP Version B 1. Geometry pass: render into MSAA’ed normal, depth and color buffer 2. Lighting pass (ideal world): render by reading each sample in the MSAA’ed buffer and write into a sample in the MSAA’ed light buffer 3. Ambient pass: resolve light buffer and color buffer into main buffer by adding the ambient term
  • 29. MSAA • Lighting pass: MSAA lighting is required e.g. one sample is covered by a green light and three by a red light • Per sample is expensive- > optimize by detecting polygon edges – Run screen-space edge detection filter with normal and/or depth buffer – Or use centroid sampling
  • 30. MSAA • Store result in stencil buffer • Two shaders: – run the per-sample shader only on edges – rest -> run per-pixel shader // if MSAA is used for (int p = 0; p < 2; p++) { … renderer->setDepthState(stencilTest, (p == 0)? 0x1 : 0x0); renderer->setShader(lighting[p]); … }
  • 31. MSAA • Centroid Sampling Trick: Edge detection with centroid sampling (courtesy of Nicolas Thibieroz)
  • 32. MSAA • Centroid Sampling Trick II – Sample without and with centroid sampling -> find out if the second sample coordinate is offset [Thieberoz] – Check the fractional part of the position value if it equals 0.5 -> no polygon edge [Persson]
  • 33. MSAA • Centroid sampling Trick III: Disclaimer: – Probably only works with 2xMSAA – PC Hardware might return the center point for 4xMSAA [Shishkovtsov]
  • 34. MSAA … // shader that fills the G-Buffer struct PsIn { centroid float4 position : SV_Position; … }; // find polygon edge with centroid sampling Out.base.a = dot(abs(frac(In.position.xy) - 0.5), 1000.0); // shader that resolves the color buffer with the edge data in alpha // resolve color buffer and write out 1 into a non-MSAA’ed render target return (base.a > 0.0); // shader that creates the stencil buffer mask clip(BackBuffer.Sample(filter, In.texCoord).a - 0.5); …
  • 35. MSAA • DirectX 10.1, 11, XBOX 360: execute pixel shader per sample struct PsIn { … uint uSample : SV_SAMPLEINDEX; // Sample frequency }; float4 PSLightPass_EdgeSampleOnly(PsIn In) : SV_TARGET { // Sample GBuffers C = Color.Load( nScreenCoordinates, In.uSample); Norm = Normal.Load( nScreenCoordinates, In.uSample); D = Depth.Load( nScreenCoordinates, In.uSample); // extract data from GBuffers //… // do the lighting return LightEquation(…); }
  • 36. MSAA • DirectX 9: – Can’t run shader at sample frequency or support of mask – no MSAA’ed depth buffer read and write • DirectX 10 – Can write with a mask into samples and read from samples -> shader runs per-pixel – No MSAA’ed depth buffer read and write officially (maybe if you ask your hardware support engineer )
  • 37. MSAA • PS3 1. Full GPU solution: – Use write mask to write into each sample per-pixel – Use edge detection to fill up stencil buffer and run per-sample only on the edges (stencil buffer is after pixel shader -> not very effective) 1. SPE + GPU solution: same as 1. 2. Full SPE solution [Swoboda]: use SPE to render per-sample
  • 38. Future • The story of the Light Pre-Pass / Deferred Lighting is still not fully written and there are many things waiting to be discovered in the future …
  • 39. Future • Compute Shader Implementation Johan Andersson, DICE -> check out the Beyond Programmable Shading course
  • 40. Acknowledgements • Nathaniel Hoffmann • Nicolas Thibieroz • Matt Swoboda • Steven Torvey • Michael Krehan • Emil Persson • Martin Mittring • Mark Lee • Peter Santoki • Allan Green • Stephen Hill
  • 42. References [Hargreaves] Shawn Hargreaves, “Deferred Shading”, http://www.talula.demon.co.uk/DeferredShading.pdf [Lobanchikov] Igor A. Lobanchikov, “ GSC Game World‘s S.T.A.L.K.E.R : Clear Sky – a showcase for Direct3D 10.0/1”, http://developer.amd.com/gpu_assets/01GDC09AD3DDStalkerClearSky210309.ppt [Mittring] Martin Mittring, “A bit more Deferred – Cry Engine 3”, http://www.slideshare.net/guest11b095/a- bit-more-deferred-cry-engine3 [Lee] Mark Lee, “Resistance 2 Prelighting”, http://www.insomniacgames.com/tech/articles/0409/files/GDC09_Lee_Prelighting.pdf [Lengyel] Eric Lengyel, “Advanced Light and Shadow Culling Methods”, http://www.terathon.com/lengyel/#slides [Placeres] Frank Puig Placeres, “Overcoming Deferred Shading Drawbacks,” pp. 115 – 130, ShaderX5 [Shishkovtsov] Oles Shishkovtsov, “Making some use out of hardware multisampling”; http://oles- rants.blogspot.com/2008/08/making-some-use-out-of-hardware.html [Swoboda] Matt Swoboda, “Deferred Lighting and Post Processing on PLAYSTATION®3, http://research.scee.net/presentations [Tovey] Steven J. Tovey, Stephen McAuley, “Parallelized Light Pre-Pass Rendering with the Cell Broadband EngineTM”, to appear in GPU Pro – Advanced Rendering Techniques, AK Peters, March 2010. [Thibieroz04] Nick Thibieroz, “Deferred Shading with Multiple-Render-Targets,” pp. 251 – 269, ShaderX2 – Shader Programming Tips & Tricks with DirectX9 [Thibieroz] Nick Thibieroz, “Deferred Shading with Multisampling Anti-Aliasing in DirectX 10” , ShaderX7 – Advanced Rendering Techniques, pp. ??? - ??? [Valient] Michael Valient, “Deferred Rendering in Killzone 2,”

Notas del editor

  1. Because luminance is a linear function of RGB, accumulating luminance fulfills the requirement that the sum of all luminance values equals to the luminance of the sum of all specular contributions.