SIGGRAPH 2003: Shadow Papers

The final paper session that I attended Tuesday covered shadows. The results of most of the papers were pretty impressive and all focussed on trying to squeeze realistic shadows out of today's computers and GPUs in real-time.

Shadow Matting and Compositing

This paper centered around compositing of shadows between two video sources using a technique that included programmatically determining the shadow and the source object from the source video, determining shadow point mapping in the target video through the use of a series of two or more long, straight shadow references, and then compositing the two images using the data gathered in the first few steps.

Although not an interactive application, the results were amazingly good in terms of quality. The technique currently depends on a planar substantial planar reference in the source scene and static cameras for both the source and target scenes. However, the planar reference can be irregularly shaped (think a flat piazza with a fountain in the middle of it).

This technique shows a lot of promise and hopefully will be appearing in commercial compositing in the future.

Interactive Shadow Generation in Complex Environments

The researchers at UNC CH who brought us this paper were interested in achieving interactive frame rates while performing walkthroughs using very detailed models (their examples had 1.5M, 12M, and 82M triangles each). Although they were being pretty liberal with processing power (3 2.4GHz Dual P4 Xeons with GPUs all connected over a high speed network), their process provided near-interactive frame rates with high quality shadows from a point light source approaching 12fps even in the most complex environment.

The technique works by creating PVSs (potentially visual sets) for both the Eye and the Light and then applying a unique culling technique to match the two PVSs in order to determine which objects are fully in shadow, fully lit, or partially receiving. The fully shadowed and fully lit objects are handled using shadow maps (simulated shadows created through stencil techniques), and the partially receiving objects are shadowed using the more accurate and computationally expensive shadow volumes. To help keep the frame rates tolerable, a sorted list of objects (based on eye priority) is used to monitor a "budget" of shadow volumes and when that budget is reached, the remainder of the scene is rendered with shadow maps to ensure that the timing targets are hit.

Even with the large amount of horsepower thrown at this method, they can achieve no more than a few fps for the walkthroughs in the most complex environments, and it will be a while before you can reasonably state that this environmental work is on "commodity" hardware. Further, the requirement that the lighting be a single point source limits the application. However, if Moore's law holds and GPUs continue to exceed it, we'll probably see these techniques becoming very interesting over the next few years. Furthermore , the budget minded approach is a good balance between "perfection" and "good enough"

Soft Shadows

This technique is aimed at providing real time soft shadows, like the kind that are created using non-point light sources. In particular, the technique is focussed on attempting to generate the penumbra (the section of the shadow that is softer and appears as a gradient near the edges of non-point light sources) using an approximation of the light source.

It is clear from the examples that they have aims at getting this implementation running fast enough to have it used in games, and the software- only version, which runs at 1fps has been superseded by a pixel shader version that runs considerably faster (15+fps) on commodity hardware and GPUs.

The technique involves making estimates of the amount of shadow received at a target point by computing visibility based on the view from the shadow point back to the light source. As an added benefit, since the light source is "seen" mathematically, it can be looked at not only for coverage, but also for color, making it a very fast algorithm for creating colored or textured shadows.

This work, also on the web here, looks to be a great step in approximating soft shadows in a compelling and fast manner.