Top Banner
Deferred Rendering in Dying Light
57

Deferred rendering in Dying Light

Apr 14, 2017

Download

Software

Maciej Jamrozik
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Deferred rendering in Dying Light

Deferred Rendering in Dying Light

Page 2: Deferred rendering in Dying Light

Agenda

Deferred shading - why?

G-Buffer

Questions?

Page 3: Deferred rendering in Dying Light

Deferred shading - why?

Page 4: Deferred rendering in Dying Light

Deferred shading - why?

>250K objects

Page 5: Deferred rendering in Dying Light

Deferred shading - why?

>250K objects

Multiple materials

Page 6: Deferred rendering in Dying Light

Deferred shading - why?

>250K objects

Multiple materials

Thousands of lights

Page 7: Deferred rendering in Dying Light

Deferred shading - why?

>250K objects

Multiple materials

Thousands of lights

Day-night cycle

Page 8: Deferred rendering in Dying Light

Deferred shading - why?

>250K objects

Multiple materials

Thousands of lights

Day-night cycle

Changing weather

Page 9: Deferred rendering in Dying Light

Deferred shading - why?

Deferred Shading vs Forward Rendering

● Separated scene and lighting rendering

SCENE

Page 10: Deferred rendering in Dying Light

Deferred shading - why?

Deferred Shading vs Forward Rendering

● Separated scene and lighting rendering○ G-Buffer

SCENE

Page 11: Deferred rendering in Dying Light

Deferred Shading vs Forward Rendering

● Separated scene and lighting rendering○ G-Buffer

● Improved lighting rendering performance○ Scene complexity independency

Deferred shading - why?

Page 12: Deferred rendering in Dying Light

Deferred Shading vs Forward Rendering

● Separated scene and lighting rendering○ G-Buffer

● Improved lighting rendering performance○ Scene complexity independency

○ Object material & geometry complexity independency

Deferred shading - why?

Page 13: Deferred rendering in Dying Light

Deferred shading - why?

Deferred Shading vs Forward Rendering

● Separated scene and lighting rendering○ G-Buffer

● Improved lighting rendering performance○ Scene complexity independency

○ Object material & geometry complexity independency

● Simpler rendering pipeline○ Easy light handling

Page 14: Deferred rendering in Dying Light

Deferred shading - why?

Deferred Shading vs Forward Rendering

● Separated scene and lighting rendering○ G-Buffer

● Improved lighting rendering performance○ Scene complexity independency

○ Object material & geometry complexity independency

● Simpler rendering pipeline○ Easy light handling

○ No material-light litght shader combinations

Page 15: Deferred rendering in Dying Light

Deferred shading - why?

Not only lights

● Complex materials

● Scene overdraw

● Consistency

● Lighting model independency

● Deferred Linear Space

Page 16: Deferred rendering in Dying Light

Deferred shading - why?

Not only lights

● Complex materials

● Scene overdraw

● Consistency

● Lighting model independency

● Deferred Linear Space

Page 17: Deferred rendering in Dying Light

Deferred shading - why?

Not only lights

● Complex materials

● Scene overdraw

● Consistency

● Lighting model independency

● Deferred Linear Space

Page 18: Deferred rendering in Dying Light

Deferred shading - why?

Not only lights

● Complex materials

● Scene overdraw

● Consistency

● Lighting model independency

● Deferred Linear Space

Page 19: Deferred rendering in Dying Light

Deferred shading - why?

Not only lights

● Complex materials

● Scene overdraw

● Consistency

● Lighting model independency

● Deferred Linear Space

Page 20: Deferred rendering in Dying Light

G-Buffer

Page 21: Deferred rendering in Dying Light

G-Buffer

LimitationsX Y Z W

R G B A

Z-Buffer

Page 22: Deferred rendering in Dying Light

G-Buffer

LimitationsX Y Z W

R G B A

Page 23: Deferred rendering in Dying Light

G-Buffer

Limitations

Needs (PBR)

X Y Z W

R G B A

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

Page 24: Deferred rendering in Dying Light

G-Buffer

How?X Y Z W

R G B A

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

?

Page 25: Deferred rendering in Dying Light

G-Buffer

How?

Solutions

● Lower resolution

X Y Z W

R G B A

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

?

Page 26: Deferred rendering in Dying Light

G-Buffer

How?

Solutions

● Lower resolution

● Spherical Normals

X Y Z W

R G B A

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

?

Page 27: Deferred rendering in Dying Light

G-Buffer

How?

Solutions

● Lower resolution

● Spherical Normals

● YUV

X Y Z W

R G B A

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

?

Page 28: Deferred rendering in Dying Light

G-Buffer

How?

Solutions

● Lower resolution

● Spherical Normals

● YUV

● ?

X Y Z W

R G B A

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

?

Page 29: Deferred rendering in Dying Light

G-Buffer

● Specular & Diffuse

Page 30: Deferred rendering in Dying Light

G-Buffer

● Specular & Diffuse

● PBR Materials○ Metals

○ Dielectrics

Specular Diffuse

Metals brightcolorful black

Dielectrics darkmonochromatic

full rangecolorful

Page 31: Deferred rendering in Dying Light

G-Buffer

● Specular & Diffuse

● PBR Materials○ Metals

○ Dielectrics

● Conclusions○ Metals needs only RGB

○ Dielectrics needs only RGB + Gray

○ Non-overlaping ranges

Specular Diffuse

Metals brightcolorful black

Dielectrics darkmonochromatic

full rangecolorful

Page 32: Deferred rendering in Dying Light

G-Buffer

● Specular & Diffuse

● PBR Materials○ Metals

○ Dielectrics

● Conclusions○ Metals needs only RGB

○ Dielectrics needs only RGB + Gray

○ Non-overlaping ranges

● PBR needs (real)

Specular Diffuse

Metals brightcolorful black

Dielectrics darkmonochromatic

full rangecolorful

RGB Alpha

Metal specular color 0 (black)

Dielectric diffuse color Dielectric specular

Page 33: Deferred rendering in Dying Light

G-Buffer

● Specular & Diffuse

● PBR Materials○ Metals

○ Dielectrics

● Conclusions○ Metals needs only RGB

○ Dielectrics needs only RGB + Gray

○ Non-overlaping ranges

● PBR needs (real)○ Lossless

Specular Diffuse

Metals brightcolorful black

Dielectrics darkmonochromatic

full rangecolorful

RGB Alpha

Metal specular color 0 (black)

Dielectric diffuse color Dielectric specular

Page 34: Deferred rendering in Dying Light

G-Buffer

● Encoding

rgb = dielectric ? diffuse.rgb : specular.rgb

alpha = dielectric ? specular.g : 0.0

Page 35: Deferred rendering in Dying Light

G-Buffer

● Encoding

rgb = dielectric ? diffuse.rgb : specular.rgb

alpha = dielectric ? specular.g : 0.0

● Decoding

Specular = (alpha > 0.0) ? alpha : rgb;

Diffuse = (alpha > 0.0) ? rgb : 0.0;

Page 36: Deferred rendering in Dying Light

G-Buffer

Specular & Diffuse

Normal (XYZ)

Specular (RGB)

Diffuse (RGB)

Roughness

Human Skin Translucency Leaves

Page 37: Deferred rendering in Dying Light

G-Buffer

Specular & Diffuse

Normal (XYZ)

Specular/Diffuse (RGB) Specular (SD)

Roughness

Human Skin Translucency Leaves

Page 38: Deferred rendering in Dying Light

G-Buffer

Specular & Diffuse

RoughnessNormal (XYZ)

Specular/Diffuse (RGB) Specular (SD)

Roughness

Human Skin Translucency Leaves

Page 39: Deferred rendering in Dying Light

G-Buffer

Specular & Diffuse

Roughness

Masks

● subsurface scattering

● dielectrics only

● binary values

● exclusive

Normal (XYZ) Roughness

Specular/Diffuse (RGB) Specular (SD)

Human Skin Translucency Leaves

Page 40: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - human skinNormal (XYZ) Roughness

Specular/Diffuse (RGB) Specular (SD)

Human Skin Translucency Leaves

Page 41: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - human skin

M Dielectric Specular

0 1 255

Page 42: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - human skin

M Dielectric Specular H

0 1 254 255

Page 43: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - translucency

● simple subsurface scattering

M Dielectric Specular H

0 1 254 255

Page 44: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - translucency

● simple subsurface scattering● varying specular

M Dielectric Specular H

0 1 254 255

Page 45: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - translucency

● simple subsurface scattering● varying specular● signed format?

M Dielectric Specular H

0 1 254 255

Page 46: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - translucency

● simple subsurface scattering● varying specular● signed format?● encoding/decoding - single mad instruction (alpha * 2.0 - 1.0)

H Translucent Dielectric Specular M M Dielectric Specular H

0 1 126 127 128 129 254 255

-1.0 0.0 1.0

Page 47: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - translucency

● simple subsurface scattering● varying specular● signed format?● encoding/decoding - single mad instruction (alpha * 2.0 - 1.0)● encoded specular inversion - abs()

H Translucent Dielectric Specular M M Dielectric Specular H

0 1 max min 126 127 128 129 min max 254 255

-1.0 0.0 1.0

Page 48: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - leaves

● simplified lighting for tree crowns

H Translucent Dielectric Specular M M Dielectric Specular H

0 1 max min 126 127 128 129 min max 254 255

-1.0 0.0 1.0

Page 49: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - leaves

● simplified lighting for tree crowns● no specular

H Translucent Dielectric Specular M M Dielectric Specular H

0 1 max min 126 127 128 129 min max 254 255

-1.0 0.0 1.0

Page 50: Deferred rendering in Dying Light

G-Buffer

Diffuse/Specular alpha channel - leaves

L Translucent Dielectric Specular M M Dielectric Specular H

0 1 max min 126 127 128 129 min max 254 255

-1.0 0.0 1.0

Page 51: Deferred rendering in Dying Light

Final layout (almost)Normal (XYZ) Roughness

Specular/Diffuse (RGB) M/SD/H/T/L

G-Buffer

Page 52: Deferred rendering in Dying Light

G-Buffer

Final layoutNormal (XYZ) M/SD/H/T/L

Specular/Diffuse (RGB) Roughness

Page 53: Deferred rendering in Dying Light

G-Buffer

Final layout - summary

● simple (en)coding Normal (XYZ) M/SD/H/T/L

Specular/Diffuse (RGB) Roughness

Page 54: Deferred rendering in Dying Light

G-Buffer

Final layout - summary

● simple (en)coding

● slim

Normal (XYZ) M/SD/H/T/L

Specular/Diffuse (RGB) Roughness

Page 55: Deferred rendering in Dying Light

G-Buffer

Final layout - summary

● simple (en)coding

● slim

● lossless

Normal (XYZ) M/SD/H/T/L

Specular/Diffuse (RGB) Roughness

Page 56: Deferred rendering in Dying Light

G-Buffer

Final layout - summary

● simple (en)coding

● slim

● lossless

● PBR correct

Normal (XYZ) M/SD/H/T/L

Specular/Diffuse (RGB) Roughness

Page 57: Deferred rendering in Dying Light

Questions?