AI News HubLIVE
站内改写1 分钟阅读

从零开始用C++编写光线追踪器,无AI依赖

一位开发者发布了Luz,一个完全从零开始编写的C++20路径追踪器,没有任何第三方库依赖。它支持蒙特卡洛路径追踪、全局光照、BVH加速、自适应采样、降噪、大气散射等功能,并提供了Blender导出器。

来源Hacker News AI作者: martiano

近日,一位独立开发者发布了Luz,这是一个完全从零开始用C++20编写的路径追踪器,不依赖任何第三方库。该项目在GitHub上开源,目前获得了3颗星和1个关注者。

Luz的核心功能包括蒙特卡洛路径追踪、全局光照、多线程CPU渲染、自适应采样和降噪(NFOR风格)。它支持多种几何体(球体、平面、矩形、三角形、立方体、体积和OBJ网格)以及多种材质(朗伯、金属、电介质、自发光和各向同性)。光源类型包括区域光、点光源、球面光和方向光。

在加速结构方面,Luz使用了BVH(包围体层次结构)加速,包括打包网格BVH和基于bin的SAH构建算法,并采用近优先遍历策略。它还实现了重要性采样和概率密度函数。

Luz还支持大气散射模拟、景深、抗锯齿、曝光控制、对比度调节、色调映射、伽马校正和辉光效果。输出格式支持BMP和TIFF。

项目提供了一个基准测试框架,用于渲染、降噪、后处理和评分比较。构建系统支持Makefile和CMake,兼容macOS、Linux和Windows系统。

命令行接口允许用户通过参数控制渲染分辨率、采样数、自适应采样、最大反弹次数、线程数等。自适应采样功能可根据像素的收敛情况动态调整采样数,以提高效率。

Luz还包含一个Blender导出器,可以通过Blender的Python API将场景导出为.luz格式。此外,项目提供了详细的文档和示例场景。

开发者表示,特别感谢《Ray Tracing in One Weekend》系列书籍的启发。该项目遵循MIT许可证。