Currently, radiosity does not make use of the fact that pertubed normals would theoretically just require a different weighting of already-sampled rays, leading to the following issues:
Honoring normal pertubations in radiosity leads to an increased number of samples, slowing down sample cache lookup.
The increased number of samples is generated from a proportionally higher number of sample rays, slowing down pretrace even further.
Low-amplitude pertubations tend to be smoothed out; "reviving" these is only possible by increasing the general sample density.
Handling of multi-layered textures with different normal pertubations is currently poorly implemented.
As a solution, I propose to store for each radiosity sample not only the resulting illumination for a perfectly unpertubed normal, but from the same set of sample rays also compute the illumination for an additional set of about a dozen standardized pertubed-normal directions, and interpolate among these when computing the radiosity-based illumination for a particular point that has a pertubed normal.
For backwards compatibility, this method of dealing with pertubed normals in radiosity might be activated by a different value for the "normal" statement in the radiosity block, say, "normal 2".
Comments:
Comment by Thorsten Fröhlich (thorsten) - Tuesday, 23 August 2011, 11:42 GMT+5
What is the status of this?
Comment by Christoph Lipka (clipka) - Saturday, 03 December 2011, 08:08 GMT+5
Spherical harmonics might be the way to go; they might also allow radiosity to respect the brilliance parameter to some degree.
I don't intend to tackle this prior to 3.7.0 release proper though
http://bugs.povray.org/task/44
Details:
Currently, radiosity does not make use of the fact that pertubed normals would theoretically just require a different weighting of already-sampled rays, leading to the following issues:
Honoring normal pertubations in radiosity leads to an increased number of samples, slowing down sample cache lookup.
The increased number of samples is generated from a proportionally higher number of sample rays, slowing down pretrace even further.
Low-amplitude pertubations tend to be smoothed out; "reviving" these is only possible by increasing the general sample density.
Handling of multi-layered textures with different normal pertubations is currently poorly implemented.
As a solution, I propose to store for each radiosity sample not only the resulting illumination for a perfectly unpertubed normal, but from the same set of sample rays also compute the illumination for an additional set of about a dozen standardized pertubed-normal directions, and interpolate among these when computing the radiosity-based illumination for a particular point that has a pertubed normal.
For backwards compatibility, this method of dealing with pertubed normals in radiosity might be activated by a different value for the "normal" statement in the radiosity block, say, "normal 2".
Comments:
Comment by Thorsten Fröhlich (thorsten) - Tuesday, 23 August 2011, 11:42 GMT+5
What is the status of this?
Comment by Christoph Lipka (clipka) - Saturday, 03 December 2011, 08:08 GMT+5
Spherical harmonics might be the way to go; they might also allow radiosity to respect the brilliance parameter to some degree.
I don't intend to tackle this prior to 3.7.0 release proper though