Incremental Instant Radiosity for RealTime Indirect Illumination Samuli

  • Slides: 26
Download presentation
Incremental Instant Radiosity for Real-Time Indirect Illumination Samuli Laine 1, 3 Hannu Saransaari 3

Incremental Instant Radiosity for Real-Time Indirect Illumination Samuli Laine 1, 3 Hannu Saransaari 3 Janne Kontkanen 2, 3 Jaakko Lehtinen 3, 4 Timo Aila 1, 3 1 NVIDIA Research 2 PDI/Dream. Works 3 Helsinki University of Technology 4 Remedy Entertainment

Motivation • Indirect illumination looks good Direct + constant ambient Direct + 1 bounce

Motivation • Indirect illumination looks good Direct + constant ambient Direct + 1 bounce indirect

Previous Work • Instant radiosity [Keller 97] • Interleaved sampling [Keller & Heidrich 01]

Previous Work • Instant radiosity [Keller 97] • Interleaved sampling [Keller & Heidrich 01] – Hardware implementation [Segovia et al. 06] • Large-scale interactive indirect illumination – Ingo Wald’s Ph. D thesis [Wald 04] – Precomputed transport [Kristensen et al. 05] • Reflective shadow maps, Splatting indirect illumination [Dachsbacher&Stamminger 05] x 2

Instant Radiosity Howto • Trace light paths from light source • Place virtual point

Instant Radiosity Howto • Trace light paths from light source • Place virtual point lights (VPLs) at intersections • Render scene, use VPLs as 180 o spots • Global illumination ensues

One-Bounce Indirect Illumination Tabellion and Lamorlette, SIGGRAPH 2004 • Officially close enough to full

One-Bounce Indirect Illumination Tabellion and Lamorlette, SIGGRAPH 2004 • Officially close enough to full GI solution • Terminate light paths at first intersection

Baseline 1 -Bounce Instant Radiosity • Cast a bunch of rays from the light

Baseline 1 -Bounce Instant Radiosity • Cast a bunch of rays from the light source – Rays must be distributed according to the emission function • At each hit point, construct a VPL – Render shadow map (paraboloid) – Yes, that’s a lot of shadow maps to render per frame • Gather illumination from all VPLs – Yes, that’s a lot of shadow map lookups per pixel

What to do?

What to do?

The Recipe for Success Old ingredients • Instant radiosity with single bounce • Interleaved

The Recipe for Success Old ingredients • Instant radiosity with single bounce • Interleaved sampling • Paraboloid shadow mapping New ingredients • Reuse of VPLs • . . . and that’s about it

VPL Reuse • Reuse VPLs from previous frame – Generate as few new VPLs

VPL Reuse • Reuse VPLs from previous frame – Generate as few new VPLs as possible – Stay within budget, e. g. 4 -8 new VPLs/frame + Benefit: Can reuse shadow maps! ! Disclaimer: Scene needs to be static § Note: Illumination does not lag behind

How To Reuse VPLs • Every frame, do the following: – Delete invalid VPLs

How To Reuse VPLs • Every frame, do the following: – Delete invalid VPLs – Reproject existing VPLs to a 2 D domain according to the new light source position – Delete more VPLs if the budget says so – Create new VPLs – Compute VPL intensities

2 D Domain for VPLs • Let’s concentrate on 180 o cosine-falloff spot lights

2 D Domain for VPLs • Let’s concentrate on 180 o cosine-falloff spot lights for now • Nusselt analog Uniform distribution in unit disc = Cosine-weighted directional distribution

Reprojecting VPLs • • So we have VPLs from previous frame Discard ones behind

Reprojecting VPLs • • So we have VPLs from previous frame Discard ones behind the spot light Discard ones behind obstacles Reproject the rest

Spatial Data Structures • Compute Voronoi diagram and Delaunay triangulation for the VPL point

Spatial Data Structures • Compute Voronoi diagram and Delaunay triangulation for the VPL point set

Deleting VPLs • Greedily choose the ”worst” VPL = The one with shortest Delaunay

Deleting VPLs • Greedily choose the ”worst” VPL = The one with shortest Delaunay edges

Generating New VPLs • Greedily choose the ”best” spot = The one with longest

Generating New VPLs • Greedily choose the ”best” spot = The one with longest distance to existing VPLs

Computing VPL Intensities • Since our distribution may be nonuniform, weight each VPL according

Computing VPL Intensities • Since our distribution may be nonuniform, weight each VPL according to Voronoi area

Omni Lights? ! • Perform all 2 D domain actions on the surface of

Omni Lights? ! • Perform all 2 D domain actions on the surface of unit sphere • Blunder in the paper – Surface of 3 D tetrahedralization = convex hull – Would’ve been a lot simpler and faster

Interleaved Sampling • Reduces the number of shadow map lookups per pixel • For

Interleaved Sampling • Reduces the number of shadow map lookups per pixel • For each pixel, use a subset of all VPLs • Apply geometry-aware filtering

Results • 256 VPLs in all scenes • Budget: 4 -8 new VPLs per

Results • 256 VPLs in all scenes • Budget: 4 -8 new VPLs per frame • Ge. Force 8800 GTX

Cornell Triangles: original tessellated 32 4. 4 k Resolution 1024× 7680 1600× 1200 Time

Cornell Triangles: original tessellated 32 4. 4 k Resolution 1024× 7680 1600× 1200 Time (ms) 13. 9 26. 8 FPS 65. 1 29. 7

Maze Triangles: original tessellated 55 k 63 k Resolution 1024× 7680 1600× 1200 Time

Maze Triangles: original tessellated 55 k 63 k Resolution 1024× 7680 1600× 1200 Time (ms) 15. 6 28. 6 FPS 49. 2 28. 5

Sibenik Triangles: original tessellated 80 k 109 k Resolution 1024× 7680 1600× 1200 Time

Sibenik Triangles: original tessellated 80 k 109 k Resolution 1024× 7680 1600× 1200 Time (ms) 17. 0 30. 1 FPS 48. 6 25. 9

Limitations / Future Work • Not full GI – Well, we could use entire

Limitations / Future Work • Not full GI – Well, we could use entire light paths, but that would lead to many faint VPLs – Feasible at some point in future • Diffuse surfaces only – Slightly glossy should work OK – Truly glossy won’t work

More Limitations / Future Work • Not view-dependent – Distributing VPLs should be based

More Limitations / Future Work • Not view-dependent – Distributing VPLs should be based on visual importance – Insert heuristics here • Dynamic scenes non-trivial – The shadows are wrong for less than a second when the scene changes, but still. . . – Predictive VPL generation could help

Strengths • • No precomputation Dynamic objects can receive indirect light Real-time performance Simplicity

Strengths • • No precomputation Dynamic objects can receive indirect light Real-time performance Simplicity

Thank You • Questions

Thank You • Questions