Program RT Cores using OpenGL, Vulkan, or CUDA?

Which of the following currently (2023) support programming API access direct to the RT Cores (on compatible NVIDIA HW devices):

  • OpenGL
  • Vulkan
  • CUDA

For each of above which DO support direct programmatic RT core access, where can I find the best/current API details?

For instance,
I found an old link to Turing extensions for Vulkan & OpenGL which provide GLSL extensions for RT core access - are these still supported?

I can’t find anything in the CUDA 12x documentation.

I do know Vulkan is supported, just wondering about OpenGL and/or CUDA primarily, as we have not migrated to Vulkan yet.

Thanks,
Professor Reinhardt
University of Washington
Electrical and Computer Engineering Dept

Hello @colinrei,

Unless Vulkan or OpenGL extensions have been marked deprecated, they will still be supported.

As to how to program the RT cores directly I suppose that depends a bit on what your requirements are.

To better be able to find the right people to give some suggestions it would be helpful if you could share a little bit more detail of what you want to achieve.

Thanks!

Markus - I just want to do a HW ray tracer using the OpenGL 4.6x API, using the NVIDA RT Cores on a compatible device (e.g. compute capability = 8.6).
Per the article I referenced in Post 1 it appears there is OpenGL extension support. Is there any more documentation or code examples available showing how to implement this?

Will referencing the Vulcan ray tracing spec sections contain relevant info (for the OpenGL ray tracing pipeline support)?

Thanks

Thank you for the clarification!

My understanding is that the main focus by Khronos with respect to path- or ray-tracing lies on Vulkan, so to be future proof that would be the API to use in favor of OpenGL. And to make getting started easier, we do have an extensive tutorial in place as well.

Just for completeness, CUDA of course allows full programming access to all GPU cores, but here there are no render specific primitives available. You would basically need to create your own rasterizer and path-tracer from scratch. Or look for Open Source projects that went down that road.
And when looking at off-line ray-tracing there is NVIDIA OptiX, which might be an alternative if you don’t need real-time rendering.

I hope that helps!