Avoid need to develop / derive models
Can accurately render with real-world materials
Theory vs. practice:
绿线红线是实际测出来的值,而蓝线是 Schlick approx,看起来完全不一样。菲涅尔项实际上非常复杂,不是用简单的公式就能描述的。
很多物理得出来的结论,都有很多简化的,这些和实际的结论还是不太一样,很多情况下需要做测量。这样就不推一些模型了,直接用测的一些数据。
<aside> 💡 BRDF 其实就是两个方向的一个函数,一个入射方向,一个出射方向。
</aside>
如果有一个样本,我们盯着一个着色点看,改变入射方向,拿一个灯从四面八方照着,再拿一个相机,从四面八方拍它。就能覆盖整个 BRDF 所有可能的输入方向、输出方向。
这个特定的仪器,在球面上旋转。直径两三米,一个爪子抓相机,另一个抓光源,样本放中间。两个爪子可以在球面上任意旋转移动。而且非常大也精确,精确到 0.1°。
General approach:
foreach outgoing direction wo
move light to illuminate surface with a thin beam from wo
for each incoming direction wi // 枚举所有的出射方向,放光源上去。
move sensor to be at direction wi from surface // 枚举出射方向
measure incident radiance
Improving efficiency:
如果按四维的去操作,固定了摄像机之后,整个的光源都要走一遍球面。换了相机方向,光源又要走一遍。是二维乘二维。
如果我们认为我们测的 BRDF 是各向同性的,就只有三维。