Nvidia GDC05 presentations online

Re: Some comments...

RandyFernando said:
<snipped>
BTW, I'll try to record a new higher-quality video next week, when our scan-converter hardware should be working again.

You're in my address book but I have no recollection of how it got there. Anyway, we don't like videos. I'm sure you know what we'd prefer.

This is interesting but not new (to me at least). Developers have sounded some resistance to this, a primary reason already illustrated in this thread, the others you should obviously know.

Looking forward is not bad however :)
 
Sounds like you missed the .fxcomposer and .fx files, which were posted along with the presentation. The video is there just for people who don't have a GPU capable of running the demo. The easiest way to view it is to install FX Composer and then double-click on the PCSS.fxcomposer file. Once it's open, you can freely manipulate the scene, add new objects, translate/rotate/scale them, change the number of samples, and change the light size using a slider. Once you start working with soft shadows and more accurate penumbras, it's hard to go back.

I would be interested to hear where you've seen or read about this technique before. All the developers I showed it to at GDC had not seen it before, and it doesn't look like it's been published previously either. Perhaps you might be confusing it with some other algorithm (there are so many!)

Regarding usability in games... shadow maps of course have two instrinsic flaws: aliasing (jaggies caused by insufficient shadow map resolution) and bias (artifacts caused by insufficient depth precision). The good news is that filtering addresses aliasing quite nicely. If you set the light size to a really small value in the demo, you'll see how little information there really is in the depth map. (The light is too far away from the scene in the file I provided. Moving it closer would make better use of the shadow map resolution.) Bias also gets blurred out, but picking the right bias value for a particular scene can be a bit of a pain.

On the other hand, shadow maps are quite robust in terms of handling alpha tested, displacement mapped, non-convex, and other geometry. In addition, GPUs are good at reading and operating on textures, so techniques like filtering for softening shadow maps are viable. Conversely, trying to get soft shadows with shadow volumes is a lot more complicated. Lengyel's recent slides from GDC do a good job of explaining that.

The main issue for an expensive technique like the one I presented is the performance impact. The whole idea of presenting it at a "Next-Gen Special Effects Showcase" session was to give developers some ideas to think about for the future -- particularly because rendering soft shadows is such a challenging and important problem. After all, if their games will ship in a few years, this technique will be relatively quite cheap by then. I also think that the technique can be valuable when modeling scenes because the soft shadows give great cues about the spatial relationships between objects.

Finally, as I mentioned before, the technique can be quite fast even on today's high-end hardware, if combined intelligently with texture masking.

Randy
 
What resistance are you talking about Rev? Can you produce any of the criticisms? I'd like to see them. The specific technique in this paper has never been discussed before on B3D IIRC. UE3 uses 16x oversampled shadow buffers in its approach, this is just a hybrid approach that uses 256x oversampling with a search to find occlusions.

BTW, Randy, is it possible that you can call PCF_Filter with a varying number of samples on a per-pixel basis? If the shadow is "hardened" couldn't we get away with less samples and a narrower kernel?
 
My 2002 cg demo entered into the first Nvdia cg shader contest implemented something similar by sampling around the fragment to determine if it fell within a penumbra region. My implementation isn't as extensive as yours - it only takes into account the distance to the occluder and performs far fewer penumbra samples (8 IIRC) .I expand the sample region as the distance to occluder increases.

Any technique which required the distance to the occluder will break once you have multiple occluders. A traditional shadow map only holds the occluder closest to the light. In my demo I do a reverse depth peel and capture 4 depth values. If you only worry about back faced (from light POV) that's enough for a reasonably complex scene.


Notice how the red ball casts the dark shadow on the ground rather than the distance to the arch (which is closer to the light source) being used.

deepshadow.jpg


old cg entry

http://www.shadertech.com/cgi-bin/shaders.cgi?filter=1&page=3


The penumbra is a bit subtle so here's a set of early test image - lower right image has 8 sample penumbra.

Randy has rekindled my interest so I'll produce a version using the latest cg...


shadow.jpg
 
"I would be interested to hear where you've seen or read about this technique before. All the developers I showed it to at GDC had not seen it before, and it doesn't look like it's been published previously either. "

Some interesting stuff here http://www.mpi-sb.mpg.de/~brabec/

Including a similar technique sampling for blockers.

There's so much cools stuff out there :)
 
Nasty "acne effect" in those images.

When raytracing secondary rays (eg shadows/reflection) you need to move the start point of the new ray away from the original surface so that it doesn't re-intersect it. Alternativelty, you can ignore the previous surface but that can have problems with highly curved geometry.
 
Back
Top