RRaytracing is minimal raytracing implementation with both CLI and GUI user interfaces. RRaytracing implementation follows Ray Tracing In One Weekend book.
-
Three different materials with variable characteristics
- Lambertian
- Metal
- Glass (dielectric)
-
Variable anti-aliasing amount
-
Defocus blur
-
Positionable camera (currently hardcoded position)
Project uses single monorepo whichs hosts 3 workspaces. Workspaces are shared, gui and renderer. Shared contains common interfaces and datatypes which can be used to communicate with renderer. Gui is the graphical user interface project and renderer is the machine which takes scene in and outputs an image.
- Unit tests
- Benchmarks
- Performance improvement
- Multithreading
- Replace "unwrap()" calls with actual error handling
- Changing scene from GUI
- Moving camera in GUI
- Adding textures
- Making scene variable from GUI (+possibly saving/loading scenes)
Project can be built/ran with standard cargo commands.
cargo build --release // Will create executables for both CLI and GUI in target/release folder
cargo run --bin gui // Running gui in debug mode
cargo run --bin renderer // Running CLI in debug mode
cargo run --bin renderer -- -h // To see CLI options
- Gtk4 installed with development headers
- Cargo and Rust installed