“OptiX: a general purpose ray tracing engine” by Parker, Bigler, Dietrich, Friedrich, Hoberock, et al. …

  • ©Steven G. Parker, James Bigler, Andreas Dietrich, Heiko Friedrich, Jared Hoberock, David P. Luebke, David F. McAllister, Morgan McGuire, Keith Morley, Austin Robison, and Martin Stich


    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 algorithms can be implemented using a small set of programmable operations. Consequently, the core of OptiX is a domain-specific just-in-time compiler that generates custom ray tracing kernels by combining user-supplied programs for ray generation, material shading, object intersection, and scene traversal. This enables the implementation of a highly diverse set of ray tracing-based algorithms and applications, including interactive rendering, offline rendering, collision detection systems, artificial intelligence queries, and scientific simulations such as sound propagation. OptiX achieves high performance through a compact object model and application of several ray tracing-specific compiler optimizations. For ease of use it exposes a single-ray programming model with full support for recursion and a dynamic dispatch mechanism similar to virtual function calls.


    1. Aila, T., and Laine, S. 2009. Understanding the Efficiency of Ray Traversal on GPUs. In Proceedings of High-Performance Graphics 2009, 145–149. Google ScholarDigital Library
    2. Bigler, J., Stephens, A., and Parker, S. G. 2006. Design for Parallel Interactive Ray Tracing Systems. In Proceedings of the 2006 IEEE Symposium on Interactive Ray Tracing, 187–196.Google Scholar
    3. Bikker, J. 2007. Real-time Ray Tracing Through the Eyes of a Game Developer. In RT ’07: Proceedings of the 2007 IEEE Symposium on Interactive Ray Tracing, 1–10. Google ScholarDigital Library
    4. Caustic Graphics, 2009. Introduction to CausticRT. http://www.caustic.com/pdf/Introduction_to_CausticRT.pdf.Google Scholar
    5. Dietrich, A., Wald, I., Benthin, C., and Slusallek, P. 2003. The OpenRT Application Programming Interface — Towards A Common API for Interactive Ray Tracing. In Proceedings of the 2003 OpenSG Symposium, 23–31.Google Scholar
    6. Djeu, P., Hunt, W., Wang, R., Elhassan, I., Stoll, G., and Mark, W. R. 2007. Razor: An Architecture for Dynamic Multiresolution Ray Tracing. Tech. Rep. TR-07-52.Google Scholar
    7. Georgiev, I., and Slusallek, P. 2008. RTfact: Generic Concepts for Flexible and High Performance Ray Tracing. In IEEE/Eurographics Symposium on Interactive Ray Tracing 2008.Google Scholar
    8. Goldsmith, J., and Salmon, J. 1987. Automatic Creation of Object Hierarchies for Ray Tracing. IEEE Computer Graphics and Applications 7, 5, 14–20. Google ScholarDigital Library
    9. Green, S. A., and Paddon, D. J. 1990. A Highly Flexible Multiprocessor Solution for Ray Tracing. The Visual Computer 6, 2, 62–73.Google ScholarCross Ref
    10. Gribble, C. P., and Ramani, K. 2008. Coherent Ray Tracing via Stream Filtering. In Proceedings of the 2006 IEEE Symposium on Interactive Ray Tracing, 59–66.Google Scholar
    11. Havran, V. 2001. Heuristic Ray Shooting Algorithms. PhD thesis, Faculty of Electrical Engineering, Czech Technical University in Prague.Google Scholar
    12. Horn, D. R., Sugerman, J., Houston, M., and Hanrahan, P. 2007. Interactive k-d tree gpu raytracing. In I3D ’07: Proceedings of the 2007 symposium on Interactive 3D graphics and games, ACM, New York, NY, USA, 167–174. Google ScholarDigital Library
    13. Kajiya, J. T. 1986. The Rendering Equation. In Computer Graphics (Proceedings of ACM SIGGRAPH), 143–150. Google ScholarDigital Library
    14. Lattner, C., and Adve, V. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In CGO ’04: Proceedings of the 2004 International Symposium on Code Generation and Optimization. Google ScholarDigital Library
    15. Lauterbach, C., eui Yoon, S., and Manocha, D. 2006. RT-DEFORM: Interactive Ray Tracing of Dynamic Scenes using BVHs. In In Proceedings of the 2006 IEEE Symposium on Interactive Ray Tracing, 39–45.Google Scholar
    16. Lauterbach, C., Garland, M., Sengupta, S., Luebke, D., and Manocha, D. 2009. Fast BVH Construction on GPUs. Computer Graphics Forum (Proceedings of Eurographics) 28, 2, 375–384.Google ScholarCross Ref
    17. Lindholm, E., Nickolls, J., Oberman, S., and Montrym, J. 2008. NVIDIA Tesla: A Unified Graphics and Computing Architecture. IEEE Micro 28, 39–55. Google ScholarDigital Library
    18. MacDonald, J. D., and Booth, K. S. 1989. Heuristics for Ray Tracing using Space Subdivision. In Proceedings of Graphics Interface, 152–63.Google Scholar
    19. McGuire, M., and Luebke, D. 2009. Hardware-Accelerated Global Illumination by Image Space Photon Mapping. In Proceedings of the 2009 ACM SIGGRAPH/EuroGraphics conference on High Performance Graphics. Google ScholarDigital Library
    20. Muuss, M. J. 1995. Towards Real-Time Ray-Tracing of Combinatorial Solid Geometric Models. In Proceedings of BRL-CAD Symposium.Google Scholar
    21. NVIDIA, 2010. NVIDIA OptiX Ray Tracing Engine Programming Guide Version 2.0. http://developer.nvidia.com/object/-optix-home.html.Google Scholar
    22. NVIDIA, 2010. PTX: Parallel Thread Execution ISA Version 2.0. http://developer.download.nvidia.com/compute/cuda/3_0/-toolkit/docs/ptx_isa_2.0.pdf.Google Scholar
    23. Parker, S. G., Martin, W., Sloan, P.-P. J., Shirley, P., Smits, B. E., and Hansen, C. D. 1999. Interactive Ray Tracing. In SI3D, 119–126. Google ScholarDigital Library
    24. Popov, S., Günther, J., Seidel, H.-P., and Slusallek, P. 2007. Stackless kd-tree traversal for high performance gpu ray tracing. Computer Graphics Forum 26, 3 (Sept.). (Proceedings of Eurographics), to appear.Google ScholarCross Ref
    25. Reshetov, A., Soupikov, A., and Hurley, J. 2005. Multi-Level Ray Tracing Algorithm. ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH), 1176–1185. Google ScholarDigital Library
    26. Shevtsov, M., Soupikov, A., and Kapustin, A. 2007. Highly Parallel Fast KD-tree Construction for Interactive Ray Tracing of Dynamic Scenes. Computer Graphics Forum 26, 3, 395–404.Google ScholarCross Ref
    27. Stich, M., Friedrich, H., and Dietrich, A. 2009. Spatial Splits in Bounding Volume Hierarchies. In Proceedings of High-Performance Graphics 2009, 7–13. Google ScholarDigital Library
    28. Wald, I., Benthin, C., Wagner, M., and Slusallek, P. 2001. Interactive Rendering with Coherent Ray Tracing. In Computer Graphics Forum (Proceedings of Eurographics 2001), vol. 20.Google Scholar
    29. Wald, I., Boulos, S., and Shirley, P. 2007. Ray Tracing Deformable Scenes using Dynamic Bounding Volume Hierarchies. ACM Transactions on Graphics 26, 1. Google ScholarDigital Library
    30. Wald, I., Mark, W. R., Günther, J., Boulos, S., Ize, T., Hunt, W., Parker, S. G., and Shirley, P. 2007. State of the Art in Ray Tracing Animated Scenes. In STAR Proceedings of Eurographics 2007, 89–116.Google Scholar
    31. Whitted, T. 1980. An Improved Illumination Model for Shaded Display. Commun. ACM 23, 6, 343–349. Google ScholarDigital Library
    32. Woop, S., Schmittler, J., and Slusallek, P. 2005. RPU: A Programmable Ray Processing Unit for Realtime Ray Tracing. ACM Transactions on Graphics (Proceeding of ACM SIGGRAPH) 24, 3, 434–444. Google ScholarDigital Library
    33. Zhou, K., Hou, Q., Wang, R., and Guo, B. 2008. Real-Time KD-Tree Construction on Graphics Hardware. In ACM Transactions on Graphics (Proceedings of SIGGRAPH ASIA), 1–11. Google ScholarDigital Library

ACM Digital Library Publication: