Implementing a Photorealistic Rendering System using GLSL

Ray tracing on GPUs is becoming quite common these days. There are many publicly available documents on how to implement basic ray tracing on GPUs for spheres and implicit surfaces. We even have some general frameworks for ray tracing on GPUs. We however hardly find details on how to implement more complex ray tracing algorithms themselves that are commonly used for photorealistic rendering. This paper explains an implementation of a stand-alone rendering system on GPUs which supports the bounding volume hierarchy and stochastic progressive photon mapping. The key characteristic of the system is that it uses only GLSL shaders without relying on any platform dependent feature. The system can thus run on many platforms that support OpenGL, making photorealistic rendering on GPUs widely accessible. This paper also sketches practical ideas for stackless traversal and pseudorandom number generation which both fit well with the limited system configuration.

[1]  Dinesh Manocha,et al.  Fast BVH Construction on GPUs , 2009, Comput. Graph. Forum.

[2]  Vlastimil Havran,et al.  Path Regeneration for Interactive Path Tracing , 2010, Eurographics.

[3]  Philipp Slusallek,et al.  Progressive Light Transport Simulation on the GPU , 2014, ACM Trans. Graph..

[4]  Pierre L'Ecuyer,et al.  Efficient and portable combined random number generators , 1988, CACM.

[5]  Toshiya Hachisuka,et al.  Parallel progressive photon mapping on GPUs , 2010, SIGGRAPH ASIA.

[6]  László Szirmay-Kalos,et al.  Stackless Multi‐BVH Traversal for CPU, MIC and GPU Ray Tracing , 2014, Comput. Graph. Forum.

[7]  Andreas Dietrich,et al.  OptiX: a general purpose ray tracing engine , 2010, SIGGRAPH 2010.

[8]  Jacopo Pantaleoni,et al.  A path space extension for robust light transport simulation , 2012, ACM Trans. Graph..

[9]  I. Wald,et al.  On fast Construction of SAH-based Bounding Volume Hierarchies , 2007, 2007 IEEE Symposium on Interactive Ray Tracing.

[10]  Philipp Slusallek,et al.  Light transport simulation with vertex connection and merging , 2012, ACM Trans. Graph..

[11]  David K. McAllister,et al.  OptiX: a general purpose ray tracing engine , 2010, ACM Trans. Graph..

[12]  Pat Hanrahan,et al.  Photon mapping on programmable graphics hardware , 2003, HWWS '03.

[13]  Toshiya Hachisuka,et al.  Stochastic progressive photon mapping , 2009, ACM Trans. Graph..

[14]  Timo Aila,et al.  Understanding the efficiency of ray traversal on GPUs , 2009, High Performance Graphics.

[15]  Szirmay-KalosLászló,et al.  Stackless Multi-BVH Traversal for CPU, MIC and GPU Ray Tracing , 2014 .

[16]  N Thrane,et al.  A Comparison of Acceleration structures for GPU Assisted Ray Tracing , 2005 .

[17]  Kirill Garanzha,et al.  Simpler and faster HLBVH with work queues , 2011, HPG '11.

[18]  Li-Yi Wei,et al.  Parallel white noise generation on a GPU via cryptographic hash , 2008, I3D '08.