3 个版本 (1 个稳定版本)

1.0.0 2024年1月1日
0.1.1 2023年11月3日
0.1.0 2023年6月2日

科学 分类中排名 161

MIT 许可证

3.5MB
3.5K SLoC

🌟 Photo: 精确光线追踪

Photo logo

🔭 概述

Photo 是一个基于 Rust 的光线追踪库,强调精确性和模块化,旨在为照片级真实感提供精确的光线模拟。它独特地利用 CPU 功能,增强硬件兼容性和精确度。

🔗 GPU 适配:Photo GPU 分支

🚀 关键特性

  • 🖥️ 高精度与并行处理:针对多核 CPU 优化。它采用基于瓦片的渲染,减少内存使用并启用渲染检查点。
  • 🎨 高级渲染技术:弃用传统纹理,Photo 使用色图和详细的阴影计算,以生成逼真的图像。
  • 🌐 灵活的场景描述:提供 JSON 配置的场景,并支持 .obj 文件作为模型输入,提供广泛的创意自由。

🏎️ 支持

  • 光线追踪
  • 基于瓦片的渲染
  • 时间渲染
  • 边界体积层次结构
  • 网格实例化
  • 表面类型
    • 不透明
    • 反射
    • 折射
  • 许多渲染引擎
  • 后期处理效果

Photo tree

🏁 快速入门

克隆仓库并将根目录设置为当前工作目录

git clone https://github.com/FreddyWordingham/photo.git photo
cd photo

使用 Cargo 构建包

cargo build --release

然后运行二进制文件,指定输入参数文件

cargo run --release ./input/parameters.json

然后您可以使用包含的脚本将瓦片拼接成一张单独的图片

sh scripts/stitch.sh path/to/tile/directory

📖 详细信息

Photo 是一个用 Rust 编写的光线追踪库,非常注重精确性和模块化。它旨在非常精确,重点是对场景中光线传输的物理精确模拟,以生成照片级真实感图像。

它使用 CPU 而不是 GPU 进行光线追踪,允许它在广泛的硬件上运行,并且比 GPU 允许的精度更高。(有关针对 GPU 的库实现的实现,请参阅 GPU 分支。)

尽管该库针对CPU进行设计,但它被设计成高度并行化,可以利用多核处理器。图像通过一系列瓦片进行渲染,这最小化了内存占用,并允许对渲染进行检查点。

而不是使用纹理,Photo使用颜色图和阴影计算来生成逼真的图像。场景描述以JSON编写,输入模型是wavefront (.obj) 文件,这使得场景描述具有很高的灵活性。

依赖关系

~22–31MB
~314K SLoC