RTR4笔记--PBR
作者:互联网
这只是笔记,有很多理解和翻译错误的,请谨慎参考
文章目录
- 1 Physics of Light
- 2 Camera
- 4 BRDF(bidirectional reflectance distribution function)
- 5 Illumination
- 6 Fresnel Reflectance
- 7 Microfacet Theory
- 8 BRDF Models for Surface Reflection
- 9 BRDF Model for Subsurface Scattering
- 10 BRDF Models for Cloth
- 11 Wave Optics BRDF Models
- 12 Layered Materials
- 13 Blending And Filtering Materials
1 Physics of Light
基本概念
可见光波长400~700 nm
能量
辐射度
定义
符号 | 定义 | 说明 |
---|---|---|
l | 光源方向 | |
v | 视线反方向 | |
p | 片元点 | |
n | 法线 | |
clight | 光源的颜色 | |
lc | 光源原点 | |
ri | 反射光线 | 与法线夹角θi |
关键角度
符号 | 定义 | 说明 |
---|---|---|
θ | 光线与法线夹角 | |
Azimuth angles ϕi and ϕ0are given with respect to a given tangent
vector t. The relative azimuth angle ϕ, used for isotropic BRDFs instead of ϕi and ϕ0, does not require a reference tangent vector.
Particles
介质
IOR n
原始波和新波的速度比
让波速减少的介质有衰减系数k(kappa)
Surface
折射
sin(θi)sin(θt)=n2n1
微表面
Subsurface Scattering
次表面散射
BRDF
Li(c,−v)=L0(p,v)
c 指camera pos
v 指点到摄像机的射线
p 指片元点,也就是view ray与surface的焦点(intersection)
2 Camera
4 BRDF(bidirectional reflectance distribution function)
f(l,v)
S(V)BRDF
考虑折射率方程
L0(p,v)=∫l∈Ωf(l,v)Li(p,l)(n⋅l)dl
l∈Ω
对于点p,起折射率为
L0(v)=∫l∈Ωf(l,v)Li(l)(n⋅l)dl
在球坐标下,通常用角度ϕ 、θ来描述
dl = sin(θi)dθidϕi
n⋅l = cosθi
于是有
L0(θ0,ϕ0)=∫ϕi=02π∫θi=02πf(θi,ϕi,θ0,ϕ0)L(θi,ϕi)cosθisinθidθidϕi
θi
ϕi
θ0
ϕ0
BRDF只定义了view和light位于surface上方的情况
意味着n⋅l需要calmp(0,)
为了避免除0,通常用abs(n⋅l)*0.00001
BRDF原则
- 互异性:f(l,v)=f(v,l)
- 能量守恒:输出能量<=输入能量
directional-hemispherical reflectance R(l)
描述BRDF能量损失程度,也就是surface的粗糙度roughenss
R(l)=∫v∈Ωf(l,v)(n⋅v)dv ∈[0,1]
放射方程中的v、l 是整个半球的。。
类似的
R(v)=∫l∈Ωf(l,v)(n⋅v)dl
Lambertian BRDF
最简单的BRDF是Lambertian
其中n⋅l 项简化了
real-time rending常用
$f(\vec l,\vec v)是一个常数
R(l)=πf(l,v)
漫反射(constant relfectance) diffuse color cdiff 或者albedo ρ,次表面subsurface albedo ρss
f(l,v)=πρss
其中π1时由于半球上积分余弦因子产生
这里抽象一个模型,假设入射光恒定
输出为:diffuse,specular lobe,
1上为Lambertian BRDF(简单球形)
2.上为Blinn-Phong highlighting+Lambertian term
3.上为Cook-Torrance BRDF
1.下a close-up of Ward’s anisotropic model。tilt the specular lobe
2.下Hapke/Lommel -Seeliger "Lunnar surface " BRDF
3.下Lommel-Seeliger scattering
5 Illumination
Li(l) term 描述反射方程在shaded surface point的光
Global illumination(GI)通过光在整个场景的弹射等效果计算Li(l),这种策略将反射考虑进来了。
这一节,描述的时local illumination,也就是假设一直Li(l),计算每个点使用GI时该如何计算光照。
真实场景,Li(l)计算了所有方向的来自光源或表面反射的非0辐射,真实世界的光为area lights。本节讨论的时虚拟的方向光或精确坐标的光源
将方向光的影响极限趋近为0时,可以积分方程可以简化为单个计算更少的BRDF方程
L0(v)=πf(lc,v)clight(n⋅lc)
为了确保背面的光不被计算进来,(n,l)需要clamped to 0
L0(v)=πf(lc,v)clight(n⋅lc)+
对于n个光源
L0(v)=π∑i=1nf(lci,v)clighti(n⋅lci)+
其中lci为光源方向,clighti为光源颜色
其中π因子被BRDFs中出现的π1抵消,但公式、论文中不能简化。
6 Fresnel Reflectance
物体的表面由其周围的介质和substance组成。光源在两个介质间相互作用遵守Fresnel equations(Augustin-Jean Fresnel).
菲涅尔对surface有几何假设:表面不含有光波波长的1~100倍的不规则
光与与表面作用后分成两部分:反射、折射
反射光用ri表示,它与n夹角为θi,根据入射光线l和n可以计算的到
ri=2(n⋅l)n−l
反射的量由Fresnel reflectance F描述,该变量由θi决定
F(θi) 当做RGB处理,规则
- 当θi=0o,也就是光线垂直入射时,有F0,也被认为是该物质的镜面反射颜色,也叫垂直入射
- 随着θi上升,F(θi)也上升,当θi=90o,F(θi)=1 (白色)
- 上升的曲线由物质决定,
上图依次为:玻璃、铜、铝的Fresnel reflectance.可以看到,不同波长的光的曲线不同,不同物质相同波长的曲线不同。波长由可以找到对应光颜色,也就是不同颜色的光的反射结果不同。玻璃这种物质的F与光颜色无光。
我们使用F(n,l)而不用θi,Fresnel function时BRDF的一部分。
F0由物质决定,在rough工作流,常简化
F项计算方法(Schlick):
F(n,l)≈F0+(1−F0)(1−(n⋅l)+)5
这个公式时白色和F0的非线性差值结果。
另一种计算的方案(Gulbrandsen),不能用来实时计算。这个曲线更拟合金属的Fresnel equations。
对于Schlick,F0只是一个参数,下面的方程介绍了如何通过两种介质的折射率计算F0,这里用n代替了n2,这里n1=1(空气环境下)
F0=(n+1n−1)2
该值转化为RGB颜色的公式在8.1.3介绍颜色空间时提及
软件中常用公式为
F(n,l)≈F0+(F90−F0)(1−(n⋅l)+)p1
设置F90为非白色可以描述Fresnel 方程无法描述的物质,比如覆盖物质上的灰尘
常见物质的F0
主要分三类:绝缘体(insulators),半导体(semiconductor),导体(conductor)
Dielectrics 的F0很低,通常<=0.06,菲涅尔效果明显
对于未知物质通常使用0.04
Dielectric | Linear | Texture(sRGB) | Color | Notes |
---|---|---|---|---|
Water | 0.02 | 39 | ||
Living tissue | 0.02-0.04 | 39-56 | Watery tissues are toward the lower bound, dry ones are higher | |
Skin | 0.028 | 47 | ||
Eyes | 0.025 | 44 | Dry cornea (tears have a similar value to water) |
|
Hair | 0.046 | 61 | ||
Teeth | 0.058 | 68 | ||
Fabric | 0.04-0.056 | 53-67 | Polyester highest, most others under 0.05 | |
Stone | 0.035-0.056 | 53-67 | Values for the minerals most often found in stone | |
Plastics, glass | 0.04-0.05 | 56-63 | Not including crystal glass | |
Crystal glass | 0.05-0.07 | 63-75 | ||
Gems | 0.05-0.08 | 63-80 | Not including diamonds and diamond simulants | |
Diamond-like | 0.13-0.2 | 101-124 | Diamonds and diamond simulants(e.g., cubic zirconia, moissanite) |
金属的菲涅尔反射
金属的F0很大,通常高于0.5
半导体的菲涅尔反射
介于导体和绝缘体之间,范围为[0.2,0.45]
水的菲涅尔反射
之前讨论的菲涅尔反射全是基于空气的,真空或者液体环境下值是不一样的,也就是不能假设n1=1了,此时我们需要使用如下公式计算F0
F0=(n1+n2n1−n2)2
通常n1̸=1是水下场景。也有可能是其他情况,比如雾
参数化Fresnel Values
常用的参数化时将F0和diffuse color ρss合并,这种方法能是的金属这类无diffuse color和电解质具有一组受限的F0.它包含一个RGB颜色Csurf和一个标量m–metallic/metalness
- 如果m=1,F0为csurf,$\rho_{ss}是black;
- 如果m=0,F0为电解质值(是一个常量(0.04)或被额外参数控制的值),csurff=ρss
"metalness"最早被Brown University使用,电影Wall−E.迪士尼动画电影Wreck−It中的Disneyprincipled光照模型中使用了一个额外的变量"specular"来控制F0,这个参数化方法被Unreal Engine和Frostbite engine使用来描述非电解质的范围较广的F0.游戏CallofDuty:InfiniteWarfare使用压缩算法将两个值压缩为一个值,节省内存。Overwatch也是用了一种压缩算法:
mixed.rg为图片使用通道
metallic=saturate(2∗mixed.r−1)2;
diffuse=albedo.rgb∗(1−metallic);
F0=saturate(mixed.r−0.25)
F0=F0∗0.06+0.02
specular=lerp(F0,albedo,metallic)
onemiusref=(1−metallic)∗(1−F0)
多数实时渲染引擎使用metalness值而不直接使用F0和ρss是出于使用方便和节省G-buffer.在游戏Call of Duty: Infinite Warfare中,美术绘制F0和ρss的纹理,再通过压缩算法存储到一个同道中。
metalness工作流有几个缺点:它不能描述有些种类的材质,比如具有着色F0的电镀金属。美术可以手动调整得到中间值。
另一个被实时渲染引擎使用的参数化技巧:除了特种抗折射涂层,没有一个材质的F0时小于0.02的。这个技巧用来高亮边缘。这里没有使用额外的occ纹理,而是将小于0.02部分用来“关闭”菲涅尔边缘增强。这项技术被Schuler发明,用于UE和Frostbite engiens.
Internal Reflection
次表面反射
当n1>n2会发生次表面反射
次表面只有绝缘体会有,
sinθc=n1n2=1+F01−F0
Microgeometry
关于法线
7 Microfacet Theory
微表面理论
micro-BRDF $f_u(\vec l,\vec v,\vec m) $ 混合了所有微表面的反射光
左侧,我们看到积分项D(m)(n⋅m),
右侧,积分项D(m)(v⋅m),cos(θo)=(v⋅n)
称为*normal distribution function * or NDF,使用符号D(m)表示,也称为D项,微表面法线的贡献,更有用的时积分D(m)(n⋅m),Θ表示对以n为中心的整个球面积分
∫m∈ΘD(m)(n⋅m)dm=1
如果对以n为中心的半球进行积分使用符号Ω表示
在经验表明,heightfields,所有位于Ω外的m的D(m)=0,但non-heightfields它是合法的
更通用的,从任何视线方向,微表面在视线垂直方向的投影都满足如下公式
∫m∈ΘD(m)(v⋅m)dm=v⋅n
注意⋅没有clamp(0,1),右侧展示了原因.
渲染时,我们只考虑可见的微表面,可见微表面的投影面积之和等于宏观表面投影面积,这里提出新的一项G项,masking function G1(m,v)来描述微表面的法线m和视线v的可见性,此时积分项为球面的G1(m,v)D(m)(v⋅m)+:
∫ΘG1(m,v)D(m)(v⋅m)+dm=v⋅m
G1(m,v)D(m)时可见的normals的贡献,
Smith G1 function:
G1(m,v)=1+Λ(v)χ+(m)⋅v
χ+(x)=$
\left {
\begin{array}{c}
1,where x < 0\
0,where x \leq 0
\end{array}
\right.
$
Λ函数对每个NDF都不同,Smith masking目前是最好的一个G项函数,但并不是完美的,也就是还有更好的解决策略,但目前渲染器都用的它。
考虑了微表面法线的贡献后的micro-BRDF fμ(l,v,m),normal贡献D(m),mask函数G1(m,v)后新的微表面BRDF为:
f(l,v)=∫m∈Ωfμ(l,v,m)G2(l,v,m)D(m)∣n⋅l∣(m⋅l)+∣n⋅v∣(m⋅v)+dm
这里是对半球积分
这里使用joint masking-shadowing function G2(l,v,m)而不是用G1(m,v),该方程式G1的扩展,给出了根据从view vector v和light vector l可见的normal m的微表面微分。使得BRDF能够masking,也能shadowing.和所有BRDFs一样,都有一个太暗的缺点。
Heitz讨论了一些G2的方程,最简单的是G2(l,v,m)=G1(v,m)G1(l,m),这里假设masking和shadowing是无关联的。事实上,不是。这会导致过暗。当光线和视线方向一致时,应该有G1=G2,但是该方法仍然是G2=G12,假定ϕ为v,l之间的角度,G2(l,v,m)=min(G1(v,m),G1(l,m)),这种条件下,对任何G1有:
G2(l,v,m)=λ(ϕ)G1(v,m)G1(l,m)+(1−λ(ϕ))min(G1(v,m),G1(l,m))
其中λ(ϕ)=1−e−7.3ϕ2∈[0,1]∝ϕ
另一个λ函数λ(ϕ)=4.41ϕ+14.41ϕ
考虑光线和视线的相关性,Smith height-correlated masking-shadowing function:
G2(l,v,m)=1+Λ(v)+Λ(l)χ+(m⋅v)χ+(m⋅l)
Heitz也提出了一个混合direction和height的相关性的函数:
G2(l,v,m)=1+max(Λ(v),Λ(l))+λ(v,l)min(Λ(v),Λ(l))χ+(m⋅v)χ+(m⋅l)
8 BRDF Models for Surface Reflection
specular term
这里假设微表面perfectly mooth fresnel mirror。这意味着,除非l平行于v,fμ(l,v,m)==0
新增变量*half vector *h=∣∣l+v∣∣l+v
对于specular微表面模型,对于所有m̸=h,菲涅尔项为0,
fspec(l,v)=4∣n⋅l∣∣n⋅v∣F(h,l)G2(l,v,h)D(h)
normal distribution functions(D项)
NDF
大多数渲染器用的NDF都是isotropic(各向同性),此时,NCF只是一个宏观法线n和微表面法线m之间的夹角θm的函数,理想情况下,可使用cos(θm)简单计算。
Beckmann NDF最早被使用,它也被Cook-Torrance BRDF选用:
D(m)=παb2(n⋅m)4χ+(n⋅m)exp(αb2(n⋅m)2(n⋅m)2−1)
其中χ+(n⋅m)确保背面贡献为0,另外值得注意的是这里有个π1在完整的BRDF中可以被约掉.如所有的NDFs一样,它描述了一个heightfield微表面.αb控制roughness,它与微表面的均方根成正比(RMS),当αb=0时,微表面绝对平滑.
当将Smith G2函数引入Beckmann NDF,需要相应的Λ函数.Beckmann NDF是shape-invariant(形状不变的),可以简化Λ函数,这种NDFs形式如下:
D(m)=alpha2(n⋅m)4χ+(n⋅m)g(α(n⋅m)(1−(n⋅m)2))
g是任意变量函数.对于各向同性的NDF,Λ依赖于两个变量:其一为roughness α;其二为向量(v or l)的入射角。但对于shape-invariant NDF,Λ函数只依赖于变量a:
a=α1−(n⋅s)2n⋅s
其中s代指v或l.事实上,仅依赖于一个变量的Λ实现是合适的.单变量函数更容易你和曲线,能用一维数组表示.
Beckmann NDF的Λ:Λ(α)=2erf(α)−1+2α(π)1exp(−α2)
其中erf为错误处理函数,所以有待评价.作为近似解决:
Λ(α)={3.535α+2.181α21−1.259α+0.396α2,α<1.60,α≤1.6
另一个NDF是Blinn-Phong NDF.是过去常用的,现在移动端常用,该NDF是对Phong shading model的推广.
D(m)=χ+(n⋅m)2παp+2(n⋅m)αp
其中the power αp是Phong NDF中的roughness变量,越大约光滑,[0,∞]
9 BRDF Model for Subsurface Scattering
10 BRDF Models for Cloth
11 Wave Optics BRDF Models
12 Layered Materials
13 Blending And Filtering Materials
标签:frac,G1,PBR,cdot,BRDF,RTR4,笔记,vec,theta 来源: https://blog.csdn.net/gqkly/article/details/88086865