next up previous
Next: Intersection Cache Up: Caching Secondary Rays for Previous: Caching Secondary Rays for

Introduction

Traditional ray-tracing[2] uses a constant factor to estimate the ambient light's contribution at a given surface point. Kajiya used path-tracing[1] to estimate the global illumination term using Monte Carlo techniques. To generate his example pictures he shot 40 paths through each pixel. This amount of oversampling is necessary to reduce the variance in the Monte Carlo sampling, but is fairly computationally expensive.

I propose to calculate the illumination at a surface point by ray-tracing the entire scene from that point. The luminance at that surface point is the average of the luminance in the scene, weighted by the bidirectional reflection distribution function (BRDF). If surfaces in the scene are diffuse or near-diffuse, then only the first generation needs to be computed this way, since there is little or no specular term to be calculated. (A perfect mirror, for example, would require us to perform the ambient calculations for the second-generation rays after having reflected off the mirror.)

Ideally, for a diffuse surface we would integrate over the hemisphere at the surface point in question:

or, equivalently,

I break the hemisphere into cells using the latter formula, thus avoiding the former's oversampling of the sphere's apex and compensation with the seperate sine term. A jittered ray is shot through each cell and evaluated using path tracing for a few generations to get a good approximation of the energy coming through that cell. The cells, weighted by the Lambertian cosine term, are averaged and the result is used as the illumination for the surface point for the first generation ray.

Notice that the intensity returned by the ray through a cell is not multiplied with the traditional term, area of the light source, or any other geometric factor---the ray's intensity is used directly, modulated only by the Lambertian cosine term. This is because the sampling of the hemisphere takes into account the distance to the light as well as the light's orientation and size. (Is it more accurate to say that the term and other geometric factors try to approximate the light's solid angle on the hemisphere, and here the ray represents the solid angle of the cell, not of the entire object that the ray intersected.)



next up previous
Next: Intersection Cache Up: Caching Secondary Rays for Previous: Caching Secondary Rays for



Lawrence Kesteloot
Fri Jan 20 16:24:55 EST 1995