ssufujia /
SPCBPT-OptiX7 ↗
An OptiX 7 implementation of SPCBPT: Subspace-based Probabilistic Connections for Bidirectional Path Tracing
- STARS
- 15
- FORKS
- 3
- PUSHED
- 2026.08.08
- C++64.5%
- Cuda20.4%
- Python7.5%
- PowerShell3.4%
- Other4.2%
基于 OptiX 9 / CUDA 的验证性双向路径追踪渲染器。当前默认配置为
LVCBPT + Path Guiding + Proxy (Experimental),Optimal-E 使用
CUDA mirror descent,初始学习率为 1.0。
实验脚本和回归测试随仓库提交;约 3.49 GiB 的原始 snapshot、候选矩阵和日志
仅保存在本地 ignored build/experiments/,不上传 GitHub。
本仓库是论文 SPCBPT:基于子空间概率连接的双向路径追踪 的 OptiX 实验实现。当前实现以验证渲染流程、数据结构和 Blender 接入为主, 不以完整复现论文全部算法为目标。
在 11 个场景真实 snapshot 上补做的 33 组同口径计时中,CUDA mirror
lr=1.0 平均耗时 0.277850 s,旧 CUDA Adam lr=0.05 为
0.280028 s。两者速度和 loss 降幅都接近,没有为了速度切换算法的依据,
因此生产端保留实现更简单的 mirror。
已验证的基线环境为 OptiX 9.1、CUDA 12.2、MSVC x64、Ninja 和
CMake 3.27 以上版本;全新构建另使用 CMake 4.4.0 验证通过。仓库内第三方
依赖版本见 third_party/README.md。
仓库根目录是唯一支持的 CMake 源码入口,项目会拒绝源码内构建。
- 将
CMakeUserPresets.json.example复制为CMakeUserPresets.json。 - 填写本机的
OptiX_ROOT和 Ninja 路径。 - 打开 x64 Visual Studio Developer PowerShell。
- 执行:
cmake --fresh --preset release-optix9-local
cmake --build --preset release-optix9-local可执行文件位于 build/release-optix9/bin/optixPathTracer.exe;原生
OptiX-IR 文件会部署到同级的 bin/optix-ir/。
普通运行不需要传参数:先把 renderer_config.json.example 复制为
renderer_config.json,然后在仓库根目录直接启动:
.\build\release-optix9\bin\optixPathTracer.exe程序默认读取当前目录的 renderer_config.json,并在启动时打印实际配置
来源、场景、算法、尺寸、路径模式、path guiding 与 Optimal-E 训练参数。
--config、--scene、--dim 只用于临时覆盖;完整字段说明见
docs/operation.md。
spcbpt_renderer:OptiX 场景、pipeline、算法和原生 CUDA;不依赖 GLFW、glad、ImGui 或 OpenGL。spcbpt_viewer:窗口、输入、显示与界面。optixPathTracer:应用入口和 CLI 组装。spcbpt_optix_ir:由 CMake 原生编译的两个 OptiX shader。
嵌入 Blender 等只需要渲染核心的宿主可设置
-DSPCBPT_BUILD_VIEWER=OFF -DBUILD_TESTING=OFF。此模式不配置 GLFW、
Dear ImGui、glad 或 OpenGL,只生成 spcbpt_renderer 与 OptiX-IR 相关目标;
如需核心测试,可单独保留 BUILD_TESTING=ON。
场景资源位于 assets/,第三方依赖位于 third_party/,运行与界面操作见
docs/operation.md。
项目原创代码按 BSD-3-Clause 许可;源文件中已有的 NVIDIA 等版权声明及
third_party/ 自带许可证继续有效。assets/ 不属于可再分发的 renderer-core
源码快照;除非单个资产明确附带许可证,本项目不授予其再分发权。
完整边界见 LICENSE 与 NOTICE.md。
- 当前禁用
t=1策略,即光源子路径直接连接相机的策略,因为它通常效率较低。 - 跨迭代复用光源子路径、环境贴图和透明材质尚未完整实现。
- 子空间分类暂不考虑方向;多数场景中位置和法线更重要。
- 子空间采样矩阵从对应子空间对路径完整贡献积分构造的初始矩阵开始训练, 以加快收敛。
- 训练路径由带 NEE 的简单单向路径追踪器生成。
- 过亮 firefly 仍比论文版本略多,后续再处理。
