NexusBVH is a fast and high-quality GPU BVH builder written in C++ and CUDA.
It implements the H-PLOC algorithm proposed by Benthin et al. 2024, a high-performance BVH construction method designed for GPUs. H-PLOC constructs high-quality BVHs through hierarchical clustering of spatially nearby primitives in parallel, making it well-suited for real-time ray tracing applications.
📝 This project was originally developed as part of the GPU Computing course at Ensimag. The full report is available here.
All times are in milliseconds and represent kernel execution times measured on the CPU side. Benchmarked on an Intel Core i9-14900K, RTX 4080 SUPER.
BVH2 refers to the H-PLOC kernel with a search radius of 8. Radix sort is performed using 32-bit Morton codes. When using 64-bit Morton codes, sorting time is approximately 3x slower.
| Scene (Triangles) | Scene Bounds | Morton Codes | Radix Sort | BVH2 | BVH8 | Total |
|---|---|---|---|---|---|---|
| Sponza (0.3M) | 0.03 | 0.01 | 0.06 | 0.20 | 0.14 | 0.44 |
| Buddha (1.1M) | 0.11 | 0.02 | 0.10 | 0.47 | 0.42 | 1.12 |
| Hairball (2.9M) | 0.29 | 0.19 | 0.20 | 0.90 | 1.36 | 2.95 |
| Bistro (3.9M) | 0.40 | 0.26 | 0.25 | 1.35 | 1.84 | 4.10 |
| Powerplant (12.7M) | 1.34 | 0.84 | 1.33 | 3.67 | 5.90 | 13.09 |
| Lucy (28.1M) | 2.98 | 1.79 | 3.11 | 9.75 | 15.36 | 33.00 |
NexusBVH is a CMake-based project and requires the following dependencies:
- CUDA Toolkit (from NVIDIA)
- CMake version 3.22 or higher
The project has been tested on both Windows (with Visual Studio) and Ubuntu.
-
Clone the repository:
git clone https://github.com/StokastX/NexusBVH
-
Generate the solution via cmake:
mkdir build cd build cmake .. -
Build the project:
-
On Linux: Use
makeon your preferred build system:make -j
-
On Windows (Visual Studio): Open the generated solution file in Visual Studio, and press F5 to build and run.
- H-PLOC: Benthin et al. 2024
- PLOC++: Benthin et al. 2022
- PLOC: Meister and Bittner 2018
- Bottom-up LBVH traversal: Apetrei 2014