A few days ago, i had an idea to display per-pixel soft shadows in real-time. I spent a few hours to code it, and here is a first result:
http://www.3ddev.9f.com/smoothShadow1.jpg
Granted, the scene is _extremely_ simple but this implementation, which works as an extension to the shadow volumes algorithm, is only fill-rate limited. In addition, the fill-rate overhead for the soft shadows is independant of the geometry complexity, which means it _should_ still run fast on pretty complex scenes.
You'll also notice a few interesting effects; for example, the higher the distance to the light, the softer the shadow becomes; it's still pretty sharp near the light, as in reality.
The technic doesn't require any fancy stuff except simple pixel shaders. I've had it working on a Radeon 8500, and it could be implemented on a GF3/GF4. Possibly on a GF1/GF2 with the help of combiners, by accepting a lower quality and speed.
Now i'm gonna implement a more complex scene to see if there is no artifact or unaware problems with it.. i'm pretty sure speed will be ok, but you never know.. i'll try to post a demo in a few days (maybe with some code) if i see it's usable.
Y.





