I'm not sure if there's a "standard" way to do these things. I think you mean how to make things cast shadows on the places behind it. You can do this by extruding edges of occluders, but I didn't like those solutions as the shadows tend to be very sharp.
My game (Splatter
) uses a image-based technique vaguely based on Cryteks Radial Blur. In addition to the surface color I also render out the "height" of everything into a separate buffer. The light height minus the surface height divided by the distance gives a "shadow edge" which I can use to test other pixels. If the pixel height is lower than the height of the prolonged edge, the pixel is shadowed. The problem is now that - for a single pixel - you'd need to test all pixels in front of it to know if any of them cast a shadow on the pixel. This is where the "Radial Blur" idea comes into play. I have one shader to check the first 8 pixel heights on the way to the lightsource, and store the largest shadow edge I found in a texture. Then I apply a second pass, but now check every 4th pixels, then another pass with every 16th pixel, and so on. With just 4 passes I get stable shadows across a whole fullHD screen in a 4:1 screen to shadow resolution. And it's so fast that even laptop or onboard GPUs can handle a few shadows.
And with a few more samples you'd even get mostly correct penumbra regions for volume light sources. I've made some tests and collected the results on this image
- it's huge, therefore I just put a link. I'm really happy about this technique so please take my words with a grain of salt.