Walter等人针对粗糙介电表面的单散射基于微面的表面模型(例如原始的Torrance-Sparrow BRDF)或派生模型(例如BSDF)。忽略微面之间的光的相互反射,这会导致能量损失,尤其是在较高的粗糙度值下会导致变暗。

使用炉子测试可以轻松地证明问题所在。下图显示了我使用Smith模型和GGX分布实现的导电微刻面BRDF的行为,其粗糙度参数为0.2到1.0(此处故意将菲涅耳系数设置为1,以使问题更容易看到):







使用Smith模型和GGX对粗电介质(IoR 1.51)BSDF进行炉膛测试粗糙度参数从0.2到1.0的微面分布:






等最近刚刚提出了一种多重散射模型,该模型可以通过完全解决光的相互作用来解决变暗问题,但是由于Heitz自己在LuxRender论坛中提到的评估程序的随机性,因此存在性能问题。

是否有已知的补偿方法来恢复单散射模型的能量损失?不一定物理上正确,但至少不会破坏物理上的合理性(亥姆霍兹互惠性和能量守恒),并且理想情况下不需要手动调整参数。

在迪士尼BSDF中,存在参数设置可以用来补偿边缘变暗的“光泽”成分(基本上是基于菲涅耳的光泽叶),但是正如他们在Siggraph 2015课程中提到的那样,它是非常特殊的方法:


“ ...这非常近似,不适用于其他
粗糙度值...”


前面提到的LuxRender论坛中Eric Heitz的评论还建议使用一些补偿技巧,但是,不幸的是,它没有涉及任何细节:改进单个散射模型(例如调整反照率)中的能量节省。但是,如果这样做,就不能获得完美的节能材料(例如,完美的白色毛坯玻璃)而不破坏BSDF的可逆性。


#1 楼

据我所知,没有简单而可解析的方法来恢复单散射模型中损失的能量。先前的技术会预先计算能量损失,并将其作为类似扩散的分量重新注入到BRDF中:


http://sirkan.iit.bme.hu/~szirmay/scook.pdf
http://www.cs.cornell.edu/projects/layered-sg14/layered.pdf

他们提出的建议是保守且互惠的,这可能是最简单的方法修复由于能量损失而导致的视觉变暗。主要缺点是,由于能量损失没有解析表达式,因此必须预先计算并存储在查找表中。