Fall 2002 Research Work |
Goal: Realtime and interactive soft shadows. |
![]() |
Update December 9: Below are images showing the progress of my hardware based approach. Using the NV30 emulator, framerates tend to be between 0.05-0.5 fps. Guesstimating from the specs I know about the NV30, my pixel shaders should run around 400 fps (at the resolution I was running: 512x512). This doesn't really agree with my gut instinct though, meaning I screwed up the (seemingly) simple calculation or my algorithm won't be limited by the graphics card. Maybe I'll have to see if I can push more computation down onto it. I think I'll wait until we actually have a NV30 or until I port to the ATI 9700 before making further judgements on speed.
![]() Includes soft-self shadowing | ![]() Before soft-self shadowing |
I've been trying to get of the "fungal growth" problem you see in this image:

However in trying to speed things up, it appears that this artifact may become less noticable when I reduce the amount of "duplicated" work (e.g. areas doubly or triply covered in shadow). I'm going to examine if this sufficiently reduces the problem before trying anything more complex.
In the speed department, my code runs significantly faster than last week. I got a roughly 4-5 fold speed improvement. It's good enough now that I don't have to wait forever to get images from complex objects (like the cow and jet). I probably won't concentrate on speed again until I actually know where in the code the bottleneck is. (Though I have one last bug to eliminate in the speed improvements I've already made -- this is where I think my fungal growth problem may go away.)
After tomorrow or Wednesday it will be time to either (A) port to ATI 9700 (B) think of another way to solve the fungal growth problem (C) start generating more complex scenes or (D) start writing the paper.
![]() A pathtraced shadow of the cow | ![]() A pathtraced shadow of the jet |
Update November 22: So this semester I have been working on interactive soft shadows. Earlier on, I was working on raytraced based approaches (which is where the bunny above comes from). Recently, I've been working on implementing some techniques in hardware. Or rather in software emulating the new NV30 nVidia card.
Here is an example of the first technique I tried. It is an version of my ratraced algorithm, though it loses a bit in translation to hardware. It works fairly well, though I hadn't implemented the modifications to allow the shadows to become hard upon contact. The pixel shader is quite large, so it is very slow in the emulator.

Below are two examples of my newer algorithm, which I believe should run faster. Anyways, it still has problems, as you can see in these images.


Last Modified: November 22, 2002
Chris Wyman (wyman@cs.utah.edu)