This is my take on Peter Shirley's Ray Tracing in One Weekend book.
This project uses the Rust programming language to achieve high performance and memory efficiency while providing many benefits such as memory- and thread-safety.
-
Install Rust
-
Clone the repository
-
Build the project
cargo build --release
-
Run the executable
./target/release/rust-ray-tracing
Display command line options
./target/release/rust-ray-tracing --help
I've already implemented Peter Shirley's ray tracing in various programming languages running on CPU & GPU and compared their performance.
The performance was measured on the same scene (see image above) with the same amount of objects, the same recursive depth, the same resolution (1920 x 1080). The measured times are averaged over multiple runs.
Reference system: AMD Ryzen 9 5900X (12 Cores / 24 Threads) | AMD Radeon RX 6800 XT
1 sample / pixel | 100 samples / pixel | |
---|---|---|
Elixir | 67,200 ms | N/A |
JavaScript - Node.js | 4,870 ms | 308 s |
Go | 1,410 ms | 142 s |
OCaml | 795 ms | 75 s |
Java | 770 ms | 59 s |
C++ | 685 ms | 70 s |
Rust | 362 ms | 36 s |
C | 329 ms | 33 s |
GPU - Compute Shader | 21 ms | 2 s |
GPU - Vulkan Ray Tracing Extension | 1 ms | 0.1 s |