Chaos

What are you looking for?

featured-research-corner.png
featured-research-corner.png

Research corner: Progressive importance sampling


We would like to introduce a new chapter on our blog, which we simply call “Research corner“.  

As you might know, Ondrej and Jaroslav are not only great programmers, but also researchers. They have published many interesting studies and achieved great results in the academic field. We have decided to occasionally publish interesting news and articles from their research on our blog in hope to spark more interest in “what’s really under the layer of C++ code”

In the rest of this article, Ondra describes the latest project he had worked on.

Adam

Rendering with progressive importance sampling

Yesterday, another paper from our research group went online, bearing the sexy name “On-line Learning of Parametric Mixture Models for Light Transport Simulation“. It features a novel method for accelerating difficult scenes rendering. I have worked on it as second author, and implemented the method in Corona.  Although the implementation is not production-ready, and unavailable to the public (it is not included in public Corona releases, not even in daily builds), I hope it will spark some interest of the more geeky artists out there and show you a possible future development.


What is it all about?

While the paper is written in a very technical way (which is a necessity for its results be to verifiable and reproducible) the basic idea is not that complicated. It helps with rendering of scenes with very complicated visibility. Think something like room with small windows, but worse.

Let’s illustrate the principle on the simple case of path tracing: We first create a photon map, but instead of rendering it directly we use it in a much smarter way – to do better importance sampling. Instead of displaying the illumination from the map we guide the regular path tracing towards the illumination sources in the map – for example the small windows. This provides much better importance sampling and drastically reduces the noise. It works nicely for some cases, but as we have found out it is not enough for the really difficult scenes, such as this classical test scene, with all light coming through the narrow door opening:

reference-research.jpg

We were just unable to get any photons in the area we wanted. You might remember this from your pre-corona days – spending multiple minutes in the photon emission phase just to see most of them wasted in the outside vegetation.
We had to go further, so we added an importon map.


What are the importons?

Importons are just photons emitted from the camera. We first trace importons, then use them to guide photons, then use photons to guide path tracing. Better, but still not enough. To really make this work with any scene we had, we had to iterate the process.

So importons -> photons -> importons -> photons -> …. -> photons -> path tracing.

We call this the ping-pong method. With each step, the guiding gets better, and more particles get to the important areas, which makes the next step even better. The process accelerates itself! And since the photon map is not used directly, it remains 100% unbiased.


Examples

reference_image_corona.jpg
Reference image
PT_guided_corona_compare.jpg
Guided Path tracing
BIDIR_guided_corona_compare.jpg
Guided Bidir
VCM_guided_corona_compare.jpg
Guided Vertex Connection and Merging

Why is it useful

This paper demonstrates, that the rendering is not a solved problem, and sometimes there are still huge speedups possible. While it is only experimental and not available to public in Corona, there were several important features implemented in Corona as a side-effect when I was working on the paper – namely bidirectional path tracing, vertex connection and merging, better random sampling, and more. The method itself might appear in some future release for example to act as a fully automatic replacement of environment portals.

The paper got accepted to the SIGGRAPH 2014 conference, so my colleague and main author of the paper, Jirka, will present it there. I am also attending to present a talk about usability issues in Corona. So feel free to visit us at SIGGRAPH, list through the paper, or try the nice interactive comparisons demonstrating the benefits: 1 2 3. And most importantly, remember, that rendering is magic, and science is fun ;).

Ondra


About the author

Ondra Karlík

Ondřej was always fascinated with creating photorealistic images. He started in computer graphics around 2005, but after enrolling at the Czech Technical University in Prague he switched his focus to programming. In 2009 he combined both interests when he started the development of Chaos Corona (at the time, named Corona Renderer).

He developed Corona as part of both his Bachelor and Master thesis. After graduating in 2011, he met Jaroslav Křivánek and started a Ph.D. at Charles University in Prague under his supervision, focusing on the efficiency and usability of rendering. In 2014, he suspended his studies to focus on Chaos Corona full-time.

Originally published: May 29, 2014.
© Škoda Design

Subscribe to our blog.

Get the latest news, artist spotlight stories, tips and tricks delivered to your inbox.

By submitting your information you are agreeing to receive marketing messages from Chaos. You can opt-out at any time. Privacy Policy.

Chaos
© 2024 Chaos Software EOOD. All Rights reserved. Chaos®, V-Ray® and Phoenix FD® are registered trademarks of Chaos Software EOOD in Bulgaria and/or other countries.