ISSN 2079-3537      

 
 
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
Scientific Visualization
Issue Year: 2013
Quarter: 2
Volume: 5
Number: 2
Pages: 1 - 15
Article Name: GPU-OPTIMIZED BI-DIRECTIONAL PATH TRACING FOR MODELING OPTICAL EXPERIMENT
Authors: D. Bogolepov (Russian Federation), D. Ulyanov (Russian Federation), D. Sopin (Russian Federation), V. Turlapov (Russian Federation)
Address: D. Bogolepov
denisbogol@gmail.com
Lobachevsky State University of Nizhni Novgorod, Nizhni Novgorod, Russian Federation
 
D. Ulyanov
danila-ulyanov@ya.ru
Nizhny Novgorod State Technical Universit, Nizhni Novgorod, Russian Federation
 
D. Sopin
sopindm@gmail.com
Lobachevsky State University of Nizhni Novgorod, Nizhni Novgorod, Russian Federation
 
V. Turlapov
vadim.turlapov@gmail.com
Lobachevsky State University of Nizhni Novgorod, Nizhni Novgorod, Russian Federation
Abstract:  Bi-directional path tracing (BPT) is an image synthesis algorithm based on the numerical solution of the rendering equation. The basic idea is that paths are traced at the same time from a light source and from the camera aperture. BPT handles caustics and indirect illumination effects far more efficiently than ordinary (unidirectional) path tracing (PT). Despite the fact that the BPT can be implemented on the GPU, it is quite resource intensive. The memory consumption is significantly higher than for ordinary PT (more than 20x for each sample) and depends on the maximum path length. At the same time, effective GPU utilization is achieved for several tens of thousands of concurrent threads that require large amount of onboard memory. However, current GPUs have limited memory resources that should be used sparingly to store 3D geometric models, accelerating structure, texture maps, and other data. In this paper we present light-weight modification of BPT, which is specially optimized for massively parallel architectures with limited memory resources, like GPU. The amount of computations performed by the algorithm is still comparable to ordinary path tracing. Though modified algorithm preserves some benefits of general BPT and handles indirect illumination and caustics quite efficiently. This rendering algorithm, called instant bidirectional path tracing (IBPT), generates an image in two independent passes (can be executed in any order):
 - Path tracing pass. Tracing a path starting at the eye (camera lens). The path is extended until it is terminated with a certain probability by Russian roulette. Each vertex yi is connected to a random point z on a light source to form the explicit view path y0 … yiz. If the path accidentally hits a light source at point yi, then the sequence y0 … yi forms implicit view path.
 - Light tracing pass. Tracing a path starting at a selected light source. Each vertex zi is directly connected to a random point y on the camera lens to form the explicit light path z0 … ziy. If the path accidentally hits the camera lens at point zi, then the sequence z0 … zi forms implicit light path.
 The samples generated by multiple sampling strategies are combined in a single unbiased estimator by using multiple importance sampling (MIS). We propose an efficient procedure for computing the power heuristic weights. The optimal MIS weights can be computed using only one floating variable per path regardless of its length. Therefore, the GPU can be utilized efficiently by running a ten times larger number of light-weight threads. Furthermore, this eliminates restrictions for GPU on the unbiased image synthesis. We showed that IBPT performs a lot better than simple MIS PT, especially in scenes containing strong indirect illumination and caustics.
Language: Russian