The Community for Technology Leaders
Pacific Conference on Computer Graphics and Applications (2010)
Hangzhou, Zhejiang China
Sept. 25, 2010 to Sept. 27, 2010
ISBN: 978-0-7695-4205-8
pp: 54-61
Rendering BRDF surfaces have been intensively studied to produce physically plausible appearance of surface materials. Illumination at a surface point is formulated as an integral of a BRDF producted with incident radiance over the hemi-sphere domain. One popular method to compute the integral is Monte Carlo integration which estimates it with a sum of the integrand evaluated at stochastically sampled rays. Although its simple nature is practically attractive, it has a serious drawback of noise artifacts in 3D rendering. In this paper, we propose a novel noise-free Monte Carlo rendering algorithm running on a GPU in real-time. The main contribution is a new importance sampling scheme providing consistent sample rays over surfaces. For each evenly spaced latitude angle of eye ray, denoted by $\theta$, incident rays are sampled with a PDF derived from the target BRDF lobe. We use a force-based update method to make sample rays consistent between consecutive $\theta$'s. Finally, corresponding sample rays are linearly connected to form a smooth curve, called a {\it sample thread}. In rendering, the sample rays for a surface point are obtained as thread points specified by $\theta$. Since the threads provide sample rays consistently varying on the surface, the estimation variance manifesting image noise is minimized. A thread set is precomputed for each BRDF before rendering so that no sampling overhead is imposed on the GPU. According to our experiments, about 100 threads are sufficient for most measured BRDFs to achieve a plausible quality, which enables the interactive performance.
BRDF, Monte Carlo method, importance sampling, GPU rendering

S. Kim, J. Lee and M. Kyung, "Thread-Based BRDF Rendering on GPU," Pacific Conference on Computer Graphics and Applications(PACIFIC GRAPHICS), Hangzhou, Zhejiang China, 2010, pp. 54-61.
81 ms
(Ver 3.3 (11022016))