GPU-Optimized Bi-Directional Path Tracing for Modeling Optical Experiment
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 y <sub>i</sub> is connected to a random point z on a light source to form the explicit view path y <sub>0</sub> … y <sub>i</sub> z. If the path accidentally hits a light source at point y <sub>i</sub>, then the sequence y <sub>0</sub> … y <sub>i</sub> forms implicit view path. · Light tracing pass. Tracing a path starting at a selected light source. Each vertex z <sub>i</sub> is directly connected to a random point y on the camera lens to form the explicit light path z <sub>0</sub> … z <sub>i</sub> y. If the path accidentally hits the camera lens at point z <sub>i</sub>, then the sequence z <sub>0</sub> … z <sub>i</sub> 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.