NVIDIA OptiX SDK Tackles Hair and Fur with Release 7.1

NVIDIA OptiX is an application framework for optimal ray tracing performance on the GPU that is used for film and video production as well as many other professional graphics applications.

OptiX SDK 7.1 is the latest update to the new OptiX 7 API. Version 7.1 introduces a new curve primitive for hair and fur, tiled denoising, and improved debugging and profiling.

Curves

Ray tracing hair and fur is computationally demanding due to the high geometric complexity of ray-curve intersections, and the typical need for hundreds of thousands or even millions of curves in a scene. Hair and fur are made up of long thin strands that are often only one or two pixels wide or less. In OptiX 7.1, these strands can be compactly represented, and efficiently ray-traced, with a new geometric curve primitive. Like triangles or custom geometry primitives, curve primitives can be ray traced with motion blur and can be instanced in multi-level hierarchies in order to render production-grade scenes that include fur, hair, carpets, and other types of fibers. 

OptiX curves are already in use in the NVIDIA Iray renderer

The SDK also includes new samples that demonstrate API usage of OptiX curve primitives:

optixCurves – Minimal curve API usage example:

optixHair – More complicated curve API example:

This slightly more advanced sample renders a head model with long hair, and allows interactively switching between linear, quadratic, and cubic basis curves.

For more details on curve primitives, please refer to the OptiX programming guide included in the SDK package.

Denoiser Improvements

The OptiX denoiser now supports tiling, so that large images may be denoised within a modest memory budget. This allows denoising to be applied to very large images that don’t fit into GPU memory or to denoise images while memory is being shared with other applications or processes. This release also includes several performance and quality improvements.

Result with the denoiser active on the right and inactive on the left

A new optixDenoiser sample demonstrates the OptiX AI Denoiser usage by taking a noisy input image and returning a denoised result. 

Debugging and Profiling

We continue to enhance OptiX integration with both Nsight Compute and Nsight Systems for debugging and profiling. When profiling with Nsight Systems, optixLaunch and optixAccelBuild are now marked in the timeline allowing developers to see the timing relationship between OptiX kernels, CUDA kernels, and CUDA API calls (especially calls like cudaMalloc and cudaMemcpy). This profiling information can be used to debug bottlenecks, inspect and understand your application’s behavior, and optimize & fine-tune it to better leverage the GPU’s resources.   

OptiX profiling with Nsight Systems

OptiX 7.1 now performs various validation checks, when debug exceptions are enabled, to catch common errors such as rays containing NaN or Inf, or callable programs called with the wrong number of arguments. Additionally, exception programs can now access line number info for the exception, when available.

OptiX had already been integrated into the world’s top content creation and rendering applications

OptiX SDK 7.1 is available to developers now.