背景
28 个 Catch2 测试验证数学逻辑(GGX 值、Fresnel),但零个验证视觉输出。任何像素级的渲染回归在当前 CI 中完全无法检测。
目标
引入 Python 脚本(Pillow + NumPy),对 CPU 确定性渲染输出做 SSIM + MSE 比对,集成到 CI,作为所有后续渲染改动的安全网。
详细需求
-
Python 测试脚本 scripts/test_golden.py
- 固定种子运行 CPU 渲染器,输出当前帧
- 与
test/golden/ 下的参考图像做 SSIM + MSE 比对
- SSIM > 0.999 通过,CI 直接失败则阻止合并
-
参考图像生成
test/golden/default_scene.png — 默认场景
test/golden/emissive_scene.png — 发光材质测试
-
CI 集成
- 在现有
build.yml 中新增独立 job
- Debug + Release 均运行
pip install Pillow numpy scikit-image 作为前置步骤
-
确定性保证
- 固定 PCG 随机种子
- 必要时回退单线程以消除
std::execution::par 调度不确定性
验收标准
背景
28 个 Catch2 测试验证数学逻辑(GGX 值、Fresnel),但零个验证视觉输出。任何像素级的渲染回归在当前 CI 中完全无法检测。
目标
引入 Python 脚本(Pillow + NumPy),对 CPU 确定性渲染输出做 SSIM + MSE 比对,集成到 CI,作为所有后续渲染改动的安全网。
详细需求
Python 测试脚本
scripts/test_golden.pytest/golden/下的参考图像做 SSIM + MSE 比对参考图像生成
test/golden/default_scene.png— 默认场景test/golden/emissive_scene.png— 发光材质测试CI 集成
build.yml中新增独立 jobpip install Pillow numpy scikit-image作为前置步骤确定性保证
std::execution::par调度不确定性验收标准
scripts/test_golden.py在本地运行通过test/golden/