Point Cloud Based Interactive Global Illumination Mirko Salm
1
Structure • • • • •
Motivation Global Illumination The Algorithm Results Conclusion
2
Structure • • • • •
Motivation Global illumination The Algorithm Results Conclusion
3
Motivation • light prop. simulation essential for photo-realism • major challenge for interactive applications
complex light paths are simulated
only simple light paths are considered, resulting in a much less natural look
4
Motivation • base structure of light simulation built from irregular scene sampling (point cloud) - makes the scheme compatible with various surface representations: meshes, surfels, implicit surfaces - smooth LOD for dynamic geometry easy to realize, prevents 'light-flickering'-artifacts during LODtransitions
5
Task of the thesis • derive and implement an interactive light propagation approach • support for diffuse and glossy reflections, area light sources and dynamic scenes • based on the work of Crassin et al.: Interactive Indirect Illumination Using Voxel Cone Tracing
6
Structure • • • • •
Motivation Global Illumination The Algorithm Results Conclusion
7
Global Illumination • local illumination considers only local material properties to estimate the reflected light • global illumination considers the whole scene when estimating reflected light at a given point
light bleeding as a result of GI
8
Global Illumination • local reflection behavior combination of (ideal) diffuse and glossy reflections • ideal diffuse convenient since view-independent -> can be compactly cached
ideal diffuse
glossy reflections
both
9
Global Illumination • direct lighting: handles only the first light bounce - coherent light paths -> easy • indirect lighting: all successive events - incoherent light paths -> difficult
direct + indirect lighting
direct only
indirect only
10
Structure • • • • •
Motivation Global Illumination The Algorithm Results Conclusion
11
The Algorithm • simulates direct + indirect lighting • direct lighting: shadow mapping • indirect lighting: light propagation simulation inside alternative scene representation
direct lighting
direct + indirect lighting
12
The Algorithm • important scene information: geometry attributes • albedo: diffuse color • normal: surface direction
• opacity: amount of solid geometry geometry
point cloud
13
The Algorithm • alt. scene representation: sparse voxel octree (SVO) • voxel hierarchy built from point cloud • non-leafs: - opacity - reflected light • leaf nodes: - geometry attributes - reflected light
SVO from point cloud
14
The Algorithm • SVO advantages: - continuous sampling of geometry attributes - sampling of light info and opacity over large regions
albedo sample
original geometry
point cloud
SVO leaf nodes
15
The Algorithm • SVO advantages: - continuous sampling of geometry attributes - sampling of light info and opacity over large regions illuminated point cloud
SVO level 0
SVO level 1
SVO level 2
light sample
blend together 16
The Algorithm
SVO voxel cells of a CornellBox-like scene 17
Algorithm Overview
18
Algorithm Overview render shadowmaps
SMaps
19
Algorithm Overview render shadowmaps
SMaps
SVO update
SVO
20
Algorithm Overview render shadowmaps
SMaps
SVO update light injection SVO
21
Algorithm Overview render shadowmaps
SMaps
SVO update light injection mipmapping
SVO
22
Algorithm Overview render shadowmaps
SMaps
SVO update light injection mipmapping
SVO
light propagation
23
Algorithm Overview render shadowmaps
SMaps
SVO update light injection mipmapping
SVO
light propagation BackBuffer
final rendering 24
The Algorithm • evaluate direct lighting for all leaf nodes • based on albedo and normal • shadow mapping accounts for occlusion
render shadowmaps SVO update light injection mipmapping light propagation
final rendering
25
The Algorithm • reflected light and opacity are filtered up into non-leaf nodes • every non-leaf node averages the values of its 8 children • results in a spatial preintegration
render shadowmaps SVO update light injection mipmapping light propagation
final rendering
26
The Algorithm • for every leaf node: gather all light incident to its position • integration over hemisphere defined by nodes‘ normal • subdivide hemisphere in a couple of conic section • gather light for every cone separately
render shadowmaps SVO update light injection mipmapping light propagation
final rendering
27
The Algorithm • many cones -> good approx. but bad performance • in practice 4 cones sufficient
render shadowmaps SVO update light injection mipmapping light propagation
final rendering
28
The Algorithm • reminder: quadrilinear sampling of reflected light and opacity
render shadowmaps SVO update
SVO level 0
SVO level 1
SVO level 2
light injection mipmapping light propagation
final rendering blend together to quadrilinear sample
29
The Algorithm • approximate voxel cone tracing (VCT) : sample the SVO along given direction at decreasing mipmap-resolutions
render shadowmaps SVO update light injection mipmapping light propagation
final rendering cones (green) approximated by quadrilinear samples (sample footprints red)
30
The Algorithm • similar to ray-casting for volume rendering -> front-to-back compositing • opacity values of the samples are used to account for (partial) occlusion
render shadowmaps SVO update light injection mipmapping light propagation
final rendering
31
The Algorithm • simulates one bounce per frame -> multiple bounces of indirect diffuse lighting
direct lighting only
one bounce of indirect lighting
multiple indirect bounces 32
The Algorithm • direct lighting: local illumination model + shadow mapping • indirect lighting: sample reflected light from SVO leafs • fragment-wise VCT (one cone) for glossy reflections
render shadowmaps SVO update light injection mipmapping light propagation
final rendering
33
The Algorithm
diffuse only
one bounce of glossy reflections 34
Structure • • • • •
Motivation Global Illumination The Algorithm Results Conclusion
35
Results
CaveCloud scene; point cloud rendered with spherical surfels
36
Results
CaveCloud scene; point cloud rendered with spherical surfels
37
Results
CaveCloud scene; point cloud rendered with spherical surfels
38
Results
CaveCloud scene; point cloud rendered with spherical surfels
39
Results • light leaking artifacts along edges and through walls
leaking along edges
reference
light leaking through walls
40
Results • • • • • • • •
CaveCloud (1) scene profiling results: viewport resolution: 800x600 px SVO depth: 8 levels net: 41.8 ms (~ 24 fps) light prop.: 14.5 ms static SVO construction: 248.9 ms SVO memory consumption: 134 MB System: Intel Core2 Quad Q9550 (2.83 GHz), NVIDIA GeForce GTX 560 Ti 41
Structure • • • • •
Motivation Global Illumination The Algorithm Results Conclusion
42
Conclusion • less puristic variant of Crassin et al.s‘ approach - only one glossy bounce - no fragment-wise VCT for diffuse bounces • focus on diffuse light propagation, multiple bounces • one glossy bounce • SVO directly built from irregular scene sampling -> no assumptions about actual geometry, maps well to point cloud visualization
43
Conclusion • still expensive with regard to performance and memory consumption • SVO leads to much higher implementation effort compared to techniques that work on dense grids • for large-scale GI with consistent quality, a sparse structure can probably not be avoided • other SVO applications: soft shadows, AO, AA, DoF, collision detection -> could make maintaining a SVO more worthwhile 44