shadow map projections

furore

Newcomer
Hi all,

I'm wondering if anyone has any practical experience they'd be willing to share on some of the more exotic shadow map projection schemes for directional lights?

I'm trying to wring that last bit of resolution from my shadow maps. I've encoded the maps as ESMs, hidden most the artifacts and tuned the filtering to best match the scene. I've still got a little too much motion and not quite enough accuracy, especially in the shadows closer to the camera. Shadows a little further back look lovely.

CSMs are out of the question in this instance. It's a directional light, and currently uses an orthogonal projection. At first guess, I'm thinking that approximating the directional light as a distant point light might be the best bet. Has anyone seen the fancier projections do better than this for close up detail in a directional light?

Bit of a broad question, I know. Any useful input much appreciated though! :)
 
Hi all,
CSMs are out of the question in this instance. It's a directional light, and currently uses an orthogonal projection. At first guess, I'm thinking that approximating the directional light as a distant point light might be the best bet. Has anyone seen the fancier projections do better than this for close up detail in a directional light?
Why is CSM out of the question?
It is designed just for the problem you are having.

If you want to use only one shadow map for the light, there are things like perspective shadow map, trapezoidal shadow map and light space perspective shadow maps.
All lose resolution when shadow caster is between light and camera and have shadow crawling when camera moves.
Both problems are addressed by CSM.
 
You really don't want to use fancy wrapping with singularities.
You want the most straightforward approach that guarantees good quality in 99.9% of circumstances.

Therefore, Parallel Split Shadow Maps are a good solution, you can add some Exponential or Variance to that if you need it.
 
Sadly, CSM/PSSM are out of question on grounds of memory & GPU time usage (and to a lesser extent implementation overhead). They do work great, but they're not the solution this time around.

I'm going to try approximating the directional light as a point/spot light (or rather, swapping the orthogonal projection for an appropriately fudged perspective projection). Unfortunately, I don't think I'll be able to post before & after screens from the actual project - if I can find some suitable public domain material to load in for demonstration purposes I will :).



+1 for ESMs though (I know one of the people responsible for bringing them to my attention lurks around here sometimes :) ). They've been brilliant for wringing extra performance out of our small shadow buffer.
 
(Ass covering: I do this sort of thing commercially, but my opinions are my own and my contributions here are not representative of my employers, their customers or any related garden gnomes. Yada yada.)
 
Back
Top