Rust crate to implement at least parts of the PBRT book's C++ code. See also ...
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jan Walter 4eab68fbcb Update with current release number. 2 weeks ago
assets Use XYEnum, MinMaxEnum, XYZEnum to index without panic. 4 months ago
examples Use "interior mutability" for Ray::t_max (t_max: Cell<Float>). 1 month ago
profile Start profiling via cpuprofiler crate. 3 years ago
src Update documentation about SamplerIntegrators and their render loop. 2 weeks ago
.clippy.toml [clippy] needless_range_loop, too_many_arguments. 9 months ago
.gitignore Wed Dec 21 20:00:39 CET 2016 3 years ago
.travis.yml Travis fails far too often. Let's try this. 1 year ago
Cargo.lock Prepare v0.8.3 release. 2 weeks ago
Cargo.toml Prepare v0.8.3 release. 2 weeks ago
LICENSE-APACHE Change to dual licensed (Apache 2.0 & MIT). Update crates. 1 month ago
LICENSE-MIT Change to dual licensed (Apache 2.0 & MIT). Update crates. 1 month ago
Makefile Use structopt instead of getopts for all (render) executables. 8 months ago
OpenEXR.txt [skip ci] Add './bootstrap' step and bash environment. 3 years ago Update with current release number. 2 weeks ago
about.hbs Change to dual licensed (Apache 2.0 & MIT). Update crates. 1 month ago
about.toml Change to dual licensed (Apache 2.0 & MIT). Update crates. 1 month ago
license.html Prepare v0.8.3 release. 2 weeks ago


Build Status

Rust crate to implement a counterpart to the PBRT book’s (3rd edition) C++ code:

Current Rust documentation:


> cargo build --release --no-default-features
> ./target/release/rs_pbrt --help
pbrt 0.8.3
Parse a PBRT scene file (extension .pbrt) and render it

    rs_pbrt [OPTIONS] <path>

    -h, --help       Prints help information
    -V, --version    Prints version information

    -t, --nthreads <nthreads>    use specified number of threads for rendering [default: 0]

    <path>    The path to the file to read

Test Scenes

Some images of the test scenes are shown below, but you can find more test scenes on GitLab.

Ganesha Statue

Very detailed scan of a small statue with over 4.3 million triangles, illuminated by a few area light sources.

Ganesha Statue

The scene can be found within the repository (assets/scenes/ganesha.tar.gz).

Subsurface Scattering (SSS)

SSS Dragon


Stochastic Progressive Photon Mapping (SPPM)

SPPM CausticGlass


Ecosystem (Cover image for the first edition of the PBRT book)



Landscape (Cover image for the third edition of the PBRT book)



The hair scattering model in action:

Curly and straight hair rendered by Rust version ofPBRT

Japanes Classroom by NovaZeeke

Classroom room rendered byrs_pbrt


The White Room by Jay-Artist

The White Room rendered byrs_pbrt


Country Kitchen by Jay-Artist

Kitchen rendered byrs_pbrt


The Wooden Staircase by Wig42

Staircase rendered byrs_pbrt


Conference Room by Anat Grynberg and Greg Ward

Conference room rendered byrs_pbrt


Theater by Charles Ehrlich and Greg Ward

Theater rendered byrs_pbrt

Theater rendered byrs_pbrt


For more info look at the Wiki page or the release notes.

Here you find another Rust implementation:


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.