deferred shading patrick cozzi university of pennsylvania cis 565 - fall 2014

24
Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Upload: alicia-cunningham

Post on 18-Dec-2015

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Deferred Shading

Patrick CozziUniversity of PennsylvaniaCIS 565 - Fall 2014

Page 2: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Renderer Design

Design an engine that renders lots ofObjects with different materialsDynamic lightsDifferent light types

Cleanly. Efficiently.

2

Page 3: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Forward Rendering – Multi-Pass

3

foreach light{ foreach visible object { Render using shader for this material/light;

accumulate in framebuffer; }}

Pros and cons?

Page 4: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Forward Rendering – Multi-Pass

4

One shader per material/light-type Performance

Need to do vertex transform, rasterization, material part of fragment shader, etc. multiple times for each object.

Occluded fragments are shadedNot all lights affect the entire object

Page 5: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Forward Rendering – Single Pass

5

foreach visible object{ find lights affecting object;

Render all lights and materials using a single shader;

}

Pros and cons?

Page 6: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Forward Rendering – Single Pass

6

Lots of shadersOne shader per material/light-combinationHard to author shadersMay require runtime compile/linkLong ubershader increase compile timesMore potential shaders to sort by

Same as multi-passOccluded fragments are shadedNot all lights affect the entire object

Page 7: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Deferred Rendering

7

foreach visible object{ write properties to g-buffer;}

foreach light{ compute light using g-buffer; accumulate in framebuffer;}

Pros and cons?

Page 8: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Deferred Rendering

8

Decouple lighting from scene complexity Few shaders

One per materialOne per light type

Only transform and rasterize each object once

Only light non-occluded objects

Page 9: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Deferred Rendering

9

Memory bandwidth usage - read g-buffer for each light

Recalculate full lighting equation for each light

Limited material properties in g-buffer MSAA and translucency are difficult

Page 10: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Leadwerks 2.1

10Image from http://www.leadwerks.com/files/Deferred_Rendering_in_Leadwerks_Engine.pdf

Page 11: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Leadwerks 2.1

11Image from http://www.leadwerks.com/files/Deferred_Rendering_in_Leadwerks_Engine.pdf

Page 12: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

12Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 13: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

13Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 14: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

14Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 15: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

15Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 16: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

16Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 17: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

17Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 18: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

18Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 19: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

19Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 20: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

20Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 21: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

G-Buffer Layout in Killzone 2

21Image from http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Page 22: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

Light Accumulation Pass

Geometry for each lightFull-screen quad/triangle

with scissor/stencil test3D bounding geometry. Examples:

Point light – sphere Spot light – cone Needs multiple passes. Why?

22

Page 24: Deferred Shading Patrick Cozzi University of Pennsylvania CIS 565 - Fall 2014

References

Deferred Rendering in Killzone 2 – Michal Valient http://www.guerrilla-games.com/publications/dr_kz2_rsx_dev07.pdf

Deferred Rendering in Leadwerks Engine - Josh Klint http://www.leadwerks.com/files/Deferred_Rendering_in_Leadwerks_Engine.pdf

Light Pre-Pass – Wolfgang Engel http://www.slideshare.net/cagetu/light-prepass

Compact Normal Storage for Small G-Buffers – Aras Pranckevičius http://aras-p.info/texts/CompactNormalStorage.html

24