UPBP: Light scattering in arbitrary volumes

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:

An image rendered with UPBP.

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.

Volumetric scattering rendered with photon beams.
Volumetric scattering rendered with photon beams.

Equal-time UPBP rendering, notice the reduced noise, especially on the candle.
Equal-time UPBP rendering, notice the reduced noise, especially on the candle.

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.

See you in Vancouver!



10 thoughts on “UPBP: Light scattering in arbitrary volumes

  1. We need caustics, spectral rendering and velvet simulation for rendering turkish baths in a TV novel. Do you support

  2. We arre evaluating renders for upcoming production major tv series. We need dispersion for renderding CG diamonds is this possible with the corona. Can Corona render in spectral mode.

  3. Hi Jarda

    welcome to our community.
    It looks promosing what you are telling, it would be great seeing that stuff implemented in Corona. Keep up the good work.

  4. This is great news, I love seeing Corona grow in features and developers !!

    Jarda welcome aboard 🙂

Leave a Reply

Your email address will not be published.