再看反射方程的镜面反射部分
由于视点相关不好处理,根据Epic Games' split sum approximation近似计算,这地方很不物理:
learnOpenGL上预滤波环境贴图的部分公式是错误的
预滤波环境贴图
前半部分叫做预滤波环境贴图。每个粗糙度级别,我们将按顺序把模糊后的结果存储在预滤波贴图的 mipmap 中:
这里使用蒙特卡洛积分来求解积分,我们使用低差异序列和重要性采样来优化蒙特卡洛积分的计算。
预计算 BRDF
第二部分公式中包含观察方向,法线,F0(菲涅尔系数),粗糙度参数。
F0在整个积分上是恒定的,将F0提取出来得到:
与计算的结果叫BRDF积分贴图(BRDF LUT)。 2D 查找纹理存储是菲涅耳响应的系数(R 通道)和偏差值(G 通道),观察方向和法线方法夹角cos为横坐标,粗糙度作为纵坐标。
几何函数(微表面自阴影)里面的k参数在直接光和IBL里面不同,原因作者没有解释: