Bidirectional Lightcuts

Bruce Walter, Pramook Khungurn, Kavita Bala

A presentation by:

Ranveer Aggarwal &

    Abhinav Gupta      

Guide: Prof. Parag Chaudhuri 

Introduction

  • We all love a fast noise-free rendering algorithm which handles all materials and phenomena.
  • General unbiased algorithms: Noise! Eg. Path tracing
  • Specialized noise-free algorithms: Bias! Eg. Instant Radiosity

Preliminaries

Bidirectional Path Tracing

  • Follow paths from both the eye and the light and join them to form a complete path.
  • Works better than normal path tracing.
  • Induces noise and needs large number of samples to converge.

VPLs

Virtual Point Lights: Recursively trace a direction from light source. Generate VPL at every hit with reducing intensity.

VPSs

Virtual Sensor Points: Similar to VPL. Start from the eye and generate VPS at every hit.

Terminlogy

  •         : Direction of VPL from VPS
  •         : Direction of VPS from VPL
  •         : Proportion of light reflected along 
  •         : Proportion of light reflected along
  •         : Transit term                                                                
  •         : Strength of material after path tracing
  •         : Intensity of light after path tracing
\psi
ψ\psi
\omega
ω\omega
M(\psi)
M(ψ)M(\psi)
D(\omega)
D(ω)D(\omega)
T_{i, i+1}
Ti,i+1T_{i, i+1}
S
SS
I
II
(visibility + attenuation)/||v_i-v_{i+1}||^2
(visibility+attenuation)/vivi+12(visibility + attenuation)/||v_i-v_{i+1}||^2
\psi
ψ\psi
\omega
ω\omega

Weights

  • Assuming equal contribution of VPS-VPL pairs generates noise. Use weights.
  • Weight      for a pair such that the VPS is the     vertex in the path. Assume all adjacent vertices are VPS-VPL pairs.
  • Calculate                    . Use them for    .
  • Evaluate four weight constraints.
  •  
w_j
wjw_j
j^{th}
jthj^{th}
w_1, w_2, ... w_{j-1}
w1,w2,...wj1w_1, w_2, ... w_{j-1}
w_j
wjw_j
w_j = max(0, min(w_j^E, w_j^C, w_j^D, w_j^V))
wj=max(0,min(wjE,wjC,wjD,wjV))w_j = max(0, min(w_j^E, w_j^C, w_j^D, w_j^V))

1. Energy Conservation and Favoring Shorter Eye Paths

  •  
  • Sum of connection weights never exceeds 1.
  • VPLs useful for all pixels, VPS just one.
  • Prefer shorter eye paths and avoid computation!
w_j^E = 1 - \sum_{i=1}^{j-1} w_i.
wjE=1i=1j1wi.

2. Clamping

  •  
  • Standard clamping in VPL based methods.
  • Avoid visible effect of any one VPL.
  • Weigh down if VPS and VPL are close.
  • Weigh down if they the VPS material is glossy and oriented in the VPL direction.
  • Similarly for the VPL.
w_j^C = min(1, C_{clamp}/(M_jT_{j,j+1}D_{j+1}))
wjC=min(1,Cclamp/(MjTj,j+1Dj+1))

3. Diffuse VPLs

  •  
  • Limit the illumination from a VPL to only include diffuse components.
  • Not strictly necessary but highly directional VPLs are a computational waste.
  • Also, a big D will get clamped anyway.
w_j^D = min(1, C_D/D_{j+1})
wjD=min(1,CD/Dj+1)

4. Exclusion of High-Variance Eye Subpaths

  •  
  • Eliminate high noise estimators. The ones with spread out eye paths.
  • Directional Spread
  •  

 

  •                                                                                                 

 

w_j^V = \mu_j - \sum_{i=1}^{j-1}w_i
wjV=μji=1j1wi
\Theta_j = \sum_{i=1}^{j-1}(\pi M_i)^{-1/2}
Θj=i=1j1(πMi)1/2

Lightcuts

  • Computing illumination from tens of thousands of lights is expensive.

  • Solution: Clustering!

  • Cluster similar lights together and treat them as a single light.

  • Give theoretical upper bound on error.

  • Choose cut with error less than a perceptibility threshold (Weber’s Law).

Cut of a Tree

A set of nodes such that exactly one node from the set is present in any path from the root to a leaf.

 

Light Tree

Bounding Function

  • This gives the maximum error bound because of clustering.
  • Actual value = 
  • Approximate value =                    where j is the representative light.
  • Error <= product of maximum error in M, G & V and sum of intensities.
  • For V, it’s 1. For M & G compute using cluster bounding box.
\sum M_iG_iV_iI_i
MiGiViIi
M_jG_jV_j\sum I_i
MjGjVjIi

Cut Selection

  1. Set the lightcut to { root }.

  2. Computer the error bound for the light cut. If this is less that the threshold we are done.

  3. Pick the node with the maximum error and refine it by replacing it with it’s children in the lightcut.

  4. Go to Step 2

Building the Light Tree

  • Use a bottom-up greedy strategy.

  • Pair lights/clusters with the highest similarity.

  • Similarity Metric is based on the diagonal length of the bounding box and the cone-angle of the direction (in case of oriented lights)

  • Representative light is randomly chosen with probabilities in proportion to intensities.

Multidimensional Lightcuts

  • Have to evaluate Lots of VPLs and VPSs. Building a light graph for                    is expensive.

  • Build an implicit graph from individual light trees.

  • Traverse the light graph by refining a node in one of the trees.

|n_{VPLs}n_{VPSs}|
nVPLsnVPSs|n_{VPLs}n_{VPSs}|

Some Pretty Pictures

* The above result has been taken from the original paper and not rendered by us.

Some More Pretty (or not) Pictures

* The above result has been taken from the original paper and not rendered by us.

References

  • Bruce Walter, Pramook Khungurn, and Kavita Bala. Bidirectional lightcuts. ACM Trans. Graph., 31(4):59:1–59:11, July 2012.

  • Bruce Walter, Adam Arbree, Kavita Bala, and Donald P. Greenberg. Multidimensional lightcuts. ACM Trans. Graph., 25(3):1081–1088, July 2006.

  • Bruce Walter, Sebastian Fernandez, Adam Arbree, Kavita Bala, Michael Donikian, and Donald P. Greenberg. Lightcuts: A scalable approach to illumination. ACM Trans. Graph., 24(3):1098–1107, July 2005.

Thank You!

Questions?

Bidirectional Lightcuts

By Ranveer Aggarwal

Bidirectional Lightcuts

  • 2,456