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 每月下载量

Apache-2.0

220KB
4K SLoC

PBRT

Crate API Actions Status

这是什么?

这不是一个官方支持的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;
  • InsideInsideExclusiveBounds[23]<T> 的成员,用于克服 C++ 和 Rust 在参数重载能力上的差异。

依赖项

~20MB
~200K SLoC