我目前正在尝试实现蒙特卡罗路径跟踪器。我已经做了一些研究,似乎对材料的一种常见方法是使用分层模型。就像这样:

当光线击中表面时,菲涅耳告诉我们第一层反射了多少光,第二层反射了多少,以此类推。
所以我做了一些类似的事情,但更简单:只有一层镜片和一层漫射。还没有透过率。到目前为止,我使用了一个简单的余弦加权brdf作为我的漫射和库克托伦斯微面模型为我的镜面。
现在,困难的部分来了:一旦射线击中表面,我该怎么办?通常情况下,我会选择与表面材料相对应的brdf,对入射光方向进行采样,评估brdf,并将其除以正确的概率分布函数。
但在这里,表面撞击有效地对应于多种材料。处理这一问题的天真方法是为每一层命中采样一次。但这显然是一个巨大的性能命中的来源,导致我的路径有效地变成了一棵树。
有没有更好的解决办法?
发布于 2017-01-28 13:22:55
Wenzel等人在2014年SIGGRAPH上提交了一份层状材料框架。第6.2节解释了重要性抽样。如果您更喜欢代码而不是方程式,则该方法将在三菱渲染器中实现。
https://computergraphics.stackexchange.com/questions/4611
复制相似问题