Hi,
I’m using Vulkan ray tracing (VK_KHR_acceleration_structure) on an NVIDIA GPU, and building bottom-level acceleration structures (BLAS) with vkCmdBuildAccelerationStructuresKHR
.
I’ve noticed the following behavior:
- When the geometry has only a few triangles (e.g., less than 10), the resulting BLAS buffer (
VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
) is almost identical between builds. The only difference is the device address of the BLAS. - However, when the triangle count increases to a few hundred, the buffer contents begin to differ more substantially, even with identical input geometry and build flags.
My questions:
- What exactly is stored inside the BLAS buffer?
- Is it a raw BVH structure? Some hardware-specific format? Or a driver-internal layout?
- Is it expected that the buffer content changes between builds, especially when geometry is more complex?
- Is this due to driver-internal heuristics, multi-threading, or non-deterministic optimizations?
Thanks!