SlideShare a Scribd company logo
Deferred Rendering in Leadwerks Engine

                  Josh Klint
          CEO, Leadwerks Corporation




     Copyright Leadwerks Corporation 2008.
1.1 Introduction

Deferred lighting is a relatively new rendering concept that performs lighting as a kind of
post-processing step. The immediate advantage of this is that lighting is decoupled from
scene complexity. Lighting is processed at the same speed whether one or 1,000,000
polygons are onscreen.

Whereas a forward renderer will usually draw to a color and depth buffer, deferred shading
uses an additional screen space normal buffer. The combination of normal and depth data
is sufficient to calculate lighting in a post-processing step, which is then combined with the
color buffer.




            Figure 1.0 Deferred lighting performance is independent from scene complexity.




1.2 Forward Rendering in Leadwerks Engine 2.0

Leadwerks Engine 2.0 utilized a forward renderer. In order to optimize the engine to render
only the visible lights onscreen, we implemented a concept we call “shader groups”.
Instead of storing a single shader per material, the engine stores an array of versions of
that shader, each auto-generated using GLSL defines to control the number of lights and
other settings. This approach suffered from several problems that became apparent once
we started using the engine in a production environment:

       Each shader group had over 100 potential versions. The constant shader compiling
       during runtime when entering a new area caused unacceptable pauses. Although
only a few variations ever got compiled and used, it was impossible to guess which
       ones would be needed. Because there were so many potential variations it was
       impossible to pre-compile all of these.
       The length of the shaders became quite long, causing slower compiling times and
       risked exceeding the instruction limit on older hardware.
       Because materials used shader groups and not single shaders, it was difficult or
       impossible for our end users to alter a shader uniform for material shaders.
       It was difficult to control per-light settings. A single global binary setting would
       double the number of potential shaders in a group. A per-light binary setting would
       multiply the shader count by 16 (two settings times a maximum of eight lights).
       The maximum number of lights visible at any given time was capped at eight due to
       hardware limitations and practicality.

These issues motivated us to research a deferred approach for version 2.1 of our engine.



1.3 Deferred Rendering in Leadwerks Engine 2.1

We set out to implement a deferred renderer with a few conditions in mind. We wanted to
create a minimal frame buffer format to minimize bandwidth costs, while supporting all the
lighting features of our forward renderer. Additionally, we chose to perform lighting
calculations in screen space rather than the world space methods used by the forward
renderer. Although we did not know how performance would compare, it was certain from
the beginning that deferred lighting would offer a simpler renderer that was easier to
control. Additionally, the following advantages applied:

       Easy control of per-light settings. Does this light cast shadows? Does it create a
       specular reflection?
       Smaller shader sources and faster compiling. There are 32 potential light shaders
       that still get compiled on-the-fly, but the pauses this causes are much less frequent
       and barely perceptible.
       No limit to the number of lights rendered.
       Easy addition of new light types.

Because deferred lighting only performs lighting on the final screen pixels, the same
characteristic that makes deferred lighting so desirable creates a few new problems:

       Alpha blending becomes difficult.
       No MSAA hardware anti-aliasing.

We found that a modulate (darken) blend can be used for most transparencies, without
disrupting the lighting environment. Alpha blended materials can be drawn in a second
pass, as we already do for refractive surfaces. A sort of pseudo anti-alias can be performed
with a blur post-filter weighted with an edge detection filter.
1.31 The Frame Buffer Format

It is often suggested that a deferred renderer should use a 128-bit GL_RGBA32F float buffer
for recording fragment positions. We saw no need for transferring this extra data. Instead,
the light shaders reconstruct the fragment screen space position from the screen coordinate
and depth value. We found that a 24-bit depth buffer provided good precision for use with
shadow map lookups.

The fragment coordinate was used to calculate the screen space position. Here, the
buffersize uniform is used to pass the screen width and height to the shader:

vec3 screencoord;
screencoord = vec3(((gl_FragCoord.x/buffersize.x)-0.5) * 2.0,((-gl_FragCoord.y/buffersize.y)+0.5) * 2.0 /
(buffersize.x/buffersize.y),DepthToZPosition( depth ));
screencoord.x *= screencoord.z;
screencoord.y *= -screencoord.z;



The depth was converted to a screen space z position with the following function. The
camerarange uniform stores the camera near and far clipping distances:

float DepthToZPosition(in float depth) {
        return camerarange.x / (camerarange.y - depth * (camerarange.y - camerarange.x)) *
camerarange.y;
}



This approach allowed us to save about half the bandwidth costs a frame buffer format with
a 128-bit position buffer would have required.

We found that for diffuse lighting, a 32-bit GL_RGBA8 normal buffer yielded good results.
However, surfaces with a high specular factor exhibited banding caused by the limited
resolution. We tried the GL_RGB10_A2 format, which was precise enough for the normal,
but lacked sufficient precision to store the specular value in the alpha channel. We settled
on using a 64-bit GL_RGBA16F buffer on supported hardware, with a fallback for a 32-bit
GL_RGBA8 buffer.

Specular intensity was packed into the unused alpha channel of the normal buffer. Since
graphics hardware prefers data in 32-bit packets, it is likely that the RGBA format is the
same internally as the RGB format on most hardware, so this extra data transfer came at no
cost. The size of the frame buffer format displayed here is either 120 or 88 bits per pixel,
depending on the normal buffer format.

Figure 1.1 Frame buffer format:

      Buffer    Format                       Bits        Values
      color     GL_RGBA8                     32          red       green     blue   alpha
      depth     GL_DEPTH_COMPONENT24         24          depth
      normal    GL_RGBA16F or                64 or 32    x         y         z      specular factor
                GL_RGBA8
Since we were already using multiple render targets, we decided to add support for
attaching additional color buffers. This allowed the end user to create an additional buffer
for rendering selective bloom or other effects, and allows for extended rendering features
without altering the engine source code. The light source for the orange point light pictured
here is a good candidate for selective bloom, as our full-bright and lens flare effects did not
translate well to the deferred renderer.




Figure 1.2   Depth, normal, and specular factor are used to calculate diffuse lighting and specular reflection,
                      which is then combined with the albedo color for the final image.
Figure 1.3 Albedo




Figure 1.4 Depth
Figure 1.5 Normal




Figure 1.6 Specular factor
Figure 1.7 Diffuse lighting




Figure 1.8 Specular reflection
Figure 1.9 Final image




1.32 Optimization

Our engine performs hierarchal culling based on the scene graph, followed by per-object
frustum culling. Hardware occlusion queries are performed on the remaining objects. This
ensures that only visible lights are updated and drawn. For the remaining visible lights, it is
important to process only the fragments that are actually affected by the light source.

The most efficient way to eliminate fragments is to discard them before they are run
through the fragment program. We copied the depth value from the depth buffer to the
next render target during the first full-screen pass, which is either the ambient pass or the
combined ambient and first directional light pass. Point and spot light volumes were then
rendered with depth testing enabled. An intersection test detected whether the camera was
inside or outside the light volume, and the polygon order and depth function were switched
accordingly. Although writing to the depth buffer may disable hierarchal depth culling, an
overall performance improvement was observed with depth writing and testing enabled.
Further research using the stencil buffer to discard fragments may prove beneficial.



1.4 Results

Our results disprove some common assumptions about deferred rendering. It is often
suggested that deferred rendering is only advantageous in scenes with a high degree of
overdraw. In every test run we found our deferred renderer to be at least 20% faster than
forward lighting. Due to our compact frame buffer format, the increased bandwidth cost
was only about four frames per second lost on ATI Radeon HD 3870 and NVidia GEForce
8800 graphics cards. On average we saw a performance improvement of about 50% per
light onscreen. A scene with eight visible lights ran four times faster in our deferred
renderer.

The speed improvements of our deferred renderer were not limited to high-end hardware.
We saw similar performance gains on ATI Radeon X1550 and NVidia GEForce 7200 graphics
cards.

Except for the aforementioned issues with MSAA and alpha blending, the appearance of our
deferred renderer was identical to that of our forward renderer. Our lens flare effect was
abandoned, since it interfered with lighting and could be replaced with more advanced
depth-based lighting effects.



1.5 Conclusion

It is inevitable that a fundamental shift in rendering paradigms will cause some
incompatibility with previously utilized techniques. However, the simplicity and speed of
deferred rendering far outweigh the few disadvantages. Not only did deferred lighting
simplify our renderer and eliminate the problems our forward renderer exhibited, but it also
yielded a significant performance improvement, even in situations where it is usually
suggested a forward renderer would be faster.



1.6 References

Foley, James D., Andries van Dam, Steven K. Feiner, and John F. Hughes. 1990. Computer
Graphics: Principles and Practice. Addison-Wesley.

Shishkovtso, Oles 2005. “GPU Gems 2. Chaper 9 - Deferred Rendering in S.T.A.L.K.E.R.”
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter09.html

Valient, Michael. 2007. "Deferred Rendering in Killzone 2." Presentation at Develop
Conference in Brighton, July 2007.
http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf



1.7 Acknowledgements

Thanks to Arne Reiners, Rich DiGiovanni, and Emil Persson.

More Related Content

What's hot

4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
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 Andromeda
Electronic Arts / DICE
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars Battlefront
Electronic Arts / DICE
 
Lightspeed Preprint
Lightspeed PreprintLightspeed Preprint
Lightspeed Preprintjustanimate
 
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...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...Johan Andersson
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance Fields
Electronic Arts / DICE
 
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
 
565 Alpha Chun-Fu Chao
565 Alpha Chun-Fu Chao565 Alpha Chun-Fu Chao
565 Alpha Chun-Fu ChaoFrank Chao
 
Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...
Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...
Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...
Colin Barré-Brisebois
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
Electronic Arts / DICE
 
Clustered defered and forward shading
Clustered defered and forward shadingClustered defered and forward shading
Clustered defered and forward shading
WuBinbo
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
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 Run
Electronic Arts / DICE
 
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
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
Michele Giacalone
 
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
Wolfgang Engel
 
The rendering technology of 'lords of the fallen' philip hammer
The rendering technology of 'lords of the fallen'   philip hammerThe rendering technology of 'lords of the fallen'   philip hammer
The rendering technology of 'lords of the fallen' philip hammer
Mary Chan
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Tiago Sousa
 
A new Post-Processing Pipeline
A new Post-Processing PipelineA new Post-Processing Pipeline
A new Post-Processing Pipeline
Wolfgang Engel
 
Optimizing the graphics pipeline with compute
Optimizing the graphics pipeline with computeOptimizing the graphics pipeline with compute
Optimizing the graphics pipeline with compute
WuBinbo
 
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
Electronic Arts / DICE
 
Epic_GDC2011_Samaritan
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_SamaritanMinGeun Park
 

What's hot (20)

4K Checkerboard in Battlefield 1 and Mass Effect Andromeda
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 Andromeda
 
Photogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars BattlefrontPhotogrammetry and Star Wars Battlefront
Photogrammetry and Star Wars Battlefront
 
Lightspeed Preprint
Lightspeed PreprintLightspeed Preprint
Lightspeed Preprint
 
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...
Frostbite Rendering Architecture and Real-time Procedural Shading & Texturing...
 
Destruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance FieldsDestruction Masking in Frostbite 2 using Volume Distance Fields
Destruction Masking in Frostbite 2 using Volume Distance Fields
 
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)
 
565 Alpha Chun-Fu Chao
565 Alpha Chun-Fu Chao565 Alpha Chun-Fu Chao
565 Alpha Chun-Fu Chao
 
Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...
Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...
Colin Barre-Brisebois - GDC 2011 - Approximating Translucency for a Fast, Che...
 
Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3Shiny PC Graphics in Battlefield 3
Shiny PC Graphics in Battlefield 3
 
Clustered defered and forward shading
Clustered defered and forward shadingClustered defered and forward shading
Clustered defered and forward shading
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
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 Run
 
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)
 
Screen Space Reflections in The Surge
Screen Space Reflections in The SurgeScreen Space Reflections in The Surge
Screen Space Reflections in The Surge
 
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
 
The rendering technology of 'lords of the fallen' philip hammer
The rendering technology of 'lords of the fallen'   philip hammerThe rendering technology of 'lords of the fallen'   philip hammer
The rendering technology of 'lords of the fallen' philip hammer
 
Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)Crysis Next-Gen Effects (GDC 2008)
Crysis Next-Gen Effects (GDC 2008)
 
A new Post-Processing Pipeline
A new Post-Processing PipelineA new Post-Processing Pipeline
A new Post-Processing Pipeline
 
Optimizing the graphics pipeline with compute
Optimizing the graphics pipeline with computeOptimizing the graphics pipeline with compute
Optimizing the graphics pipeline with compute
 
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
 
Epic_GDC2011_Samaritan
Epic_GDC2011_SamaritanEpic_GDC2011_Samaritan
Epic_GDC2011_Samaritan
 

Viewers also liked

Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
ozlael ozlael
 
ACES 1.0 OpenColorIO config - Siggraph 2015
ACES 1.0 OpenColorIO config - Siggraph 2015ACES 1.0 OpenColorIO config - Siggraph 2015
ACES 1.0 OpenColorIO config - Siggraph 2015
hpduiker
 
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color CourseFilmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
hpduiker
 
ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015
ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015
ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015
hpduiker
 
Quale futuro per l'acqua
Quale futuro per l'acquaQuale futuro per l'acqua
Quale futuro per l'acqua
ecomuseodellateverina
 
Universidad particular san gregorio de
Universidad particular san gregorio deUniversidad particular san gregorio de
Universidad particular san gregorio dejonathan
 
Enabling Dreams
Enabling DreamsEnabling Dreams
Enabling Dreamssantaana1
 
Di jan 28th
Di jan 28thDi jan 28th
Di jan 28th
Garette Tebay
 
one slide solution
one slide solutionone slide solution
one slide solutionalind tiwari
 
Lehdonvirta vili virtual_goods_tenattributesinfluencedesirability
Lehdonvirta vili virtual_goods_tenattributesinfluencedesirabilityLehdonvirta vili virtual_goods_tenattributesinfluencedesirability
Lehdonvirta vili virtual_goods_tenattributesinfluencedesirability
ozlael ozlael
 
Baby and Kids Buyers Show - Melbourne 2012
Baby and Kids Buyers Show - Melbourne 2012Baby and Kids Buyers Show - Melbourne 2012
Baby and Kids Buyers Show - Melbourne 2012Louder
 
Komputerku Nabila 4 B
Komputerku Nabila 4 BKomputerku Nabila 4 B
Komputerku Nabila 4 B
iwan hendrawan
 
E-waste recycling-L
E-waste recycling-LE-waste recycling-L
E-waste recycling-Lalind tiwari
 

Viewers also liked (20)

Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 
ACES 1.0 OpenColorIO config - Siggraph 2015
ACES 1.0 OpenColorIO config - Siggraph 2015ACES 1.0 OpenColorIO config - Siggraph 2015
ACES 1.0 OpenColorIO config - Siggraph 2015
 
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color CourseFilmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
Filmic Tonemapping for Real-time Rendering - Siggraph 2010 Color Course
 
ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015
ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015
ACEScg: A Common Color Encoding for Visual Effects Applications - DigiPro 2015
 
Quale futuro per l'acqua
Quale futuro per l'acquaQuale futuro per l'acqua
Quale futuro per l'acqua
 
Universidad particular san gregorio de
Universidad particular san gregorio deUniversidad particular san gregorio de
Universidad particular san gregorio de
 
Enabling Dreams
Enabling DreamsEnabling Dreams
Enabling Dreams
 
Good one
Good oneGood one
Good one
 
my pitch
my pitchmy pitch
my pitch
 
Di jan 28th
Di jan 28thDi jan 28th
Di jan 28th
 
Pp Lect12 13
Pp Lect12 13Pp Lect12 13
Pp Lect12 13
 
Globalization
GlobalizationGlobalization
Globalization
 
latest slide
latest slidelatest slide
latest slide
 
one slide solution
one slide solutionone slide solution
one slide solution
 
Lehdonvirta vili virtual_goods_tenattributesinfluencedesirability
Lehdonvirta vili virtual_goods_tenattributesinfluencedesirabilityLehdonvirta vili virtual_goods_tenattributesinfluencedesirability
Lehdonvirta vili virtual_goods_tenattributesinfluencedesirability
 
Baby and Kids Buyers Show - Melbourne 2012
Baby and Kids Buyers Show - Melbourne 2012Baby and Kids Buyers Show - Melbourne 2012
Baby and Kids Buyers Show - Melbourne 2012
 
Komputerku Nabila 4 B
Komputerku Nabila 4 BKomputerku Nabila 4 B
Komputerku Nabila 4 B
 
PPC Landing Copy
PPC Landing CopyPPC Landing Copy
PPC Landing Copy
 
Peer topeer
Peer topeerPeer topeer
Peer topeer
 
E-waste recycling-L
E-waste recycling-LE-waste recycling-L
E-waste recycling-L
 

Similar to Deferred rendering in_leadwerks_engine[1]

Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis CataldiMaking High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Luis Cataldi
 
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis CataldiMaking High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Unreal Engine
 
Crysis 2-key-rendering-features
Crysis 2-key-rendering-featuresCrysis 2-key-rendering-features
Crysis 2-key-rendering-features
Raimundo Renato
 
Real Time Video Processing in FPGA
Real Time Video Processing in FPGA Real Time Video Processing in FPGA
Real Time Video Processing in FPGA
QuEST Global (erstwhile NeST Software)
 
UHK-430 White paper
UHK-430 White paperUHK-430 White paper
UHK-430 White paperKris Hill
 
OpenGL ES and Mobile GPU
OpenGL ES and Mobile GPUOpenGL ES and Mobile GPU
OpenGL ES and Mobile GPU
Jiansong Chen
 
Gpu presentation
Gpu presentationGpu presentation
Gpu presentation
spartasoft
 
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016Alex Vlachos
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
Tiago Sousa
 
OpenGL 4 for 2010
OpenGL 4 for 2010OpenGL 4 for 2010
OpenGL 4 for 2010
Mark Kilgard
 
Ec36783787
Ec36783787Ec36783787
Ec36783787
IJERA Editor
 
Digital Image Processing - Image Compression
Digital Image Processing - Image CompressionDigital Image Processing - Image Compression
Digital Image Processing - Image Compression
Mathankumar S
 
High Performance Medical Reconstruction Using Stream Programming Paradigms
High Performance Medical Reconstruction Using Stream Programming ParadigmsHigh Performance Medical Reconstruction Using Stream Programming Paradigms
High Performance Medical Reconstruction Using Stream Programming Paradigms
QuEST Global (erstwhile NeST Software)
 
Optimization Deep Dive: Unreal Engine 4 on Intel
Optimization Deep Dive: Unreal Engine 4 on IntelOptimization Deep Dive: Unreal Engine 4 on Intel
Optimization Deep Dive: Unreal Engine 4 on Intel
Intel® Software
 
246174 LDAV 2016_Poster_FNL_hi-res(1)
246174 LDAV 2016_Poster_FNL_hi-res(1)246174 LDAV 2016_Poster_FNL_hi-res(1)
246174 LDAV 2016_Poster_FNL_hi-res(1)Jie Jiang
 
LightWave™ 3D 11 Add-a-Seat
LightWave™ 3D 11 Add-a-SeatLightWave™ 3D 11 Add-a-Seat
LightWave™ 3D 11 Add-a-Seat
Topend Electronics
 
Patch-Based Image Learned Codec using Overlapping
Patch-Based Image Learned Codec using OverlappingPatch-Based Image Learned Codec using Overlapping
Patch-Based Image Learned Codec using Overlapping
sipij
 

Similar to Deferred rendering in_leadwerks_engine[1] (20)

Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis CataldiMaking High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
 
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis CataldiMaking High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
 
Crysis 2-key-rendering-features
Crysis 2-key-rendering-featuresCrysis 2-key-rendering-features
Crysis 2-key-rendering-features
 
Real Time Video Processing in FPGA
Real Time Video Processing in FPGA Real Time Video Processing in FPGA
Real Time Video Processing in FPGA
 
UHK-430 White paper
UHK-430 White paperUHK-430 White paper
UHK-430 White paper
 
FIR filter on GPU
FIR filter on GPUFIR filter on GPU
FIR filter on GPU
 
OpenGL ES and Mobile GPU
OpenGL ES and Mobile GPUOpenGL ES and Mobile GPU
OpenGL ES and Mobile GPU
 
Gpu presentation
Gpu presentationGpu presentation
Gpu presentation
 
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016
 
Secrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics TechnologySecrets of CryENGINE 3 Graphics Technology
Secrets of CryENGINE 3 Graphics Technology
 
OpenGL 4 for 2010
OpenGL 4 for 2010OpenGL 4 for 2010
OpenGL 4 for 2010
 
Ec36783787
Ec36783787Ec36783787
Ec36783787
 
Digital Image Processing - Image Compression
Digital Image Processing - Image CompressionDigital Image Processing - Image Compression
Digital Image Processing - Image Compression
 
High Performance Medical Reconstruction Using Stream Programming Paradigms
High Performance Medical Reconstruction Using Stream Programming ParadigmsHigh Performance Medical Reconstruction Using Stream Programming Paradigms
High Performance Medical Reconstruction Using Stream Programming Paradigms
 
Image compression
Image compressionImage compression
Image compression
 
Optimization Deep Dive: Unreal Engine 4 on Intel
Optimization Deep Dive: Unreal Engine 4 on IntelOptimization Deep Dive: Unreal Engine 4 on Intel
Optimization Deep Dive: Unreal Engine 4 on Intel
 
246174 LDAV 2016_Poster_FNL_hi-res(1)
246174 LDAV 2016_Poster_FNL_hi-res(1)246174 LDAV 2016_Poster_FNL_hi-res(1)
246174 LDAV 2016_Poster_FNL_hi-res(1)
 
LightWave™ 3D 11 Add-a-Seat
LightWave™ 3D 11 Add-a-SeatLightWave™ 3D 11 Add-a-Seat
LightWave™ 3D 11 Add-a-Seat
 
cbs_sips2005
cbs_sips2005cbs_sips2005
cbs_sips2005
 
Patch-Based Image Learned Codec using Overlapping
Patch-Based Image Learned Codec using OverlappingPatch-Based Image Learned Codec using Overlapping
Patch-Based Image Learned Codec using Overlapping
 

More from ozlael ozlael

Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)
ozlael ozlael
 
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
ozlael ozlael
 
Optimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark HarknessOptimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark Harkness
ozlael ozlael
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
ozlael ozlael
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
ozlael ozlael
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
ozlael ozlael
 
Infinity Blade and beyond
Infinity Blade and beyondInfinity Blade and beyond
Infinity Blade and beyond
ozlael ozlael
 
스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기
ozlael ozlael
 
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
ozlael ozlael
 
Introduce coco2dx with cookingstar
Introduce coco2dx with cookingstarIntroduce coco2dx with cookingstar
Introduce coco2dx with cookingstarozlael ozlael
 
Deferred rendering case study
Deferred rendering case studyDeferred rendering case study
Deferred rendering case studyozlael ozlael
 
Kgc make stereo game on pc
Kgc make stereo game on pcKgc make stereo game on pc
Kgc make stereo game on pcozlael ozlael
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blog
ozlael ozlael
 
Modern gpu optimize
Modern gpu optimizeModern gpu optimize
Modern gpu optimize
ozlael ozlael
 
Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3
ozlael ozlael
 
DOF Depth of Field
DOF Depth of FieldDOF Depth of Field
DOF Depth of Field
ozlael ozlael
 
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
ozlael ozlael
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
ozlael ozlael
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2ozlael ozlael
 

More from ozlael ozlael (20)

Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)Unity & VR (Unity Roadshow 2016)
Unity & VR (Unity Roadshow 2016)
 
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
뭣이 중헌디? 성능 프로파일링도 모름서 - 유니티 성능 프로파일링 가이드 (IGC16)
 
Optimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark HarknessOptimizing mobile applications - Ian Dundore, Mark Harkness
Optimizing mobile applications - Ian Dundore, Mark Harkness
 
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
그래픽 최적화로 가...가버렷! (부제: 배치! 배칭을 보자!) , Batch! Let's take a look at Batching! -...
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) Unite Seoul Ver.
 
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
 
Infinity Blade and beyond
Infinity Blade and beyondInfinity Blade and beyond
Infinity Blade and beyond
 
스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기스티브잡스처럼 프레젠테이션하기
스티브잡스처럼 프레젠테이션하기
 
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
유니티의 라이팅이 안 이쁘다구요? (A to Z of Lighting)
 
Introduce coco2dx with cookingstar
Introduce coco2dx with cookingstarIntroduce coco2dx with cookingstar
Introduce coco2dx with cookingstar
 
Deferred rendering case study
Deferred rendering case studyDeferred rendering case study
Deferred rendering case study
 
Kgc make stereo game on pc
Kgc make stereo game on pcKgc make stereo game on pc
Kgc make stereo game on pc
 
mssao presentation
mssao presentationmssao presentation
mssao presentation
 
Modern gpu optimize blog
Modern gpu optimize blogModern gpu optimize blog
Modern gpu optimize blog
 
Modern gpu optimize
Modern gpu optimizeModern gpu optimize
Modern gpu optimize
 
Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3Bickerstaff benson making3d games on the playstation3
Bickerstaff benson making3d games on the playstation3
 
DOF Depth of Field
DOF Depth of FieldDOF Depth of Field
DOF Depth of Field
 
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
Hable uncharted2(siggraph%202010%20 advanced%20realtime%20rendering%20course)
 
Deferred shading
Deferred shadingDeferred shading
Deferred shading
 
Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2Deferred Rendering in Killzone 2
Deferred Rendering in Killzone 2
 

Recently uploaded

Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 

Recently uploaded (20)

Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 

Deferred rendering in_leadwerks_engine[1]

  • 1. Deferred Rendering in Leadwerks Engine Josh Klint CEO, Leadwerks Corporation Copyright Leadwerks Corporation 2008.
  • 2. 1.1 Introduction Deferred lighting is a relatively new rendering concept that performs lighting as a kind of post-processing step. The immediate advantage of this is that lighting is decoupled from scene complexity. Lighting is processed at the same speed whether one or 1,000,000 polygons are onscreen. Whereas a forward renderer will usually draw to a color and depth buffer, deferred shading uses an additional screen space normal buffer. The combination of normal and depth data is sufficient to calculate lighting in a post-processing step, which is then combined with the color buffer. Figure 1.0 Deferred lighting performance is independent from scene complexity. 1.2 Forward Rendering in Leadwerks Engine 2.0 Leadwerks Engine 2.0 utilized a forward renderer. In order to optimize the engine to render only the visible lights onscreen, we implemented a concept we call “shader groups”. Instead of storing a single shader per material, the engine stores an array of versions of that shader, each auto-generated using GLSL defines to control the number of lights and other settings. This approach suffered from several problems that became apparent once we started using the engine in a production environment: Each shader group had over 100 potential versions. The constant shader compiling during runtime when entering a new area caused unacceptable pauses. Although
  • 3. only a few variations ever got compiled and used, it was impossible to guess which ones would be needed. Because there were so many potential variations it was impossible to pre-compile all of these. The length of the shaders became quite long, causing slower compiling times and risked exceeding the instruction limit on older hardware. Because materials used shader groups and not single shaders, it was difficult or impossible for our end users to alter a shader uniform for material shaders. It was difficult to control per-light settings. A single global binary setting would double the number of potential shaders in a group. A per-light binary setting would multiply the shader count by 16 (two settings times a maximum of eight lights). The maximum number of lights visible at any given time was capped at eight due to hardware limitations and practicality. These issues motivated us to research a deferred approach for version 2.1 of our engine. 1.3 Deferred Rendering in Leadwerks Engine 2.1 We set out to implement a deferred renderer with a few conditions in mind. We wanted to create a minimal frame buffer format to minimize bandwidth costs, while supporting all the lighting features of our forward renderer. Additionally, we chose to perform lighting calculations in screen space rather than the world space methods used by the forward renderer. Although we did not know how performance would compare, it was certain from the beginning that deferred lighting would offer a simpler renderer that was easier to control. Additionally, the following advantages applied: Easy control of per-light settings. Does this light cast shadows? Does it create a specular reflection? Smaller shader sources and faster compiling. There are 32 potential light shaders that still get compiled on-the-fly, but the pauses this causes are much less frequent and barely perceptible. No limit to the number of lights rendered. Easy addition of new light types. Because deferred lighting only performs lighting on the final screen pixels, the same characteristic that makes deferred lighting so desirable creates a few new problems: Alpha blending becomes difficult. No MSAA hardware anti-aliasing. We found that a modulate (darken) blend can be used for most transparencies, without disrupting the lighting environment. Alpha blended materials can be drawn in a second pass, as we already do for refractive surfaces. A sort of pseudo anti-alias can be performed with a blur post-filter weighted with an edge detection filter.
  • 4. 1.31 The Frame Buffer Format It is often suggested that a deferred renderer should use a 128-bit GL_RGBA32F float buffer for recording fragment positions. We saw no need for transferring this extra data. Instead, the light shaders reconstruct the fragment screen space position from the screen coordinate and depth value. We found that a 24-bit depth buffer provided good precision for use with shadow map lookups. The fragment coordinate was used to calculate the screen space position. Here, the buffersize uniform is used to pass the screen width and height to the shader: vec3 screencoord; screencoord = vec3(((gl_FragCoord.x/buffersize.x)-0.5) * 2.0,((-gl_FragCoord.y/buffersize.y)+0.5) * 2.0 / (buffersize.x/buffersize.y),DepthToZPosition( depth )); screencoord.x *= screencoord.z; screencoord.y *= -screencoord.z; The depth was converted to a screen space z position with the following function. The camerarange uniform stores the camera near and far clipping distances: float DepthToZPosition(in float depth) { return camerarange.x / (camerarange.y - depth * (camerarange.y - camerarange.x)) * camerarange.y; } This approach allowed us to save about half the bandwidth costs a frame buffer format with a 128-bit position buffer would have required. We found that for diffuse lighting, a 32-bit GL_RGBA8 normal buffer yielded good results. However, surfaces with a high specular factor exhibited banding caused by the limited resolution. We tried the GL_RGB10_A2 format, which was precise enough for the normal, but lacked sufficient precision to store the specular value in the alpha channel. We settled on using a 64-bit GL_RGBA16F buffer on supported hardware, with a fallback for a 32-bit GL_RGBA8 buffer. Specular intensity was packed into the unused alpha channel of the normal buffer. Since graphics hardware prefers data in 32-bit packets, it is likely that the RGBA format is the same internally as the RGB format on most hardware, so this extra data transfer came at no cost. The size of the frame buffer format displayed here is either 120 or 88 bits per pixel, depending on the normal buffer format. Figure 1.1 Frame buffer format: Buffer Format Bits Values color GL_RGBA8 32 red green blue alpha depth GL_DEPTH_COMPONENT24 24 depth normal GL_RGBA16F or 64 or 32 x y z specular factor GL_RGBA8
  • 5. Since we were already using multiple render targets, we decided to add support for attaching additional color buffers. This allowed the end user to create an additional buffer for rendering selective bloom or other effects, and allows for extended rendering features without altering the engine source code. The light source for the orange point light pictured here is a good candidate for selective bloom, as our full-bright and lens flare effects did not translate well to the deferred renderer. Figure 1.2 Depth, normal, and specular factor are used to calculate diffuse lighting and specular reflection, which is then combined with the albedo color for the final image.
  • 7. Figure 1.5 Normal Figure 1.6 Specular factor
  • 8. Figure 1.7 Diffuse lighting Figure 1.8 Specular reflection
  • 9. Figure 1.9 Final image 1.32 Optimization Our engine performs hierarchal culling based on the scene graph, followed by per-object frustum culling. Hardware occlusion queries are performed on the remaining objects. This ensures that only visible lights are updated and drawn. For the remaining visible lights, it is important to process only the fragments that are actually affected by the light source. The most efficient way to eliminate fragments is to discard them before they are run through the fragment program. We copied the depth value from the depth buffer to the next render target during the first full-screen pass, which is either the ambient pass or the combined ambient and first directional light pass. Point and spot light volumes were then rendered with depth testing enabled. An intersection test detected whether the camera was inside or outside the light volume, and the polygon order and depth function were switched accordingly. Although writing to the depth buffer may disable hierarchal depth culling, an overall performance improvement was observed with depth writing and testing enabled. Further research using the stencil buffer to discard fragments may prove beneficial. 1.4 Results Our results disprove some common assumptions about deferred rendering. It is often suggested that deferred rendering is only advantageous in scenes with a high degree of
  • 10. overdraw. In every test run we found our deferred renderer to be at least 20% faster than forward lighting. Due to our compact frame buffer format, the increased bandwidth cost was only about four frames per second lost on ATI Radeon HD 3870 and NVidia GEForce 8800 graphics cards. On average we saw a performance improvement of about 50% per light onscreen. A scene with eight visible lights ran four times faster in our deferred renderer. The speed improvements of our deferred renderer were not limited to high-end hardware. We saw similar performance gains on ATI Radeon X1550 and NVidia GEForce 7200 graphics cards. Except for the aforementioned issues with MSAA and alpha blending, the appearance of our deferred renderer was identical to that of our forward renderer. Our lens flare effect was abandoned, since it interfered with lighting and could be replaced with more advanced depth-based lighting effects. 1.5 Conclusion It is inevitable that a fundamental shift in rendering paradigms will cause some incompatibility with previously utilized techniques. However, the simplicity and speed of deferred rendering far outweigh the few disadvantages. Not only did deferred lighting simplify our renderer and eliminate the problems our forward renderer exhibited, but it also yielded a significant performance improvement, even in situations where it is usually suggested a forward renderer would be faster. 1.6 References Foley, James D., Andries van Dam, Steven K. Feiner, and John F. Hughes. 1990. Computer Graphics: Principles and Practice. Addison-Wesley. Shishkovtso, Oles 2005. “GPU Gems 2. Chaper 9 - Deferred Rendering in S.T.A.L.K.E.R.” http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter09.html Valient, Michael. 2007. "Deferred Rendering in Killzone 2." Presentation at Develop Conference in Brighton, July 2007. http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf 1.7 Acknowledgements Thanks to Arne Reiners, Rich DiGiovanni, and Emil Persson.