Home

Awesome

rs_pbrt

crates.io Documentation Status dependency status builds.sr.ht status

<!-- [![](https://tokei.rs/b1/github/wahn/rs_pbrt?category=code)](https://github.com/wahn/rs_pbrt) --> <!-- [![](https://img.shields.io/github/release-date/wahn/rs_pbrt.svg)](https://github.com/wahn/rs_pbrt/releases) --> <!-- [![](https://img.shields.io/github/issues-raw/wahn/rs_pbrt.svg)](https://github.com/wahn/rs_pbrt/issues) --> <!-- [![Build Status](https://travis-ci.com/wahn/rs_pbrt.svg?branch=master)](https://travis-ci.com/wahn/rs_pbrt) -->

You can find more information about rs_pbrt at https://www.rs-pbrt.org/about ...

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

http://www.pbrt.org

Current Rust (development) documentation:

https://www.janwalter.org/doc/rust/rs_pbrt/index.html or https://www.rs-pbrt.org/doc/crates/rs_pbrt/index.html

Usage

> cargo build --release --no-default-features
> ./target/release/rs_pbrt --help
rs_pbrt version 0.9.12 (unknown) [Detected 28 cores]

Physically based rendering (PBR) with Rust

Usage: rs_pbrt [OPTIONS] --path <PATH>

Options:
      --cropx0 <CROPX0>          Specify an image crop window <x0 x1 y0 y1> [default: 0.0]
      --cropx1 <CROPX1>          Specify an image crop window <x0 x1 y0 y1> [default: 1.0]
      --cropy0 <CROPY0>          Specify an image crop window <x0 x1 y0 y1> [default: 0.0]
      --cropy1 <CROPY1>          Specify an image crop window <x0 x1 y0 y1> [default: 1.0]
  -i, --integrator <INTEGRATOR>  ao, directlighting, whitted, path, bdpt, mlt, sppm, volpath
  -t, --nthreads <NTHREADS>      use specified number of threads for rendering [default: 0]
  -s, --samples <SAMPLES>        pixel samples [default: 0]
  -p, --path <PATH>              The path to the file to read
  -h, --help                     Print help information
  -V, --version                  Print version information

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 GitLab repository (pbrt_ganesha.tar.gz).

Subsurface Scattering (SSS)

SSS Dragon

The scene can be found within the GitLab repository (sss_dragon.tar.gz).

Stochastic Progressive Photon Mapping (SPPM)

SPPM Caustic
Glass

The scene can be found within the GitLab repository (caustic_glass.tar.gz).

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

Ecosystem

The scene can be found within the GitLab repository (pbrt_ecosys.tar.gz).

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

Landscape

Hair

The hair scattering model in action:

Curly and straight hair rendered by Rust version of
PBRT

The scene can be found within the GitLab repository (pbrt_hair.tar.gz).

Japanes Classroom by NovaZeeke

Classroom room rendered by
rs_pbrt

The scene can be found within the GitLab repository (bitterli_classroom.tar.gz).

The White Room by Jay-Artist

The White Room rendered by
rs_pbrt

The scene can be found within the GitLab repository (bitterli_living-room-2.tar.gz).

Country Kitchen by Jay-Artist

Kitchen rendered by
rs_pbrt

The scene can be found within the GitLab repository (bitterli_kitchen.tar.gz).

The Wooden Staircase by Wig42

Staircase rendered by
rs_pbrt

The scene can be found within the GitLab repository (bitterli_staircase.tar.gz).

Conference Room by Anat Grynberg and Greg Ward

Conference room rendered by
rs_pbrt

The scene can be found within the GitLab repository (radiance_conference_room folder).

Theater by Charles Ehrlich and Greg Ward

Theater rendered by
rs_pbrt

Theater rendered by
rs_pbrt

The scene can be found within the GitLab repository (radiance_theater folder).

For more information check out the rs-pbrt web page.

<!-- For more info look at the [Wiki][wiki] page or the [release notes][release-notes]. --> <!-- Here you find another Rust implementation: --> <!-- https://bitbucket.org/abusch/rustracer -->

License

Licensed under either of

at your option.

Contribution

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.