advances in real-time rendering in games. pre-integrated skin shading eric penner

92

Click here to load reader

Upload: abigayle-tine

Post on 31-Mar-2015

318 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Page 2: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Pre-integrated Skin ShadingEric Penner

Page 3: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Page 4: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Overview

Intro to SSS

TSD Approaches to SSS

Our Approach - Pre-Integrated Skin Shading

Extra time? Two Tricks for character shadows Masked Variance Shadow Maps

PCF2 using Pixel Quad Messages (16x depth samples)

Page 5: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

Texture Space Diffusion (Borshukov et al.)

Page 6: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

Texture Space Diffusion (Borshukov et al.)

Gaussian Blur / Wrap lighting(Gosselin/Green)

Page 7: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

Texture Space Diffusion (Borshukov et al.)

Gaussian Blur / Wrap lighting(Gosselin/Green)

Efficient Rendering of Human Skin (d’Eon et al.)

Page 8: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

NVIDIA Human Head Gold standard for quality in real-time

Helps to have high quality head scan

Page 9: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

GPU Gems 3 - Diffusion Profile

Page 10: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

GPU Gems 3 - Diffusion Profile

Page 11: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Subsurface Scattering - TSD

NVIDIA Human Head Gold standard for quality in real-time

Lots of 10242 or 20482 maps

Many Gaussian blur passes

Take Home Messages Linear Lighting! Needs Good Spec! (multiple lobes)

Skin diffusion is not Gaussian (two pass blur isn’t enough)

Page 12: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Fast Subsurface Scattering

Fast Subsurface Scattering

ShaderX7 (Hable et al.)

Make a custom jittered kernel

Unique weights for r/g/bfloat3 blurJitteredWeights[13] = { { 0.220441, 0.437000, 0.635000 }, { 0.076356, 0.064487, 0.039097 }, { 0.116515, 0.103222, 0.064912 }, { 0.064844, 0.086388, 0.062272 }, ....};

float2 blurJitteredSamples[13] = { { 0.000000, 0.000000 }, { 1.633992, 0.036795 }, { 0.177801, 1.717593 }, { -0.194906, 0.091094 }, ....};

Page 13: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Fast Subsurface Scattering

Fast Subsurface Scattering

ShaderX7 (Hable et al.)

Make a custom jittered kernel

Unique weights for r/g/b

Uncharted 2

Page 14: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Fast Subsurface Scattering

Remaining Problems Much better performance, but still expensive

Doesn’t scale (10 heads/body-parts = 20 light-maps)

Seams in UV space

Light-map resolution

Banding due to inadequate samples

Page 15: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Screen Space SSS

Screen-Space Subsurface Scattering(Jiminez et al.)

Do the blur in screen-space

More scalable, but high fixed cost

Requires deferred renderer

Adds many G-buffer channels

Too many ‘S’s?

Page 16: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Pre-Integrated Skin Shading

Goal: A simple pixel shader All inputs stored locally in texture/bump maps (no blur passes)

Key Observation: Scattering isn’t visible everywhere

Occurs near changes in incident light (light gradients)

Strategy: Find light gradients and pre-integrate scattering

Page 17: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Constant incident light: Do nothing!

Page 18: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Small Surface Bumps

Page 19: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Small Surface Bumps

Page 20: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Page 21: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Three Problems to Solve

Page 22: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Three Problems to Solve

1.) Surface Curvature

2.) Small Surface Bumps

3.) Shadows

Page 23: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Three Problems to Solve

1.) Surface Curvature

Page 24: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Diffuse Lambertian fall-off (dot(N,L)) Causes incident light gradient

Why not bake scattering in modified dot(N,L)? Wrap lighting (GPU Gems 1)

ATI Skin Fall-Off

Half-Life Fall-Off

Page 25: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Problems with wrap lighting? Not based on real skin diffusion profiles

Biggest problem: doesn’t account for curvature/thickness!

Page 26: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Problem: Not based on real skin diffusion profile Solution: Pre-blur diffuse BRDF with skin profile

Page 27: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Problem: Not based on real skin diffusion profile Solution: Pre-blur diffuse BRDF with skin profile

Problem: Doesn’t account for surface curvature Solution: Parameterize BRDF with curvature

Page 28: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

How do we pre-integrate the diffuse BRDF?

Profile

Page 29: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Integrate all incoming light on a sphere(or a ring, it’s easier)

Profile

Page 30: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Let see look at some results!

Page 31: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Wrap Lighting GPU Gems 1 Gamma space lighting No tone-mapping

Page 32: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Wrap Lighting More recent (used today) Linear lighting Filming Tone-mapping

Page 33: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Wrap Lighting More recent (used today) Linear lighting Filming Tone-mapping

B/G/R Cutoffs

are clearly visible

Page 34: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Pre-integrated scattering Linear lighting Filmic tone-mapping

Page 35: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

How does curvature help?

Page 36: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

How does curvature help? Look at nose vs. forehead

Page 37: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Let’s decrease the size

Page 38: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Let’s decrease the size

Page 39: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Light scatters right through. Now let’s increase size

Page 40: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Page 41: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Page 42: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Flatter surfaces have less

visible scattering

Page 43: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

Now bake everything!

Page 44: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

So where do we get curvature (1/radius)

Page 45: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

So where do we get curvature (1/radius) Similar triangles and derivatives.

Page 46: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

So where do we get curvature (1/radius) Similar triangles and derivatives.

c = length(fwidth(N)) / length(fwidth(pmm))

Page 47: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDF

So where do we get curvature (1/radius) Similar triangles and derivatives.

Derivatives are constant within a triangle Sometimes this is fine

If edges appear, store curvature in vertices or texture

Page 48: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Three Problems to Solve

1.) Surface Curvature

Pre-integrated curvature-based BRDF

2.) Small Surface Bumps

Page 49: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

BRDF works for smooth curvy surfaces What about small bumps in normal maps?

Light should scatter past several surface bumps

Using curvature breaks down at small sizes

Let’s focus only on normals now

Page 50: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

With a normal map we can sample neighbourhood We could take many samples, light, weight and accumulate

Or, can we pre-filter the normal map? Pre-filtering dot(N,L) is correct

Pre-filtering max(0,dot(N,L)) isn’t strictly correct (but it’s close)

LEAN/CLEAN mapping does this for specular

Page 51: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

Tangent:

Normal maps can be acquired (Ma et al. 2007)

One technique applies light gradients to capture normals

Different light colours produced different captured normals

Page 52: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

Ma et al. 2007 - Rapid Acquisition of Specular and Diffuse Normal Maps

Page 53: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

Ma et al. 2007 - Rapid Acquisition of Specular and Diffuse Normal Maps

Page 54: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

Ma et al. 2007 - Rapid Acquisition of Specular and Diffuse Normal Maps

Page 55: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

Ma et al. 2007 - Rapid Acquisition of Specular and Diffuse Normal Maps

Page 56: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Per-Channel Bent Normals

We don’t need captured normals to use this technique Start with ‘true’ normal map (spec) Pre-filter new normal maps with R/G/B skin profiles Optimally we need 4 normals now

R/G/B and Spec

Looks great! Lots of memory!

Page 57: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Bent Normals (Optimized)

A.) Use geometry and spec normals (blend the rest)

Only works for certain art!

Normal map must contain only details (wrinkles/pores)

B.) Use two normal samples (blend the rest)

Works for all art!

One normal-map, two samplers

Clamp one sampler at blurred mip threshold

Page 58: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Bent Normals - Results

Without bent normals With bent normals

Page 59: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Bent Normals - Results

Now we have pretty good solutions for: Curvy but smooth surfaces (pre-integrated BRDF)

Flat but bumpy surfaces (pre-integrated normal maps)

These complement each other BRDF chosen from prevailing curvature (geometry)

Broad scattering from dominant surface

Bent normals fill in the gaps Fine-grained scattering of local details

Page 60: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Three Problems to Solve

1.) Surface Curvature

Pre-integrated curvature-based BRDF

2.) ‘Small’ Surface Bumps

Pre-integrated bent normals

3.) Shadows

Pre-integrated shadow penumbrae

Page 61: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

What about shadows? Shadows also give skin a characteristic look Seems more difficult:

Shadows depend on arbitrary occluders

Can fall anywhere on the surface

Page 62: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Turns out we can apply a very similar technique Other approaches have used a texture lookup to mimic

the look of skin(GDC 2005, Tatarchuk)

In our work we apply the diffusion profiles

Page 63: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Turns out we can apply a very similar technique This is the shadow from a box filter

S(x)

Page 64: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Turns out we can apply a very similar technique This is the shadow from a box filter

Given the shadow valueS(x)

Page 65: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Turns out we can apply a very similar technique This is the shadow from a box filter

Given the shadow value

Invert the penumbra blur function

S(x)

S-1(x)

Page 66: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Turns out we can apply a very similar technique This is the shadow from a box filter

Given the shadow value

Invert the penumbra blur function

Find the position within the shadow

S(x)

S-1(x)

Page 67: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Map to a smaller shadow with room for scattering

Page 68: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Apply similar integration as our diffuse

Page 69: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Pre-integrate for different penumbra size (eg. due to slope)

Page 70: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

Let’s look at some results compared to TSD

Page 71: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in GamesTSD

Pre-Integrated

Page 72: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Results

TSD

Page 73: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Results

Pre-Integrated

Page 74: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Results Diffuse

Page 75: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Results TSD

Page 76: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Results Pre-Integrated

Page 77: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows

We need a wide penumbra to get lots of scattering We used two different shadow techniques

In both cases it really helps to use extra shadow maps We can cheat: only render the head, not the whole scene

Can be as low as 642 for one head (preferably 1282)

Page 78: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows - PCF

1.) Pixel Quad Amortization (16 shadow map texels per sample!)

Pixels are rendered in quads – quad pixels can share work!

8x8 PCF in 4 samples!

Requires Nvidia card (but DX11 ‘fine’ ddx/ddy might fix that)

Tell me if you try it with DX11 hardware!!

See GPU Pro 2 for details

Page 79: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Shadows - VSMs

2.) Masked Variance Shadow maps Render only the head into it’s own small variance shadow map

‘Background’ causes bad variance artifacts!

Include an extra channel as background mask (eg. A2B10G10R10)

Blur the variance shadow map and mask

Correct variance sample to remove the background percentage

Correct the shadow calculation accordingly

Background percentage = not shadowed

Page 80: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

All the images today use filmic tone-mapping Certain shots (eg. sunlight) need a lot of light Scattering occurs at the dark end of dynamic range

If we try capture the bright light

We invariably crush the darks into a small dynamic range

In summary, we need high dynamic range! And a way to map it nicely to a LDR display

Page 81: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

Kodak film

response curves This is a nice

approximation: (Hejl 2009)

x = max(0, LinearColor-0.004);

GammaColor = (x*(6.2*x+0.5))/

(x*(6.2*x+1.7)+0.06);

Page 82: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

Without filmic tonemap 1x intensity Larger size Boring!

Page 83: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

Without filmic tonemap 4x intensity More interesting, but!

Saturated (clamped to 1.0)

Less saturated blacks

Page 84: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

With filmic tonemap 4x intensity

Saturated blacks

Page 85: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

Without filmic tonemap

Page 86: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

With filmic tonemap

Page 87: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

Digital cameras also have

this problem!

Left side is desired look Right side is blown out

Film is much better

Page 88: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Filmic Tone-mapping

Varying size

and intensity

by powers of two

Still 251/255

Page 89: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Pre-Integrated Skin Shading

Future work: Approximate lookup textures with curve fitting

Use additional axis of curvature in diffuse fall-off

Include transmittance techniques

When the detailed normal map gets blurred, we lose the small scattering effects from our normal map technique. Possibly we should bias the curvature lookup to account for this in the BRDF.

Page 90: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Pre-Integrated Skin Shading

Thanks to: George Borshukov

Natalya Tatarchuk

Google (where I work now)

Everyone at Electronic Arts (where I used to work)

Page 91: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Page 92: Advances in Real-Time Rendering in Games. Pre-integrated Skin Shading Eric Penner

Advances in Real-Time Rendering in Games

Curvature: Pre-Integrated BRDFs

Integrate all incoming light on a sphere(or a ring, it’s easier)

Profile Oops! saturate(cos())!