Currently implementing forward ray tracing
cargo build -p raytracer-cli --release
cd raytracer-wasm
wasm-pack build --target web --out-dir ../web-test/pkg --release
cd ../web-test
python -m http.server
- Learn Rust fundamentals by recreating my raytracer project from CS 4212 Computer Graphics in Rust.
- Separate the CLI and the core library, enable the library to compile to WASM and invoke from the web browser.
- Optimize the raytracer by parallelizing math operations to increase exposure to low-level optimization.
- Extend the raytracer with more interesting shaders, shapes, and light types.
Note: the following scenes were created by Dr. Pete Willemsen at University of Minnesota Duluth.
CLI args for all renders here: raytracer-cli --width 1000 --height 1000 --rays-per-pixel 9 --recursion-depth 6
- Instanced models [model done]
- Transforms for instanced models [model done]
- Textures [model done]
- Diffuse, specular can be texture or color [model done]
- ParsedScene doesn't need a shaders map
- SceneArgs container for disable_shadows, recursion_depth, image_width, image_height, etc...
- Background structure for either background_color or env_map
- Impl scene stuff so its not just public members
- MTL parsing into shaders
- Vectors that must be normalized can be wrapped in na::Unit