xtiming at February 27th, 2012 12:05 — #1
I'm working on lighting and shading for a project I am working on and I have run into the inherent issues with standard shadow mapping for point lights. I've come across multiple different techniques for applying proper shadow mapping to point likes and dual-paraboloid mapping is one of those.
I was wondering if this technique, if implemented, would work for directional and spotlights as well or if it is only realistic/feasible/possible to implement for point lights?
Also, I'm using Ogre3D for the graphics rendering which (not sure how it works 100% with other engines, as I'm fairly new to graphics rendering,) culls lights that are outside the view frustum so that they simply cease to exist, resulting in distorted/weird light and shadows when changing the camera angle to a point where they enter or leave frustum. Will this dual-paraboloid shadow mapping get rid of this issue or is there another method I can use to get rid of it?
Last of all, how does this technique match up to other techniques such as cube texture mapping in terms of performance, quality and general ease of implementation?
reedbeta at February 27th, 2012 13:31 — #2
Why would you want dual-paraboloid mapping for directional and spot lights? The problem that dual-paraboloid mapping is trying to solve doesn't exist in those cases, as you can just use a regular parallel or perspective projection.
The thing you mentioned about culling lights outside the view frustum sounds like a bug in Ogre. Or maybe in your code / setup somewhere, as I'd be pretty surprised if Ogre is getting such a simple thing wrong. In any case, dual-paraboloid mapping has nothing to do with that. Lights shouldn't be culled if the light's source point is outside the view frustum, only if its whole volume of influence is outside the view frustum.
Lastly, regarding performance and quality vs cube maps: dual-paraboloid is potentially faster because you're only rendering two shadow maps instead of six, but also potentially worse quality because you have fewer texels overall (unless you increase the size of your shadow map textures to compensate), and due to issues with the nonlinear projection (you can get artifacts if your scene isn't highly tesselated enough). Ease of implementation is probably similar for both.
xtiming at February 27th, 2012 13:46 — #3
Thanks for the quick reply Reedbeta,
I understand the problem it solves is only present for point lights, I was just curious as to whether it was theoretically possible (even if pointless,) to implement it for directional/spotlights.
On the note of the frustum culling, I'll definitely take another look because my initial thought was the same. Chances are I've just messed up in configuring something or other.
And last, thanks for the explanation. I understand that two shadow maps compared to six would probably result in a performance increase, but I wanted to be sure given that there are potentially different things needed which would change the expected performance (I haven't looked at any math or code regarding either yet, just the theories.)
Again thanks for the quick reply!
xtiming at March 1st, 2012 12:28 — #4
Sorry for the double post,
I'm wondering if there is any good tutorials or examples of dual paraboloid mapping specifically for use in omnidirectional light shadows for NVIDIA Cg? I've been searching for an example or a tutorial and I've found some papers and discussions about the theory behind the method however most of the samples I have found are using HLSL and tend to do what seems to be a very general overview of the math and the components required to set it up.
If someone could point me to what I am looking for, or even something that breaks down the math theory step-by-step instead of just offering a general overview so that I can apply the knowledge myself in Cg shaders, that would be great..