-
Notifications
You must be signed in to change notification settings - Fork 59
Home
Rust crate to implement at least parts of the PBRT book's C++ code:
Current Rust documentation:
https://www.janwalter.org/doc/rust/pbrt/index.html
The library is kept in a single file (called src/lib.rs), an example directory contains several example files using the library.
Warning: If you want to compile the pest_test executable you need to download and compile with Rust nightly:
rustup install nightly
rustup default nightly
You can compile with Rust stable if you remove the pest_test.rs file before compilation:
rm examples/pest_test.rs
rustup default stable
cargo test --release
One executable does use the library and generates a test scene purely with API calls:
./target/release/examples/pbrt_spheres_differentials_texfilt -h
Usage: ./target/release/examples/pbrt_spheres_differentials_texfilt [options]
Options:
-h, --help print this help menu
-c, --checker use procedural texture
-i, --image use image texture
-n, --none use no texture
-m, --matte use only matte materials
-v, --version print version number
The second executable can parse a scene description via the pest crate and has to be compiled with Rust nightly:
rustup install nightly
rustup default nightly
cargo test --release
./target/release/examples/pest_test -h
Usage: ./target/release/examples/pest_test [options]
Options:
-h, --help print this help menu
-i FILE parse an input file
-v, --version print version number
You can render the same test scene as above (using a texture file on the ground) like this:
./target/release/examples/pest_test -i assets/scenes/spheres-differentials-texfilt.pbrt
The second provided scene can be parsed but does not render (yet):
> ./target/release/examples/pest_test -i assets/scenes/example.pbrt
...
do something with created tokens ...
...
TODO: UVMapping2D
...
TODO: CreateDiskShape
...
WorldEnd
done.
The scene comes from here: