fast cascade vsm by zhang jian. dynamic shadow tech shadow volumeshadow map basic algorithm...

Post on 13-Jan-2016

310 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Fast Cascade VSM

By Zhang Jian

Dynamic Shadow TechShadow Volume Shadow MapBasic Algorithm

PCF VSM CSM ESM

Per Object Shadow Deferred Shadow

Soft Shadow

Rendering Stage

Cascade Selection

Perspective Alias PSM LiPSM TSM CSM

PSSM 2D CSM 3D CSM

Outline

1.Basic Shadow Map and problems

2.Variance Shadow Map

3.Cascade Shadow Map In Our Engine

4.Shadow Mask

1. Shadow Map• Basic Idea: If a light can see a point, the

point will be lit by the light.

1. Shadow Map

3. Done!

1.Render a texture by using light as a camera, that’s shadow map, the pixel value is depth value.

2. Transform the current position into shadow map space (light space), test if it’s occluded by corresponding shadow map pixel.

?

1.Shadow Map

Peter panning

Perspective Alias

1. Shadow Map

Peter panning

Self-shadow Acne

1.Shadow Map

Peter Panning

1.Shadow Map

Hard Edge

1. Shadow Map

Dynamic Alias:

• Unstable resolution( PSM)• Edge swimming effect

2.Variance Shadow Map

Soft Shadow

2.Variance Shadow Map

• Probability theory• dr is the current receiver depth• d0 is the random variable to represent

the occluder depth.

ror dddf Pr)(

Our goal : define some states between shadow and lit.

2.Variance Shadow Map

• Chebyshev’s inequality (when dr > μ)

22

2

max)Pr(r

rrod

dpdd

odE

222oo dEdE

2.Variance Shadow Map

• Understand VSM by your way.

float d = ( vLightSpacePos.z ) - Depth;float p_Shadow = 1;if (d > 0) { float variance = ( DepthSquare ) - ( Depth * Depth );

p_Shadow = variance / ( variance + d*d );}

VSM In Our Engine

• Render Z and Z2 into a 2 channels render target– G16R16 ( hardware filter, 1 cycle)– 4x MSAA on Xenon ( Free, No predict-tilling)– RGBA8 on PC ( may provide multiple

solutions for difference GPU)• Prefilter: 2 pass Gaussian blur• Generate Mipmaps on Xenon.• VSM shadow testing.

2.Variance Shadow Map

• The good:– Very cheap Soft shadow: Support Pre-

filter, Blur == PCF.– Much Better self shadow quality ( solve

the shadow bias perfectly) – The ability to use high quality texture

filter( trilinear, anistropic filter)

2.Variance Shadow Map• The Bad: Light leaking.

2.Variance Shadow Map

• Light leaking.– Reduce Geometry complexity, use Low

Lod for shadow caster.– Tune parameters.(remapping the result)

3. Cascaded Shadow Map

Resolution problem

Cascaded Shadow Map

Cacade Alignment

Parallel Split Shadow Map

2D CSM

Z precision problem

3D CSM

Cacade Coverage Optimization

Cacade Transition

Interlace updating

4. Shadow Mask

Just an optimization

4.Shadow Mask

Shadow Mask

• Why?– Shadow calculation can increase shader

complexity a lot.– For most case, it can avoid overdraw.

• More aggressive, Postprocess shadow multiply

Shadow solution

Result

• Memory: ~5M( 3M Vsm + 2M shadow mask)• Performance(ShadowMap+shadowMask):

– 4 cascade: 2.3-4.5 ms– 3 cascade: 1.7-3.5 ms– 2 cascade: 1.4-2.5 ms– 1 cascade: 1.0~2.0 ms

Future Works

• Optimization– Special Mesh LOD for shadow.– Unshadow sky Early out.– Shader optimization– Transparency shadow (e.g.. Smoke shadow)

Q&A

Declaration

• This is from one of my internal presentations. I implemented the shadow tech in our game engine, and shared tips and explanations here. It’s not an official paper, So I don’t have a reference docs list here,

top related