Update Wednesday, July 10: I've improved the projective technique I used earlier to generate my soft shadows. Previously, objects could not have self-shadowing. Actually, once I realized a technique to do so, it makes lots of sense and was very simple. Below are some images of the bunny in the Cornell Box.
![]() | ![]() | ![]() |
Below you can see probably the two biggest problems with this technique. (1) Inside the bounding volume of the object, the "sharpness" of the shadow doesn't vary correctly based on the distance from the object. (2) There can be a bit of blockyness (not a smooth transition from one shadow intensity to the next) in the shadow.
![]() | ![]() | ![]() |
Update Wednesday, June 5: So, instead of running a preprocess, I decided that maybe a per-frame computation might work better. My previous technique (i.e. a few days ago) required a fair amount of memory, even with a single bit stored for each visibility ray. The technique used to generate the following images is a projective technique.
![]() | ![]() |
![]() | ![]() |
Update Monday, June 3: I've been working on a technique for fast/interactive soft shadows recently. Right now, I'm storing visibility information locally with the object. This allows soft shadow computations using a rasterization-type computation instead of shooting lots of rays.
As you can see in this image, it produces decent results, albeit a few to be worked out bugs. This result can be accomplished with ~1.2 MB of memory overhead (though current code uses significantly more to help me debug). Speed hasn't been tested yet, though in RTRT it should be roughly the same as shooting a few shadow rays per pixel. Thus far, I've run over the network limiting my speed to ~0.5 fps for 360x360.
Last Modified: June 5, 2002
Chris Wyman (wyman@cs.utah.edu)