Towards a Taxonomy of Global Illumination Algorithms Philip Dutré Program of Computer Graphics Cornell University
Global Illumination Make a photo-realistic picture of a virtual scene which is physically-based modeled (source: Stroebel ‘86)
Photo-realistic picture? Picture = matrix of ‘light intensity’ values Rendered picture and photograph look the same to a human observer
Physically-based modeled? Light Sources Emission characteristics Materials Reflectance characteristics (BRDF) Geometry
Rendering Framework emission geometry BRDF radiometric values displayed image goniometric error metric radiometric error metric perceptual error metric radiometric comparisonperceptual comparison = ? Visual DisplayLight Transport Simulation = ? goniometric comparison Display Observer
Light Transport Light Transport Simulation Radiometric Values “Intensity” for each point and each direction Emission (light sources) BRDFs (materials) Geometry (objects)
Global Illumination Problem eye pixel What is the ‘intensity’ of this surface in the direction of the eye?
Global Illumination Problem What is the ‘intensity’ of this surface in all possible directions?
Common Ground for GI Pre-’86: ??? 1986: Rendering Equation 1992: Potential Equation Is there a single framework that describes all GI algorithms?
Radiance (L) Fundamental transport quantity … power per unit projected area per solid angle in each point and direction Radiance is invariant along a straight line (that’s why ray tracing works) Flux = integrated radiance
Radiance Distribution Look for initial L (light sources) Propagate L along straight paths to the first visible surfaces Reflect L locally at the surfaces Light source descriptions Visibility calculation (geometry) Reflectance (materials)
Radiance Distribution Propagate...… and reflect
Shooting Operation Propagation + Reflection = “Shooting” L new = SL init … propagate and reflect again!
Shooting Operation … and reflect again… propagate
Shooting Operation L newer = SL new = SSL init L total = L init +SL init +SSL init
Shooting Operation LiLi SL i SSL i SSSL i L i +SL i L i +SL i +SSL i L i +SL i + SSL i + SSSL i LiLi
Shooting Equilibrium L equil = L init +SL equil Rendering Equation
Collecting Radiance Collect all radiance at this patch (= flux) How do we know where to collect radiance?
Collecting Radiance Define an importance function W W = 1 where to collect W = 0 where not to collect Each patch/pixel/… has its own W
Collecting Radiance W = 1 W = 0 Flux = Radiance L x Importance W =
“Helmholtz” Reciprocity Role of source and receiver can be switched, flux does not change
Dual Transport Instead of shooting from light sources and collecting at receivers … … start at receivers and trace back to the light sources
Dual Transport Start at surface with W init = 1 “Where could radiance come from?” reflect W locally propagate reflected W backwards Collect propagated W at light sources
Dual Transport W init …reflect back…propagate back W new = RW init
Dual Transport W equil = W init +RW equil Importance Equation
Dual Transport Collect propagated W at light sources L i 0 at light sources = Flux = Importance W x Radiance L init
Solving Global Illumination Shoot radiance from light source and collect at receiver Shoot importance from receiver and collect at light sources or … shoot both at once and collect in the middle
Solving Global Illumination
F = + or or or +
Ray Tracing = Shoot W
Particle tracing = Shoot L
Bidirectional tracing = shoot both
*Tracing F = + or or or + Particle Tracing Ray Tracing BT
Bidirectional Path Tracing (RenderPark 98)
Radiosity Progressive radiosity = shooting L Gauss-Seidel = shooting W Bidirectional Radiosity shoot L and W and meet in the middle select each patch in turn as W-source faster convergence for selected patches
Bidirectional Radiosity
Algorithms Ray Tracing Particle tracing Bidirectional path tracing Gauss-Seidel radiosity Progressive radiosity Bidirectional Radiosity
Conclusion Framework for global illumination Combines radiance and potential in a single formulation Taxonomy of algorithms Bidirectional algorithms