• Is this a good place to discuss about OptiX Wrapper Library?
  • So far I understood, this OptiX Wrapper Library mainly designed for simplicity and avoiding verbosity, as well as easy handling of shader binding tree, acceleration structure that researchers can more focused on the shading part, right?
  • The github repository indicating that the library is almost 80% C++ and only 6% CUDA code. I want to know how much CUDA skill required to work with OWL? Is this something like to be a master using OptiX first, then OWL? However, I believe Mastering CUDA is perquisite of Mastering OptiX. Right?
  • Besides the built-in sample codes, is there any other way beginners can start with? Although Ingo Wald mentioned that the sample codes are designed as beginner tutorial.


Hi @_Bi2022,

It may be worth posting this question as an issue in the OWL Github repository, since Ingo is not normally monitoring the OptiX forum, and he may have good points that I haven’t covered here.

The primary benefit of OWL in my opinion is that it handles the Shader Binding Table (SBT) setup for you. This means that OWL might be a great way to get something up and running quickly, and to learn other parts of OptiX, especially if you want to start from scratch (as opposed to incrementally modifying a working SDK sample). This means that you don’t need to deal with the complexity of understanding the SBT. But it also means that you won’t learn the SBT, so whether this is an advantage depends on your goals. OWL was designed somewhat as a way to use OptiX 7, but in a way keep some of the style and simplicity of OptiX 6. OWL is a bit “opinionated” meaning that it makes some choices for you, choices that are generally good for novice users and/or people who don’t care about squeezing every last cycle of performance when it comes at the cost of additional effort. Ultimately the benefits of these choices depend on your application. You get more control if you use pure OptiX at the cost of a bit more effort, so it’s a tradeoff.

OWL doesn’t yet expose some of the more recent OptiX API features like OptiX Tasks for compilation, or the new Payload API, or curves. These things aren’t necessary to use with OptiX, most beginners will not be using them, and they add complexity, so OWL might never want to expose them. These OptiX features are, in a way, going in the opposite direction from OWL’s goals, they are exposing complexity for the sake of performance and control, where OWL intentionally hides some of the complexity for the sake of simplicity and ease of learning.

Given our previous conversation about using OptiX for stereo in a game engine using multiple GPUs, I would suspect that eventually you’ll want to use pure OptiX for complete control. But to learn OptiX, and to defer having to deal with the SBT, using OWL is a perfectly reasonable choice for learning. I guess just stay mindful as you go that switching an existing app from OWL to pure OptiX will take time, more time the bigger your app gets.

OWL doesn’t really change how much CUDA knowledge you need. Your shader programs will be more or less the same whether you use OWL or pure OptiX.

Besides OWL and the SDK samples, other places to start for beginners are pinned to the top of the OptiX forum. There is also Detlef’s OptiX Advanced Samples repository and Keith’s Getting Started blog post.


1 Like

Hi @dhart,

Thank you very much for your explanation. It gives me confidence that I am walking in the right direction.

Best Regards,

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.