Research : Bidirectional Path Tracing with spectral effects … on the GPU

There is a lot of GPU renderers around, some are just simple toys but there is not much real production engine able to run on the GPU.

Because the physics of light is a really complex domain, most of the algorithms today does not support all the effects of the real physics, ie. they can provide a physical accurate image in 90% of the case but it remain some “hard cases” to handle.

Our goal is not to handle all the effects, because it is not necessary except is some very specific situation, our goal was to provide a production renderer able to do more than most existing one. The last version of our renderer, aka Spectral Studio, is based on a BDPT (Bidirectional Path Tracing) algorithm, able to quickly (near real time) render the caustics with/without spectral dispersion, but also optimized for out door scenes.

BDPT is really easy to do on the CPU and it provide very nice results but on the GPU it is really more complex, first because of the Markov Chain nature of the algorithm, secondly because we throw ray from both the eye and the lights and last because the GPU have a lot of limitations today (Memory, Speed, Instructions). So, we have work during a long time to make it work and find the right balance but at the end the renderer is able to render spectral caustics in real time and continue to acheive at good speed for the other images.

In a later article we expect to briefly explain how we handle spectral dispersion effects to generate “rainbow like” effects in real time on the GPU… it will gives you a more in depth idea of the problem that we can meet on the GPU.

To conclude, here is a simple example of what can be acheive, notice that we still support fast dispersions too and that caustics appear in real time, giving a fast visual feedback.