我已经写了一些基于标准BRDF的定制着色器,它使用了GGX分发项和Smith可见项。在平滑度标度的两端(在下面的图中是1和2),它看起来很棒。然而,随着平滑度设定为50%左右,事情开始变得有点丑陋(3)。金属度的增加使它更糟(4),强彩色镜面变得更糟,因为不同的颜色通道以不同的速率吹出(5)。这似乎是由高光周围的反射项返回>1引起的,这可能是由于联合攻击将镜面乘以pi (而不是分割漫射)造成的,如下面的代码片段所示。// HACK: theoretically we should divide diffuseTerm by Pi and not