目录
PBR and PBR Materials
- 《Physically-Based Rendering》
Physically-Based Rendering (PBR)
- 任何关于渲染的课题都是基于物理的
- 材质、灯光、相机(透镜)、光线传播等等
- PBR不仅仅包含基于物理的材质,但是通常大家说的PBR都用来表示基于物理的材质
PBR materials in RTR
- 材质渲染中实时渲染远远落后与离线渲染(材质的丰富程度)
- 质量和准确度远低于离线渲染
- 在保证速度的前提下,尽可能提升材质渲染的质量
- 实时渲染中提到的基于物理的材质,基本上都不是基于物理的 (这句话的意思应该是,为了提升效率,对基于物理的材质渲染方法进行简化和近似)
- 优秀的渲染引擎
- Pixar – RenderMan
- Disney – Hyperion
- Weta Digital – Manuka
PBR materials
- 表面上定义
- 微表面模型(不是真正意义上的PBR)
- 迪斯尼BRDF(比较友好,但也不是真正意义上的PBR)
- 体积上定义
- 烟和雾
- 主要关注效率和近似单次散射和多次散射
- 云、头发、皮肤
- 通常不会有太多新的理论,但会有很多实现技巧(hacks)
- 实时渲染中,性能(速度)是考虑的关键因素。
- 所有材质都是离线材质算法在保证速度的前提下提高渲染质量
Microfacet BRDF
- 在渲染算法学习(三)中已经有详细笔记,因此这里只做一些新内容的总结
Normal Distribution Function (NDF)
- 法线方向的一个函数
- Beckman NDF(这里指各向同性Beckmann NDF)
D ( h ) = e − t a n 2 θ h α 2 π α 2 c o s 4 θ h (1) \tag1 D(h) = \frac{e^{-\frac{tan^2\theta_h}{\alpha^2}}}{\pi\alpha^2cos^4\theta_h} D(h)=πα2cos4θhe−α2tan2θh(1)
其中- α \alpha α是物体表面的粗糙程度(值越小越光滑(mirror/specular))
- θ h \theta_h θh是半程向量 h h h和宏观法线 n n n的夹角
- 公式(1)与渲染算法学习(三)公式(9)是等价的,只是将公式(9)中的 c o s cos cos项转换成 t a n tan tan项(已经手撕过了)
- Beckmann NDF类似高斯函数
- 可以表示不同粗糙程度的表面
- 定义在坡度空间上(slope space)
- 可以保证在坡度空间下 ,无限大的函数也能保证不会出现面朝下的微表面
- 归一化性质
- 保证NDF函数在per unit solid angle上积分为1
- GGX分布
- 分布特点:long tail(长尾)
- Beckman分布很快就衰减到接近0
- GGX也是很快衰减,但是在衰减到一定程度时,衰减的速度会减缓
- 使用GGX分布在渲染光源时,由于其衰减越趋近0,其衰减的速度越慢。因此,高光周围会出现很明显的光晕。这种长尾巴可以带来很自然渲染的效果。
- 分布特点:long tail(长尾)
- GTR (Generalized Trowbridge-Reitz)
- 为GGX扩展方法,可以通过调整参数自定义尾巴长度
- γ \gamma γ值越小,尾巴越长
- γ = 2 \gamma = 2 γ=2为GGX
- γ \gamma γ取最大值时为Beckman NDF
- 为GGX扩展方法,可以通过调整参数自定义尾巴长度
Shadowing-Masking Term(Term G)
- 该节填一下渲染算法学习(三)的坑,详细做一下微表面模型G项的总结
- the geometry term G
- 表示微表面模型自遮挡情况
- 光源被遮挡(shadowing)
- 相机看不到的微表面(Masking)
- 因此G也称Shadowing-Masking Term
- G项为了解决由于遮挡产生的darkening(变暗)的现象
- 由于遮挡问题,导致最终渲染结果没有通过计算得到的结果亮。因此需要提供一个变暗的操作。
- 变暗操作的一些性质
- 垂直微表面模型看时,不做变暗操作(无自遮挡)~1
- 与微表面掠射角度(grazing angle)看时,会变暗非常多(自遮挡很多)~0
- 表示微表面模型自遮挡情况
- The Smith shadowing-masking term
- 分成两部分(由于shadowing和masking是相关的,该方法假设这两项不相关)
- shadowing
- masking
G ( i , o , m ) ≈ G 1 ( i , m ) G 1 ( o , m ) (2) \tag{2} G(i,o,m) \approx G_1(i,m)G_1(o,m) G(i,o,m)≈G1(i,m)G1(o,m)(2)
其中- G 1 ( i , m ) G_1(i,m) G1(i,m)为shadowing自遮挡项
- G 1 ( o , m ) G_1(o,m) G1(o,m)为masking自遮挡项
- 缺陷
- 有能量损失
- roughness越大,能量损失越严重(越暗)
- 因为微表面越粗糙,沟壑越多,反射光更容易被其他微表面遮挡。因此多次弹射的占比越大。因此只考虑一次弹射计算BRDF,会有能量丢失。
- 白炉测试:测试BRDF能量损失
- 解决方法
- 将损失的能量补回来
- 准确方法[Heitz et al. 2016],适用于离线渲染
- RTR方法
- 被遮挡与发生下次弹射是同一概念
- The Kulla-Conty Approximation
- 通过经验模型来补充丢失的能量
- The Kulla-Conty Approximation
- 如果要补回损失的能量,就要计算出一次弹射时有多少出射radiance( L o ( p , ω o ) ) L_o(p, \omega_o)) Lo(p,ωo))
- 因此
- Kulla-Conty设从各个方向入射的radiance为1,即( L i ( p , ω i ) = 1 L_i(p, \omega_i)=1 Li(p,ωi)=1)
- 先求出微表面需要进行一次弹射的着色点的出射radiance,公式如下
E ( μ o ) = ∫ 0 2 π ∫ 0 1 f ( μ o , μ i , ϕ ) μ i d μ i d ϕ (3) \tag{3} E(\mu_o) = \int_0^{2\pi} \int_0^1f(\mu_o,\mu_i,\phi)\mu_i\mathrm{d}\mu_i\mathrm{d}\phi E(μo)=∫02π∫01f(μo,μi,ϕ)μidμidϕ(3)
其中-
f
(
μ
o
,
μ
i
,
ϕ
)
f(\mu_o,\mu_i,\phi)
f(μo,μi,ϕ)为BRDF项
- 该方法认为 ϕ \phi ϕ与 μ o \mu_o μo、 μ i \mu_i μi无关
- 由于 L i ( p , ω i ) = 1 L_i(p, \omega_i)=1 Li(p,ωi)=1。因此,公式无入射radiance项
- 渲染方程
c
o
s
cos
cos项在公式(3)中被换元
- 将公式(3)用渲染方程表示
- E o ( p , ω 0 ) = ∫ Ω + f r ( p , ω i , ω o ) c o s θ i d ω i E_{o}(p, \omega_0) = \int_{\varOmega^+}f_r(p, \omega_i, \omega_o)cos\theta_i \mathrm{d}\omega_i Eo(p,ω0)=∫Ω+fr(p,ωi,ωo)cosθidωi
- 由于单位球面可以展开为对
θ
\theta
θ 和
ϕ
\phi
ϕ 的积分
- r 2 s i n θ d θ d ϕ r^2sin\theta d\theta d\phi r2sinθdθdϕ (渲染算法学习(二))
- 单位立体角 d ω = s i n θ d θ d ϕ d\omega = sin\theta d\theta d\phi dω=sinθdθdϕ
- 换元
- E o ( p , ω 0 ) = ∫ Ω + f r ( p , ω i , ω o ) c o s θ i s i n θ i d θ i d ϕ E_{o}(p, \omega_0) = \int_{\varOmega^+}f_r(p, \omega_i, \omega_o)cos\theta_i sin\theta_i d\theta_i d\phi Eo(p,ω0)=∫Ω+fr(p,ωi,ωo)cosθisinθidθidϕ
- 令
μ
=
s
i
n
θ
\mu = sin\theta
μ=sinθ
- 微分公式-- d s i n θ = c o s θ d θ \mathrm{d}sin\theta = cos\theta\mathrm{d}\theta dsinθ=cosθdθ
- E o ( p , ω 0 ) = ∫ Ω + f r ( p , ω i , ω o ) μ i d μ i d ϕ E_{o}(p, \omega_0) = \int_{\varOmega^+}f_r(p, \omega_i, \omega_o) \mu_i\mathrm{d}\mu_i d\phi Eo(p,ω0)=∫Ω+fr(p,ωi,ωo)μidμidϕ
- 由于公式(3)从积分单位立体角变为对
μ
\mu
μ 和
ϕ
\phi
ϕ 积分
- 因此积分线也随之发生变化(内层积分和外层积分)
- 将公式(3)用渲染方程表示
-
f
(
μ
o
,
μ
i
,
ϕ
)
f(\mu_o,\mu_i,\phi)
f(μo,μi,ϕ)为BRDF项
- Kulla-Conty 思想
-
公式(3)计算的结果范围是 [ 0 , 1 ] [0,1] [0,1]
-
设计一个额外的Lobe,其结果为 1 − E ( μ o ) 1-E(\mu_o) 1−E(μo)
- 公式(3)表示,光线在一次弹射时出射的Radiance。光源总能量为1。因此,该光线经过一次弹射所损失的能量为 1 − E ( μ o ) 1-E(\mu_o) 1−E(μo)。
- 这种出射的BRDF Lobe 在不同的入射方向有不同的值
-
因此,由于引用Shadowing-Masking Term项所损失的能量,可以使用上述理论计算出的能量损失项补充
-
Kulla-Conty 使用的补充能量项(称补充的BRDF Lobe)为 c ( 1 − E ( μ i ) ) ( 1 − E ( μ o ) ) c(1-E(\mu_i))(1-E(\mu_o)) c(1−E(μi))(1−E(μo))
- 考虑对称性。
- 入射光线 μ i \mu_i μi在出射光线 μ o \mu_o μo损失的能量为 ( 1 − E ( μ o ) ) (1-E(\mu_o)) (1−E(μo))
- 相反(对称)入射光线 μ o \mu_o μo在出射光线 μ i \mu_i μi损失的能量为 ( 1 − E ( μ i ) ) (1-E(\mu_i)) (1−E(μi))
- c c c 需要计算
- 考虑对称性。
-
因此,Kulla-Conty提出的损失项BRDF为
f m s ( μ o , μ i ) = ( 1 − E ( μ o ) ) ( 1 − E ( μ i ) ) π ( 1 − E a v g ) , E a v g = 2 ∫ 0 1 E ( μ ) μ d μ (4) \tag4 f_{ms}(\mu_o,\mu_i) = \cfrac{(1-E(\mu_o))(1-E(\mu_i))}{\pi(1-E_{avg})}, E_{avg} = 2\int_0^1E(\mu)\mu\mathrm{d}\mu fms(μo,μi)=π(1−Eavg)(1−E(μo))(1−E(μi)),Eavg=2∫01E(μ)μdμ(4)
其中- c c c 为公式(4)中分母部分
- 公式(4)分子部分可以使用公式(3)计算得出
- E a v g E_{avg} Eavg为一个数值
-
证明
-
上面已经推导,损失的能量为 1 − E ( μ o ) 1-E(\mu_o) 1−E(μo),因此,使用公式(4)的BRDF求解渲染方程的结果也应该是 1 − E ( μ o ) 1-E(\mu_o) 1−E(μo)
-
方程如下
E m s ( μ o ) = ∫ 0 2 π ∫ 0 1 f m s ( μ o , μ i , ϕ ) μ i d μ i d ϕ (5) \tag{5} E_{ms}(\mu_o) = \int_0^{2\pi} \int_0^1f_{ms}(\mu_o,\mu_i,\phi)\mu_i\mathrm{d}\mu_i\mathrm{d}\phi Ems(μo)=∫02π∫01fms(μo,μi,ϕ)μidμidϕ(5)-
外层对 ϕ \phi ϕ积分结果为 2 π 2\pi 2π (二重积分)
- -> ∫ 0 2 π ∫ 0 1 f m s ( μ o , μ i , ϕ ) μ i d μ i d ϕ \int_0^{2\pi} \int_0^1f_{ms}(\mu_o,\mu_i,\phi)\mu_i\mathrm{d}\mu_i\mathrm{d}\phi ∫02π∫01fms(μo,μi,ϕ)μidμidϕ
- -> ∫ 0 2 π d ϕ ∫ 0 1 f m s ( μ o , μ i , ϕ ) μ i d μ i \int_0^{2\pi} \mathrm{d}\phi\int_0^1f_{ms}(\mu_o,\mu_i,\phi)\mu_i\mathrm{d}\mu_i ∫02πdϕ∫01fms(μo,μi,ϕ)μidμi
- ->
2
π
2\pi
2π =
∫
0
2
π
d
=
2
π
−
0
\int_0^{2\pi} \mathrm{d} = 2\pi-0
∫02πd=2π−0
E m s ( μ o ) = 2 π ∫ 0 1 ( 1 − E ( μ o ) ) ( 1 − E ( μ i ) ) π ( 1 − E a v g ) μ i d μ i E_{ms}(\mu_o) = 2\pi \int_0^1 \cfrac{(1-E(\mu_o))(1-E(\mu_i))}{\pi(1-E_{avg})}\mu_i\mathrm{d}\mu_i Ems(μo)=2π∫01π(1−Eavg)(1−E(μo))(1−E(μi))μidμi
-
将与积分变量无关的变量可以提出
E m s ( μ o ) = 2 ( 1 − E ( μ o ) ) ( 1 − E a v g ) ∫ 0 1 ( 1 − E ( μ i ) μ i d μ i E_{ms}(\mu_o) = 2\cfrac{(1-E(\mu_o))}{(1-E_{avg})} \int_0^1 (1-E(\mu_i)\mu_i\mathrm{d}\mu_i Ems(μo)=2(1−Eavg)(1−E(μo))∫01(1−E(μi)μidμi
-
先计算积分的结果(积分公式–定积分)
- ∫ 0 1 ( 1 − E ( μ i ) μ i d μ i \int_0^1 (1-E(\mu_i)\mu_i\mathrm{d}\mu_i ∫01(1−E(μi)μidμi
- ∫ 0 1 [ μ i − μ i E ( μ i ) ] d μ i \int_0^1 [\mu_i-\mu_iE(\mu_i)]\mathrm{d}\mu_i ∫01[μi−μiE(μi)]dμi
-
∫
0
1
μ
i
d
μ
i
\int_0^1\mu_i\mathrm{d}\mu_i
∫01μidμi -
∫
0
1
μ
i
E
(
μ
i
)
d
μ
i
\int_0^1\mu_iE(\mu_i)\mathrm{d}\mu_i
∫01μiE(μi)dμi
- ∫ 0 1 μ i d μ i \int_0^1\mu_i\mathrm{d}\mu_i ∫01μidμi = 1 2 ∗ 1 2 − 1 2 ∗ 0 2 \cfrac{1}{2}*1^2-\cfrac{1}{2}*0^2 21∗12−21∗02 = 1 2 \cfrac{1}{2} 21
- ∫ 0 1 μ i E ( μ i ) d μ i \int_0^1\mu_iE(\mu_i)\mathrm{d}\mu_i ∫01μiE(μi)dμi = 1 2 ∗ E a v g \cfrac{1}{2}*E_{avg} 21∗Eavg
-
∫
0
1
μ
i
d
μ
i
\int_0^1\mu_i\mathrm{d}\mu_i
∫01μidμi -
∫
0
1
μ
i
E
(
μ
i
)
d
μ
i
\int_0^1\mu_iE(\mu_i)\mathrm{d}\mu_i
∫01μiE(μi)dμi
- 1 2 ∗ ( 1 − E a v g ) \cfrac{1}{2}*(1-E_{avg}) 21∗(1−Eavg)
-
因此:
E m s ( μ o ) = 2 ( 1 − E ( μ o ) ) ( 1 − E a v g ) ∗ 1 2 ∗ ( 1 − E a v g ) E_{ms}(\mu_o) = 2\cfrac{(1-E(\mu_o))}{(1-E_{avg})} * \cfrac{1}{2}*(1-E_{avg}) Ems(μo)=2(1−Eavg)(1−E(μo))∗21∗(1−Eavg)
E m s ( μ o ) = 1 − E ( μ o ) E_{ms}(\mu_o) = 1-E(\mu_o) Ems(μo)=1−E(μo)
-
-
-
公式(4)中 E a v g = 2 ∫ 0 1 E ( μ ) μ d μ E_{avg} = 2\int_0^1E(\mu)\mu\mathrm{d}\mu Eavg=2∫01E(μ)μdμ的求解
- 使用split sum思想进行求解(不知道是否有解析解的积分)
- 求解方式:预计算、打表
- 要求
- 积分维度不能过高
- 不依赖于很多参数
- 积分维度不能过高
-
E
a
v
g
E_{avg}
Eavg中,参数:观测方向
μ
o
\mu_o
μo和积分中的损失BRDF
- 为每种不同的BRDF单独设计预计算或打表
- 因此,参数可设为BRDF的Roughness项
- 为每种不同的BRDF单独设计预计算或打表
- E a v g E_{avg} Eavg 的预计算,可以由 μ o \mu_o μo和BRDF的roughness项组合得到
- 使用split sum思想进行求解(不知道是否有解析解的积分)
-
-
如果微表面BRDF有颜色,在计算出射Radiance时会有额外的能量损失(吸收)
- 先考虑没有颜色的方法计算出射Radiance
- 然后考虑,由于颜色对能量的吸收带来的能量损失
- 定义一个平均的菲尼尔项
- 无论入射角有多大。计算每次反射时,平均会反射多少能量
F a v g = ∫ 0 1 F ( μ ) μ d μ ∫ 0 1 μ d μ = 2 ∫ 0 1 F ( μ ) μ d μ (6) \tag{6} F_{avg} = \cfrac{\int_0^1F(\mu)\mu\mathrm{d}\mu}{\int_0^1\mu\mathrm{d}\mu} = 2\int_0^1F(\mu)\mu\mathrm{d}\mu Favg=∫01μdμ∫01F(μ)μdμ=2∫01F(μ)μdμ(6)
- 无论入射角有多大。计算每次反射时,平均会反射多少能量
- 定义一个平均的菲尼尔项
- Kulla-Conty 定义的颜色项(color term)
C c o l o r = F a v g E a v g 1 − F a v g ( 1 − E a v g ) (7) \tag{7} C_{color} = \cfrac{F_{avg}E_{avg}}{1-F_{avg}(1-E_{avg})} Ccolor=1−Favg(1−Eavg)FavgEavg(7)- 推导
- 分情况分别计算最终能看到的能量
- 直接能看到的能量
- F a v g E a v g F_{avg}E_{avg} FavgEavg
- 经过一次bounce
- F a v g ( 1 − E a v g ) ⋅ F a v g E a v g F_{avg}(1-E_{avg})\cdot F_{avg}E_{avg} Favg(1−Eavg)⋅FavgEavg
- …
- 经过
k
k
k次bounces,能看到的能量
- F a v g k ( 1 − E a v g ) k ⋅ F a v g E a v g F_{avg}^k(1-E_{avg})^k\cdot F_{avg}E_{avg} Favgk(1−Eavg)k⋅FavgEavg
- 当 k k k为无穷大时,将所有项相加可得到一个极数,即公式(7)
- 直接能看到的能量
- 分情况分别计算最终能看到的能量
- 推导
- 因此,带颜色的微表面最终的能量损失BRDF为
f m s ( μ o , μ i ) = F a v g E a v g 1 − F a v g ( 1 − E a v g ) ⋅ ( 1 − E ( μ o ) ) ( 1 − E ( μ i ) ) π ( 1 − E a v g ) , E a v g = 2 ∫ 0 1 E ( μ ) μ d μ (8) \tag8 f_{ms}(\mu_o,\mu_i) = \cfrac{F_{avg}E_{avg}}{1-F_{avg}(1-E_{avg})} \cdot \cfrac{(1-E(\mu_o))(1-E(\mu_i))}{\pi(1-E_{avg})}, E_{avg} = 2\int_0^1E(\mu)\mu\mathrm{d}\mu fms(μo,μi)=1−Favg(1−Eavg)FavgEavg⋅π(1−Eavg)(1−E(μo))(1−E(μi)),Eavg=2∫01E(μ)μdμ(8)
-
- 分成两部分(由于shadowing和masking是相关的,该方法假设这两项不相关)
Linearly Transformed Cosines
- LTC用于解决微表面模型着色问题
- 主要基于(GGX分布),其他分布也适用
- 不考虑阴影
- 主要解决在微表面模型下多边形光源的着色问题
- 思想
- 任何出射的2D BRDF lobe(所有出射光线围成的区域)都能通过某种线性变换,变换成一个余弦函数。
- 多边形光源也能变换成一个余弦函数
- 通过上述俩个变换
- BRDF Lobe 就会变成Consine(固定值)
- 多边形光源变成另一个多边形光源(多边形光源内部都是均匀的(各处radiance相同))
- 把任意BRDF Lobe在任意的多边形光源的着色,转换成一个固定cosine项对任意多边形光源进行积分的问题。而后者是有解析解的。
- 变换项有
- BRDF M − 1 → \underrightarrow{M^{-1}} M−1 Cosine :BRDF变换到余弦函数
- ω i \omega_i ωi M − 1 → \underrightarrow{M^{-1}} M−1 ω i ′ \omega_i' ωi′ :方向从 ω i \omega_i ωi 变换到 ω i ′ \omega_i' ωi′
- P P P M − 1 → \underrightarrow{M^{-1}} M−1 P ′ P' P′ :积分域从 P P P 变换到 P ′ P' P′
- 方法:(变量替换)
- 使用多边形光源进行着色的渲染方程如下
L ( ω 0 ) = L i ⋅ ∫ P F ( ω i ) d ω i (9) \tag{9} L(\omega_0) = L_i \cdot \int_{P}F(\omega_i)\mathrm{d}\omega_i L(ω0)=Li⋅∫PF(ωi)dωi(9)
其中- F ( ω i ) = f r ⋅ c o s θ i F(\omega_i) = f_r\cdot cos\theta_i F(ωi)=fr⋅cosθi
- 由于
L
i
L_i
Li为多边形光源,其光源在任何位置的能量都相同(uniform)。因此,可提出到积分外
- 该论文有对光源非uniform情况的解决方案
- 公式(9) 变量替换:
- LTC将 F ( ω i ) F(\omega_i) F(ωi) 替换成 c o s ( ω i ′ ) cos(\omega_i') cos(ωi′), 将 ω i \omega_i ωi替换成 M ω i ′ ∣ ∣ M ω i ′ ∣ ∣ \cfrac{M\omega_i'}{||M\omega_i'||} ∣∣Mωi′∣∣Mωi′(归一化),因此有:
- L ( ω 0 ) = L i ⋅ ∫ P c o s ( ω i ′ ) d M ω i ′ ∣ ∣ M ω i ′ ∣ ∣ L(\omega_0) = L_i \cdot \int_{P} cos(\omega_i')\mathrm{d}{\cfrac{M\omega_i'}{||M\omega_i'||}} L(ω0)=Li⋅∫Pcos(ωi′)d∣∣Mωi′∣∣Mωi′
- 积分推导略,最后得到
-
L
(
ω
0
)
=
L
i
⋅
∫
P
′
c
o
s
(
ω
i
′
)
J
d
ω
i
′
L(\omega_0) = L_i \cdot \int_{P'} cos(\omega_i')J\mathrm{d}\omega_i'
L(ω0)=Li⋅∫P′cos(ωi′)Jdωi′
- J J J为推导后得到的雅可比矩阵
- 变换矩阵
M
M
M的获取
- 由于观察方向不同,不同角度的BRDF Lobe不同,每一种不同的BRDF Lobe都有不同的变换矩阵
M
M
M
- 预计算求
M
M
M
- 常见BRDF,可以先预计算出从不同观察方向得到的BRDF Lobe的变换矩阵 M M M
- M M M可以使用最优化方法得到
- 预计算求
M
M
M
- 由于观察方向不同,不同角度的BRDF Lobe不同,每一种不同的BRDF Lobe都有不同的变换矩阵
M
M
M
- 使用多边形光源进行着色的渲染方程如下
Disney’s Principled BRDF
- 动机
- physically-based materials 不擅长表示真实的材质
- 微表面模型无法完全表示真实的材质
- 微表面模型无法表示所有真实的物体性质
- physically-based materials 对于艺术家不友好
- PBR参数都是物理参数,艺术家很难理解参数的意义
- physically-based materials 不擅长表示真实的材质
- 设计目标
- 便于艺术家编辑, 算法不一定是物理上正确的
- 虽然Disney’s Principled BRDF物理上未必正确。但同样,在实时渲染中称为PBR(毕竟实时渲染中PBR也是物理上的一种近似)
- Principled 设计原则
- 应使用直观而非物理参数。
- 应有尽可能少的参数。
- 参数应在其合理范围内。0到1。
- 在合理的情况下,允许将参数设置到其合理范围之外。
- 所有参数组合应尽可能可靠和合理
- 工业界使用到的参数
- subsurface:次表面散射 比diffuse还要平的效果
- metallic:金属性
- specular:镜面反射
- specular Tint:镜面反射颜色
- roughness :粗糙度
- anisotropic:各项异性
- sheen:绒毛雾化效果
- sheenTint:绒毛雾化效果颜色
- clearcoat:清漆
- clearcoatGloss:清漆光滑程度
- 优缺点
- 便于理解,方便控制
- 使用一个模型能描述很多类型材质
- 实现非常复杂(有开源实现)
- 并不是基于物理的
- 巨大的参数空间
- 有冗余
Non-Photorealistic Rendering (NPR) – Fast and Reliable Stylization
- 非真实感渲染
- 快速
- 可靠
- NPR是在真实感渲染后,再进行风格化处理
- 思路
- NPR将真实感渲染中某些操作进行转化来完成风格化。
- 风格化
- Bold contours 轮廓(outlines)
- 分类
- boundary/border edge 边界
- Crease 折痕
- Material edge 材质间过度区
- Silhouette edge 轮廓:有多个面共享的边界
- 描边
- 着色实现
- 观察方向和法线垂直的边为(Silhouette )
- 不同位置描边的粗细不同(缺点)
- 背面模型放大涂黑,做边界
- 观察方向和法线垂直的边为(Silhouette )
- 后处理实现
- Sobel detector
- 着色实现
- 分类
- Blocks of colors 色块
- 方法
- Hard shading
- 阈值化进行渲染
- Posterization
- 图像上阈值化处理
- Hard shading
- 方法
- Strokes on surfaces
- 使用纹理
- Tonal art maps
- Bold contours 轮廓(outlines)
- 思路
小结
本节主要是对渲染算法学习(二)的补充。主要做一下Shadowing-Masking Term的笔记。