pbrt

Crates.iopbrt
lib.rspbrt
version0.1.5
sourcesrc
created_at2019-01-06 01:16:45.019412
updated_at2019-12-22 01:24:54.090584
descriptionRust implementation of https://pbrt.org/
homepage
repositoryhttps://github.com/wathiede/pbrt
max_upload_size
id105766
size271,034
Matt Pharr (mmp)

documentation

README

PBRT

Crate API Actions Status

What is this?

This is not an officially supported Google product. This is a personal project, it serves as a learning experience for both: programming in rust, and writing a ray-tracer. If either of these things are interesting to you, then you may like this project.

This is a rust implementation of the physics based ray tracer documented in 'Physically Based Rendering, Third Edition' http://www.pbrt.org/

If you're looking for a more fully-formed implementation, check out https://github.com/wahn/rs_pbrt

Differences from C++ version

  • Output parameters rewritten as multiple return values.
  • Functions that use bool return type with out parameter are rewritten to use Option<>.
  • Scene parsing is two-phase. First phase parses the file into a series of enums, see parser::{WorldBlock,OptionsBlock} into a parser::Scene object. The second phase then walks the Scene object calling api::Pbrt methods as appropriate.
  • Constructors: zero-parameter constructors should implement Default, or helpfully named constructors like identity. Type changing constructors should implement From.
  • pbrt.h's functionality has been put in lib.rs. This is a different location from the C++ implmentation. It allows usage like use pbrt::Float; instead of the more stuttery use pbrt::core::pbrt::Float;
  • Inside and InsideExclusive are members on Bounds[23]<T> to overcome differences in parameter overloading abilities between C++ and rust.
Commit count: 299

cargo fmt