Hello,
is it possible to write simple out-of-core geometry raytracer using Optix (performance is not a concern)?
I thought it is but after reading the documentation I have doubts. I am new to raytracing and Optix so correct me if I am wrong.
I want to use standard two level tree scene graph: bottom- (triangles; in-core and out-core) and top-level (instances/clusters; in-core) acceleration structures. Can I load and unload data from bottom-level during execution? If yes, how to signal during traversal that some data needs to be loaded?
It seems possible with Optix Prime if I write custom BVH construction and traversal. Am I right?
We are currently investigating ways to support out-of-core loading. OptiX does not support it right now. It might be theoretically possible for you to add certain kinds of geometry loading, but even very limited scenarios would be extremely difficult and take a lot of work, so we recommend you don’t attempt it yet. In particular, in OptiX memory cannot be allocated on the device mid-launch, and BVHs cannot be modified during traversal or launch. In addition to those restrictions, you are right, there would need to be a signaling mechanism for when data needs to be loaded. If or when there are any updates, we’ll post it here. In the mean time, your main option aside from pre-loading all your geometry is to consider whether there are ways to do your adaptive loading in between separate launches.