Games202-5 Real-time Physically-based Materials
Q1:在金属或高光工作流中,对于非导体材质(电介质)默认其零度菲涅尔值$R_0$ 为4%,那么按PBR来,他怎么会有颜色呢;还是说非导体的albedo就是$R_0$ ? 按作业中来好像albedo就是 $R_0$ ,后续还得深挖一下;
Q2:Jacobian 项,方向导数需要去了解更多
a). Introduction
- 尽管实时渲染中的PBR,不一定完全基于物理。如Disney principled BRDFs (artist friendly but still not PBR)
b). Microfacet BRDF
- 菲涅尔项;
- Shadowing-masking term
- 考虑微表面之间的遮挡和阴影;
- 当光线几乎平行与表面入射时(Grazing angle),微表面之间遮挡变多
- Disterbution of normals(法线分布)
b.1). The Fresnel Term
- 本质上是考虑能量的吸收和反射(即考虑BRDF就会有因为颜色的合理的能量损失)
b.2). Normal Distribution Function(NDF)
- NDF从简单(如Gloosy)变为复杂(如Diffuse),就类似于把微表面高度场拉大;
类型:
- Beckmann, GGX, etc.
- Detailed models [Yan 2014, 2016, 2018, …]
b.2.1). Beckmann NDF
Beckmann NDF:
和高斯函数相似
Project Solid angel上积分为1
定义在Slope space(坡度空间)
- 原因: 在Slope space(法线交点处切线平面)中Support无限大,任意位置对应的夹角不会超过90°,保证微表面不会朝下
- $\alpha$ :Roughness的平方
- $\theta_{h}$ :半角向量和(宏观)法线的夹角
b.2.2). GGX (or Trowbridge-Reitz, TR)
Long tail: 使得光线过度更为自然,如高光过渡柔和
b.2.3). GGGX(GTR)
b.3). Shadowing-Masking Term
Why is it important?
如没$G$ 项,在grazing angle时,物体表面会发亮;
b.3.1). The Smith shadowing-masking term
假设: Shadow和Masking无关,即
b.3.2). Issues(Missing energy)
原因:由于Shadowing-masking只考虑了一次弹射,对于多次弹射的能量直接舍去,造成能量损失;
- 做法:
- Accurate methods exist [Heitz et al. 2016]
- 主要用于离线渲染,对于RTR过慢;
- The Kulla-Conty Approximation
- Being occluded == next bounce happening
- 构造函数去补偿损失的能量;
- 求得的BRDF+原BRDF,即可;
- Accurate methods exist [Heitz et al. 2016]
b.3.3). Kulla-Conty Approximation
通过对$\mathrm{d}\omega_{i}$ 换元(即立体角)
得到:
- 此处假设各处入射Radiance($L_i$) 均匀为1,因此出射的Radiance也应均匀为1;
- 此处假设BRDF的菲涅尔项为1,即无颜色,能量不损失。后续再考虑颜色(?待验证)
- 该函数是关于出射角的俯仰角$\theta_o$ 的函数(和方位角无关是因为假设为各项同性)
Key idea:
通过积分可得需要补偿的能量为 $1 - E(\mu_{o})$;
该函数是关于出射角的俯仰角$\theta_o$ 的函数(和方位角无关是因为假设为各项同性)
考虑到对称性质(reciprocity),即入射方向和出射方向互换,Radiance不变,补偿项的BRDF形式为$c(1 - E(\mu_{i}))(1 - E(\mu_{o}))$,其中 $c$ 为常数;
补偿项的BRDF(带cos) - $c(1 - E(\mu_{i}))(1 - E(\mu_{o}))$
常数 $c = \frac{1}{\pi(1-E_{avg})}, E_{avg}=2\int_0^1E(\mu)\mu\, \mathrm{d}\mu$
补偿项即为:
- $c$ 推导:即让补偿项的BRDF$f_{ms}(\mu_{o},\mu_{i})$ 的积分结果为 $1 - E(\mu_{o})$
预计算
- 对于$E_{avg}=2\int_0^1E(\mu)\mu\, \mathrm{d}\mu$ ,只需要得知其Roughness就可求出对应的结果,储存在1D table中;
- NDF等使用的模型已知;
- 对于$E(\mu)$ 得知其roughness(确定函数) 和 $\mu$ (确定函数自变量),即可求出对应结果,储存在2D table中;
Result. 原BRDF+(uncolored)补偿项BRDF ↩
Color(energy loss)
- 有颜色( vec3的$R_0$项 ),意味着能量被吸收,也是能量合理的损失;
- 之前我们做了,不损失能量,无颜色的情况。之后,我们需要计算由于颜色的能量损失;
- 定义平均菲涅尔 $F_{avg}$ ,表示能量参与弹射后,平均反射出多少;(剩下的被吸收)
- 之前定义了 $E_{avg}$ ,表示每次弹射后,平均有多少能量被看见(即不参与之后的弹射)
- $F_{avg}$ 、$E_{avg}$ 都是三维的向量;
由此可得,
- $(1-E_{avg})$ 表示上一次弹射后,被遮挡未出射的能量;
- 等比数列求和;
- 求得的color term直接乘上uncolored additional BRDF即可;
Result with color. 原BRDF + colored补偿项BRDF(color term * uncolor补偿项BRDF) ↩
c). Linearly Transformed Cosines(LTC, 线性变换余弦)
c.1). Introduction
作用: Solves the shading of microfacet models
- 主要用于GGX,当然其他NDF也适用;
- No shadows
- Under polygon shaped lighting(多边形光源),解决多边形光源的光照积分问题;
Key idea:
对于任意一个球面分布函数,一定可以通过一个线性变换矩阵将其变化到另外一个球面分布函数(对于任意2D(二维,出射方位角和俯仰角) BRDF lobe can be transformed to a cosine)
光源的形状也可以被变换,且积分结果相同;
- 变换后的积分有解析解;
Ref:
[1] Real-Time Polygonal-Light Shading with Linearly Transformed Cosines
[2] Real-Time Polygonal-Light with LTC-zhihu
[3] 物理光源:Linearly Transformed Cosines
[4] Eric Heitz’s Research Page
[5] Global Illumination_Linearly Transformed Cosines (LTC)
- $J$ 是雅可比行列式,更进一步的可见Ref,后续论文复现后再进一步补充此处笔记;
LTC介绍. 来源Ref[3] ↩
LTC拟合BRDF. 来源Ref[6] ↩
d). Disney’s Principled BRDF
d.1). Introduction
微表面BRDF的缺点
- 微表面模型不擅长表示真实(基于物理)的材质;
- 如:Diffuse的情况不好表示,多层材质也难以表示;
- 微表面模型“are not artist friendly”
- 如: 复折射率(complex index of refraction),$n-ik$(详见PBR-White-Paper)
需求:
- Artist friendly,但一定程度上physically-based
设计原则:
- 应该使用直观的而不是物理的参数;
- 使用的参数尽可能少;
- 参数应该在0~1;
- 参数在必要时允许超出0~1的范围;
- 参数的所有组合的外观都应该是合理、稳定的;
Disney’s Principled BRDF. A table showing the effects of individual parameters ↩
- sheen: 类似天鹅绒,材质表面有一层绒毛,使得其在grazing angle有雾化的效果
- sheenTint: 绒毛的颜色
- clearcoat: 类似清漆(当时做雨滴就用的是clearcoat)
d.2). Pros and Cons
- 易于理解/控制
- 可表现大量材质;
- 实现复杂,基本是去拟合PBR材质;
- 不基于物理,但视觉上大部分是符合的;
- 参数空间巨大;