Jump to content
  • Advertisement
Sign in to follow this  
3TATUK2

Sun Shadows

This topic is 2106 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

How do outdoor FPS' achieve shadowing for the sun? I mean, I figure if it were simply a shadowmap with the depth texture rendered from the sun's position, the objects would be soo far away that it would cause an issue with resolution and pixelation of the shadows?

 

Share this post


Link to post
Share on other sites
Advertisement

I'm not sure how the fact it's *directional* plays into the *shadows*. I understand how it plays into lighting, but shadowmapping pretty much works the same, doesn't it? You still need to have a light source position to render the shadow depth texture from? And I'm guessing the shadows for something like in the youtube video I linked is done an a single shadow pass... actually hmm

 

now that I think about it, i guess if it's static geometry it's possible to use baked lightmaps for the geometry and then just separate individual shadow maps for each moving object (player), although I somehow don't think this is what the tech in the video is doing, for example with modern engines that have this type of "full shadowing", with things like dynamic geometry or many many objects, or even dynamic time of day, I doubt they use a separate individual shadow map per object?

 

A lightmap wouldn't work in that situation, and individual shadow maps would probably be too slow, plus, for something specifically like time of day... the "entire" geometry has dynamic shadows, so again I don't get how that would be created since you need to render a shadow depth texture from a specific light source position??

Share this post


Link to post
Share on other sites


You still need to have a light source position to render the shadow depth texture from?

 

You can use an "arbitrary" position that, when combined with the projection matrix (near/far planes), covers the range of depth values that you need with maximum precision.

Share this post


Link to post
Share on other sites

Usually you dont see the entire world, so you can limit the area you have to include in your shadow map, thus increasing it's resolution. As with other rendering optimizations it's always good to not render what you dont see, meaning you only need to have shadows inside your player's frustum.

Using the sun's direction you can build an oriented bounding box around your frustum. You'll then have to extend that box in the direction of the sun so that it reaches all the way up to your scene/world's roof. This ensures that objects (a tree or tall building for example) that are outside of the player's view but are casting shadows into the player's view are still rendered into your shadow map.

If you extend the obb's size to the roof of your scene and the sun is at an angle(which is pretty much always) then you'll be extending a part of the obb outside of the scene's bounding box. This will lose you a little bit of precision, which you can solve by using a sheared matrix for the sun's projection.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!