Raytracer 帮助 - 背景颜色覆盖某些颜色?

Raytracer help - Background color writing over some colors?

我正在实施 Peter Shirley 的“周末的光线追踪器:下周”,但在渲染带有灯光的场景时遇到了一些问题。我不确定问题是背景颜色还是灯光本身,但光线追踪器似乎在任何没有灯光的场景中都能正常工作。

渲染的图像应该是:

但实际结果为:

当我尝试排除故障并将背景颜色更改为蓝色时,图像是:

知道为什么会这样吗?

我在这里找到了答案:https://computergraphics.stackexchange.com/questions/10160/raytracer-help-background-color-writing-over-some-colors

@PaulHK 帮助我意识到我的 Lambertian 中存在一个错误 class,当我意识到这一点后,图像呈现完美

这是他的回答:“刚刚快速浏览了您的代码。在 Lambertion::scatter 中有一条关于根据距离衰减光线的评论。对于光线跟踪器,这不是必需的,因为光线本身的分布导致距离衰减。通常反照率值乘以当前路径衰减(一个例外是重要性采样,因为它使用加权样本)我没有检查整个项目源所以我做了一些猜测。“