Skip to content

Latest commit

 

History

History
66 lines (54 loc) · 3.24 KB

README.md

File metadata and controls

66 lines (54 loc) · 3.24 KB

gpl3 last total

woxel

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.

Explanation

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.

Instalation

To run the project you will need the Rust nightly toolchain 1.75.0-nightly3. 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

Use

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.

Screenshots

Footnotes

  1. Ken Museth. 2013. VDB: High-resolution sparse volumes with dynamic topology

  2. Ken Museth. 2014. Hierarchical digital differential analyzer for efficient ray-marching in OpenVDB.

  3. The VDB data structure is inherintly generic in shape. To achieve this in Rust I used the nightly generic_const_expr feature