Nexus BVH

teaser9

This project was developed as part of the GPU Computing course at Ensimag. The full report can be found here.

Nexus BVH is a fast and high-quality GPU BVH builder written in C++ and CUDA. It implements H-PLOC [Benthin et al. 2024] algorithm, focusing on high-performance and high-quality hierarchy generation.

BVH Construction Benchmark

All times are in milliseconds and represent kernel execution times measured on the CPU side. Benchmarked on a Ryzen 7 5700X, RTX 3070 8 Go.

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 Total
Sponza (0.3M) 0.06 0.04 0.22 0.37 0.68
Buddha (1.1M) 0.22 0.14 0.37 1.05 1.78
Hairball (2.9M) 0.55 0.31 0.89 2.01 3.86
Bistro (3.8M) 0.59 0.31 1.02 2.66 4.58
Powerplant (12.7M) 2.52 1.31 3.59 8.85 16.27
Lucy (28.1M) 5.78 3.07 7.98 22.2 39.03

Prerequisites

Build

  • Clone the repository
     git clone https://github.com/StokastX/NexusBVH
    
  • Run setup.bat to automatically generate a Visual Studio solution in the build/ directory.

    Alternatively, you can generate the solution via cmake:

    mkdir build
    cd build
    cmake ..
    
  • Open the Visual Studio solution and build the project

Resources

Updated: