Skip to the content.

CUDA Ray Tracer

CI License: MIT CUDA C++ CMake

纯 CUDA/C++ 光线追踪器,支持 Blinn-Phong 着色蒙特卡洛路径追踪BVH 加速,以及仅用于 Phong + 单采样 的主光线排序路径。


核心特性

特性 说明
Blinn-Phong 着色 环境光 + 漫反射 + 镜面反射,支持多光源
蒙特卡洛路径追踪 俄罗斯轮盘赌终止的全局光照
BVH 加速结构 加速球体求交;平面仍走单独求交路径
光线排序 按命中物体 ID 排序主光线,降低单采样 Phong 模式下的 warp 分歧
材质系统 漫反射、塑料、金属、镜面预设
色调映射 运行时输出使用 Reinhard;代码/测试中保留 ACES helper
多场景 Demo、Cornell Box、随机球体

快速开始

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

# 默认 Phong
build/bin/ray_tracer

# 1080p + 多采样
build/bin/ray_tracer -w 1920 -h 1080 -s 16

# 路径追踪 Cornell Box
build/bin/ray_tracer --scene cornell -p -s 100

# 光线排序仅支持 Phong + 单采样
build/bin/ray_tracer --scene demo --sort -s 1

命令行参数

参数 说明 默认值
-w 图像宽度 800
-h 图像高度 600
-s 每像素采样数 1
-d 最大光线深度,必须 > 0 5
-p 启用路径追踪 关闭
-o 输出文件名 output.ppm
--scene 场景名称 (demo / cornell / random) demo
--sort 启用光线排序(仅 Phong + 单采样 关闭

测试

cd build
ctest --output-on-failure

测试二进制位于 build/bin/

GitHub 托管 runner 不提供 CUDA 设备,因此仓库 CI 目前只验证配置、编译和格式;GPU 测试需要在本地或自托管 CUDA 环境中执行。

技术说明

项目结构

ray-tracer/
├── include/           # 头文件(vec3, ray, camera, geometry, material, BVH, ...)
├── src/               # 主程序入口和预设场景
├── tests/             # unit / property tests
├── .github/workflows/
├── CMakeLists.txt
└── README.md

参考资料


在 GitHub 上查看 · English README · 中文 README