Nov 122009
Raz0r, our internal games engine, has had directional light shadows for a long time, but the shadowmapping implementation was far from cutting edge. This has now been addressed with the addition of a Parallel-Split Shadow Mapping technology that makes directional light shadows appear pin sharp, even when used in massive worlds.
The attached pic is obviously a test scene that’s not trying to push the envelope in terms of visuals, but it does display a large outdoor environment with plenty of instancing and a nice crisp shadow on the ground wherever you look.
The method runs in a single pass (both when generating and later when reading back), storing 4 levels of splitting into the R,G,B and A channels of a standard texture at full resolution. The whole effect runs well on the DirectX 9 pipe, supporting down to shader model 2 which is our minimum spec.
Good to see you guys are still going, Stuffs looking cool, have linked the occlusion tut to my coder friends to read up on.
Dan
Thanks, glad to be of service
What are you up to these days?
Nothing too exciting, working as a motion graphic artist for an email marketing company atm, Making tutorial vids for their new product launch…deep joy least they bought me the adobe suit to do it
Hello!
I’m very interested in your pssm implementation :
Does your method support self shadowing? I can’t see any on your screenshot.
Moreover, you’re using one 8bits channel by split which seems very low precision-wise…
Thanks!
Laury
We use a shadowing technique called ID Buffering, which stores unique values per material group instead of writing a depth value out. This has several advantages such as only needing a single channel, it’s fast, and you get no “Peter Pan” or shadow acne or most other problems associated with depth storage.
The downside is that you can get holes if there are >255 different batchs in your scene and if you want self-shadowing you have to put different materials on the protruding pieces.
It’s not perfect, but the limitations can be worked around, whereas I’ve never been happy with all the fudges associated with the depth-based methods.
Maybe one day, shadows will just work! :s
Ok, thanks for the answer!
I’ve used standard depth-based shadowmaps before and it’s true it can be a real hassle to get rid of all artefacts, but using back faces helps a lot if your meshes are totally closed.
Again, thanks for your reply!
np. We’ll probably give depth-based shadows another run out the next time we do something that really needs it. Thanks for the tip about the back-faces.