Light prepass

changehee lee
changehee leeGeneral Manager Visual Computing Group an Softnette at Nextfloor
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,”
1 of 42

Recommended

Optimizing the Graphics Pipeline with Compute, GDC 2016 by
Optimizing the Graphics Pipeline with Compute, GDC 2016Optimizing the Graphics Pipeline with Compute, GDC 2016
Optimizing the Graphics Pipeline with Compute, GDC 2016Graham Wihlidal
135.4K views99 slides
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run by
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
32.1K views96 slides
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing... by
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
19.1K views74 slides
Rendering Technologies from Crysis 3 (GDC 2013) by
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
24.6K views64 slides
Next generation graphics programming on xbox 360 by
Next generation graphics programming on xbox 360Next generation graphics programming on xbox 360
Next generation graphics programming on xbox 360VIKAS SINGH BHADOURIA
1.9K views60 slides
Graphics Gems from CryENGINE 3 (Siggraph 2013) by
Graphics Gems from CryENGINE 3 (Siggraph 2013)Graphics Gems from CryENGINE 3 (Siggraph 2013)
Graphics Gems from CryENGINE 3 (Siggraph 2013)Tiago Sousa
11K views59 slides

More Related Content

What's hot

Secrets of CryENGINE 3 Graphics Technology by
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologyTiago Sousa
32.3K views73 slides
Triangle Visibility buffer by
Triangle Visibility bufferTriangle Visibility buffer
Triangle Visibility bufferWolfgang Engel
657 views80 slides
DirectX 11 Rendering in Battlefield 3 by
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3Electronic Arts / DICE
56.5K views56 slides
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda by
4K Checkerboard in Battlefield 1 and Mass Effect Andromeda4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
4K Checkerboard in Battlefield 1 and Mass Effect AndromedaElectronic Arts / DICE
58K views154 slides
Rendering AAA-Quality Characters of Project A1 by
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1Ki Hyunwoo
19.7K views94 slides
Siggraph2016 - The Devil is in the Details: idTech 666 by
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
7.1K views58 slides

What's hot(20)

Secrets of CryENGINE 3 Graphics Technology by Tiago Sousa
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
Tiago Sousa32.3K views
Rendering AAA-Quality Characters of Project A1 by Ki Hyunwoo
Rendering AAA-Quality Characters of Project A1Rendering AAA-Quality Characters of Project A1
Rendering AAA-Quality Characters of Project A1
Ki Hyunwoo19.7K views
Siggraph2016 - The Devil is in the Details: idTech 666 by Tiago Sousa
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
Tiago Sousa7.1K views
The Rendering Technology of Killzone 2 by Guerrilla
The Rendering Technology of Killzone 2The Rendering Technology of Killzone 2
The Rendering Technology of Killzone 2
Guerrilla11.1K views
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014) by Philip Hammer
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
Philip Hammer7.3K views
Rendering Tech of Space Marine by Pope Kim
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
Pope Kim20.5K views
Taking Killzone Shadow Fall Image Quality Into The Next Generation by Guerrilla
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Guerrilla14.9K views
Crysis Next-Gen Effects (GDC 2008) by Tiago Sousa
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
Tiago Sousa10.5K views
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ... by Johan Andersson
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
The Intersection of Game Engines & GPUs: Current & Future (Graphics Hardware ...
Johan Andersson8K views
Bindless Deferred Decals in The Surge 2 by Philip Hammer
Bindless Deferred Decals in The Surge 2Bindless Deferred Decals in The Surge 2
Bindless Deferred Decals in The Surge 2
Philip Hammer9.1K views
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3 by Electronic Arts / DICE
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
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite by Electronic Arts / DICE
Physically Based Sky, Atmosphere and Cloud Rendering in FrostbitePhysically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in Frostbite by Electronic Arts / DICE
Physically Based and Unified Volumetric Rendering in FrostbitePhysically Based and Unified Volumetric Rendering in Frostbite
Physically Based and Unified Volumetric Rendering in Frostbite
Electronic Arts / DICE160.6K views
Dissecting the Rendering of The Surge by Philip Hammer
Dissecting the Rendering of The SurgeDissecting the Rendering of The Surge
Dissecting the Rendering of The Surge
Philip Hammer3.4K views

Viewers also liked

Deferred Rendering in Killzone 2 by
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2ozlael ozlael
5.5K views55 slides
Z Buffer Optimizations by
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizationspjcozzi
18.2K views41 slides
Deferred shading by
Deferred shadingDeferred shading
Deferred shadingFrank Chao
11.9K views98 slides
Forward+ (EUROGRAPHICS 2012) by
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)Takahiro Harada
38.6K views21 slides
Approaching zero driver overhead by
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overheadCass Everitt
370.3K views130 slides
Hable John Uncharted2 Hdr Lighting by
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lightingozlael ozlael
63.4K views313 slides

Viewers also liked(7)

Deferred Rendering in Killzone 2 by ozlael ozlael
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
ozlael ozlael5.5K views
Z Buffer Optimizations by pjcozzi
Z Buffer OptimizationsZ Buffer Optimizations
Z Buffer Optimizations
pjcozzi18.2K views
Deferred shading by Frank Chao
Deferred shadingDeferred shading
Deferred shading
Frank Chao11.9K views
Forward+ (EUROGRAPHICS 2012) by Takahiro Harada
Forward+ (EUROGRAPHICS 2012)Forward+ (EUROGRAPHICS 2012)
Forward+ (EUROGRAPHICS 2012)
Takahiro Harada38.6K views
Approaching zero driver overhead by Cass Everitt
Approaching zero driver overheadApproaching zero driver overhead
Approaching zero driver overhead
Cass Everitt370.3K views
Hable John Uncharted2 Hdr Lighting by ozlael ozlael
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
ozlael ozlael63.4K views
なぜなにリアルタイムレンダリング by Satoshi Kodaira
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
Satoshi Kodaira90.5K views

Similar to Light prepass

Paris Master Class 2011 - 01 Deferred Lighting, MSAA by
Paris Master Class 2011 - 01 Deferred Lighting, MSAAParis Master Class 2011 - 01 Deferred Lighting, MSAA
Paris Master Class 2011 - 01 Deferred Lighting, MSAAWolfgang Engel
1.4K views51 slides
Deferred shading by
Deferred shadingDeferred shading
Deferred shadingozlael ozlael
2.4K views32 slides
Develop2012 deferred sanchez_stachowiak by
Develop2012 deferred sanchez_stachowiakDevelop2012 deferred sanchez_stachowiak
Develop2012 deferred sanchez_stachowiakMatt Filer
624 views36 slides
Rendering basics by
Rendering basicsRendering basics
Rendering basicsicedmaster
259 views44 slides
Paris Master Class 2011 - 05 Post-Processing Pipeline by
Paris Master Class 2011 - 05 Post-Processing PipelineParis Master Class 2011 - 05 Post-Processing Pipeline
Paris Master Class 2011 - 05 Post-Processing PipelineWolfgang Engel
2.5K views64 slides
Deferred lighting by
Deferred lightingDeferred lighting
Deferred lightingozlael ozlael
2.5K views21 slides

Similar to Light prepass(20)

Paris Master Class 2011 - 01 Deferred Lighting, MSAA by Wolfgang Engel
Paris Master Class 2011 - 01 Deferred Lighting, MSAAParis Master Class 2011 - 01 Deferred Lighting, MSAA
Paris Master Class 2011 - 01 Deferred Lighting, MSAA
Wolfgang Engel1.4K views
Develop2012 deferred sanchez_stachowiak by Matt Filer
Develop2012 deferred sanchez_stachowiakDevelop2012 deferred sanchez_stachowiak
Develop2012 deferred sanchez_stachowiak
Matt Filer624 views
Rendering basics by icedmaster
Rendering basicsRendering basics
Rendering basics
icedmaster259 views
Paris Master Class 2011 - 05 Post-Processing Pipeline by Wolfgang Engel
Paris Master Class 2011 - 05 Post-Processing PipelineParis Master Class 2011 - 05 Post-Processing Pipeline
Paris Master Class 2011 - 05 Post-Processing Pipeline
Wolfgang Engel2.5K views
Edge detection-based post-processing in Warlords of Draenor by Gael Hofemeier
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
Gael Hofemeier1.7K views
The Next Generation of PhyreEngine by Slide_N
The Next Generation of PhyreEngineThe Next Generation of PhyreEngine
The Next Generation of PhyreEngine
Slide_N686 views
A new Post-Processing Pipeline by Wolfgang Engel
A new Post-Processing PipelineA new Post-Processing Pipeline
A new Post-Processing Pipeline
Wolfgang Engel2.2K views
A modern Post-Processing Pipeline by Wolfgang Engel
A modern Post-Processing PipelineA modern Post-Processing Pipeline
A modern Post-Processing Pipeline
Wolfgang Engel180 views
Epic_GDC2011_Samaritan by MinGeun Park
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_Samaritan
MinGeun Park1.9K views
The Technology Behind the DirectX 11 Unreal Engine"Samaritan" Demo by drandom
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
drandom3.9K views
Unite Berlin 2018 - Book of the Dead Optimizing Performance for High End Cons... by Unity Technologies
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 Technologies2.4K views
Extended Light Maps by stefan_b
Extended Light MapsExtended Light Maps
Extended Light Maps
stefan_b535 views
Advanced Lighting for Interactive Applications by stefan_b
Advanced Lighting for Interactive ApplicationsAdvanced Lighting for Interactive Applications
Advanced Lighting for Interactive Applications
stefan_b841 views
Practical Spherical Harmonics Based PRT Methods by Naughty Dog
Practical Spherical Harmonics Based PRT MethodsPractical Spherical Harmonics Based PRT Methods
Practical Spherical Harmonics Based PRT Methods
Naughty Dog4.2K views
Paris Master Class 2011 - 07 Dynamic Global Illumination by Wolfgang Engel
Paris Master Class 2011 - 07 Dynamic Global IlluminationParis Master Class 2011 - 07 Dynamic Global Illumination
Paris Master Class 2011 - 07 Dynamic Global Illumination
Wolfgang Engel4.2K views
Practical spherical harmonics based PRT methods.ppsx by MannyK4
Practical spherical harmonics based PRT methods.ppsxPractical spherical harmonics based PRT methods.ppsx
Practical spherical harmonics based PRT methods.ppsx
MannyK414 views
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides) by Mark Kilgard
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 Kilgard1.1K views
DeepLab V3+: Encoder-Decoder with Atrous Separable Convolution for Semantic I... by Joonhyung Lee
DeepLab V3+: Encoder-Decoder with Atrous Separable Convolution for Semantic I...DeepLab V3+: Encoder-Decoder with Atrous Separable Convolution for Semantic I...
DeepLab V3+: Encoder-Decoder with Atrous Separable Convolution for Semantic I...
Joonhyung Lee2.1K views

More from changehee lee

Visual shock vol.2 by
Visual shock   vol.2Visual shock   vol.2
Visual shock vol.2changehee lee
2.6K views11 slides
Shader compilation by
Shader compilationShader compilation
Shader compilationchangehee lee
3K views28 slides
Gdc 14 bringing unreal engine 4 to open_gl by
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
2.8K views38 slides
Smedberg niklas bringing_aaa_graphics by
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphicschangehee lee
966 views69 slides
Fortugno nick design_and_monetization by
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetizationchangehee lee
932 views41 slides
카툰 렌더링 by
카툰 렌더링카툰 렌더링
카툰 렌더링changehee lee
12.1K views15 slides

More from changehee lee(20)

Gdc 14 bringing unreal engine 4 to open_gl by changehee lee
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
changehee lee2.8K views
Smedberg niklas bringing_aaa_graphics by changehee lee
Smedberg niklas bringing_aaa_graphicsSmedberg niklas bringing_aaa_graphics
Smedberg niklas bringing_aaa_graphics
changehee lee966 views
Fortugno nick design_and_monetization by changehee lee
Fortugno nick design_and_monetizationFortugno nick design_and_monetization
Fortugno nick design_and_monetization
changehee lee932 views
[Kgc2013] 모바일 엔진 개발기 by changehee lee
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
changehee lee17.6K views
모바일 엔진 개발기 by changehee lee
모바일 엔진 개발기모바일 엔진 개발기
모바일 엔진 개발기
changehee lee2.9K views
Mobile crossplatformchallenges siggraph by changehee lee
Mobile crossplatformchallenges siggraphMobile crossplatformchallenges siggraph
Mobile crossplatformchallenges siggraph
changehee lee1.5K views
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호) by changehee lee
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)
changehee lee775 views
개발자여! 스터디를 하자! by changehee lee
개발자여! 스터디를 하자!개발자여! 스터디를 하자!
개발자여! 스터디를 하자!
changehee lee2.2K views
[Kgc2012] deferred forward 이창희 by changehee lee
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
changehee lee11.4K views
Gamificated game developing by changehee lee
Gamificated game developingGamificated game developing
Gamificated game developing
changehee lee1K views
Windows to reality getting the most out of direct3 d 10 graphics in your games by changehee lee
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
changehee lee7.1K views
Basic ofreflectance kor by changehee lee
Basic ofreflectance korBasic ofreflectance kor
Basic ofreflectance kor
changehee lee2.8K views

Recently uploaded

Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericShapeBlue
58 views9 slides
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
75 views23 slides
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...ShapeBlue
105 views15 slides
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...ShapeBlue
128 views20 slides
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O... by
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...ShapeBlue
59 views13 slides
The Power of Heat Decarbonisation Plans in the Built Environment by
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built EnvironmentIES VE
67 views20 slides

Recently uploaded(20)

Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue58 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue75 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue105 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue128 views
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O... by ShapeBlue
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
ShapeBlue59 views
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE67 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue93 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10110 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue121 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc130 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue113 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays49 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue191 views
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading... by The Digital Insurer
Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...Webinar : Desperately Seeking Transformation - Part 2:  Insights from leading...
Webinar : Desperately Seeking Transformation - Part 2: Insights from leading...
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty54 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely76 views

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,”

Editor's Notes

  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.