Sign in to follow this  
theagentd

Is VSM light bleeding solved?

Recommended Posts

Hello. I am considering using variance shadow mapping for a game I am making, but from all the articles I have seen light bleeding is really bad in scenes with high depth complexity. This is exactly my case, most likely one of the main features of the game, so in this case I can´t impose limitations on depth complexity.

I´ve read that light bleeding can be remapping the shadow value to make the shadows darker, effectively making light bleeding being reduced to 0. I´ve also heard about storing a maximum depth value in a third channel which contains the maximum depth of the surrounding values, which can be used to early out of the depth test, plus fixing light bleeding. The last one sounds very promising, but how well does it work out in practice? Do the fixes work even with a gaussian blurred depth map (with a max calculation instead for the maximum depth value instead of course)? Variance shadow maps sound very very interesting, but I haven´t seen them much in real games (I think?), which seems to indicate that they have some serious drawbacks. I´d also like to avoid using layered VSM, since that seems to kind of defeat the purpose of them.... >_>

Share this post


Link to post
Share on other sites
Is VSM light bleeding solved? No, but you could look at Exponential Variance Shadow Maps if you wanted the best implementation (that I know of). And you can get around light leak enough that it isn't totally noticeable if you work on it, with things like storing maximum depth as you've said, if you want to make that performance tradeoff.

It's a solid idea though, especially if you want to get away with relatively low res shadow maps. Trials Evolution is an example of a game that makes exactly that work very well. Edited by Frenetic Pony

Share this post


Link to post
Share on other sites
Thanks for your reply! I found this on EVSMs but it didn´t explain much...

http://www.gamedev.net/topic/619034-demo-exponential-variance-shadow-map-with-mip-maps/

I´m using OpenGL, but it shouldn´t be that much different. The real problem is that my laptop is broken so I can´t experiment try out the demo in that post...

I think I have a pretty good understanding of VSMs; what to store in the depth map, ways of filtering it, e.t.c, but ESMs seem lot more advanced. I know it´s a lot to ask, but do you mind explaining more about how EVSMs work? I´m going to search around and try to find out how ESMs work, but it still seems to be a big jump going from the two of them individually and then combining them. EVSMs seem to require a 4 component 32-bit float texture. How come VSM only use 2 components (depth + depth squared) and ESM only use one (exp(k x depth), right?) but when combined we need 4? Anyway, I´ll read up on ESMs from now on...

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