Fast Cascade VSM

36
Fast Cascade VSM By Zhang Jian

description

Fast Cascade VSM. By Zhang Jian. Dynamic Shadow Tech. Shadow Volume. Shadow Map. Basic Algorithm. PCF. VSM. CSM. ESM. Soft Shadow. PSM. LiPSM. TSM. CSM. Perspective Alias. PSSM. 2D CSM. 3D CSM. Cascade Selection. Per Object Shadow. Deferred Shadow. Rendering Stage. Outline. - PowerPoint PPT Presentation

Transcript of Fast Cascade VSM

Page 1: Fast Cascade VSM

Fast Cascade VSM

By Zhang Jian

Page 2: Fast Cascade VSM

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

Page 3: Fast Cascade VSM

Outline1.Basic Shadow Map and problems

2.Variance Shadow Map

3.Cascade Shadow Map In Our Engine

4.Shadow Mask

Page 4: Fast Cascade VSM

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

point will be lit by the light.

Page 5: Fast Cascade VSM

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.

?

Page 6: Fast Cascade VSM

1.Shadow Map

Peter panning

Perspective Alias

Page 7: Fast Cascade VSM

1. Shadow Map

Peter panning

Self-shadow Acne

Page 8: Fast Cascade VSM

1.Shadow Map

Peter Panning

Page 9: Fast Cascade VSM

1.Shadow Map

Hard Edge

Page 10: Fast Cascade VSM

1. Shadow MapDynamic Alias:

• Unstable resolution( PSM)• Edge swimming effect

Page 11: Fast Cascade VSM

2.Variance Shadow Map

Soft Shadow

Page 12: Fast Cascade VSM

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.

Page 13: Fast Cascade VSM

2.Variance Shadow Map• Chebyshev’s inequality (when dr >

μ)

22

2

max)Pr(r

rro ddpdd

odE

222oo dEdE

Page 14: Fast Cascade VSM

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 );}

Page 15: Fast Cascade VSM

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.

Page 16: Fast Cascade VSM

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)

Page 17: Fast Cascade VSM

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

Page 18: Fast Cascade VSM

2.Variance Shadow Map

• Light leaking.– Reduce Geometry complexity, use Low

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

Page 19: Fast Cascade VSM

3. Cascaded Shadow Map

Resolution problem

Page 20: Fast Cascade VSM

Cascaded Shadow Map

Page 21: Fast Cascade VSM

Cacade Alignment

Page 22: Fast Cascade VSM

Parallel Split Shadow Map

Page 23: Fast Cascade VSM

2D CSM

Page 24: Fast Cascade VSM

Z precision problem

3D CSM

Page 25: Fast Cascade VSM

Cacade Coverage Optimization

Page 26: Fast Cascade VSM

Cacade Transition

Page 27: Fast Cascade VSM

Interlace updating

Page 28: Fast Cascade VSM

4. Shadow Mask

Just an optimization

Page 29: Fast Cascade VSM

4.Shadow Mask

Page 30: Fast Cascade VSM

Shadow Mask

• Why?– Shadow calculation can increase shader

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

• More aggressive, Postprocess shadow multiply

Page 31: Fast Cascade VSM

Shadow solution

Page 32: Fast Cascade VSM

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

Page 33: Fast Cascade VSM
Page 34: Fast Cascade VSM

Future Works

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

Page 35: Fast Cascade VSM

Q&A

Page 36: Fast Cascade VSM

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,