- 41 Views
- Uploaded on
- Presentation posted in: General

Matrix Row-Column Sampling for the Many-Light Problem

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Matrix Row-Column Sampling for the Many-Light Problem

Miloš Hašan (Cornell University)

Fabio Pellacini (Dartmouth College)

Kavita Bala (Cornell University)

- Area, indirect, sun/sky

Courtesy Walter et al., Lightcuts, SIGGRAPH 05/06

Lights (100,000)

Pixels

(2,000,000)

- Compute sum of columns
- Note: We don’t have the matrix data

Lights

= Σ (

)

Pixels

=

Σ (

)

100,000 point lights

=

Σ (

)

100,000 point lights

=

Σ (

)

100,000 point lights

- Why not sum all columns?
- With 100,000 lights, still several minutes

10 min

13 min

20 min

- Fast, accurate, GPU-based approximation
- Application: Preview for lighting design

Brute force:

10 min

13 min

20 min

Our result:

3.8 sec

13.5 sec

16.9 sec

Many lights (CPU-based):Walter et al 05/06, Ward 94, Paquette et al 98, Wald et al 03, …

Instant radiosity & related:Keller 97, Dachsbacher & Stamminger 05/06, Laine et al 07, …

Environment maps:Agarwal et al 03, Ostromoukhov et al 04, …

Precomputation-based:Sloan et al 02/03, Ng et al 03/04, Ben-Artzi et al 06, Hasan et al 06, Ritschel et al 07, …

Other global illumination:Ward et al 88, Jensen 96, Hanrahan et al 91, Christensen 97, Scheel 01/02, Gautron et al 05, Krivanek et al 06, Dachsbacher et al 07, …

- Compute small subset of elements
- Reconstruct

643 lights

900 pixels

A simple scene

30 x 30 image

The matrix

Lights

Pixels

Point-to-many-points visibility: Shadow-mapping

Point-to-point visibility: Ray-tracing

- Columns: Regular Shadow Mapping

Shadow map at light position

Surface samples

- Rows: Also Shadow Mapping!

Shadow map at sample position

- The following is possible:

compute very small subset of columns

compute weighted sum

- Use rows to choose a good set of columns!

?

how to choose columns and weights?

compute rows (explore)

choose columns and weights

compute columns (exploit)

weighted sum

Reduced columns

Choose representative columns

Reduced columns

Choose k clusters

Use the same representatives for the full matrix

Representative columns

Weighted sum

radius = norm

Reduced columns: vectors in high-dimensional space

visualize as …

Columns with various intensities can be clustered

Strong but similar columns

Weak columns can be clustered more easily

- Minimize:
- where:

total cost of all clusters

squared distance between normalized reduced columns

norms of the reduced columns

cost of a cluster

sum over all pairs in it

- Problem is NP-hard
- Not much previous research
- Should handle large input:
- 100,000 points
- 1000 clusters

- We introduce 2 heuristics:
- Random sampling
- Divide & conquer

Very fast (use optimized BLAS)

Some clusters might be too small / large

Splitting small clusters is fast

Splitting large clusters is slow

Assemble rows into reduced matrix

Cluster reduced columns

Compute rows (GPU)

Choose representatives

Weighted sum

Compute columns (GPU)

- We show 5 scenes:
- Show reference and 5x difference image
- All scenes have 100,000+ lights
- Timings
- NVidia GeForce 8800 GTX
- Light / surface sample creation not included

Kitchen

Temple

Trees

Bunny

Grand Central

5x diff

- 388k polygons
- Mostly indirect illumination
- Glossy surfaces
- Indirect shadows

Reference: 13 min (using all 100k lights)

Our result: 13.5 sec (432 rows + 864 columns)

5x diff

- 2.1m polygons
- Mostly indirect & sky illumination
- Indirect shadows

Our result: 16.9 sec (300 rows + 900 columns)

Reference: 20 min (using all 100k lights)

5x diff

- 328k polygons
- Complex incoherent geometry

Reference: 14 min (using all 100k lights)

Our result: 2.9 sec (100 rows + 200 columns)

5x diff

- 869k polygons
- Incoherent geometry
- High-frequency lighting
- Kajiya-Kay hair shader

Our result: 3.8 sec (100 rows + 200 columns)

Reference: 10 min (using all 100k lights)

5x diff

- 1.5m polygons
- Point lights between stone blocks

Our result: 24.2 sec (588 rows + 1176 columns)

Reference: 44 min (using all 100k lights)

Our result

(432 rows + 864 columns)

No exploration

(Using 1455 lights)

Equal time comparison

Our result

No exploration

Equal time comparison: 5x difference from reference

- Fast, high quality approximation for many lights
- GPU-oriented
- Sample rows to explore low-rank structure
- Sample well-chosen columns

- Application: Preview for lighting design
- Indirect illumination
- Environment maps
- Arbitrary lights and shaders

- How many rows + columns?
- Pick automatically

- Row / column alternation
- Progressive algorithm:
- stop when user likes the image

- Render multiple frames at once?

- Veronica Sundstedt and Patrick Ledda
- Temple scene

- Bruce Walter, PCG @ Cornell
- NSF CAREER 0644175
- Affinito-Stewart Award

- shoot photons from light sources
- deposit on every bounce

- treat photons as point lights
- cosine-weighted emission

…

Worst case: lights with very local contribution

Our result

(432 rows + 864 columns)

No exploration

(Using 1992 lights)

Equal time comparison

Our result

No exploration

Equal time comparison: 5x difference image