Sign in to follow this  
3DModelerMan

Combining shadow map passes

Recommended Posts

3DModelerMan    1173

I'm working on my rendering engine, and I've got all the core features that I'm basing it around working. I've already got dynamic shader generation, const buffer management, texture management, etc. all implemented. Now I'm trying to work on shadow mapping though, and I'm not sure how to combine the results of multiple shadow passes.

 

I already have a system for rendering shadow maps for each light, but after I've rendered my regular diffuse+specular shading pass, how do I combine the shadow map passes? Are shadow maps generally combined using blend states? It would probably work well for simple cases, but what if I have lights illuminating part of another shadow? Then both shadows will just draw on top of each other as one combined shadow. If I just blend the shadows at half opacity though, then they won't properly block shading in un-shadowed areas. 

Share this post


Link to post
Share on other sites
kauna    2922

Practically, while calculating the effect of each light, you should apply the shadow map as a multiplier to the diffuse/specular values. So, while calculating the lighting, you'll need to have access to the shadow map(s) and the matrices which allow you to transform a point to the shadow space.

 

You can't apply the shadows afterwards, ie. no blending operator will produce the correct results. 

 

Cheers!

Share this post


Link to post
Share on other sites
3DModelerMan    1173

So the shadow maps should be generated first and the lighting for those lights done at the same time then? What about when I have to run multiple passes? This is just an example, because I probably wouldn't need this many shadow casting lights, but If I light four spot lights with shadows, and then I make a pass for directional lighting, how do I combine those? Since I'm doing shading with the shadows, do I just additively blend the lighting results?

Share this post


Link to post
Share on other sites
kauna    2922

You can render the lights additively (as you stated) to a render target. I think that it is easier to have all the shadow maps rendered at this point (ie. you'll need to update the shadow maps before calculating lighting). Of course, you'll need some texture memory for storing the shadow maps which probably isn't a big problem. 

 

Additive blending can be used for any kind of multipass lighting with or without shadowmaps. You can even calculate multiple lights in one pass. 

 

Cheers!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this