我正在尝试使用路径跟踪渲染水。但是,由于在路径跟踪中,在相交点是完美镜面反射的情况下会跳过光采样,因此不会考虑直接光。

所以这意味着所有贡献(辐射度)都是间接照明在镜面(即dirac BSDF)上,镜面不应该计算直射光吗?

说,我有一个带有环境贴图(无限球)和水物体的场景,该物体由三角形网格表示。如果将最大反弹参数设置为1,则根本不会照亮水面。

如果将最大反弹参数设置为2,则所有贡献都来自反射的光线并“撞击环境图”。对于那些仍然反射到水面的反射光线,该光线将没有辐射。

结果是水上的某些区域看起来非常暗。

我想知道我的理解是否正确,如果不正确,该如何解决?

这是我的演示,一弹,两弹和20弹。

1弹



2次弹跳



20次弹跳
我认为红色框中的颜色不正确,应该更亮。



评论

您是否知道无需进行直接光采样就可以进行路径跟踪?您依靠发光术语将照明能量添加到场景中。您将使用菲涅耳来计算反射(镜面反射)与吸收(散射/折射/次表面散射)的反射量,并根据该反射量滚动随机数以选择要进行反射的反射量。