Using compute or meshlets with accelerationStructureIndirectBuild to implement continuous LOD via displacement maps

Hi Eric, I asked your colleague at Nvidia, Christoph Kubisch a while back about how one might build BLASes entirely on the GPU as an output from a previous stage, such as a meshlet (or compute) shader, and he suggested it may be possible to do so via the accelerationStructureIndirectBuild Vulkan extension.

Sadly, it is not supposed by Nvidia GPUs yet:

Does Nvidia have any plans to support this extension any time soon? If so, would it be restricted to a certain generation of RTX cards? i.e. Will it require Lovelace or Ampere, or could it be packported to Turing.

I was hoping to use such an indirect method of generating new meshes every frame programmatically, then be able to trace rays against them in order to exploit ray-triangle intersection hardware (instead of custom intersection shaders which are an order of magnitude slower) in order to do something akin to the recent displacement mapping paper by Adobe. This would enable a continuous LOD path-tracer without requiring many tens of gigabytes of VRAM and pre-generated LODs stored in triangle meshes / BLASes:

Also, related question re: using Async Compute to generate / update BLASes, as mentioned in the Best Practices doc here:

Are there any code samples illustrating how best to do animate or generate triangle meshes meant to be ray traced using compute? The synchronization code in Vulkan is a bit complex and a reference implementation would be very helpful to me. Thanks!

2 Likes

Great question! We are aware of this use case but cannot comment on future releases.