Paraboloid Mapping Article

Started by
17 comments, last by cyber_wiz_2007 18 years, 1 month ago
<offtopic>
btw what's about tetrahedral shadowmapping? should need only 4 renders instead of 6(cubemap) and doesn't need high tesselation like parabolid maps. Only probably wastes some pixel in the textures...
</offtopic>

regards,
m4gnus

[Edited by - m4gnus on March 21, 2006 12:54:12 PM]
"There are 10 types of people in the world... those who understand binary and those who don't."
Advertisement
<<<
tetrahedral shadowmapping?
<<<
I would think the same problem is true here? We need to do the projection in the vertex shader and therefore the level of tesselation is responsible for the quality of the projection ....
You might even project a point light into a 2D texture .... but same problem applys here.

- Wolf
no you would not need the high tesselation because the sides of the tetrahedra aren't curved. but you'd waste some space in the texturespace because the sides are triangles and not squares.

regards,
m4gnus
"There are 10 types of people in the world... those who understand binary and those who don't."
I think you would get distortion problems around the edges of the triangles if the angle between the triangles is less than 90 degrees. Even so, it might be an interesting method - you'll have to let me know how it turns out [smile].

I think it would be good to add a section on dual paraboloid shadow mapping. It isn't really all that much different, but it could be added for completeness.

Thanks again for the replies!!
Quote:Original post by oggialli
Quote:Original post by oconnellseanm
Quote:Original post by Anonymous Poster
Hi,

I like the idea of dual parabaloidal shadow mapping, but I read on the delphi3D site that it requires high mesh tesselation. Just wondering if there is a work-around for low poly meshes?

It would be refreshing to see parabaloidally projected texels on a scene


That is my DREAM that Nvidia and ATI design their pixel shaders to allow the programmer to change where the current pixel is plotted in the frame buffer.


That's so very not-possible due to the way how the triangle assembly system works. So almost the whole GPU core would need a revamp and things like early Z fail optimization and hierarchial Z (ATI) would have to go.


Yeah, it is called scattering, something GPUs suck at, as opposed to gathering (texture look-ups). There are some ways to achieve some fast limited scattering, though.
"C lets you shoot yourself in the foot rather easily. C++ allows you to reuse the bullet!"
Quote:Original post by wolf
<<<
tetrahedral shadowmapping?
<<<
I would think the same problem is true here? We need to do the projection in the vertex shader and therefore the level of tesselation is responsible for the quality of the projection ....
You might even project a point light into a 2D texture .... but same problem applys here.

- Wolf


Tetrahedral shadow mapping should work decently enough, and be able to use fully linear projections. However, a good chunk of your textures will end up being unused though, plus you'll have to use a wide FOV meaning you'll have to utilize even higher resolution textures to maintain good shadow quality.

Quote:Original post by Jason Z
Thank you for all the feedback! I hope the article will help spread the use of paraboloid mapping, which seems to be under-realized right now for some reason. If there is anything that you guys think could make it better just let me know!


The stupidly high tesselation required to get even semi-decent results is a pretty good reason in my book [grin]

Quote:I think it would be great to add a section on Dual-Paraboloid Shadow maps ... this is the most obvious case you want to use the dual-paraboloid projection.

The reason why DP shadow maps are not much used in games is, that you do not want to increase the tesselation too much, because it affects the overall performance and then you might also consider shadow volumes a better solution.


Keep in mind that it'll also lower the texel density at the same time, resulting in a lot more shadow map aliasing which is not a good thing.
Quote:Keep in mind that it'll also lower the texel density at the same time, resulting in a lot more shadow map aliasing which is not a good thing.
That is not really a killer if the light source and associated shadows are relatively far from the camera though.

Dual Paraboloid mapping does have its uses. In particular, environment mapping is a good candidate and it really doesn't take all that much tessellation to get good results. Shadow mapping may not be the best case, but it is still useable as well.

In any case, it is good to experiment with the mapping to better understand it and what it can do. Do you think there is anything that could be added to the paper to make it a better description of the mapping itself?
We recently implemented DPSM here. Something to consider (that I don't think is mentioned anywhere else) is that you only need to have well tesselated casters. You can have extremely low poly receivers, as long as you modify the implementation slightly from what was originally published. I keep waiting for someone else to realize this and say it, but I guess I'll just say it. If you do the shadow map lookup (during the lighting pass) in the pixel shader, rather than the vertex shader, the non-linear transformation happens after rasterization, and you avoid all the problems.

Of course, if you're doing fully general shadows, this might not help much, but if your casters and receivers tend to be different geometry (eg, characters and world geometry), this can make the technique much more feasible.

I found a demo called "Real-Time Translucent Global Illumination" on the cgshaders.org website which uses dual parabaloid mapping with spherical harmonics-

link

The source also has a lot of relevant math


This topic is closed to new replies.

Advertisement