BRDF, 双向反射分布函数【29:00】
Bidirectional Reflected Distribution Function
输入:一个入射光线的角度和能量
输出:各个反射光线的能量分布,包含镜面反射和漫反射
反射
反射可以理解为从某个入射角度ω打到指定区域的能量radiance。
这些radiance被区域吸收,并从这个区域向各个方向辐射。
✅ 从吸收的视角来理解是radiance,从辐射的视角来理解是irradiance,但是所承载的能量大小是相同的。
BRDF
BRDF则描述了这些irradiance会如何分配到各个立体角上去,即向某个方向辐射的radiance。
BRDF用比例的方式来描述这种分配关系。提供某个立体角上的radiance占的irradiance的多少。
💡 老师没有详细介绍BRDF是什么样的函数。我理解就是一个概率密度函数。漫反射是均匀概率,高光是高斯概率。
以上图为例:
从ωi向指定区域辐射到的能量,也可以说是指定区域从ωi方向吸收到的能量,为:
dE(ωi)=L(ωi)cosθidωi
这些吸收到的能量又从这个区域被辐射出去,向ωr方向辐射的能量为:
dLr(ωr)
BRDF为“从某个角度辐射的能量”与“来自某个入射角度并向所有角度辐射的总能量”的比例[36:16],或者说是“从某个角度辐射的能量”与“从某个角度接收的能量”的比例:
fr(wi→wr)=dLr(wr)dEi(wi)=dLr(wr)Li(wr)cosθidwi
其中分子表示unit area向ωr辐射的能量,分母表示unit area从ωi接收到的能量
不同的材质会有不同BRDF。
反射方程
BRDF为描述某个角度入射光对某个角度出射光的能量贡献,把得到入射角度都积分起来,得到是这个区域往某个角度辐射的能量总量。
Lr(p,wr)=∫H2fr(p,wi→wr)Li(p,wi)cosθidwi
其中:
∫...dwi:对所有入射方向的积分,,每个入射角wi对同一出射方向wr的贡献的累积
Li(p,wi):这个入射方向的打到区域的能量,是radiance
cosθi:考虑入射方向与被辐射区域的夹角
fr(p,wi→wr):把radiance分给某个出射角
❓ [?] p是什么?代表这个区域?
❗ 任何的出射的 radiance 都会变成其它的入射的 radiance,即公式中的 Li(p,wi)不一定来自光源。 因此,这是一个递归问题。
💡 把渲染过程中的量抽象成符号并归纳成公式,这就是刘老师所说的对问题建模的能力。
同一问题,建了什么样的模型就能得到什么样的结果,因此建模的能力是最重要的。
本文出自CaterpillarStudyGroup,转载请注明出处。
https://caterpillarstudygroup.github.io/GAMES101_mdbook/