HOME

TheInfoList



OR:

Nvidia OptiX (OptiX Application Acceleration Engine) is a ray tracing API that was first developed around 2009. The computations are offloaded to the
GPU A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. GPUs are used in embedded systems, mobi ...
s through either the low-level or the high-level API introduced with
CUDA CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...
. CUDA is only available for Nvidia's graphics products. Nvidia OptiX is part of
Nvidia GameWorks Nvidia GameWorks is a middleware software suite developed by Nvidia. The Visual FX, PhysX and Optix SDKs provide a wide range of enhancements pre-optimized for Nvidia GPUs. GameWorks is partially open-source. The competing solution being in dev ...
. 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 In computer graphics, rasterisation (British English) or rasterization (American English) is the task of taking an image described in a vector graphics format (shapes) and converting it into a raster image (a series of pixels, dots or lines, whi ...
rather than ray tracing for their rendering. According to
Nvidia Nvidia CorporationOfficially written as NVIDIA and stylized in its logo as VIDIA with the lowercase "n" the same height as the uppercase "VIDIA"; formerly stylized as VIDIA with a large italicized lowercase "n" on products from the mid 1990s to ...
, OptiX is designed to be flexible enough for "procedural definitions and hybrid rendering approaches." Aside from
computer graphics Computer graphics deals with generating images with the aid of computers. Today, computer graphics is a core technology in digital photography, film, video games, cell phone and computer displays, and many specialized applications. A great de ...
rendering, OptiX also helps in
optical Optics is the branch of physics that studies the behaviour and properties of light, including its interactions with matter and the construction of instruments that use or detect it. Optics usually describes the behaviour of visible, ultravio ...
&
acoustical Acoustics is a branch of physics that deals with the study of mechanical waves in gases, liquids, and solids including topics such as vibration, sound, ultrasound and infrasound. A scientist who works in the field of acoustics is an acoustician ...
design,
radiation In physics, radiation is the emission or transmission of energy in the form of waves or particles through space or through a material medium. This includes: * ''electromagnetic radiation'', such as radio waves, microwaves, infrared, visi ...
and electromagnetic research,
artificial intelligence Artificial intelligence (AI) is intelligence—perceiving, synthesizing, and inferring information—demonstrated by machines, as opposed to intelligence displayed by animals and humans. Example tasks in which this is done include speech ...
queries and collision analysis.


Ray tracing with OptiX

OptiX works by using user-supplied instructions (in the form of
CUDA CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...
kernels) regarding what a ray should do in particular circumstances to simulate a complete tracing process. 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 CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ca ...
or directly in PTX code and are linked together when used by the OptiX engine. In order to use OptiX a
CUDA CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...
-capable
GPU A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. GPUs are used in embedded systems, mobi ...
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: * Defining programs for ray generation (e.g. rays can be shot in parallel, in a perspective fashion or like a
gradient In vector calculus, the gradient of a scalar-valued differentiable function of several variables is the vector field (or vector-valued function) \nabla f whose value at a point p is the "direction and rate of fastest increase". If the gr ...
field), ray missing (when a ray doesn't intersect any object), an optional exception program (when the ray cannot be shot for some reason), a
bounding box In geometry, the minimum or smallest bounding or enclosing box for a point set in dimensions is the box with the smallest measure (area, volume, or hypervolume in higher dimensions) within which all the points lie. When other kinds of measure ...
program (the program that provides a bounding box intersection test for a given object) and an intersection program. Several examples for these programs are available with the program's SDK // 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 In mechanics, acceleration is the rate of change of the velocity of an object with respect to time. Accelerations are vector quantities (in that they have magnitude and direction). The orientation of an object's acceleration is given by ...
as kd-trees or
bounding volume hierarchies A bounding volume hierarchy (BVH) is a tree structure on a set of geometric objects. All geometric objects, that form the leaf nodes of the tree, are wrapped in bounding volumes. These nodes are then grouped as small sets and enclosed within la ...
* 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 A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, a ...
code) to communicate with device code (i.e. the code that gets executed on the
GPU A graphics processing unit (GPU) is a specialized electronic circuit designed to manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display device. GPUs are used in embedded systems, mobi ...
) 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 In order to render a complex scene or trace different paths for any ray OptiX takes advantage of GPGPU computing by exploiting NVIDIA
CUDA CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...
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.


OptiX Prime

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.


Software using OptiX

*
Blender A blender (sometimes called a mixer or liquidiser in British English) is a kitchen and laboratory appliance used to mix, crush, purée or emulsify food and other substances. A stationary blender consists of a blender container with a rotating me ...
has OptiX support since version 2.81 (7.1 in 2.92) * The Blender Add-o
D-NOISE
uses OptiX binaries for AI-accelerated denoising
FurryBall
- Advanced real-time GPU production quality final frame renderer using raytrace as well as rasterize - based on Nvidia OptiX * At
SIGGRAPH SIGGRAPH (Special Interest Group on Computer Graphics and Interactive Techniques) is an annual conference on computer graphics (CG) organized by the ACM SIGGRAPH, starting in 1974. The main conference is held in North America; SIGGRAPH Asia ...
2011
Adobe Adobe ( ; ) is a building material made from earth and organic materials. is Spanish for '' mudbrick''. In some English-speaking regions of Spanish heritage, such as the Southwestern United States, the term is used to refer to any kind of ...
showcased OptiX in a technology demo of GPU ray tracing for motion graphics. * At
SIGGRAPH SIGGRAPH (Special Interest Group on Computer Graphics and Interactive Techniques) is an annual conference on computer graphics (CG) organized by the ACM SIGGRAPH, starting in 1974. The main conference is held in North America; SIGGRAPH Asia ...
2013 OptiX was featured in
Pixar Pixar Animation Studios (commonly known as Pixar () and stylized as P I X A R) is an American computer animation studio known for its critically and commercially successful computer animated feature films. It is based in Emeryville, Californ ...
's realtime, GPU-based lighting preview tool. * OptiX has been integrated into the GameWorks developers library along with PhysX and other
CUDA CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...
powered graphics engines and frameworks. *
Adobe After Effects Adobe After Effects is a digital visual effects, motion graphics, and compositing application developed by Adobe Inc., and used in the post-production process of film making, video games and television production. Among other things, After Eff ...
CC *
Daz Studio Daz Studio is a free media design software developed by Daz 3D. Daz Studio is a 3D scene creation and rendering application used to produce images as well as video. Renders can be done by leveraging either the 3Delight render engine, or the Ira ...
had OptiX Prime Acceleration since its Iray integration, however support was removed in version 4.12.1.8 * Luxrender 2.5: up to 600% acceleration


See also

*
CUDA CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...


References


External links


NVIDIA OptiX Application Acceleration Engine main pageOptiX Programming Guide and OptiX SDKOptiX support ForumOptiX 7 Course Tutorial Code
{{NVIDIA Nvidia software Proprietary commercial software for Linux Proprietary freeware for Linux Ray tracing (graphics)