6 releases
0.1.5 | Dec 22, 2019 |
---|---|
0.1.4 | Dec 16, 2019 |
0.1.3 | Nov 30, 2019 |
0.1.1 | Jan 6, 2019 |
#389 in Graphics APIs
220KB
4K
SLoC
PBRT
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 likeidentity
. Type changing constructors should implementFrom
. pbrt.h
's functionality has been put inlib.rs
. This is a different location from the C++ implmentation. It allows usage likeuse pbrt::Float;
instead of the more stutteryuse pbrt::core::pbrt::Float;
Inside
andInsideExclusive
are members onBounds[23]<T>
to overcome differences in parameter overloading abilities between C++ and rust.
Dependencies
~12MB
~218K SLoC