6 个版本
0.1.5 | 2019年12月22日 |
---|---|
0.1.4 | 2019年12月16日 |
0.1.3 | 2019年11月30日 |
0.1.1 | 2019年1月6日 |
#307 in 图形API
28 每月下载量
220KB
4K SLoC
PBRT
这是什么?
这不是一个官方支持的Google产品。这是一个个人项目,它为编程和编写光线追踪器提供了学习经验。如果你对这两者中的任何一个感兴趣,那么你可能喜欢这个项目。
这是《基于物理的渲染,第三版》中记录的物理基础光线追踪器的Rust实现 http://www.pbrt.org/
如果你在寻找一个更完整的实现,请查看 https://github.com/wahn/rs_pbrt
C++版本的区别
- 输出参数已重写为多个返回值。
- 使用bool返回类型和out参数的函数已重写为使用Option<>。
- 场景解析分为两个阶段。第一阶段将文件解析为一系列枚举,见parser::{WorldBlock,OptionsBlock}到parser::Scene对象。第二阶段然后遍历Scene对象,根据需要调用api::Pbrt方法。
- 构造函数:零参数构造函数应实现
Default
,或具有帮助性命名的构造函数,如identity
。类型更改构造函数应实现From
。 pbrt.h
的功能已放入lib.rs
。这与C++实现的位置不同。它允许使用如use pbrt::Float;
之类的用法,而不是更啰嗦的use pbrt::core::pbrt::Float;
Inside
和InsideExclusive
是Bounds[23]<T>
的成员,用于克服 C++ 和 Rust 在参数重载能力上的差异。
依赖项
~20MB
~200K SLoC