The idea here is to surround each object by a grid. In each cell of object A's grid, some number of rays are sent towards object A (and no other object). These rays are averaged together and stored in the cell.
When raytracing, when an intersection is encountered, instead of using some fake ambient term in the shading process, the raytracer determines if the point is inside any of the objects' grids, and sums the contributions from any grids which covers the intersection point. This is the ambient/interreflection term used for shading.
Initial (Slightly Incorrect) Images...
![]() One bounce interreflections using a course grid (5/22). Note: Being older images, this image and the next (smoothed one) are most definitely *wrong*, but it gives an idea of what is happening during the process. |
![]() One bounce interreflections with a smoothing technique applied to the grid. A few other fixes as well (5/22) |
Most Recent Images...
![]() One bounce interreflections with smoothing. 100 rays/cell, 303 cells per object. (5/31) |
![]() One bounce interreflections with smoothing. 196 rays/cell, 703 cells per object. (5/31) |
Adding Motion...
![]() 100 rays/cell 303, original (5/31) |
![]() Moving... (6/1) |
![]() Moving... (6/1) |
![]() Moving... (6/1) |
![]() Moving... (6/1) | Notes: (1) The first image was taken on a different computer, and appears to be dithered a little. (2) The preprocess here takes shadows into account, so the shadow for the large block on the right side is brighter than when the large block is on the left side, since the preprocessed grid sees the original shadow on the left, but not the new one on the right. (3) The artifact in the shadow of the last image -- looks like an artifact due to the grid implementation. (4) Still, the time per frame seems to be about 3 times as long as without the one bounce interreflections. (5) Preprocess takes about 90-120 seconds on a single processor. It could easily be parallelized, seeing as it's shooting lots of rays. |
Last Modified: June 5, 2000
Chris Wyman (wyman@cs.utah.edu)