low overhead probe- based global illumination using ray
TRANSCRIPT
Low Overhead Probe- based Global Illumination Using Ray Tracing Jens Fursund
2 @PowerVRInsider │ #idc15 facebook.com/imgtec
Why Global Illumination (GI)?
3 @PowerVRInsider │ #idc15 facebook.com/imgtec
Why Global Illumination (GI)?
4 @PowerVRInsider │ #idc15 facebook.com/imgtec
What makes GI challenging?
5 @PowerVRInsider │ #idc15 facebook.com/imgtec
Mobile real-time GI?
6 @PowerVRInsider │ #idc15 facebook.com/imgtec
How do we do GI today?
High cost
Low dynamism
Path tracing
Light mapping
Probes
Voxel-based techniques
Screen-space GI Low fidelity
7 @PowerVRInsider │ #idc15 facebook.com/imgtec
Path-tracing
8 @PowerVRInsider │ #idc15 facebook.com/imgtec
Screen-space GI
[SSDO]
9 @PowerVRInsider │ #idc15 facebook.com/imgtec
Lightmapping
10 @PowerVRInsider │ #idc15 facebook.com/imgtec
Voxels
[VCT]
11 @PowerVRInsider │ #idc15 facebook.com/imgtec
Probes
[LPT]
12 @PowerVRInsider │ #idc15 facebook.com/imgtec
Storing light directions
13 @PowerVRInsider │ #idc15 facebook.com/imgtec
Storing light directions
14 @PowerVRInsider │ #idc15 facebook.com/imgtec
Spherical Harmonics (SH)
[SHT]
15 @PowerVRInsider │ #idc15 facebook.com/imgtec
Using SH in games
[LPT] [SAS]
16 @PowerVRInsider │ #idc15 facebook.com/imgtec
SH Probes in Real-time?
17 @PowerVRInsider │ #idc15 facebook.com/imgtec
Baking probes
18 @PowerVRInsider │ #idc15 facebook.com/imgtec
Baking probes
19 @PowerVRInsider │ #idc15 facebook.com/imgtec
Classic SH Baking
20 @PowerVRInsider │ #idc15 facebook.com/imgtec
Direct to SH
21 @PowerVRInsider │ #idc15 facebook.com/imgtec
Real-time Probe Baking
color = colorprevious⋅ weight + colorcurrent ⋅ ( 1 - weight )
22 @PowerVRInsider │ #idc15 facebook.com/imgtec
Shadowed probes
23 @PowerVRInsider │ #idc15 facebook.com/imgtec
Probe interpolation
24 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tetrahedral interpolation
[LPT]
25 @PowerVRInsider │ #idc15 facebook.com/imgtec
Tetrahedral interpolation
[LPT]
26 @PowerVRInsider │ #idc15 facebook.com/imgtec
Inverse distance weighted interpolation
27 @PowerVRInsider │ #idc15 facebook.com/imgtec
Inverse distance weighted interpolation
DEMO
29 @PowerVRInsider │ #idc15 facebook.com/imgtec
Indirect occlusion
30 @PowerVRInsider │ #idc15 facebook.com/imgtec
Indirect occlusion
31 @PowerVRInsider │ #idc15 facebook.com/imgtec
Probe occlusion
32 @PowerVRInsider │ #idc15 facebook.com/imgtec
Probe occlusion
33 @PowerVRInsider │ #idc15 facebook.com/imgtec
Reducing ray count
34 @PowerVRInsider │ #idc15 facebook.com/imgtec
Bilateral upscaling
35 @PowerVRInsider │ #idc15 facebook.com/imgtec
Bilateral upscaling
36 @PowerVRInsider │ #idc15 facebook.com/imgtec
Bilateral upscaling
37 @PowerVRInsider │ #idc15 facebook.com/imgtec
Temporal reprojection filter
Previous camera
Current camera
[REP][STF]
38 @PowerVRInsider │ #idc15 facebook.com/imgtec
Temporal reprojection filter
Previous camera
Current camera
[REP][STF]
39 @PowerVRInsider │ #idc15 facebook.com/imgtec
Temporal reprojection filter
Previous camera
Current camera
[REP][STF]
40 @PowerVRInsider │ #idc15 facebook.com/imgtec
Bilateral blur
[FRI]
41 @PowerVRInsider │ #idc15 facebook.com/imgtec
Pipeline overview
Sample probes
Bilateral blur
Temporal filter
Bilateral blur
Bilateral upscale
Progressive sub-realtime probe-rendering
[FRI]
DEMO
43 @PowerVRInsider │ #idc15 facebook.com/imgtec
Render Stats ▪ 6 passes total ▪ 1-pixel * 9 SH per probe ▪ Low-res buffer size is multiplied by the amount of SH coefficients (so e.g.
9 SH gives 192x192 * 9 in low-res buffer ) ▪ Multiple accumulation targets for storing SH coefficients ( no need to
render more than once )
44 @PowerVRInsider │ #idc15 facebook.com/imgtec
Render Stats In Sponza scene: ▪ 2K rays per probe (48 probes in this case, one bounce, one light), can be
amortized across multiple frames ▪ 4.5 rays per low-res buffer pixel ▪ In total a 2K resolution GI render is approximately 0.8 rays per pixel
45 @PowerVRInsider │ #idc15 facebook.com/imgtec
Future improvements ▪ Culling probe update based on body centered LOD ▪ Automatic placement of probes ▪ Better bilateral upsampling with normals ▪ Better probe occlusion method ▪ Trace against lower LOD ▪ Extracting SH dominant light direction for specular ▪ Using dominant light direction for indirect occlusion
46 @PowerVRInsider │ #idc15 facebook.com/imgtec
Next-gen mobile GI
47 @PowerVRInsider │ #idc15 facebook.com/imgtec
Thank you!
Jens Fursund [email protected]
@jensfursund
48 @PowerVRInsider │ #idc15 facebook.com/imgtec
www.imgtec.com/idc
50 @PowerVRInsider │ #idc15 facebook.com/imgtec
References [SHT] Spherical Harmonic Lighting: The Gritty Details, Robin Green [FRI] Tech Feature: SSAO and Temporal Blur, Frictional Games [LPT] Light Probe Interpolation Using Tetrahedral Tessellations, Robert Cupisz [VCT] Interactive Indirect Illumination Using Voxel Cone Tracing, Crassin et al [SSDO] Approximating Dynamic Global Illumination in Image Space, Ritschel et al [SAS] Screen Space Spherical Harmonic Lighting, Steve Anichini [REP] Accelerating Real-Time Shading with Reverse Reprojection Caching, Nehab et al [STF] Stable SSAO in Battlefield 3 with Selective Temporal Filtering, Bavoil et al