+ All Categories
Home > Documents > Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... ·...

Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... ·...

Date post: 30-Jun-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
39
RealTime Volumetric Shadows using 1D MinMax Mipmaps Frédo Durand 1 Jiawen “Kevin” Chen Wojciech Jarosz Ilya Baran MIT CSAIL Disney Research Zürich
Transcript
Page 1: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Real-­‐Time  Volumetric  Shadows  using  1D  Min-­‐Max  Mipmaps  

Frédo  Durand  

1  

Jiawen  “Kevin”  Chen  

Wojciech  Jarosz  

Ilya  Baran  

MIT  CSAIL   Disney  Research  Zürich  

Page 2: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Volumetric  scaNering  with  shadows  

Photo  by  Frédo  Durand  2  

Page 3: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Alan  Wake  by  Remedy  Entertainment  3  

Page 4: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

4  

Page 5: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen
Page 6: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

6  

Page 7: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen
Page 8: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Related  work  

•  AnalyWcal  scaNering  models  [Sun  et  al.  2005],  [Pegoraro  et  al.  2009,  2010]    – Sky  lighWng,  bloom  near  light  sources,  aNenuaWon  

– Doesn’t  account  for  visibility  

Sun  et  al.  [2005]  

8  Pegoraro  et  al.  [2010]  

Page 9: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Related  work  

•  Max  [1986]  –  AnalyWcal  integraWon  

•  Wyman  and  Ramsey  [2008]  –  Ray  marching  along  intervals  

•  Engelhardt  and  Dachsbacher  [2010]  –  Detect  disconWnuiWes,  subsample  and  interpolate  

9  

Page 10: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Related  work  

•  Billeter  et  al.  [2010]  –  Interpret  shadow  map  as  a  height  field  

– Rasterize  height  field  and  analyWcally  accumulate  scaNering  integral  

– Vertex  and  fragment  overhead  

•  We  ray  trace  instead  

10  

Page 11: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Incremental  integraWon  [Baran  et  al.  2010]  

•  Epipolar  recWficaWon  

•  SVD  approximaWon  for  smooth,  non-­‐analyWc  integrands  

•  ParWal  sum  trees  

11  

~  

Page 12: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Overview  

•  Review  of  epipolar  geometry  and  visibility  integraWon  

   •  Min-­‐max  mipmap  data  structure  

•  Results  and  discussion  

Page 13: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Epipolar  recWficaWon  

Light  direc

Won  

Epipolar  slices  

Eye  

13  

Page 14: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Epipolar  recWficaWon  

14  

Page 15: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

r  

d  

15  

Page 16: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

16  

Page 17: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

17  

8  

5  

2  

Brute  force  complexity:  O(rd)  

Page 18: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

18  

Visibility  integraWon  revisited  

View  ray:  y  =  5,  x  =  9  

Page 19: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Height  field  intersecWon  

View  ray:  y  =  5,  x  =  9  

Page 20: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

1D  Min-­‐Max  Mipmap  •  Binary  tree  of  shadow  map  depths  – Each  node  stores  min  and  max  of  children  

20  

2  9  

1  3  

6  9  

7  9  

1  9  

6  9  

1  9  

9   2   1   3   9   6   7   9  

Page 21: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

21  

Mipmap  traversal  

View  ray:  y  =  5,  x  =  9  

Page 22: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

22  

•  View  ray:  y  =  5,  x  =  9  1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  0  

Page 23: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

23  

•  View  ray:  y  =  5,  x  =  9  y:  1  ≤  5  <  9  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  0  

Page 24: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

24  

•  View  ray:  y  =  5,  x  =  9  

y:  1  ≤  5  <  9  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  0  

Page 25: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

25  

•  View  ray:  y  =  5,  x  =  9  

y:  2  ≤  5  <  9  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  0  

Page 26: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

26  

•  View  ray:  y  =  5,  x  =  9  

y:  5  <  9,  lit  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  1  

Page 27: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

27  

•  View  ray:  y  =  5,  x  =  9  

y:  5  >  2,  shadowed  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  1  

Page 28: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

28  

•  View  ray:  y  =  5,  x  =  9  

y:  5  >  3,  shadowed  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  1  

Page 29: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Mipmap  traversal  

29  

•  View  ray:  y  =  5,  x  =  9  

y:  5  <  6,  lit  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

Sum  =  5  

Page 30: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

30  

Textured  lights  and  aNenuaWon  

1  

0.9  

0.8  

0.6  

0.5  

0.4  

0.3  

Light  aNenuaWon  

0.3  

Light  texture   0.8   0.1   0.5   0.3   0.2   1   0.8   0.4  

Page 31: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Textured  lights  using  prefix  sums  

31  

1  9  

1  9  

6  9  

2  9  

1  3  

6  9  

7  9  

9   2   1   3   9   6   7   9  

0.8   0.1   0.5   0.3   0.2   1   0.8  Light  texture   0.4  

6  9  

Range:  [4,8)  

0.8   0.9   1.4   1.7   1.9   2.9   3.7  Light  CDF   4.1  0  

Page 32: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

SVD  approximaWon  

~  

A   U   SVT  

=  

+  

+  

+  

32  

Page 33: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Min-­‐Max  Mipmap  vs.  ParWal  Sum  Tree  [Baran  et  al.  2010]  

33  

2  9

1  3

6  9

7  9

1  9

6  9

1  9

9 2 1 3 9 6 7 9

2 0 1 1

2 2

4

1 1 0 0 1 0 1 0

•  StaWc  •  Stores  shadow  map  structure  

•  Dynamic  •  Stores  interval  sums  computed  so  far  

Page 34: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Equal  Wme  comparison:  Sibenik  

34  

Our  method  at  11  ms  Ray  marching  at  11  ms  

Screen  resoluWon:  1280  x  960  Shadow  map  resoluWon:  4096  x  4096  NVIDIA  GeForce  480  GTX  

Page 35: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Performance  comparison  (lower  is  beNer)  DirecWonal  light,  4K  shadow  map  

113  

286  

43  39  

78  

31  43  

29  11  

24  7  

0  

50  

100  

150  

200  

250  

300  

350  

Sibenik   Trees   Terrain  

Run1

me  (m

s)  

Ray  marching  

[Engelhardt  and  Dachsbacher  2010]  

[Baran  et  al.  2010]  

Our  method  

Page 36: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

36  

Performance  vs.  Billeter  et  al.  [2010]  Spotlight,  4K  shadow  map  

26  

93.2  

28.1  

12.5  

38.2  

9  

0  

10  

20  

30  

40  

50  

60  

70  

80  

90  

100  

Sibenik   Trees   Terrain  

Run1

me  (m

s)  

[Billeter  et  al.  2010]  

Our  method  

Page 37: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

37  

Page 38: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Discussion  •  Compared  to  Billeter  et  al.  [2010]  – Do  not  need  explicit  height  field  geometry  

– One  fragment  per  pixel  – No  processing  for  occluded  light-­‐shadow  transiWons    

•  Compared  to  Baran  et  al.  [2010]  –  StaWc  data  structure  –  Parallel  queries  –  Pixel  shaders  only  

38  38  38  

1  9  

1  9  

2  9  

9 2

1  3  

1 3

6  9  

6  9  

9 6

7  9  

7 9

Page 39: Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) › ~wjarosz › publications › ... · Real%Time)Volumetric)Shadows) using)1D)Min%Max)Mipmaps) Frédo)Durand) 1 Jiawen“Kevin”Chen

Conclusions  and  future  work  

•  Volumetric  shadows    pracWcal  for  games  

•  GPU  algorithm  design  tradeoffs  

•  Inhomogeneous  media  

39  Photo  by  Flickr  user  visualparadox  


Recommended