Shadows have been a problem in graphics for a while. There are a variety of existing methods, but they only work in some specialised cases. Stencil volume shadows are somewhat more versatile, but they still have annoying limits, are extremely CPU and GPU-hungry, and cannot deal with certain common geometries or soft-edged shadows. Shadowbuffers have been around for a long time, but have never been quite practical enough. Some recent advances in both hardware and software algorithms now mean that shadowbuffers can be used to render fast, high-quality, soft-edged shadows in almost any situation or scene. This lecture explains the various parts of the algorithms and which bits work best on which hardware and in which situations. This lecture answers almost all of the questions and problems posed by the author's 2004 GDC lecture "Practical Shadows", and also extends the ideas by adding soft edges and realistic-looking penumbra from area light sources. At last, graphics coders have a set of algorithms that together solve the problem of shadows.