OptiX works by using user-supplied instructions (in the form of CUDA kernels) regarding what a ray should do in particular circumstances to simulate a complete tracing process.4
A light ray (or perhaps another kind of ray) might have a different behavior when hitting a particular surface rather than another one, OptiX allows to customize these hit conditions with user-provided programs. These programs are written in CUDA C or directly in PTX code and are linked together when used by the OptiX engine.
In order to use OptiX a CUDA-capable GPU must be available on the system and the CUDA toolkit must be installed.
Using the OptiX engine in a ray tracing application usually involves the following steps:
Several examples for these programs are available with the program's SDK
Bounding box programs are used to define bounding volumes used to accelerate ray tracing process within acceleration structures as kd-trees or bounding volume hierarchies
In order to render a complex scene or trace different paths for any ray OptiX takes advantage of GPGPU computing by exploiting Nvidia CUDA platform. Since the process of shooting rays and setting their behavior is highly customizable, OptiX may be used in a variety of other applications aside from ray tracing.
Starting from OptiX 3.5.0 a second library called OptiX Prime was added to the bundle which aims to provide a fast low-level API for ray tracing - building the acceleration structure, traversing the acceleration structure, and ray-triangle intersection. Prime also features a CPU fallback when no compatible GPU is found on the system. Unlike OptiX, Prime is not a programmable API, so lacks support for custom, non-triangle primitives and shading. Being non-programmable, OptiX Prime does not encapsulate the entire algorithm of which ray tracing is a part. Thus, Prime cannot recompile the algorithm for new GPUs, refactor the computation for performance, or use a network appliance like the Quadro VCA, etc.
"Scheduling in OptiX, the Nvidia ray tracing engine" (PDF). August 15, 2009. http://highperformancegraphics.org/previous/www_2009/presentations/nvidia-rt.pdf ↩
Felbecker, Robert; Raschkowski, Leszek; Keusgen, Wilhelm; Peter, Michael (2012). "Electromagnetic wave propagation in the millimeter wave band using the NVIDIA OptiX GPU ray tracing engine". 2012 6th European Conference on Antennas and Propagation (EUCAP). IEEE Xplore. pp. 488–492. doi:10.1109/EuCAP.2012.6206198. ISBN 978-1-4577-0920-3. S2CID 45563615. 978-1-4577-0920-3 ↩
Steven G. Parker; Heiko Friedrich; David Luebke; Keith Morley; James Bigler; Jared Hoberock; David McAllister; Austin Robison; Andreas Dietrich; Greg Humphreys; Morgan McGuire; Martin Stich (2013). "Magazine Communications of the ACM - GPU ray tracing". Communications of the ACM. 56 (5). ACM: 93–101. doi:10.1145/2447976.2447997. S2CID 17174671. Retrieved August 14, 2013. https://dl.acm.org/citation.cfm?id=2447976.2447997 ↩
Steven G. Parker; James Bigler; Andreas Dietrich; Heiko Friedrich; Jared Hoberock; David Luebke; David McAllister; Morgan McGuire; Keith Morely; Austin Robison; Martin Stich (2010). "OptiX: a general purpose ray tracing engine". ACM Transactions on Graphics. 29 (4). ACM: 66:1–66:13. doi:10.1145/1778765.1778803. Retrieved August 14, 2013. https://dl.acm.org/citation.cfm?id=1778803 ↩
"Blender 2.81 Benchmarks On 19 NVIDIA Graphics Cards - RTX OptiX Rendering Performance Is Incredible". phoronix.com. 2019. Retrieved November 26, 2019. https://www.phoronix.com/scan.php?page=article&item=blender-281-optix&num=1 ↩
"D-NOISE: Rapid AI Denoising for Blender". Remington Creative. July 20, 2019. Retrieved December 14, 2019. https://remington.pro/software/blender/d-noise/ ↩
"Adobe showcasing OptiX in a technology demo for ray tracing motion graphics with GPUs". NVIDIA. 2013. Archived from the original on December 20, 2021. Retrieved August 14, 2013. https://www.youtube.com/watch?v=3IwgBYBXPOA ↩
"Nvidia announces Gameworks Program at Montreal 2013; supports SteamOS". NVIDIA. 2013. Archived from the original on November 1, 2013. Retrieved October 29, 2013. https://web.archive.org/web/20131101065219/http://gearnuke.com/nvidia-announces-gameworks-program-montreal-2013-supports-steamos/ ↩
"GPU changes (for CUDA and OpenGL) in After Effects CC (12.1) | After Effects region of interest". Retrieved February 22, 2015. https://blogs.adobe.com/creativecloud/gpu-changes-for-cuda-and-opengl-in-after-effects-cc-12-1/?segment=dva ↩
"Daz Studio Changelog". DAZ 3D. Retrieved December 14, 2019. http://docs.daz3d.com/doku.php/public/software/dazstudio/4/change_log ↩
"New Features in v2.5 – LuxCoreRender". https://luxcorerender.org/new-features-in-v2-5/ ↩