Sign in to follow this  
BrentMorris

Are hemicubes necessary for Radiosity?

Recommended Posts

To accomplish Radiosity, is it really required to rasterize the scene to a hemicube or hemisphere at all?

Is there a problem with running N^2-ish patch to patch bounces, where the receiving patch runs through all of the patches visible to it and adds their point contributions?

Share this post


Link to post
Share on other sites
[quote name='DementedCarrot' timestamp='1335245241' post='4934333']
To accomplish Radiosity, is it really required to rasterize the scene to a hemicube or hemisphere at all?
[/quote]

No. It's just one way to compute visibility and form factors between patches, and it happens to be pretty easy to implement on a GPU.

[quote name='DementedCarrot' timestamp='1335245241' post='4934333']
Is there a problem with running N^2-ish patch to patch bounces, where the receiving patch runs through all of the patches visible to it and adds their point contributions?
[/quote]

Other than performance? Not really.

Share this post


Link to post
Share on other sites
If it was properly optimized couldn't it be faster? I just hate the idea of rasterizing an entire scene for every patch. I was hoping some kind of clever face->face visibility determination could eliminate huge numbers of patches that needed to be checked against others, and to set it up in such a way that you could pretty much just throw a list of patches that needed to be radiated at a compute shader.

Share this post


Link to post
Share on other sites
[quote name='DementedCarrot' timestamp='1335247904' post='4934340']
If it was properly optimized couldn't it be faster? I just hate the idea of rasterizing an entire scene for every patch. I was hoping some kind of clever face->face visibility determination could eliminate huge numbers of patches that needed to be checked against others, and to set it up in such a way that you could pretty much just throw a list of patches that needed to be radiated at a compute shader.
[/quote]

The original radiosity algorithm just worked that way, looking at all pairs. There are many papers on how to accelerate it. One advantage you get from the hemicube is that you immediately get the correct form factor (without the costheta), whereas in patch-to-patch interaction you need some analytical expression for it. There are a number of them, some based on contour integrals, and some based on simpler approximations (disks etc). Otoh you get aliasing artifacts when doing hemicube, so there's a tradeoff.

Share this post


Link to post
Share on other sites
[quote name='DementedCarrot' timestamp='1335247904' post='4934340']
If it was properly optimized couldn't it be faster? I just hate the idea of rasterizing an entire scene for every patch. I was hoping some kind of clever face->face visibility determination could eliminate huge numbers of patches that needed to be checked against others, and to set it up in such a way that you could pretty much just throw a list of patches that needed to be radiated at a compute shader.
[/quote]

Visibility isn't a simple problem, and unfortunately there aren't any simple solutions. You can make a lot of optimizations if you assume the scene is static, but if the scene is static then you might as well pre-compute visibility and form factors.

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