我在OpenCL中编写了一个路径跟踪器。它工作得很好,但收敛速度很慢,尤其是对于小灯。顺便说一下,我听说过显式光采样,它大大加快了速度。
主要的问题是我不明白它是怎么工作的。我看到它被实现为在每次迭代中将标准Phong模型添加到材质的颜色中(例如,GLSL Path Tracer)。我也看到它只是作为一条道路的最后一段。
有人能解释一下显式光采样是如何工作的吗?
法线路径跟踪通过在曲面法线方向半球中随机发射光线来计算辐照度。这意味着当你有小光源时,随机击中这个光源的概率非常低。为了避免这个问题,您必须将集成过程分为两部分:
-
直接光集成
-
间接光集成。
但这里有一个问题:我如何确定哪个方向会直接击中光线?有一些技巧可以做到这一点。其中之一是为所有灯光选择立体角方向并检查阴影光线,以便确定灯光的贡献和可见性。
之后,您将计算出直接照明。来自半球其他部分的光实际上是间接光。
这两种方法似乎都存在。参见:
- http://graphics.ucsd.edu/~iman/BDPT/(具有下一事件估计的路径跟踪)直接照明方法:
- PeterShirley和王:蒙特卡罗积分的直接照明计算