SlideShare a Scribd company logo
GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Deferred Rendering in Killzone 2

                      Michal Valient
              Senior Programmer, Guerrilla




  GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Talk Outline

‣   Forward & Deferred Rendering Overview
‣   G-Buffer Layout
‣   Shader Creation
‣   Deferred Rendering in Detail
    ‣ Rendering Passes
    ‣ Light and Shadows
    ‣ Post-Processing
‣ SPU Usage / Architecture



     GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Forward & Deferred Rendering Overview




      GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Forward Rendering – Single Pass

‣ For each object
   ‣ Find all lights affecting object
   ‣ Render all lighting and material in a single shader
‣ Shader combinations explosion
   ‣ Shader for each material vs. light setup combination
‣ All shadow maps have to be in memory
‣ Wasted shader cycles
   ‣ Invisible surfaces / overdraw
   ‣ Triangles outside light influence



   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Forward Rendering – Multi-Pass

‣ For each light
   ‣ For each object
   ‣ Add lighting from single light to frame buffer
‣ Shader for each material and light type
‣ Wasted shader cycles
   ‣ Invisible surfaces / overdraw
   ‣ Triangles outside light influence
   ‣ Lots of repeated work
       ‣ Full vertex shaders, texture filtering



    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Deferred Rendering

‣ For each object
   ‣ Render surface properties into the G-Buffer
‣ For each light and lit pixel
   ‣ Use G-Buffer to compute lighting
   ‣ Add result to frame buffer
‣ Simpler shaders
‣ Scales well with number of lit pixels
‣ Does not handle transparent objects



    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
G-Buffer Layout




GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Target Image
Depth
View-space normal
Specular intensity
Specular roughness / Power
Screen-space 2D motion vector
Albedo (texture colour)
Deferred composition
Image with post-processing (depth of field, bloom, motion blur, colorize, ILR)
G-Buffer : Our approach

       R8                      G8                      B8                A8
                        Depth 24bpp                                    Stencil      DS

              Lighting Accumulation RGB                               Intensity     RT0

          Normal X (FP16)                                  Normal Y (FP16)          RT1

        Motion Vectors XY                        Spec-Power        Spec-Intensity   RT2

                    Diffuse Albedo RGB                              Sun-Occlusion   RT3


‣ MRT - 4xRGBA8 + 24D8S (approx 36 MB)
‣ 720p with Quincunx MSAA
‣ Position computed from depth buffer and pixel coordinates



    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
G-Buffer : Our approach

       R8                      G8                      B8                A8
                        Depth 24bpp                                    Stencil      DS

              Lighting Accumulation RGB                               Intensity     RT0

          Normal X (FP16)                                  Normal Y (FP16)          RT1

        Motion Vectors XY                        Spec-Power        Spec-Intensity   RT2

                    Diffuse Albedo RGB                              Sun-Occlusion   RT3


‣ Lighting accumulation – output buffer
‣ Intensity – luminance of Lighting accumulation
    ‣ Scaled to range [0…2]
‣ Normal.z = sqrt(1.0f - Normal.x2 - Normal.y2)

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
G-Buffer : Our approach

       R8                      G8                      B8                A8
                        Depth 24bpp                                    Stencil      DS

              Lighting Accumulation RGB                               Intensity     RT0

          Normal X (FP16)                                  Normal Y (FP16)          RT1

        Motion Vectors XY                        Spec-Power        Spec-Intensity   RT2

                    Diffuse Albedo RGB                              Sun-Occlusion   RT3


‣ Motion vectors – screen space
‣ Specular power - stored as log2(original)/10.5
    ‣ High range and still high precision for low shininess
‣ Sun Occlusion - pre-rendered static sun shadows
   ‣ Mixed with real-time sun shadow for higher quality

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
G-Buffer Analysis

‣ Pros:
   ‣ Highly packed data structure
   ‣ Many extra attributes
   ‣ Allows MSAA with hardware support

‣ Cons:
   ‣ Limited output precision and dynamic range
       ‣ Lighting accumulation in gamma space
       ‣ Can use different color space (LogLuv)
   ‣ Attribute packing and unpacking overhead


   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Deferred Rendering Passes




GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Geometry Pass

‣ Fill the G-Buffer with all geometry (static, skinned, etc.)
   ‣ Write depth, motion, specular, etc. properties

‣ Initialize light accumulation buffer with pre-baked light
   ‣ Ambient, Incandescence, Constant specular
   ‣ Lightmaps on static geometry
       ‣ YUV color space, S3TC5 with Y in Alpha
       ‣ Sun occlusion in B channel
       ‣ Dynamic range [0..2]
   ‣ Image based lighting on dynamic geometry


    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Image Based Lighting

‣ Artist placed light probes
   ‣ Arbitrary location and density
   ‣ Sampled and stored as 2nd order spherical harmonics

‣ Updated per frame for each object
   ‣   Blend four closest SHs based on distance
   ‣   Rotate into view space
   ‣   Encode into 8x8 envmap IBL texture
   ‣   Dynamic range [0..2]
   ‣   Generated on SPUs in parallel to other rendering tasks


    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Scene lighting
Decals and Weapon Passes

‣ Primitives updating subset of the G-Buffer
   ‣   Bullet holes, posters, cracks, stains
   ‣   Reuse lighting of underlying surface
   ‣   Blend with albedo buffer
   ‣   Use G-Buffer Intensity channel to fix accumulation
   ‣   Same principle as particles with motion blur

‣ Separate weapon pass with different projection
   ‣ Different near plane
   ‣ Rendered into first 5% of depth buffer range
   ‣ Still reacts to lights and post-processing

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
Light Accumulation Pass

‣ Light is rendered as convex geometry
   ‣ Point light – sphere
   ‣ Spot light – cone
   ‣ Sun – full-screen quad

‣ For each light…
   ‣ Find and mark visible lit pixels
   ‣ If light contributes to screen
       ‣ Render shadow map
       ‣ Shade lit pixels and add to framebuffer


   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Determine Lit Pixels

‣ Marks pixels in front of the far light boundary
   ‣   Render back-faces of light volume
   ‣   Depth test GREATER-EQUAL
   ‣   Write to stencil on depth pass
   ‣   Skipped for very small distant lights




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Determine Lit Pixels

‣ Find amount of lit pixels inside the volume
   ‣   Start pixel query
   ‣   Render front faces of light volume
   ‣   Depth test LESS-EQUAL
   ‣   Don’t write anything – only EQUAL stencil test




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Render Shadow Map

‣ Enable conditional rendering
   ‣ Based on query results from previous stage
   ‣ GPU skips rendering for invisible lights

‣ Max 1024x1024xD16 shadow map
   ‣ Fast and with hardware filtering support
   ‣ Single map reused for all lights

‣ Skip small objects
   ‣ Small in shadow map and on screen
   ‣ Artist defined thresholds for lights and objects

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Shade Lit Pixels

‣ Render front-faces of light volume
   ‣ Depth test - LESS-EQUAL
   ‣ Stencil test - EQUAL
   ‣ Runs only on marked pixels inside light

‣ Compute light equation
   ‣ Read and unpack G-Buffer attributes
   ‣ Calculate Light vector, Color, Distance Attenuation
   ‣ Perform shadow map filtering

‣ Add Phong lighting to frame buffer

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Light Optimization

‣ Determine light size on the screen
   ‣ Approximation - angular size of light volume

‣ If light is “very small”
   ‣ Don’t do any stencil marking
   ‣ Switch to non-shadow casting type

‣ Shadows fade-out range
   ‣ Artist defined light sizes at which:
      ‣ Shadows start to fade out
      ‣ Switch to non-shadow casting light

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Sun Rendering

‣ Full screen quad

‣ Stencil mark potentially lit pixels
   ‣ Use only sun occlusion from G-Buffer

‣ Run final shader on marked pixels
   ‣ Approx. 50% of pixels skipped thanks 1st pass
       ‣ Also skybox/background
   ‣ Simple directional light model
   ‣ Shadow = min(RealTimeShadow, Occlusion)



    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Sun – Real-Time Shadows

‣ Cascade shadow maps
  ‣ Provide more shadow detail where required
  ‣ Divide view frustum into several areas
     ‣ Split along view distance
     ‣ Split distances defined by artist
  ‣ Render shadow map for each area
     ‣ Max 4 cascades
     ‣ Max 512x512 pixels each in single texture
  ‣ Easy to address cascade in final render




   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Sun – Real-Time Shadows

‣ Issue: Shadow shimmering
   ‣ Light cascade frustums follow camera
   ‣ Sub pixel changes in shadow map

‣ Solution!
   ‣ Don’t rotate shadow map cascade
      ‣ Make bounding sphere of cascade frustum
      ‣ Use it to generate cascade light matrix
   ‣ Remove sub-pixel movements
      ‣ Project world origin onto shadow map
      ‣ Use it to round light matrix to nearest shadow pixel corner


   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Sun - Colored shadow Cascades - Unstable shadow artifacts
MSAA Lighting Details

‣ Run light shader at pixel resolution
   ‣ Read G-Buffer for both pixel samples
   ‣ Compute lighting for both samples
   ‣ Average results and add to frame buffer

‣ Optimization in shadow map filtering
   ‣   Max 12 shadow taps per pixel
   ‣   Alternate taps between both samples
   ‣   Half quality on edges, full quality elsewhere
   ‣   Performance equal to non-MSAA case


    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Forward Rendering Pass

‣ Used for transparent geometry
‣ Single pass solution
   ‣ Shader has four uberlights
   ‣ No shadows
   ‣ Per-vertex lighting version for particles

‣ Lower resolution rendering available
   ‣ Fill-rate intensive effects
   ‣ Half and quarter screen size rendering
   ‣ Half resolution rendering using MSAA HW


   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Post-Processing Pass

‣ Highly customizable color correction
   ‣ Separate curves for shadows, mid-tones, highlight colors, contrast and
     brightness
   ‣ Everything Depth dependent
   ‣ Per-frame LUT textures generated on SPU
‣ Image based motion blur and depth of field
‣ Internal lens reflection
‣ Film grain filter



    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Usage and Architecture
             Putting it all together




GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Usage

‣ We use SPU a lot during rendering
   ‣ Display list generation
       ‣ Main display list
       ‣ Lights and Shadow Maps
       ‣ Forward rendering
   ‣ Scene graph traversal / visibility culling
   ‣ Skinning
   ‣ Triangle trimming
   ‣ IBL generation
   ‣ Particles



    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Usage (cont.)

‣ Everything is data driven
   ‣   No “virtual void Draw()” calls on objects
   ‣   Objects store a decision-tree with DrawParts
   ‣   DrawParts link shader, geometry and flags
   ‣   Decision tree used for LODs, etc.

‣ SPUs pull rendering data directly from objects
   ‣ Traverse scenegraph to find objects
   ‣ Process object's decision-tree to find DrawParts
   ‣ Create displaylist from DrawParts


    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

                                                                                PPU

                                                                                SPU 0

                                                                                SPU 1

                                                                                SPU 2

                                                                                SPU 3

 Particles, Skinning         Main scenegraph + displaylist     IBL generation
 edgeGeom                    Shadow scenegraph + displaylist




   GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

GAME, AI
PHYSICS                                                                          PPU

                                                                                 SPU 0

                                                                                 SPU 1

                                                                                 SPU 2

                                                                                 SPU 3

  Particles, Skinning         Main scenegraph + displaylist     IBL generation
  edgeGeom                    Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

GAME, AI    PREPARE
PHYSICS      DRAW                                                                PPU

                                                                                 SPU 0

                                                                                 SPU 1

                                                                                 SPU 2

                                                                                 SPU 3

  Particles, Skinning         Main scenegraph + displaylist     IBL generation
  edgeGeom                    Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

GAME, AI    PREPARE
PHYSICS      DRAW                                                                PPU

                                                                                 SPU 0

                                                                                 SPU 1

                                                                                 SPU 2

                                                                                 SPU 3

  Particles, Skinning         Main scenegraph + displaylist     IBL generation
  edgeGeom                    Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

GAME, AI    PREPARE
PHYSICS      DRAW                                                                PPU

                                                                                 SPU 0

                                                                                 SPU 1

                                                                                 SPU 2

                                                                                 SPU 3

  Particles, Skinning         Main scenegraph + displaylist     IBL generation
  edgeGeom                    Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

GAME, AI    PREPARE
PHYSICS      DRAW                                                                PPU

                                                                                 SPU 0

                                                                                 SPU 1

                                                                                 SPU 2

                                                                                 SPU 3

  Particles, Skinning         Main scenegraph + displaylist     IBL generation
  edgeGeom                    Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

GAME, AI    PREPARE
PHYSICS      DRAW                                                                PPU

                                                                                 SPU 0

                                                                                 SPU 1

                                                                                 SPU 2

                                                                                 SPU 3

  Particles, Skinning         Main scenegraph + displaylist     IBL generation
  edgeGeom                    Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
SPU Architecture

                         DRAW
GAME, AI    PREPARE                             GAME, AI            PREPARE
PHYSICS      DRAW
                         DATA
                                                PHYSICS              DRAW          PPU
                         LOCK


                                                                                   SPU 0

                                                                                   SPU 1

                                                                                   SPU 2

                                                                                   SPU 3

  Particles, Skinning           Main scenegraph + displaylist     IBL generation
  edgeGeom                      Shadow scenegraph + displaylist




    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Conclusion

‣ Deferred rendering works well and gives us artistic
  freedom to create distinctive Killzone look
   ‣   MSAA did not prove to be an issue
   ‣   Complex geometry with no resubmit
   ‣   Highly dynamic lighting in environments
   ‣   Extensive post-process

‣ Still a lot of features planned
   ‣   Ambient occlusion / contact shadows
   ‣   Shadows on transparent geometry
   ‣   More efficient anti-aliasing
   ‣   Dynamic radiosity

    GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2

More Related Content

PPTX
The Rendering Technology of Killzone 2
PPTX
Optimizing the Graphics Pipeline with Compute, GDC 2016
PPT
Secrets of CryENGINE 3 Graphics Technology
PDF
Siggraph2016 - The Devil is in the Details: idTech 666
PPTX
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
PDF
Bindless Deferred Decals in The Surge 2
PPTX
Stochastic Screen-Space Reflections
PPT
Crysis Next-Gen Effects (GDC 2008)
The Rendering Technology of Killzone 2
Optimizing the Graphics Pipeline with Compute, GDC 2016
Secrets of CryENGINE 3 Graphics Technology
Siggraph2016 - The Devil is in the Details: idTech 666
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Bindless Deferred Decals in The Surge 2
Stochastic Screen-Space Reflections
Crysis Next-Gen Effects (GDC 2008)

What's hot (20)

PDF
Graphics Gems from CryENGINE 3 (Siggraph 2013)
PPTX
Rendering Technologies from Crysis 3 (GDC 2013)
PPT
Light prepass
PPTX
DirectX 11 Rendering in Battlefield 3
PPTX
Decima Engine: Visibility in Horizon Zero Dawn
PDF
Rendering AAA-Quality Characters of Project A1
PDF
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
PPTX
A Scalable Real-Time Many-Shadowed-Light Rendering System
PDF
Screen Space Decals in Warhammer 40,000: Space Marine
PPTX
Moving Frostbite to Physically Based Rendering
PPTX
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
PDF
Rendering Tech of Space Marine
PDF
Hill Stephen Rendering Tools Splinter Cell Conviction
PPTX
Lighting the City of Glass
PPTX
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
PPT
Destruction Masking in Frostbite 2 using Volume Distance Fields
PDF
Rendering Techniques in Rise of the Tomb Raider
PPTX
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
PPTX
Frostbite on Mobile
PPTX
FrameGraph: Extensible Rendering Architecture in Frostbite
Graphics Gems from CryENGINE 3 (Siggraph 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
Light prepass
DirectX 11 Rendering in Battlefield 3
Decima Engine: Visibility in Horizon Zero Dawn
Rendering AAA-Quality Characters of Project A1
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
A Scalable Real-Time Many-Shadowed-Light Rendering System
Screen Space Decals in Warhammer 40,000: Space Marine
Moving Frostbite to Physically Based Rendering
A Certain Slant of Light - Past, Present and Future Challenges of Global Illu...
Rendering Tech of Space Marine
Hill Stephen Rendering Tools Splinter Cell Conviction
Lighting the City of Glass
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
Destruction Masking in Frostbite 2 using Volume Distance Fields
Rendering Techniques in Rise of the Tomb Raider
Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite
Frostbite on Mobile
FrameGraph: Extensible Rendering Architecture in Frostbite
Ad

Viewers also liked (6)

PDF
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
PPT
The Unique Lighting of Mirror's Edge
PPTX
Practical usage of Lightmass in Architectural Visualization (Kenichi Makaya...
PDF
Forward+ (EUROGRAPHICS 2012)
PPT
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
PPTX
なぜなにリアルタイムレンダリング
A 2.5D Culling for Forward+ (SIGGRAPH ASIA 2012)
The Unique Lighting of Mirror's Edge
Practical usage of Lightmass in Architectural Visualization (Kenichi Makaya...
Forward+ (EUROGRAPHICS 2012)
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
なぜなにリアルタイムレンダリング
Ad

Similar to Deferred Rendering in Killzone 2 (20)

PDF
Deferred Rendering in Killzone 2
PDF
Dissecting the Rendering of The Surge
PDF
Taking Killzone Shadow Fall Image Quality Into The Next Generation
PDF
Unity: Next Level Rendering Quality
PDF
Foveated Ray Tracing for VR on Multiple GPUs
PPT
A Bit More Deferred Cry Engine3
PPT
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
PDF
Killzone Shadow Fall Demo Postmortem
PDF
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
PPTX
Deferred shading
PPTX
Physically Based and Unified Volumetric Rendering in Frostbite
PPSX
Practical spherical harmonics based PRT methods.ppsx
PDF
Crysis 2-key-rendering-features
PPTX
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
PPTX
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
PDF
The rendering technology of 'lords of the fallen' philip hammer
PDF
CMOS Image Sensor Design_h20_7_high_dynamic_range.pdf
PPTX
How the Universal Render Pipeline unlocks games for you - Unite Copenhagen 2019
PDF
NVIDIA effects GDC09
PDF
PixelDisplay DSSC November 2018
Deferred Rendering in Killzone 2
Dissecting the Rendering of The Surge
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Unity: Next Level Rendering Quality
Foveated Ray Tracing for VR on Multiple GPUs
A Bit More Deferred Cry Engine3
A Practical and Robust Bump-mapping Technique for Today’s GPUs (slides)
Killzone Shadow Fall Demo Postmortem
DD18 - SEED - Raytracing in Hybrid Real-Time Rendering
Deferred shading
Physically Based and Unified Volumetric Rendering in Frostbite
Practical spherical harmonics based PRT methods.ppsx
Crysis 2-key-rendering-features
SIGGRAPH 2018 - Full Rays Ahead! From Raster to Real-Time Raytracing
SPU-Based Deferred Shading in BATTLEFIELD 3 for Playstation 3
The rendering technology of 'lords of the fallen' philip hammer
CMOS Image Sensor Design_h20_7_high_dynamic_range.pdf
How the Universal Render Pipeline unlocks games for you - Unite Copenhagen 2019
NVIDIA effects GDC09
PixelDisplay DSSC November 2018

More from Guerrilla (20)

PPTX
Horizon Zero Dawn: An Open World QA Case Study
PPTX
Horizon Zero Dawn: A Game Design Post-Mortem
PPTX
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
PDF
Building Non-Linear Narratives in Horizon Zero Dawn
PPTX
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
PDF
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
PDF
The Production and Visual FX of Killzone Shadow Fall
PPTX
Out of Sight, Out of Mind: Improving Visualization of AI Info
PDF
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
PDF
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
PDF
Lighting of Killzone: Shadow Fall
PDF
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
PPTX
Practical Occlusion Culling on PS3
PPT
Release This! Tools for a Smooth Release Cycle
PPT
Killzone 2 Multiplayer Bots
PPTX
Automatic Annotations in Killzone 3 and Beyond
PDF
The Creation of Killzone 3
PDF
The PlayStation®3’s SPUs in the Real World: A KILLZONE 2 Case Study
PPTX
Killzone's AI: Dynamic Procedural Tactics
PDF
The Guerrilla Guide to Game Code
Horizon Zero Dawn: An Open World QA Case Study
Horizon Zero Dawn: A Game Design Post-Mortem
Putting the AI Back Into Air: Navigating the Air Space of Horizon Zero Dawn
Building Non-Linear Narratives in Horizon Zero Dawn
Player Traversal Mechanics in the Vast World of Horizon Zero Dawn
The Real-time Volumetric Cloudscapes of Horizon Zero Dawn
The Production and Visual FX of Killzone Shadow Fall
Out of Sight, Out of Mind: Improving Visualization of AI Info
The Next-Gen Dynamic Sound System of Killzone Shadow Fall
Killzone Shadow Fall: Creating Art Tools For A New Generation Of Games
Lighting of Killzone: Shadow Fall
A Hierarchically-Layered Multiplayer Bot System for a First-Person Shooter
Practical Occlusion Culling on PS3
Release This! Tools for a Smooth Release Cycle
Killzone 2 Multiplayer Bots
Automatic Annotations in Killzone 3 and Beyond
The Creation of Killzone 3
The PlayStation®3’s SPUs in the Real World: A KILLZONE 2 Case Study
Killzone's AI: Dynamic Procedural Tactics
The Guerrilla Guide to Game Code

Recently uploaded (20)

DOC
NSCAD毕业证学历认证,温哥华岛大学毕业证国外证书制作申请
PDF
Rakshabandhan – Celebrating the Bond of Siblings - by Meenakshi Khakat
PDF
Between the Reels and the Revolution Enzo Zelocchi’s Unscripted Path Through ...
PDF
EVs U-5 ONE SHOT Notes_c49f9e68-5eac-4201-bf86-b314ef5930ba.pdf
PDF
Songlyrics.net-website for lyrics song download
PPTX
The story of Nomuzi and the way she was living
PDF
MAGNET STORY- Coaster Sequence (Rough Version 2).pdf
PPTX
E8 ssssssssssssssssssssssssssssssssssQ1 0101 PS.pptx
PDF
Keanu Reeves Beyond the Legendary Hollywood Movie Star.pdf
DOCX
Lambutchi Calin Claudiu had a discussion with the Buddha about the restructur...
PPTX
providenetworksystemadministration.pptxhnnhgcbdjckk
PPTX
Hacking Movie – Best Films on Cybercrime & Digital Intrigue
PPTX
the-solar-system.pptxxxxxxxxxxxxxxxxxxxx
PPTX
SPARSH-SVNITs-Annual-Cultural-Fest presentation for orientation
PDF
A New Kind of Director for a New Kind of World Why Enzo Zelocchi Matters More...
PDF
My Oxford Year- A Love Story Set in the Halls of Oxford
PPTX
wegen seminar ppt.pptxhkjbkhkjjlhjhjhlhhvg
PPTX
Understanding Colour Prediction Games – Explained Simply
PPT
business model and some other things that
PPTX
Other Dance Forms - G10 MAPEH Reporting.pptx
NSCAD毕业证学历认证,温哥华岛大学毕业证国外证书制作申请
Rakshabandhan – Celebrating the Bond of Siblings - by Meenakshi Khakat
Between the Reels and the Revolution Enzo Zelocchi’s Unscripted Path Through ...
EVs U-5 ONE SHOT Notes_c49f9e68-5eac-4201-bf86-b314ef5930ba.pdf
Songlyrics.net-website for lyrics song download
The story of Nomuzi and the way she was living
MAGNET STORY- Coaster Sequence (Rough Version 2).pdf
E8 ssssssssssssssssssssssssssssssssssQ1 0101 PS.pptx
Keanu Reeves Beyond the Legendary Hollywood Movie Star.pdf
Lambutchi Calin Claudiu had a discussion with the Buddha about the restructur...
providenetworksystemadministration.pptxhnnhgcbdjckk
Hacking Movie – Best Films on Cybercrime & Digital Intrigue
the-solar-system.pptxxxxxxxxxxxxxxxxxxxx
SPARSH-SVNITs-Annual-Cultural-Fest presentation for orientation
A New Kind of Director for a New Kind of World Why Enzo Zelocchi Matters More...
My Oxford Year- A Love Story Set in the Halls of Oxford
wegen seminar ppt.pptxhkjbkhkjjlhjhjhlhhvg
Understanding Colour Prediction Games – Explained Simply
business model and some other things that
Other Dance Forms - G10 MAPEH Reporting.pptx

Deferred Rendering in Killzone 2

  • 1. GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 2. Deferred Rendering in Killzone 2 Michal Valient Senior Programmer, Guerrilla GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 3. Talk Outline ‣ Forward & Deferred Rendering Overview ‣ G-Buffer Layout ‣ Shader Creation ‣ Deferred Rendering in Detail ‣ Rendering Passes ‣ Light and Shadows ‣ Post-Processing ‣ SPU Usage / Architecture GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 4. Forward & Deferred Rendering Overview GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 5. Forward Rendering – Single Pass ‣ For each object ‣ Find all lights affecting object ‣ Render all lighting and material in a single shader ‣ Shader combinations explosion ‣ Shader for each material vs. light setup combination ‣ All shadow maps have to be in memory ‣ Wasted shader cycles ‣ Invisible surfaces / overdraw ‣ Triangles outside light influence GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 6. Forward Rendering – Multi-Pass ‣ For each light ‣ For each object ‣ Add lighting from single light to frame buffer ‣ Shader for each material and light type ‣ Wasted shader cycles ‣ Invisible surfaces / overdraw ‣ Triangles outside light influence ‣ Lots of repeated work ‣ Full vertex shaders, texture filtering GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 7. Deferred Rendering ‣ For each object ‣ Render surface properties into the G-Buffer ‣ For each light and lit pixel ‣ Use G-Buffer to compute lighting ‣ Add result to frame buffer ‣ Simpler shaders ‣ Scales well with number of lit pixels ‣ Does not handle transparent objects GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 8. G-Buffer Layout GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 10. Depth
  • 17. Image with post-processing (depth of field, bloom, motion blur, colorize, ILR)
  • 18. G-Buffer : Our approach R8 G8 B8 A8 Depth 24bpp Stencil DS Lighting Accumulation RGB Intensity RT0 Normal X (FP16) Normal Y (FP16) RT1 Motion Vectors XY Spec-Power Spec-Intensity RT2 Diffuse Albedo RGB Sun-Occlusion RT3 ‣ MRT - 4xRGBA8 + 24D8S (approx 36 MB) ‣ 720p with Quincunx MSAA ‣ Position computed from depth buffer and pixel coordinates GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 19. G-Buffer : Our approach R8 G8 B8 A8 Depth 24bpp Stencil DS Lighting Accumulation RGB Intensity RT0 Normal X (FP16) Normal Y (FP16) RT1 Motion Vectors XY Spec-Power Spec-Intensity RT2 Diffuse Albedo RGB Sun-Occlusion RT3 ‣ Lighting accumulation – output buffer ‣ Intensity – luminance of Lighting accumulation ‣ Scaled to range [0…2] ‣ Normal.z = sqrt(1.0f - Normal.x2 - Normal.y2) GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 20. G-Buffer : Our approach R8 G8 B8 A8 Depth 24bpp Stencil DS Lighting Accumulation RGB Intensity RT0 Normal X (FP16) Normal Y (FP16) RT1 Motion Vectors XY Spec-Power Spec-Intensity RT2 Diffuse Albedo RGB Sun-Occlusion RT3 ‣ Motion vectors – screen space ‣ Specular power - stored as log2(original)/10.5 ‣ High range and still high precision for low shininess ‣ Sun Occlusion - pre-rendered static sun shadows ‣ Mixed with real-time sun shadow for higher quality GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 21. G-Buffer Analysis ‣ Pros: ‣ Highly packed data structure ‣ Many extra attributes ‣ Allows MSAA with hardware support ‣ Cons: ‣ Limited output precision and dynamic range ‣ Lighting accumulation in gamma space ‣ Can use different color space (LogLuv) ‣ Attribute packing and unpacking overhead GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 22. Deferred Rendering Passes GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 23. Geometry Pass ‣ Fill the G-Buffer with all geometry (static, skinned, etc.) ‣ Write depth, motion, specular, etc. properties ‣ Initialize light accumulation buffer with pre-baked light ‣ Ambient, Incandescence, Constant specular ‣ Lightmaps on static geometry ‣ YUV color space, S3TC5 with Y in Alpha ‣ Sun occlusion in B channel ‣ Dynamic range [0..2] ‣ Image based lighting on dynamic geometry GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 24. Image Based Lighting ‣ Artist placed light probes ‣ Arbitrary location and density ‣ Sampled and stored as 2nd order spherical harmonics ‣ Updated per frame for each object ‣ Blend four closest SHs based on distance ‣ Rotate into view space ‣ Encode into 8x8 envmap IBL texture ‣ Dynamic range [0..2] ‣ Generated on SPUs in parallel to other rendering tasks GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 26. Decals and Weapon Passes ‣ Primitives updating subset of the G-Buffer ‣ Bullet holes, posters, cracks, stains ‣ Reuse lighting of underlying surface ‣ Blend with albedo buffer ‣ Use G-Buffer Intensity channel to fix accumulation ‣ Same principle as particles with motion blur ‣ Separate weapon pass with different projection ‣ Different near plane ‣ Rendered into first 5% of depth buffer range ‣ Still reacts to lights and post-processing GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 29. Light Accumulation Pass ‣ Light is rendered as convex geometry ‣ Point light – sphere ‣ Spot light – cone ‣ Sun – full-screen quad ‣ For each light… ‣ Find and mark visible lit pixels ‣ If light contributes to screen ‣ Render shadow map ‣ Shade lit pixels and add to framebuffer GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 30. Determine Lit Pixels ‣ Marks pixels in front of the far light boundary ‣ Render back-faces of light volume ‣ Depth test GREATER-EQUAL ‣ Write to stencil on depth pass ‣ Skipped for very small distant lights GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 31. Determine Lit Pixels ‣ Find amount of lit pixels inside the volume ‣ Start pixel query ‣ Render front faces of light volume ‣ Depth test LESS-EQUAL ‣ Don’t write anything – only EQUAL stencil test GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 32. Render Shadow Map ‣ Enable conditional rendering ‣ Based on query results from previous stage ‣ GPU skips rendering for invisible lights ‣ Max 1024x1024xD16 shadow map ‣ Fast and with hardware filtering support ‣ Single map reused for all lights ‣ Skip small objects ‣ Small in shadow map and on screen ‣ Artist defined thresholds for lights and objects GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 33. Shade Lit Pixels ‣ Render front-faces of light volume ‣ Depth test - LESS-EQUAL ‣ Stencil test - EQUAL ‣ Runs only on marked pixels inside light ‣ Compute light equation ‣ Read and unpack G-Buffer attributes ‣ Calculate Light vector, Color, Distance Attenuation ‣ Perform shadow map filtering ‣ Add Phong lighting to frame buffer GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 34. Light Optimization ‣ Determine light size on the screen ‣ Approximation - angular size of light volume ‣ If light is “very small” ‣ Don’t do any stencil marking ‣ Switch to non-shadow casting type ‣ Shadows fade-out range ‣ Artist defined light sizes at which: ‣ Shadows start to fade out ‣ Switch to non-shadow casting light GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 35. Sun Rendering ‣ Full screen quad ‣ Stencil mark potentially lit pixels ‣ Use only sun occlusion from G-Buffer ‣ Run final shader on marked pixels ‣ Approx. 50% of pixels skipped thanks 1st pass ‣ Also skybox/background ‣ Simple directional light model ‣ Shadow = min(RealTimeShadow, Occlusion) GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 36. Sun – Real-Time Shadows ‣ Cascade shadow maps ‣ Provide more shadow detail where required ‣ Divide view frustum into several areas ‣ Split along view distance ‣ Split distances defined by artist ‣ Render shadow map for each area ‣ Max 4 cascades ‣ Max 512x512 pixels each in single texture ‣ Easy to address cascade in final render GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 37. Sun – Real-Time Shadows ‣ Issue: Shadow shimmering ‣ Light cascade frustums follow camera ‣ Sub pixel changes in shadow map ‣ Solution! ‣ Don’t rotate shadow map cascade ‣ Make bounding sphere of cascade frustum ‣ Use it to generate cascade light matrix ‣ Remove sub-pixel movements ‣ Project world origin onto shadow map ‣ Use it to round light matrix to nearest shadow pixel corner GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 38. Sun - Colored shadow Cascades - Unstable shadow artifacts
  • 39. MSAA Lighting Details ‣ Run light shader at pixel resolution ‣ Read G-Buffer for both pixel samples ‣ Compute lighting for both samples ‣ Average results and add to frame buffer ‣ Optimization in shadow map filtering ‣ Max 12 shadow taps per pixel ‣ Alternate taps between both samples ‣ Half quality on edges, full quality elsewhere ‣ Performance equal to non-MSAA case GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 40. Forward Rendering Pass ‣ Used for transparent geometry ‣ Single pass solution ‣ Shader has four uberlights ‣ No shadows ‣ Per-vertex lighting version for particles ‣ Lower resolution rendering available ‣ Fill-rate intensive effects ‣ Half and quarter screen size rendering ‣ Half resolution rendering using MSAA HW GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 41. Post-Processing Pass ‣ Highly customizable color correction ‣ Separate curves for shadows, mid-tones, highlight colors, contrast and brightness ‣ Everything Depth dependent ‣ Per-frame LUT textures generated on SPU ‣ Image based motion blur and depth of field ‣ Internal lens reflection ‣ Film grain filter GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 42. SPU Usage and Architecture Putting it all together GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 43. SPU Usage ‣ We use SPU a lot during rendering ‣ Display list generation ‣ Main display list ‣ Lights and Shadow Maps ‣ Forward rendering ‣ Scene graph traversal / visibility culling ‣ Skinning ‣ Triangle trimming ‣ IBL generation ‣ Particles GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 44. SPU Usage (cont.) ‣ Everything is data driven ‣ No “virtual void Draw()” calls on objects ‣ Objects store a decision-tree with DrawParts ‣ DrawParts link shader, geometry and flags ‣ Decision tree used for LODs, etc. ‣ SPUs pull rendering data directly from objects ‣ Traverse scenegraph to find objects ‣ Process object's decision-tree to find DrawParts ‣ Create displaylist from DrawParts GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 45. SPU Architecture PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 46. SPU Architecture GAME, AI PHYSICS PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 47. SPU Architecture GAME, AI PREPARE PHYSICS DRAW PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 48. SPU Architecture GAME, AI PREPARE PHYSICS DRAW PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 49. SPU Architecture GAME, AI PREPARE PHYSICS DRAW PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 50. SPU Architecture GAME, AI PREPARE PHYSICS DRAW PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 51. SPU Architecture GAME, AI PREPARE PHYSICS DRAW PPU SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 52. SPU Architecture DRAW GAME, AI PREPARE GAME, AI PREPARE PHYSICS DRAW DATA PHYSICS DRAW PPU LOCK SPU 0 SPU 1 SPU 2 SPU 3 Particles, Skinning Main scenegraph + displaylist IBL generation edgeGeom Shadow scenegraph + displaylist GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON
  • 53. Conclusion ‣ Deferred rendering works well and gives us artistic freedom to create distinctive Killzone look ‣ MSAA did not prove to be an issue ‣ Complex geometry with no resubmit ‣ Highly dynamic lighting in environments ‣ Extensive post-process ‣ Still a lot of features planned ‣ Ambient occlusion / contact shadows ‣ Shadows on transparent geometry ‣ More efficient anti-aliasing ‣ Dynamic radiosity GUERRILLA | DEVELOP CONFERENCE | JULY ‘07 | BRIGHTON