Skip to the content.

Linear BVH

Introduction

BVH (Bounding Volume Hierarchy) is a data structure used in ray tracing to accelerate the intersection test between rays and objects. Today we talk about one kind of BVH for collision detection, which is called Linear BVH.

The original idea is from this NVIDIA Blog from Karras. The most significant idea is we make any parallelizable step in construction and traversal processed in parallel on GPU.

The final shape of LBVH is shown below:

LBVH in Karras's paper

Construction

We use a Bottom-Up method to construct the LBVH. The construct process is divided into following steps:

The current bottleneck is the radix sort step. However, if the pre-steps of the collision detection are on CPU(host), the bottleneck will be the first step, initializing the primitives.

Traversal

Given that LBVH is a tree-shaped data structure. We can use the thinking of iterative traversal. Noting that we cannot use recursion in GPU, we use a manually stack to store the nodes remaining to be visited.

The traversal process is divided into following steps:

Conclusion

The LBVH is a good choice for collision detection, especially for large scenes. However, considering the nature of the tree structure, the traversal process is not as efficient as we expected.

Go Back to HomePage