It was first proposed by Frank Crow in 1977[1] as the geometry describing the 3D shape of the region occluded from a light source.
The set of all edges that connect a toward-face to an away-face form the silhouette with respect to the light source.
The edges forming the silhouette are extruded away from the light to construct the faces of the shadow volume.
This approach has problems when the eye itself is inside a shadow volume (for example, when the light source moves behind an object).
There is another situation where the eye may be in the shadow of a volume cast by an object behind the camera, which also has to be capped somehow to prevent a similar problem.
In most common implementations, because properly capping for depth-pass can be difficult to accomplish, the depth-fail method (see below) may be licensed for these special situations.
Alternatively one can give the stencil buffer a +1 bias for every shadow volume the camera is inside, though doing the detection can be slow.
There is another potential problem if the stencil buffer does not have enough bits to accommodate the number of shadows visible between the eye and the object surface, because it uses saturation arithmetic.
Around the year 2000, several people discovered that Heidmann's method can be made to work for all camera positions by reversing the depth.
[6] Either of the above types may be approximated with an exclusive-or variation, which does not deal properly with intersecting shadow volumes, but saves one rendering pass (if not fill time), and only requires a 1-bit stencil buffer.