If you google for VSM, you’ll get a great deal of web-sites describing the technique. What you’re likely going to find a bit more troublesome to find are actual pictures, showing the pros and cons of Variance Shadow Maps.
Therefore, instead of repeating all the content you can easily find elsewhere, let me just put up a few pictures, demonstrating VSM in action:
Cylinders rotating at different speeds.
Ambient light + a single directional light.
Variance Shadow Mapping + ~10-tap gaussian blur of the SM:
Shadows definitely softer, but they come at a performance price.
Note the light bleeding problem in the deeper parts of the scene.
- The shadows have become stronger and their penumbras are not as nice as in the picture right above.
- The parameter needs to be tweaked for each camera cut.
Ambient light + a directional light.
Even if you tweak the minimum/maximum allowed variance value, and modify the cut-off, it’s very difficult to find the right balance:
Note taken: VSMs are not fine for detailed scenes. Layered VSMs may work better in this case.
Cube inside a cube.
Ambient light + a directional light + a point light
The shadows on the cube look nicer and the projection is softened, but the performance cost is huge if you look at the FPS counter of the Plain Shadow Mapping solution. That’s mostly due to the blur which currently is executed separately for each SM layer. With multi-layered rendering, the performance could be likely improved by 40-50%, which would make it much more feasible than as it stands right now.