OptiX
≈ 4 min read
Names in other languages
No names in other languages are held for this entry yet.
Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.
Nvidia OptiX (OptiX Application Acceleration Engine) is a ray tracing API that was first developed around 2009. The computations are offloaded to the GPUs through either the low-level or the high-level API introduced with CUDA. CUDA is only available for Nvidia's graphics products. Nvidia OptiX is part of Nvidia GameWorks. OptiX is a high-level, or "to-the-algorithm" API, meaning that it is designed to encapsulate the entire algorithm of which ray tracing is a part, not just the ray tracing itself. This is meant to allow the OptiX engine to execute the larger algorithm with great flexibility without application-side changes. Commonly, video games use rasterization rather than ray tracing for their rendering. According to Nvidia, OptiX is designed to be flexible enough for "procedural definitions and hybrid rendering approaches". Aside from computer graphics rendering, OptiX also helps in optical and acoustical design, radiation and electromagnetic research, artificial intelligence queries and collision analysis.
Nvidia OptiX (OptiX Application Acceleration Engine) is a ray tracing API that was first developed around 2009. The computations are offloaded to the GPUs through either the low-level or the high-level API introduced with CUDA. CUDA is only available for Nvidia's graphics products. Nvidia OptiX is part of Nvidia GameWorks. OptiX is a high-level, or "to-the-algorithm" API, meaning that it is designed to encapsulate the entire algorithm of which ray tracing is a part, not just the ray tracing itself. This is meant to allow the OptiX engine to execute the larger algorithm with great flexibility without application-side changes. Commonly, video games use rasterization rather than ray tracing for their rendering. According to Nvidia, OptiX is designed to be flexible enough for "procedural definitions and hybrid rendering approaches". Aside from computer graphics rendering, OptiX also helps in optical and acoustical design, radiation and electromagnetic research, artificial intelligence queries and collision analysis. // Sample code using OptiX APIs // /* Ray generation program */ rtProgramCreateFromPTXFile( *context, path_to_ptx, "pinhole_camera", &ray_gen_program ); rtContextSetRayGenerationProgram( *context, 0, ray_gen_program ); /* Miss program */ rtProgramCreateFromPTXFile( *context, path_to_ptx, "miss", &miss_program ); rtContextSetMissProgram( *context, 0, miss_program ); /* Bounding box and intersection program */ rtProgramCreateFromPTXFile( context, path_to_ptx, "box_bounds", &box_bounding_box_program ); rtGeometrySetBoundingBoxProgram( *box, box_bounding_box_program ); rtProgramCreateFromPTXFile( context, path_to_ptx, "box_intersect", &box_intersection_program ); rtGeometrySetIntersectionProgram( *box, box_intersection_program ); 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 Create material any hit and closest hit programs: these two programs determine a ray behavior when encountering its first intersection (closest hit) or a generic intersection (any hit) // Sample code using OptiX APIs // rtProgramCreateFromPTXFile( context, path_to_ptx, "closest_hit_radiance", &closest_hit_program ); rtProgramCreateFromPTXFile( context, path_to_ptx, "any_hit_shadow", &any_hit_program ); /* Associate closest hit and any hit program with a material */ rtMaterialCreate( context, material ); rtMaterialSetClosestHitProgram( *material, 0, closest_hit_program ); rtMaterialSetAnyHitProgram( *material, 1, any_hit_program ); Define buffers, variables that might be used inside the supplied programs. Buffers are memory areas that allow host code (i.e. normal CPU code) to communicate with device code (i.e. the code that gets executed on the GPU) and vice versa. Variables are OptiX's internal way of communicating and using buffers to transfer data back and forth. Define the OptiX hierarchy of geometry objects, groups, selectors and other nodes to generate a tree graph of the entire scene to be rendered for Nvidia OptiX]] 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. ==References== ==External links== NVIDIA OptiX Application Acceleration Engine main page OptiX Programming Guide and OptiX SDK OptiX support Forum OptiX 7 Course Tutorial Code
Text derived from https://en.wikipedia.org/w/index.php?oldid=1356600165 under CC BY-SA 4.0; modifications have been made.