Unity 5.0 and Variance Shadow Mapping

Will we got some improvements in Unity ShadowMapping i.e. VarianceShadowMapping OR
Will Unity give as ability to render shadow maps manually?

VSM pdf’s:
http://www.punkuser.net/vsm/
http://www.punkuser.net/savsm/i3d2007_poster.pdf
http://www.punkuser.net/lvsm/lvsm.pdf

Have anyone any info about this or maybe Unity Team can say something.

VSM (and variants like EVSM etc.) are not planned for 5.0. But we are aware that we should improve shadow filtering somehow. Just won’t happen in initial 5.0 release, I think.

And what about PCSS?

Same answer. No significant improvements in how shadow filtering is done out-of-the-box in 5.0.

(we have changed how shadows in forward rendering are done - e.g. they do not require “re-render whole scene with shadow collector pass” thing anymore… but it does not change how the shadows are filtered)

Aw… Very sad to hear. I was just comparing Unreal 4’s real-time shadows to Unity’s and it’s a big difference in quality. I’ll be excited when you guys get a chance to work on it though.

In the meantime… you could always do more filtering taps if you’re willing to write your own shaders or hijack AutoLight.cginc :slight_smile:

Doesn’t Enlighten bring some shadow improvements? Or will it still use Unity’s standard shadows?
Maybe i’m confused with what new things Enlighten brings to the table, besides real-time global illumination and new lightmapping.

Since we’re talking about shadow techniques there’s something I’ve been meaning to ask, I’ve been having to deal with shadow performance and stuff lately and mind you I have no clue how this stuff works in the background so forgive my ignorance…
But I’ve been wondering, if deferred lighting basically allows us to have a large number of lights with really good performance, is there some sort of equivalent for shadows? Deferred shadows so to speak. Or maybe that’s already a thing? (again, I have no idea and I’m probably butchering how this stuff works lol). I’m just wondering because it seems like it would be a natural progression of deferred lighting (like if you can have near unlimited lights, makes sense to be able to have near unlimited shadows).

In my game BHB I have scenes where I use a large number of dynamic lights and I get really good performance. But where turning a couple of lights on/off doesn’t change performance much, turning a couple of shadows on/off does and I’m wondering if there are any techniques out there that would allow for large numbers of dynamic shadows. Again, pardon my ignorance on the subject but I’ve been really interested in knowing. I’ve been able to fake it really well using cookies for a lot of stuff, but there are many cases where dynamic shadows would be more desirable.

You have “unlimited” shadows in your shadow range. If you want to increase that range, you basically have to render more and more objects so it gets slower. But the option is existent…

You can always decrease your light power.
If you have a grid of objects with a distance of one unit and one light with a range of one unit, every light has to affect 5 objects at most.
If you increase the light to 2 units, you will get to 12 affected objects.

A question for all of you: how would one go about modifying the shadow maps, or even accessing the tex?

I’m well aware of all that. And what I’m talking about is mainly performance related, if you reread my post you’ll see that I mention that it does get slower and that’s my point. I already have workarounds and can get the look I want though, so it’s not a matter of me being stuck or complaining or anything.
With deferred lighting, the performance cost is based on how many pixels are being lit, which means you can have many lights for relatively cheap performance-wise.
What I’m asking (and I guess I should have specified that I was asking Aras) is if there’s some sort of equivalent for shadows or if such a technique even exists or is possible (not in Unity, but technology in general). Because currently while we get great performance with lights, we don’t have similar boosts (to my knowledge) with shadows. What I’m asking is more theoretically than anything else but I wanted to get Aras’s thoughts on that since we’re talking about shadows

Enlighten does not do anything with shadows (nor any direct illumination). It only computes provides the indirect lighting (2nd and later light bounces) and indirect specular. And baking of lighting offline, if you wish. All direct lighting shadows are completely outside of what Enlighten does.

There is some research into these kinds of algorithms, but nothing “production ready/proven” yet, as far as I know. e.g. this paper is pretty cool: efficient virtual shadow maps for many lights

For bakes? A folder with the maps gets created alongside the scene during the bake process. Then you can just use/access them as normal textures if you want, including opening them in an image editor and messing with them.

@angrypenguin,
I think he mean dynamic shadows = “shadow maps”.

@FuzzyQuills,
I’ve posted a while while back a custom AutoLight.cging that adds 8-tap filtering to Unity shadows (to smooth them a bit more) but I don’t have the link right now, make a forum digging search! ^^

Ohh…please do it man…
I need to know how to improve shadow filtering

At least you guys aware about this issues, so i hope we got better shadow sooner :slight_smile:

I have to dig the forums, I posted it a while back (back to 3.x) you probably don’t want to use it entirely in v4 (I mean don’t add it straight to your project) get only the 8-tap filtering part and add it to the latest AutoLight.cginc (v4).
In the mean time there’s an asset store package that will help improve shadows too (dunno the name of it though).

thanks for the clarification. I guess i was mostly wrong about what it would bring to Unity.

it would be no problem, at least i know how to add custom shadow filtering…

If this can be done then it should be a part of the out of the box toolkit and implemented in a class of shaders. If it is a performance hit for some give us a checkbox or similar to toggle it off or on.