Visionaray: A Cross-Platform Ray Tracing Template Library
Stefan Zellmann, Daniel Wickeroth, Ulrich Lang
Proceedings of the 10th Workshop on Software Engineering and Architectures for Realtime Interactive Systems (IEEE SEARIS 2017), Los Angeles, California, USA, March 19, 2017.
We present the software architecture of the C++ ray tracing template library Visionaray, which provides generic algorithms and data structures as building blocks for applications that traverse rays through 3-D space. While many state of the art ray tracing libraries are vendor specific and focus only on acceleration data structure traversal, Visionaray is cross platform compatible and implements several ray tracing-related tasks such as parallel ray generation, shading, Monte Carlo integration, or texture sampling. Visionaray was developed with a strong focus on real-time and interactive rendering on high performance computing platforms. The generic programming approach allows for loose coupling of algorithms and efficient binary code that is optimized for data and instruction cache utilization. We discuss implementation details and software architecture considerations to achieve real-time performance on hardware platforms ranging from single-board mini computers to GPGPUs. We prove the effectiveness of our approach by evaluating and discussing four case studies that focus on real-time rendering, scientific visualization, and virtual reality.