基于单散射微面的表面模型,如原始的托兰斯-麻雀BRDF,或由Walter等人导出的粗糙介质表面的BSDF模型。忽略微面间光的相互反射,导致能量损失,特别是在较高的粗糙度值时,导致暗化。
这个问题可以很容易地用炉膛试验来证明。以下图像显示了我使用Smith模型和GGX分布实现导电微面BRDF的行为,粗糙度参数从0.2到1.0 (菲涅耳系数在这里被故意设置为1,以便更容易看到问题):





采用Smith模型和GGX微面分布对粗糙介质(IoR 1.51) BSDF进行了炉膛试验,粗糙度参数为0.2 ~ 1.0:





Eric Heitz等人最近才提出了一种完全解决光相互作用来解决变暗问题的多重散射模型,但由于其评价程序的随机性,在卢克伦德论坛中也存在着性能问题。
是否有一种已知的补偿方法来恢复单次散射模型的损失能量?不一定在物理上正确,但至少没有打破物理振振性(赫尔姆霍兹互惠和能量守恒)太多,理想情况下,不需要手动调谐参数。
在迪士尼BSDF中,有一个叫做“光泽”的参数化组件(基本上是一种基于菲涅耳的光瓣),可以用来补偿边缘的暗化,但正如他们在2015年课程中提到的,这是非常特殊的方法:
“...this是非常近似的,对于其他粗糙度值也不适用.”
埃里克·海茨( Eric )在LuxRender论坛上的上述评论也建议使用一些补偿黑客,但不幸的是,没有详细说明:
据我所知,你可以使用一些更简单的方法来改善单散射模型中的能量守恒(比如调整反照率)。然而,如果你这样做,你不可能得到一个完美的节能材料(例如,完美的白色粗糙玻璃),除非打破BSDF的相互作用。
发布于 2016-02-28 22:16:11
据我所知,在单散射模型中,没有一种简单的、分析的方法来回收损失的能量。前面的技术预先计算了能量损失,并将其作为一个类似于扩散的组件重新弹出到BRDF中:
他们提出的是能量守恒和倒数,这可能是解决由于能量损失而导致的视觉变暗的最简单的方法。主要的缺点是,由于能量损失没有一个解析表达式,它必须预先计算并存储在一个查找表中。
https://computergraphics.stackexchange.com/questions/2110
复制相似问题