Sign in to follow this  
B_old

Dual Sphere-Unfolding/Omni-directional shadow maps

Recommended Posts

B_old    689
I'm curious what people are using for omni-directional shadow maps these days.
I think that dual paraboloid and cube map shadows are two typical choices. I have used the latter in the past. While looking for alternatives that might perform faster with comparable quality I came across [url="http://www.cimat.mx/~alberto/Paper.pdf"]Dual Sphere-Unfolding Shadow Maps[/url], which are rendered in a single pass. Has anyone tried it? Is there a more detailed explanation of the method around? Any other methods that are worth looking into?

Share this post


Link to post
Share on other sites
PixelSmasher    445
I tried this method in a recent [url="https://vimeo.com/39475515"]project[/url] to fill a scene with 100 dynamic lights casting shadows. The theory is appealing and the results are not so bad...
BUT you'll want to have a very fine geometry in order to obtain accurate shadows: the projection used to store the whole shadow sphere in a single texture will highly bend the geometric data, thus leading to frequent artifacts during the depth comparison.
(Though I had to rush that project so I might have missed something)

Still, it was tremendously fast and produced cool shadows... If you don't stare at them too much [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img] Edited by PixelSmasher

Share this post


Link to post
Share on other sites
PixelSmasher    445
Unfortunately, I am not.
This technique seems to remain unnoticed (or people consider that such artifacts are unworthy of their time [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img]).

There is this [url="http://www.youtube.com/watch?v=WnNOMTDmYTg"]video[/url], made by the author of Dual-Sphere Unfolding (It was my only help when implementing my demo), but nothing from the community.
If you ever find something, I would be greatly interested. Edited by PixelSmasher

Share this post


Link to post
Share on other sites
CryZe    773
It's just simply sphere mapping. The only difference is, that they use 2 sphere maps and let the vertex shader decide on which one the vertex gets projected, based on whether the y axis is positive or negative. They say that it would be a one pass method, but I really doubt it. I don't think that a triangle that has vertices on both sides of the xz-plane wouldn't cause artifacts. You'd probably still need a geometry shader or 2 passes to render these shadow maps without artifacts. I think it's worse than dual paraboloid shadow mapping, but I'll give it a try.

Share this post


Link to post
Share on other sites
B_old    689
[quote name='CryZe' timestamp='1343230983' post='4962965']
It's just simply sphere mapping. The only difference is, that they use 2 sphere maps and let the vertex shader decide on which one the vertex gets projected, based on whether the y axis is positive or negative. They say that it would be a one pass method, but I really doubt it. I don't think that a triangle that has vertices on both sides of the xz-plane wouldn't cause artifacts. You'd probably still need a geometry shader or 2 passes to render these shadow maps without artifacts. I think it's worse than dual paraboloid shadow mapping, but I'll give it a try.
[/quote]
It would be nice to see your results in case you find the time and implement it.

Share this post


Link to post
Share on other sites
FreneticPonE    3294
I would also try single pass cubemapping using the geometry shader: http://devmaster.net/forums/topic/9367-render-to-cubemap-in-a-single-pass-really-useful/

The least amount of geometry warping that I know of, and still very efficient [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

Share this post


Link to post
Share on other sites
B_old    689
[quote name='Frenetic Pony' timestamp='1343357134' post='4963488']
I would also try single pass cubemapping using the geometry shader: [url="http://devmaster.net/forums/topic/9367-render-to-cubemap-in-a-single-pass-really-useful/"]http://devmaster.net...-really-useful/[/url]

The least amount of geometry warping that I know of, and still very efficient [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]
[/quote]
Last time I tried it, using the geometry shader for single pass cubemapping was slower on my machine than doing a pass for every cube face. Have you seen more encouraging results?

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