Skip to content

NemoInfo/woxel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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