Yet another Rust raytracer implementation. The goal of this project is to familiarize myself with more intermidiate concepts in Rust such as traits, lifetimes, shared pointers and design patterns as well as learn a bit of Raytracing basics on the side. The source code is my implementation of Ray Tracing in One Weekend by Peter Shirley.
- Basic Materials (Lambertian, Metal, Dielectric, Emmisive)
- Shapes (Sphere, Rectangle, Triangle)
- Positionable Camera
- Anti Aliasing
- Depth of Field
- Motion Blur
- OBJ Import
- Cute progress bar when rendering
- Proper BHV implementation
Parallelism- GUI progress indicator
OBJ Import- HDR background for global illumination
cargo run --release
$ rtxon --help
A Raytracer In One Weekend implementation
Usage: rtxon [OPTIONS]
Options:
-s, --scene <SCENE> Scene to render (default Cornell Box) [default: 9]
-w, --width <WIDTH> Size of the tuple in decimal digits [default: 600]
-s, --samples <SAMPLES> Samples per pixel [default: 128]
-m, --max-depth <MAX_DEPTH> Primorial offset [default: 100]
-o, --output-path <OUTPUT_PATH> Desired output location [default: output.png]
-t, --threads <THREADS> Threads [default: 1]
-c, --chunks <CHUNKS> Threadpool Chunks [default: 1]
-h, --help Print help
-V, --version Print version
$ rtxon --output-path render.png --max-depth 100 --samples 128 --width 600 --threads 10 --chunks 10
$ rtxon --output-path render.png --scene 2 --max-depth 100 --samples 128 --width 600 --threads 10 --chunks 10