离线渲染——真实感材质建模
离线渲染——真实感材质建模
南京大学 王贝贝 2024.8.7
王老师主要讲解了渲染中的基本概念以及常见的材质模型。
课程目标:
- 一个shader
- 一个感兴趣的材质方向
材质模型的基本概念
辐射度量学 Radiometry
中学物理知识告诉我们使用Q焦耳描述能量。由于光也携带能量,在辐射度量学固然也是如此。
辐射通量 Radiant flux
flux用于描述单位时间通过的能量。
单位:瓦特 W,Watt(流明,lm,lumen)
$ \phi = \frac {dQ} {dt} $
辐射强度 Radiant Intensity
intensity用于描述每单位角的通量。
$ I(\omega) = \frac {d\phi}{d\omega} $
辐照度 irradiance
irradiance用于描述通过单位面积的流明。
单位:lux ($ \frac{W}{m^2} $)
$ E(x) = \frac {d\phi(x)}{dA} $
辐射率/辐射亮度 radiance
radiance用于描述每单位角每投影面积的能量。
单位:尼特 nit ($ \frac{W}{sr m^2} $)
$ L(p,\omega) = \frac {d^2\phi(p,\omega)}{d\omega dA cos\theta} $
outgoing radiance
incoming radiance != irradiance 物理意义不同,单位不同
拓展
显而易见地,irradiance和radiance可以进一步互相转换。
- 通常用Incident Radiance描述入射光的能量,指来自单位角的光线到达某一面的能量。
$ L(p,\omega) = \frac {dE(p)}{d\omega cos\theta} $ - 用Exiting Radiance描述出射光的能量,指单位面积发出的能量。
$ L(p,\omega) = \frac {dI(p)}{d\A cos\theta} $
数学基础
着色法向 & 几何法向
- 几何法向:三角面的法向量
- 顶点法向:所有相关联的三角形的面法向的均值
- 着色法向:三角形内某点的法向,用三个顶点法向差值
使用三种不同的渲染频率分别对应了不同的渲染类型: - Falt Shading
- Gouraud Shading
- Phong Shading
渲染结果如下:
方向的参数化
不同坐标系下的表达
直角坐标系
极坐标系
球面坐标系
BRDF的不同参数化
几何光学与波动光学
表面渲染与体渲染
表面渲染:入射出射点相同
次表面渲染: 光在介质传播,进行吸收、散射
渲染方程->辐射传输方程(radiative transfer equation)
扩散理论(diffusion theory)
双向反射函数 BRDF
BRDF的定义
局部坐标系
着色法向wo
反射光与入射光的比例关系
定义为出射光的微分辐射亮度/入射光的微分辐照度
$ f_r(\omega _i \rightarrow \omega _ r) = \frac{dL_r(\omega _r)}{dE_i (\omega _i) } $
我们想知道出射光的辐射亮度,于是经过简化和积分就可以得到了。
BRDF的描述
- 直接使用数据(4D/3D表格)
- MERL数据集
双向透射函数 BTDF
双向散射函数 BSDF
BSDF = BRDF + BTDF
常见材质模型
衡量标准
真实性、高效性、简洁性、统一性、物理性(能量守恒:白炉测试,可逆性)、重要性采用便捷性、可编辑性。
经验模型
漫反射模型
Lambertian模型
$ f(w_i,w_o)= \frac {p}{pi} $
镜面反射模型
Phong模型
Blinn-Phong模型
微表面模型
DFG
D法向分布函数
F菲涅尔项
G遮挡函数
Normal Distribution Function
常见的NDF模型:
Beckmann(Beckmann and Spizzichino 1963);GGX(Walter 2007);GTR(Burley 2012(迪士尼))
参数:
粗糙度Roughness (a = Roughness^2)
应用:
GGX常用
GTR拟合更好,但打破了拉伸不变形。
Shadow Masking
描述有多少比例的微表面可同时被入射和出射方向观察到
相同的NDF可以得到不同的微表面profile
不同的模型:
Smith模型、V-Groove等
Smith假设:
问题:只考虑了单次反射,可能多次反射后光线能量不会损失
菲涅尔项 Fresnel
光线在两种不同折射率的介质中传播时的反射比例。
与界面折射率有关(IOR)。金属为复数
金属(conductor):基本上接近1,在贴地角处反射更强
非金属(dielectric):
计算需要考虑偏振。离线使用
实时渲染进行简化,Fresnel Schlick Approximation
UE5.2 多一项F90,多考虑了一个方向的菲涅尔。
总结
- 没有金属度;
- 没有漫反射项
Disney Pricipled Model
应用
讲座没有提及如何应用这些模型。这里进行补全。
假如我们要写一个标准的PBR shader,可以分为下面几步:
- 参考Blinn-Phong模型的思路,将一个材质看作是ambient+diffuse+specular线性相加的结果。
- diffuse项可以使用Lambertian模型
- specular可以使用微表面模型
- ambient使用球谐函数对环境进行采样
于是就可以写出看起来不错的效果了:
材质模型近期进展
- 神经网络生成材质