Skip to content

使用 Rust 实现的基础多线程光线追踪渲染器,参考 "Ray Tracing in One Weekend" 系列教程

Notifications You must be signed in to change notification settings

vonbrank/basic-ray-tracer-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Banner image

Basic Ray Tracer in Rust

使用 Rust 实现的基础光线追踪渲染器

关于本项目

本项目参考 Ray Tracing in One Weekend 系列教程,使用 Rust 语言实现了基础的递归式光线追踪算法。

目前已完成前两阶段:

Banner image
Banner image

依据教程实现了以下特性:

  • Ray Tracing in One Weekend:
    • 球体 Mesh
    • 随机采样抗锯齿:在每个像素内随机采样取平均值,减少噪点的同时实现抗锯齿。
    • 材质:包括 Diffuse、Glossy、镜面、半透明 等材质。
    • 模拟景深
  • Ray Tracing: The Next Week:
    • 模拟运动模糊
    • 层次包围盒 BVH
    • 柏林噪声
    • 矩形 Fragment、长方体 Mesh
    • 发光材质
    • 平移、旋转变换
    • 体积光

此外,项目还实现了这些特性:

  • 多线程渲染:为了提升性能,减少单次渲染消耗的时间,我们实现了一个线程池。渲染开始前,程序将自动检测设备的逻辑线程数,以确定线程池中的最大可用线程数。每一行像素的渲染将会被分配到不同线程去执行。
  • 可视化渲染进度:渲染开始后,可以从终端实时查看当前渲染进度和已渲染像素数等信息:
    Rendering:  [###----------------------] 12%
    00:00:30    7502 pixel(s) per second
    threads=16  253844 pixel(s) rendered

使用方法

  • 安装 rustup

  • 运行

    cargo run --release > ${图片路径/名称.ppm}

    光线追踪算法对性能需求非常高,因此请确保使用 --release 选项运行程序,以释放 Rust 的全部性能。

    本项目保存图片的格式为 .ppm ,与原教程相同。

  • 查看输出结果

    您可以使用任何支持 .ppm 格式的图片查看器查看输出结果,例如 这款 VSCode 插件这款 PPM 在线查看器

About

使用 Rust 实现的基础多线程光线追踪渲染器,参考 "Ray Tracing in One Weekend" 系列教程

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages