World Library  
Flag as Inappropriate
Email this Article

OptiX

Article Id: WHEBN0025241454
Reproduction Date:

Title: OptiX  
Author: World Heritage Encyclopedia
Language: English
Subject: Ray tracing (graphics), Nvidia, Path tracing, SteamOS, TurboCache
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

OptiX

OptiX
Developer(s) Nvidia
Stable release 3.5.0 / March 6, 2014 (2014-03-06)
Operating system Linux, OS X, Windows Vista and later
Type Ray tracing
License proprietary software, free-of-cost for non-commercial use
Website NVIDIA OptiX developer site

Nvidia OptiX (OptiX Application Acceleration Engine) is a general purpose ray tracing API for rendering, baking, collision detection, A.I. queries, etc. OptiX is not a renderer but can implement many types of renderers, it implements a modern shader-centric, stateless and bindless design.[1] The computations are offloaded to the GPUs though either the low-level or the high-level API introduced with CUDA. CUDA is only available for Nvdia's graphics products. Nvidia OptiX is part of Nvidia GameWorks.

With very few exceptions, such as Quake Wars: Ray Traced, video games use rasterisation 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 & acoustical design, radiation and electromagnetic research,[2] artificial intelligence queries and collision analysis.[3]

Ray tracing with OptiX

A Julia set drawn with NVIDIA OptiX©. This is also a sample of the SDK

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 into 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 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 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 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
A sample graph tree for the NVIDIA OptiX© engine

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.

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 and intersection processes. Prime also features a CPU fallback when no compatible GPU is found on the system and drops some flexibility that OptiX offers to provide additional speed and control.

Software using OptiX

  • FurryBall - Advanced real-time GPU production quality final frame renderer using raytrace as well as rasterize - based on Nvidia OptiX
  • At SIGGRAPH 2011 Adobe showcased OptiX in a technology demo of GPU ray tracing for motion graphics.[5]
  • At SIGGRAPH 2013 OptiX was featured in Pixar's realtime, GPU-based lighting preview tool.[6]
  • OptiX has been integrated into the GameWorks developers library along with PhysX and other CUDA powered graphics engines and frameworks. The library will also be used to develop SteamOS machines [7]

References

  1. ^ "Scheduling in OptiX, the Nvidia ray tracing engine". 2009-08-15. 
  2. ^ "Electromagnetic wave propagation in the millimeter wave band using the NVIDIA OptiX GPU ray tracing engine". IEEE Xplore. 2012. Retrieved 2013-08-14. 
  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". ACM. Retrieved 2013-08-14. 
  4. ^ 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 (2010). "OptiX: a general purpose ray tracing engine". ACM. Retrieved 2013-08-14. 
  5. ^ "Adobe showcasing OptiX in a technology demo for ray tracing motion graphics with GPUs". NVIDIA. 2013. Retrieved 2013-08-14. 
  6. ^ "SIGGRAPH 2013 tech talks". NVIDIA. 2013. Retrieved 2013-08-14. 
  7. ^ "Nvidia announces Gameworks Program at Montreal 2013; supports SteamOS". NVIDIA. 2013. Retrieved 2013-10-29. 

External links

  • NVIDIA OptiX Application Acceleration Engine main page
  • OptiX Programming Guide and OptiX SDK
  • OptiX support Forum
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.