deferred shading - tume-maailm.pri.eetume-maailm.pri.ee/ylikool/computergraphicsseminar... ·...

38
Deferred Shading Rasmus Vahtra, Andres Traks

Upload: others

Post on 18-Sep-2020

23 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Other effects: Screen Space Ambient Occlusion

(SSAO)

http://john-chapman-graphics.blogspot.co.uk/2013/01/ssao-tutorial.html