导言:最近在公司做类似于PBR的材质编辑器的工作,也借此机会复习并且整理PBR的主要内容、理论等等(毕竟PBR等有不少大佬总结的非常全面。我这里只是公开我的学习笔记达到抛砖引玉的作用)。这里主要是涉及理论,如果看实践推荐看filament,并且跟着它的材质文档等等看~
PBR更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物理原理更相符的基本理论所构成的渲染技术的集合。值得特别注意的是:需要FBO,立方体贴图,Gamma校正,HDR和法线贴图相关知识同时实时渲染PBR与BRDF 等等相关是 探讨的内容属于渲染的相当高端的领域;
基于物理的渲染是一种渲染方法, 与传统的实时模型相比, 它可以更准确地表现材质及其与光的相互作用. PBR方法的核心是将材质和光照分离, 这样可以更轻松地创建在所有光照条件下看起来都很精确的真实资源。同时PBR分为了PBR的材质、光照(通常现代引擎等与IBL连用,是一种GI的手段)、PBR的相机(比如Dof景深等等)
判断一种PBR光照模型是否是基于物理的,必须满足以下三个条件:
1. 基于微平面(Microfacet)的表面模型。
2. 能量守恒。
3. 应用基于物理的BRDF。
渲染方程 在计算机图形学中,渲染方程是一个积分方程。它是所有全局照明方法的理论基础(光线跟踪,路径跟踪,辐射度等)。1986年,James Kajiya将其引入计算机图形学。在计算机图形学中,真实感渲染(相对于NPR 非真实感绘制)的目标就是求解这个方程。
材质模型由BSDF(双向散射分布函数, Bidirectional Scattering Distribution Function)描述, 而BSDF本身又由两个函数组成: BRDF(双向反射分布函数, Bidirectional Reflectance Distribution Function)和BTDF(双向透射函数, Bidirectional Transmittance Function).
由于我们的目标是对常见表面进行建模, 因此我们的标准材质模型将侧重于BRDF, 并且忽略BTDF, 或对其使用很粗糙的近似. 因此, 我们的标准模型只能正确地模拟具有短的平均自由程的反射, 各向同性, 电介质或导体表面。模拟微面片的分布(此项也称为NDF或法向分布函数(Normal Distribution Function)). 所示, 这一项对表面的外观起着基本的作用
在真实世界中许多物体都是半透明的,比如皮肤、玉、蜡、大理石、牛奶等。当光入射到透明或半透明材料表面时,一部分被反射,一部分被吸收,还有一部分经历透射。这些半透明的材质受到数个光源的透射,物体本身就会受到材质的厚度影响而显示出不同的透光性,光线在这些透射部分也可以互相混合、干涉。
次表面散射,Subsurface Scattering,简称SSS(又简称3S),就是光射入半透明材质后在内部发生散射,最后射出物体并进入视野中产生的现象,是指光从表面进入物体经过内部散射,然后又通过物体表面的其他顶点出射的光线传递过程。
次表面散射,即光射入表面,在材质里散射,然后从与射入点不同的地方射出表面的一种现象。
光与表面的相互作用。左图,可以看到次表面相互作用导致光从入口点重新射出。红色和绿色圆圈代表两个不同尺度下的像素所覆盖的区域。在右边,所有的次表面散射光都是从入口点发出的,忽略了表面之下的细节。
反射光强度 = Li入射光强度 * BRDF反射比例 *入射光衰减(入射光衰减:半角向量和法线的点积)
最终出射光的强度Lo = Le 自发光强度 + 反射光强度,现在唯一的难点就是反射比例(BRDF)是多少!
Cook-Torrance BRDF兼有漫反射和镜面反射两个部分漫反射与镜面反射
分为漫反射与高光两大部分,其中漫反射漫反射的算法基本采用Lambert光照模型(经验模型)光源方向与平面角度越垂直则反射强度越大,越平行则强度越小;即一束光横截面dA照射到平面上,当角度越小(越平行)照射到平面上的横截面的面积越大,因此单位光强变小。
漫反射公式(引入辐射度量学):
漫反射Ld = Kd (I / r²)max(0,n · l)
Kd:物体自身颜色,黑色吸收所有色光为0,白色反射所有色光为1I/r²:光源到达目标时的能量(除以面积)max(0,n·l):当光线为负值时对漫反射无意义(在物体背面入射穿透物体)
高光又分为电解质与非电解质,同时还分直接光照与IBL(GI)两种!
从上面的公式变形可得:
所以高光主要是求PBR的三大项!DGF三大项!
微表面理论假设表面是由不同方向的微小细节表面,也就是微平面(microfacets)组成。每一个微小的平面都会根据它的法线方向在一个方向上反射光线。
表面法线朝向光源方向和视线方向中间的微表面会反射可见光。然而,不是所有的表面法线和半角法线(half normal)相等的微表面都会反射光线,因为其中有些会被遮挡。
我们用法线分布函数(Normal Distribution Function,简写为NDF),D(h)来描述组成表面一点的所有微表面的法线分布概率。则可以这样理解:向NDF输入一个朝向h,NDF会返回朝向是h的微表面数占微表面总数的比例,比如有8%的微表面朝向是h,那么就有8%的微表面可能将光线反射到v方向。
由微平面组成的表面。仅红色微平面的表面法线和半矢量h对齐,能参与从入射光线向量l到视线向量v的光线反射
α:粗糙度
h:半角向量
n:法线向量
这部分主要是希望得到一个漂亮的高光效果。传统的Blinn-phong高光缺乏真实度,研究发现高光是带有拖尾的,例如铬金属的高光带有显著的拖尾,GGX模型就是为了把这个拖尾模拟出来,虽然还不能完全模拟,但是比之前的模型已经好了很多
几何函数从统计学上近似的求得了微平面间相互遮蔽的比率;现在光线除了被吸收,还有被自身相互遮蔽带来的能量损耗。粗糙度较高的表面其微平面间相互遮蔽的概率就越高
这里的kk是αα基于几何函数是针对直接光照还是针对IBL光照的重映射(Remapping) :
菲涅耳方程(Fresnel equations)是一组用于描述光在两种不同折射率的介质中传播时的反射和折射之间关系的光学方程。方程中所描述的反射被称作“菲涅耳反射”。( 麦克斯韦方程组在材质表面处的特殊解就是菲涅尔方程。 影响菲涅尔效应的关键参数在于每个微平面的法向量和入射光线的角度)菲涅尔反射(Fresnel Reflectance)或者菲涅尔效果(Fresnel Effect),即当光入射到折射率不同的两个材质的分界面时,一部分光会被反射,而我们所看到的光线会根据我们的观察角度以不同强度反射的现象(比如看到入射角很小大部分的光线被反射而不是折射,湖面远处波光粼粼的效果)。菲涅尔反射能够真实地模拟真实世界中的反射。在真实世界中,除了金属之外,其它物质均有不同程度的菲涅尔反射效果(万物皆有菲涅尔)。简单来说,视线垂直于表面时,反射较弱,而当视线并非垂直表面时,夹角越小,反射越明显。 粗糙度会对菲涅尔折射造成影响,而一般的漫反射模型如Lambert忽略了这种影响。
对于粗糙表面来说,在接近平行方向的高光反射也会增强但不够达到100%的强度.为何如此是因为影响菲涅尔效应的关键参数在于每个微平面的法向量和入射光线的角度,而不是宏观平面的法向量和入射光线的角度。因此我们在宏观层面看到的实际上是微平面的菲涅尔效应的一个平均结果。
菲涅耳方程(F):
h·v 为我们的高光项,视角越近高光越强,此处1-(h·v)取反,得到中间暗边缘亮;F0为菲涅尔项为0时的基础反射率,即使垂直看物体也是会有一些反射的,而不是0反射。
F0:平面基础反射率,大多常见电介质的F0范围在[0.02-0.05],对于导体为[0.5-1.0]
由于其高度的易用性以及方便的工作流,很方便设计师与TA们理解而不需要管羞涩难懂的物理系数,导致现在影视电影行业流行到渲染的各个行业,成为行业的标杆。
迪士尼基本原则:
1. 应使用直观的参数,而不是物理类的晦涩参数。
2. 参数应尽可能少。
3. 参数在其合理范围内应该为0到1。
4. 允许参数在有意义时超出正常的合理范围。
5. 所有参数组合应尽可能健壮和合理。
以上五条原则,很好地保证了迪士尼原则的BRDF的易用性。
核心BRDF模型方面,Disney采用了通用的microfacet Cook-Torrance BRDF着色模型:
Diffuse为漫反射项镜面反射项其中:
D为微平面分布函数,主要负责镜面反射波峰(specular peak)的形状。
F为菲涅尔反射系数(Fresnel reflection coefficient)
G为几何衰减(geometric attenuation)/ 阴影项(shadowing factor)。
迪士尼原则的分层材质(Disney Principled Layers Material)的核心设计原则是,所有参数需允许健壮地插值,以基于纹理Mask在不同材质之间进行线性混合,实现复杂的材质外观。这样的好处是使所有参数是归一化的并且至少是感知线性的,材质通常以非常直观的方式插值。如下图,所有10个参数都是线性插值的。
由于Disney BSDF天生适合离线渲染器使用,对游戏引擎和实时渲染的参考意义比较有限
Disney BRDF模型本质上是金属和非金属的混合型模型,对于Disney BSDF,Disney仍然延续了之前的设计理念,采用了混合的方式并结合已有的Disney BRDF模型进行实现
对于普通表面,Disney BSDF在Disney BRDF的基础上新增specTrans(镜面反射透明度)和scatterDistance(散射距离)两个参数,共12个。
对于薄表面(Thin-surface),Disney BSDF在Disney BRDF的基础上新增specTrans(镜面反射透明度)、scatterDistance(散射距离)和flatness(平坦度)三个参数,共13个。
开源三维动画软件Blender实现的Disney BSDF的图示
在Disney BRDF中加入次表面散射模型。具体思路是首先将漫射波瓣重构为两部分:方向性的微表面效应(microsurface effect),主要为逆反射(retroreflection);非方向性的次表面效应(subsurface effect),即Lambertian。然后,用散射模型(diffusion model)或体积散射模型(volumetric scattering model)替换漫反射波瓣中的Lambert部分。这样,便能保留微表面效应(microsurface effect),让散射模型在散射距离较小时收敛到与漫反射BRDF相同的结果。
提出基于两个指数项总和的次表面漫射(Subsurface diffusion)模拟模型。 次表⾯漫射(Subsurface diffusion)。Disney通过蒙特卡洛模拟(Monte Carlo simulation),观察到对于典型的散射参数,包括单次散射的扩散剖面(diffusion profile),使用两个指数项的总和(a sum of two exponentials)便可以很好地进行模拟,且得到了比偶极子剖面(dipole diffusion)更好的渲染结果。如下图所示。
薄表面BSDF(Thin-surface BSDF)。对于薄的半透明表⾯,Disney选择在单个着色点处模拟入射和出射散射事件,作为镜面反射和漫反射传输的组合,由specTrans和diffTrans参数控制,并用各向同性的波瓣近似薄表面漫反射传输。如下图所示。
两种不同的PBR工作流介绍
由浅入深学习PBR的原理和实现
迪士尼的BRDF
Disney BSDF 深度解析
IBL光照
【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览
【基于物理的渲染(PBR)白皮书】(二) PBR核心理论与渲染光学原理总结
leranopengl pbr基础理论
leranopengl 光照
leranopengl IBL