Drawing the shadow of a sphere with a spherical light source directly onto a ground plane directly below it, traditionally each sample will render an ellipse. To get an accurate representation of the penumbra, this surface of the spherical light source needs to be sampled in 2 dimensions. With our method, each shadow is a concentric circle, requiring less samples to get the same results. |
a) Hard penumbra and hard umbra. b) Single hard, colored shadow. c) Colored soft shadow |
We draw shadows in one of three modes: a shadow with a hard umbra and a hard penumbra, a single hard shadow, and a soft shadow, as shown in Figure 12. Both of the later two modes approximate a spherical light source at a fixed distance from the center of the model in the direction of the light source used for shading.
The simplest and fastest method to draw simple shadows is to explicitly draw an umbra and penumbra. We draw two hard shadows, one from the center of the spherical light source back in the direction used for shading, and the other forward.
Soft shadows are problematic to render both accurately and efficiently, so we use an approximation to gain speed. Instead of using the conventional method to simulate an area light source, i.e., sampling the area light source and accumulating the point approximations, we project multiple shadows from the center of the approximation sampling a 1D direction, the ground plane's normal. This is done by projecting the same shadow onto a stack of planes, then translating the shadows to the ground plane and accumulating them, as shown in Figure 11.
Note that with this method, each ``sample'' is a perspective remapping of the first, intersected on a different plane. We could render a single shadow, copy it into texture memory and then remap it correctly to accumulate the other samples. This is much faster than projecting multiple jittered samples since there is a lower depth complexity for rasterization and a much lower burden on the transformation if the texture mapping method were used.
This method assumes that the silhouette from different points on the spherical light source is the same, i.e., the projection is the same. The planes coming out of the receiver will not correctly model contact. However, you can render only the lower planes if contact occurs resulting in a less realistic shadow, but one without distracting spillover.