Web compatible voxel rendering engine.
The engine uses the VDB3451 data structure. It then performs a custom DDA based on the HDDA2 paper, combined with a grid SDF, in compute shaders, to render the model.
This project was developed as part of my university dissertation. For an in depth explination take a look at the:
- Thesis which covers the whole project in detail.
- Youtube video which explains the VDB data structure and some raycasting algorithms.
To run the project you will need the Rust nightly toolchain 1.75.0-nightly
3.
Easiest way to use the engine is with cargo.
For the developer enviorment, you can just run:
cargo run --release
To build the web enviorment, you will need wasm-pack.
You can then build the project, start a local server (doesn't matter how its served) and visit the index.html
page.
wasm-pack build --target web
python3 -m http.server
You can load any .vdb
model into the engine by adding it to the assets/
folder.
Then, on the dev pannel just select it from the dropdown menu.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Footnotes
-
Ken Museth. 2013. VDB: High-resolution sparse volumes with dynamic topology ↩
-
Ken Museth. 2014. Hierarchical digital differential analyzer for efficient ray-marching in OpenVDB. ↩
-
The VDB data structure is inherintly generic in shape. To achieve this in Rust I used the nightly generic_const_expr feature ↩