Thursday, April 19, 2012

Working towards Multiple Scattering

As I mentioned in my last post, I've been working on implementing multiple scattering using the approach described in A Rapid Hierarchical Technique for Translucent Materials.

As of a few weeks ago, I had done some necessary refactoring to support approximate multiple scattering, and I had written code to generate a uniform distribution of points on the surface of any object, compute the irradiance at each point, store the points in a custom octree, and traverse the octree.

Below are some pictures related to generating a distribution of equally-spaced points on the surface of an object. I made this work even when transformations are applied. The first image below is the original sphere, the second has been stretched horizontally, and the third has been scaled uniformly in all dimensions, with points generated with the same density in all cases. In the fourth image the density has been increased.

Below are images of a bunny as more and more points are added to approach an optimal distribution (more rejections allowed in my sampling routine):

I saved the renders below while working on correctly sampling the irradiance at sample points on the surface—the irradiance resulting from both direct and indirect illumination:

Final result.


No comments:

Post a Comment