Environment lighting
环境光照是一种无限距离远和所有方向的光照
The split sum approximation
为了算出着色,所以需要Solving the rendering equation,其中的V项代表了光线是否能够到达,在去除V项之后就是单纯的光线发出了
但是一般解rendering equation的方法是Monte Carlo integration,这种方法是通过大量采样的结果来近似的,所以就会非常慢,不适合用于实时渲染,但最近几年已经有方法可以让采样的方法用在实时渲染中了。
通过观察发现,如果BRDF是glossy,就会变得small support!,如果是diffuse,就会smooth
这正好符合之前的近似公式
通过把Li项拆分出来,就会简化计算
同时也变成了Li对BRDF上的范围的filter再进行normal,也就是说先预计算存储filter,在实际使用时就可以直接查询了。
比方说在下图中,如果是glossy,原本的方法是查询镜面反射方向的附近一片的范围然后加权平均,现在是先Prefiltering,然后在镜面反射方向上直接查询即可。
前面的 Li项在不采样的方法下可以解出,但后面的BRDF项比较复杂,它的参数较多,如果直接预计算就会是高维的非常耗时的计算,所以需要降低维度计算。
在BRDF中,主要由F和D项来控制。
下图中的R(θ)代表了不同角度下的菲涅尔项,R0代表了材料折射率,θ代表角度,D(h)是由α和θ控制,也就是说这是一个三维的计算。
依然需要降低维度来减少计算量,在这里使用近似的方法来把R0拿到积分限前面,这样就变成了二维的计算。
也就是由α和θ来作为自变量,这样就避免了BRDF的采样。