Hey folks. I get this information/warning message from OptiX 7.4 when I build an acceleration structure with curves:
“ACCEL_BUILDER: Updating of adaptively split curve build inputs is not supported, fall back to uniform splitting.”
Can anyone help me understand what that means? Is there something I should be doing to prepare curves better for OptiX?
This message is just letting you know that uniform splitting is being used when you build the BVH using OPTIX_BUILD_FLAG_ALLOW_UPDATE. The “update” (aka refit) operation currently requires uniform splitting. If you don’t need ALLOW_UPDATE, then removing this build flag will restore adaptive splitting and get rid of the warning message.
The implications of using ALLOW_UPDATE with curves are just that you lose the modest benefits of adaptive splitting, which might mean a little extra memory usage, and/or a little loss of traversal performance, relative to the memory and performance with adaptive splitting. If either of those is something you want to prioritize, you can use OPTIX_BUILD_FLAG_PREFER_FAST_TRACE to get a higher split factor with curves (and faster performance), or OPTIX_BUILD_FLAG_PREFER_FAST_BUILD to get a lower factor (with lower memory requirements). These two OPTIX_BUILD_FLAG_PREFER_FAST_* flags currently usually have a roughly 2x impact on memory and performance, which is considerably larger than the difference between uniform and adaptive splitting in most cases. (And you can use these flags with adaptive splitting too, if you don’t need BVH refits.)