OptiX sample for real-time animated subdivision surfaces

We want to direct your attention to a new code sample on GitHub for real-time animated subdivision surfaces using OptiX and CUDA:

There is also a corresponding tech blog article.

This sample uses the Cluster API available in OptiX 9.0 along with OpenSubdiv Lite. It runs on both Linux and Windows on most GPUs from Ampere onward. On recent hardware, we maintain a high frame rate even while generating millions of new micro-triangles every frame, for scenes like this:

The character here is animated, and we are re-tessellating and rebuilding the entire scene every frame using a camera adaptive tessellation algorithm. In this screenshot we are hitting 70 fps with 32.5M unique micro-triangles on a 4080.

Feel free to post comments and questions here on the forum and please report bugs as GitHub issues. Thanks!

4 Likes

Great repo! The linked tech blog article mentions that one can replace the user-space accumulation loop with DLSS Ray Reconstruction (DLSS-RR). It seems that DLSS should be integrated using the Streamline SDK which only works with DirectX/Vulkan (and only on Windows). Is there an undocumented way to use it (or at least DLSS-RR) in an OptiX program on Linux?

We are thinking about how to make DLSS-RR easier to use from a CUDA/OptiX app. It is not likely to use Streamline. Even today for Vulkan and DX, you can directly use DLSS-RR through the NGX DLSS SDK (GitHub - NVIDIA/DLSS: NVIDIA DLSS is a new and improved deep learning neural network that boosts frame rates and generates beautiful, sharp images for your games).

We have shown OptiX+DLSS in at least one internally produced demo fwiw - the one from Real-time Live 2025.

Thanks for the link! Last time I checked the NGX repository, Ray Reconstruction wasn’t available yet. Will try to integrate it with a pure OptiX pipeline but it would be amazing if NVIDIA open-sourced the OptiX implementation shown in this SIGGRAPH presentation. The NVIDIA-RTX/RTXMG repository only showcases DirectX/Vulkan integration.

Hey, sorry for the confusion here. I should have said that even though yes we’re thinking about it, a direct CUDA api for DLSS-RR is NOT currently enabled in public drivers and NGX dlls. I also replied to your post on the other forum.

Thanks for the clarification. I played around with the NGX SDK and modified the NVIDIA-RTX/RTXDI sample to use DLSS RR (Vulkan). My 2c regarding the OptiX integration:

  • In the spirit of Neural Rendering with Cooperative Vectors, DLSS could be a device-side API
  • Only two host functions needed:
    • Querying for feature support
    • Computing the required stack size for DLSS
  • All the necessary buffers are already in VRAM so there’s no need for a CPU-GPU roundtrip
  • Would automatically work on Linux and Windows

Alternatively, DLSS could be used via the existing optiXDenoiser API but that seems more sophisticated.