Deferred Shadow Maps Sample

deferredshadowmaps

This sample shows how you can defer shadow map calculations to separate full-screen pass using a depth buffer, effectively decoupling your shadowing routines from your main lighting pass.  The main benefits are that your pipeline can be greatly simplified, as well as improved efficiency during shadow occlusion generation.  Uses XNA 3.0, includes PC and Xbox 360 projects.  Hosted on Ziggyware.

http://www.ziggyware.com/readarticle.php?article_id=235

Also hosted here, since Ziggyware has been down.

I also wrote the code for a follow-up sample that implements Cascaded Shadow Maps, but never got around to doing a write-up.  You can get that here.

8 Responses to “Deferred Shadow Maps Sample”

  1. Pospa Says:

    Hi, I found this very good example of deferred shadows maps, but Ziggy is off ;-( I downloaded the source code, but it’s hard to read for me.. Does anybody has somewhere this article from Ziggy?

  2. Pospa Says:

    I forgot to add notification.. sorry

  3. Courtney Atkin Says:

    Hi, I’m designing an engine with XNA called Rapier3, and would love to integrate this sample into my deferred renderer – it would save me a whole lot of time and energy!

    Would that be possible, obviously all acknowledgements etc intact, and acreditation where necessary and requested?

    Kind regards.

  4. Alejandro Says:

    Hi,
    Playing around with this sample, noticed that the far plane will always receive shadows.
    This is worse if the light’s camera is fixed (only cast shadows to a certain box volume), anything that falls outside that area will receive full black shadows, as it will be farther than the light’s far plane, this may or may not be the wanted result.
    For example, for some games it might be useful to have some small shadow caster geometries on a delimited zone, but everything outside that zone may continue to receive the directional light illumination.
    The only solution I have though is to wrap the shadow occlusion term evaluation with an “if else” branch.
    Supposing that the distances are normalized:
    if (pixelDistanceToLight < 1)
    { // Do all pcf stuff }
    else
    { shadowOcclusion = 1; }

    Is there another approach/solution to this? I have noticed that since dynamic branching tends to be expensive on gpu, experts come up with evaluations and formulas way beyond my understanding…
    If not, is that branch really bad?

    Hope I have explained myself.
    Thanks in advance!
    Also, great blog, full of interesting topics.

  5. nobley Says:

    hai mjp, …
    I have read documentation about the deferred shadowing which I downloaded a month ago. I know that it is the target for XNA 3.1. I’m using XNA 4.0, and can not use the code “deferred shadowng” in XNA 4.0. I’ve tried to modify in order to run in XNA 4.0., but I can not find a solution that runs on XNA 4.0.
    I know that the XNA 4.0 version is a lot of changes to the graphics library.
    what you can help me to solve this problem? I hope to help you,
    thank you for your attention

  6. Simple Shadow Mapping « Nick the Coder Says:

    [...] I remember writing one of these using OpenGL’s fixed function pipeline a while ago so i was familiar with how it worked. I used reimer’s tutorials as a guide though. Next step is to do CSM(Cascaded Shadow Mapping). jcoluna did it in his light pre pass renderer so i’ll use it as a guide. There’s another link to a sample here. [...]

  7. WebGL – Deferred | m_panknin; Says:

    [...] corresponding pixel from the shadowmap and the pixel’s occlusion can be determined. Standard deferred shadow mapping, so to [...]

  8. Paige Says:

    I’ve got a very weak signal


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 56 other followers

%d bloggers like this: