Lumo is a CPU based multithreaded rendering engine. Made with the goal of learning Rust and physically based rendering :)
- Path tracing and bidirectional path tracing with MIS
- Cook-Torrance microfacet BSDF with Beckmann and GGX
- .obj and .mtl file parsing
- Surface area hierarchy based kD-trees
Once the repository is cloned, the examples/
folder contains scenes, that can be ran with cargo
:
cargo run --example hello_sphere
The renderer can be configured either through its setter methods in the examples or partially through the CLI:
Usage: hello_sphere [-s <samples>] [-t <threads>] [-d] [-b]
Optional CLI configuration of renderer. Renderer setter methods have priority.
Options:
-s, --samples number of samples per pixel (defaults to 1)
-t, --threads number of threads used (defaults to all)
-d, --direct use direct light integrator instead of path tracing
-b, --bdpt use bidirectional path tracing instead of path tracing
--help display usage information