![Page 1: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/1.jpg)
Deferred ShadingRasmus Vahtra, Andres Traks
![Page 2: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/2.jpg)
![Page 3: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/3.jpg)
![Page 4: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/4.jpg)
Forward rendering
(non-deferred shading)
![Page 5: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/5.jpg)
Forward rendering
(non-deferred shading)
![Page 6: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/6.jpg)
Forward rendering
(non-deferred shading)
![Page 7: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/7.jpg)
Forward rendering
(non-deferred shading)
Depth culling
![Page 8: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/8.jpg)
Forward rendering
(non-deferred shading)
![Page 9: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/9.jpg)
Forward shader: Vertex Shader (VS)
VS PS
![Page 10: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/10.jpg)
Forward shader: Pixel Shader (PS)
VS PS
![Page 11: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/11.jpg)
Complexity of forward rendering
For each light:
For each object:
Render()
Blend results together
![Page 12: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/12.jpg)
Deferred shading
Shading done in a separate rendering pass
Pass 1: Render object data into buffers
Pass 2: Do lighting/shading
VS PS
VS
PS
![Page 13: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/13.jpg)
Deferred shading:
1) collect data into intermediate textures
![Page 14: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/14.jpg)
Deferred shading:
1) collect data into intermediate textures
![Page 15: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/15.jpg)
Deferred shading:
1) collect data into intermediate textures
Depth culling
![Page 16: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/16.jpg)
Deferred shading:
1) collect data into intermediate textures, done
Don’t care about geometry anymore
![Page 17: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/17.jpg)
Deferred shader: Vertex Shader (pass 1)
VS PS
![Page 18: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/18.jpg)
Deferred shader: Pixel Shader (pass 1)
VS PS
![Page 19: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/19.jpg)
Deferred shading:
1) collect data into intermediate textures, done
![Page 20: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/20.jpg)
Deferred shading:
2) Draw a full-screen quad
UV = (0, 0)
(0, 1) (1, 1)
(1, 0)
![Page 21: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/21.jpg)
Deferred shader: Pixel Shader (pass 2)
![Page 22: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/22.jpg)
Review
VS PS
VS PS
VS
PS
Forward rendering:
Deferred shading:
![Page 23: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/23.jpg)
Complexity of deferred rendering
For each object:
Render geometry data
Then shade each pixel on screen exactly once
![Page 24: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/24.jpg)
Deferred shading: VS
Pass 2) Draw a full-screen quad
ID TexCoord Position
0 (0, 0) (-1, 1, 0, 1)
1 (1, 0) (1, 1, 0, 1)
2 (0, 1) (-1, -1, 0, 1)
3 (1, 1) (1, -1, 0, 1)
VS
PS
![Page 25: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/25.jpg)
Full screen triangle
UV = (0, 0)
(0, 1)
(1, 0)
(1, 1)
(0, 2)
(2, 0)
A bit faster than a quad
![Page 26: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/26.jpg)
G-buffer
R G B A
Diffuse RGB -
Normal XYZ -
Depth (32-bit)
• 1920 x 1080 x 3 x 32 bits = 24 MB
![Page 27: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/27.jpg)
G-buffer: extra attributes
Battlefield 3
Killzone 2
![Page 28: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/28.jpg)
Packing normals
http://aras-p.info/texts/CompactNormalStorage.html
𝑛. 𝑥2 + 𝑛. 𝑦2 + 𝑛. 𝑧2 = 1
Works only with normalized view-space normals!
![Page 29: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/29.jpg)
Anti-aliasing
Edge-detect
Blur if edge detected
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter09.html
![Page 30: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/30.jpg)
Transparent objects?
Render them after the deferred pass
using forward shading
![Page 31: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/31.jpg)
Deferred lighting
![Page 32: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/32.jpg)
Modifying the G-buffer for
deferred lighting
R G B A
Diffuse RGB -
Normal XYZ -
Depth (32-bit)
Light Accumulation RGB -
![Page 33: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/33.jpg)
Deferred lighting: G-Buffer
![Page 34: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/34.jpg)
Light Stencil Volumes
Each point light area is bounded by a sphere (approximate)
![Page 35: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/35.jpg)
Light Stencil Volumes
Each point light area is bounded by a sphere (approximate)
![Page 36: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/36.jpg)
Light Stencil Volumes
Each point light area is bounded by a sphere (approximate)
![Page 37: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/37.jpg)
Stencil shapes of lights
Fullscreen quad Fullscreen quad
Sphere Cone
http://www.okino.com/new/toolkit/1-14.htm
![Page 38: Deferred Shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/ComputerGraphicsSeminar... · Deferred shading: 1) collect data into intermediate textures, done Don’t care about](https://reader034.vdocuments.us/reader034/viewer/2022051906/5ff95bbe3e881f4f6528484f/html5/thumbnails/38.jpg)
Other effects: Screen Space Ambient Occlusion
(SSAO)
http://john-chapman-graphics.blogspot.co.uk/2013/01/ssao-tutorial.html