Hello Coronauts,
This is Jarda, a new member of the Corona developer team. I’m a university professor and computer graphics researcher, and I’ve decided to use some of my know-how to help propel the development of Corona. Today, I’d like to follow up on Ondra’s post and share with you one of our exciting research results that will be presented at SIGGRAPH in Vancouver.
In this project, we have looked into unbiased rendering of light scattering in arbitrary volumes (or participating media, if you will). And when I write arbitrary, I do mean it. We set to develop an algorithm that can render fog, olive oil, wine, soap, wax, … (just about any volume that can scatter light) using a single unified approach. We call the resulting algorithm Unified points, beams and paths (UPBP) and I believe the results look pretty good:
One way to look at this project is as an extension of Vertex Connection and Merging (VCM) for volume rendering. VCM combines bidirectional path tracing with (surface) photon mapping to achieve great performance in a wide variety of scenes. It can render indirectly visible caustics, indirect glossy/diffuse illumination, etc., all in one package. I’ve co-authored the original VCM paper, and Ondra has already implemented VCM in Corona.
UPBP takes the idea of combining (and getting the best out of) different techniques to the next level. In volumes, not only can we use bidirectional path tracing and volumetric photon mapping, we can also throw in the beam radiance estimate and photon beams. By interpreting all of these techniques in the same mathematical framework that we have developed, we are able to combine them in a near-optimal fashion. In this way, the combined UPBP algorithm can truly leverage the strengths of all these techniques. But even more importantly, it can mediate their various limitations. For example, photon beams are awesome for rendering thin media such as fog, but they totally break down when rendering dense, highly-scattering media such as wax. UPBP does not run into this trouble because it can automatically determine that in wax, photon beams should be suppressed and replaced by something else.
UPBP has not yet been implemented in Corona but I cannot wait to start porting an optimized version in there so you can have fun with it!
Some links you might want to check out:
- This EGSR poster explains UPBP visually.
- The image comparisons (1, 2, 3) let you explore the results more closely.
- For the more geeky ones amongst you, you can download the source code with the scenes used in the paper from here.
- The project page has links to the paper and other resources.