Adding Custom Intersectors to the C++ Ray Tracing Template Library Visionaray

  title={Adding Custom Intersectors to the C++ Ray Tracing Template Library Visionaray},
  author={Stefan Zellmann},
Most ray tracing libraries allow the user to provide custom functionality that is executed when a potential ray surface interaction was encountered to determine if the interaction was valid or traversal should be continued. This is e.g. useful for alpha mask validation and allows the user to reuse existing ray object intersection routines rather than reimplementing them. Augmenting ray traversal with custom intersection logic requires some kind of callback mechanism that injects user code into… 


Visionaray: A Cross-Platform Ray Tracing Template Library
The software architecture of the C++ ray tracing template library Visionaray is presented, which provides generic algorithms and data structures as building blocks for applications that traverse rays through 3-D space and proves the effectiveness of the approach by evaluating and discussing four case studies that focus on real-time rendering, scientific visualization, and virtual reality.
OptiX: a general purpose ray tracing engine
The NVIDIA® OptiX™ ray tracing engine is a programmable system designed for NVIDIA GPUs and other highly parallel architectures. The OptiX engine builds on the key observation that most ray tracing
OptiX: a general purpose ray tracing engine
The NVIDIA® OptiX™ ray tracing engine is a programmable system designed for NVIDIA GPUs and other highly parallel architectures that achieves high performance through a compact object model and application of several ray tracing-specific compiler optimizations.
Embree: a kernel framework for efficient CPU ray tracing
The design goals and software architecture of Embree are described, and it is shown that for secondary rays in particular, the performance is competitive with (and often higher than) existing state-of-the-art methods on CPUs and GPUs.
C++ Compile Time Polymorphism for Ray Tracing
This paper proposes C++ compile time polymorphism as an alternative optimization strategy that does on its own not reduce branching, but that can be used to write highly expressive code without sacrificing optimization potential such as early binding or inlining of tiny functions.
Ray Traced Volume Clipping Using Multi-Hit BVH Traversal
A SIMD-friendly clipping algorithm for ray traced direct volume rendering that is compatible with arbitrary geometric surface primitives ranging from mere planes over quadric surfaces such as spheres to general triangle meshes is presented.
Understanding the efficiency of ray traversal on GPUs
A simple solution is proposed that significantly narrows the gap between simulation and measurement, and results in the fastest GPU ray tracer to date.
Advanced texture filtering: a versatile framework for reconstructing multi-dimensional image data on heterogeneous architectures
A framework that provides versatile texture filtering capabilities up to third-order reconstruction using various types of cubic filtering and interpolation primitives and a memory management layer (MML) that gracefully hides the complexities of extra data copies necessary for memory access optimizations.
Binned k-d Tree Construction for Sparse Volume Data on Multi-Core and GPU Systems
A GPU implementation of the parallel k-d tree construction algorithm and compare it with the original multi-core CPU implementation is proposed and a thorough comparative study is conducted that outlines performance and scalability of the implementation.
Hybrid Grids for Sparse Volume Rendering
This work proposes a hybrid data structure that employs hierarchical subdivision at the root level and a uniform grid at the leaf level to balance construction and rendering times for sparse volume rendering.