手机上的网站,旅游小镇网站建设方案,中企动力网站怎么样,WordPress 斗鱼最近几年图形学社区对PBR的关注非常高#xff0c;也许是由于Disney以及一些游戏引擎大厂的助推#xff0c;也许是因为它可以被轻松集成进实时渲染的游戏引擎当中#xff0c;也许是因为许多人发现现在只需要调几个参数就能实现具有非常精细细节的表面着色了。反正现在网络上随…最近几年图形学社区对PBR的关注非常高也许是由于Disney以及一些游戏引擎大厂的助推也许是因为它可以被轻松集成进实时渲染的游戏引擎当中也许是因为许多人发现现在只需要调几个参数就能实现具有非常精细细节的表面着色了。反正现在网络上随便一篇PBR的文章都可以引来大量的关注不管你有没有讲清楚也不管我有没有看明白当然没有调侃谁的意思啦它们大部分都还不错而且这篇文章跟他们大部分讨论的内容都不一样。 那么PBR是否已经足够完美如果不是那么它有哪些方面的缺点及限制以及针对这些不足它的下一步发展应该是什么这些问题就是本文会聚焦的内容。对于一个知识点解释它的基本思路和概念也许并不是最难的最难的是你知道它的限制和不足在哪里这部分的理解往往会比它的基本概念要困难一些你必须更深刻地理解这种知识才能洞悉它的缺点然后你便清楚它的下一步发展应该是什么。因此本文其实不仅会讨论PBR的下一步发展这里对PBR不足的一些分析也许能够让你更深刻地理解它的概念。不信往下读一读试试 本文主要分为三个部分第一部分简要介绍PBR的基本概念第二部分则分析PBR存在的问题然后我们结合一些研究成果探讨PBR的下一步发展。 PBR基本概念 这里我们从两个方面介绍PBR的基本概念首先介绍它处于渲染中的什么流程或者说哪个环节或者说它在整个渲染中具有什么样的作用然后介绍它的基本原理和思路。在图形渲染中如果架构抽象的比较好的我们可以将整个渲染流程划分为四个相对比较独立的部分 光源表述lighting例如是点光源面积光源或者其它形式的例如将网格用作一个光源是使用辐射强度还是直接使用辐射亮度来表述光源发出的光照。光照传输light transport就是光在场景中是怎么传输的例如离线渲染中的光线追踪算法它能模拟比较真实的光子传输行为就是说能覆盖全部光子传输路径或空间但是在实时渲染中使用的一些近似方法也是表述光照传输的虽然它可能省略掉了一些不重要的路径但是这仍然是一种光照传输算法。光栅化的整个过程也是模拟了直接光照的传输。着色模型shading就是光与表面相交时发生的光学交互比如反射和折射等所有着色相关的数据汇总成一个材质对象每个物体表面都需要一个材质对象以便决定光在经过物体表面时应该如何对物体表面进行着色。摄像机模型camera比如投影方式对景深效果的实现方式是否支持全景绘制是否支持对时间采样实现运动模糊等。其中光源表述和摄像机模型是相对比较简单的最耗时间的是光照传输因为它要执行光线与场景的相交计算复杂的着色模型也可能比较耗时但着色模型的最重要作用是决定物体表面所能表述细节details的能力。 在术语上PBR英文全称为Physically based rendering它是指能够实现接近物理真实的整个渲染算法或过程。但是由于光照的传输算法通常是固定且内置于渲染引擎的或者说已经具有比较稳定成熟的算法例如离线渲染领域的路径追踪算法或者实时渲染领域里的光栅化其它全局光照算法剩下对基于物理的渲染算法影响最大的其实是表面的着色材质模型。因此人们通常在讨论或描述PBR时更多的是指其使用的着色模型。基于物理的着色模型更准确的称呼应该是Physically based shading但是通常并没有PBS的称谓。 那么物理材质是指什么“材质”其实就是光在与某个特定表面交互时需要的所有光学交互计算的数据例如法线纹理BRDF等也就是说材质定义了最终表面接受光照后的视觉结果。对于物体表面视觉特征的定义根据尺寸粒度可以划分为三级 基于网格顶点的表述这种就是只对网格顶点的着色进行描述然后中间的表面像素则通过插值来计算。基于像素的纹理贴图这就是最常见的各种贴图它们能表述像素级别的视觉特征。基于微观粒子的微面元表述这就是我们这里所关心的物理着色。上述前两种视觉表述是比较常见的也是早期使用的一些技术。然而这两种表述远远不能描述物体表面的视觉特征这是因为一个像素的尺寸远远大于物体表面上微观粒子的尺寸如下图所示图像空间中间的黄色方块表示一个像素下面灰色褶皱部分则是该像素对应的实际微观结构而光实际上是作用在这些微观结构上的所以基于像素的着色模型如直接贴图反应不出真实物体表面的微观细节所以这些技术都可以称为不是基于物理的材质。 物体表面微观结构的尺度远远小于一个像素的尺度 那么要怎么表述这么微小的微观结构的光学交互行为呢显然我们不可能像纹理那样对每个微观粒子使用一个纹素进行表述那样我们的计算机内存将远远不够存储这种级别的纹理所以人们提出了Microfacet BRDF理论它使用一个法线概率分布函数来模拟微观粒子的法线分布特征这样就能够表述物体表面的微观特征从而接近物理真实所以称为基于物理的材质表述。 Microfacet BRDF表现出来的视觉特征是什么呢那就是对于每个固定方向的入射光我们可以有多个对该入射光的观察方向或者反过来说对于某个固定的观察方向我们可以从一个像素观察到来自多个方向的入射光照。如果没有Microfacet BRDF一个像素只被当做一个平面对于固定的观察/入射方向它只对应一个入射/观察方向。在Microfacet BRDF中我们所能观察入射方向的方向范围被参数化为一个粗糙度参数如下图所示。这种着色模型使得我们能够表现比像素更小尺寸的表面细节。 反射光的范围大小取决于物体表面的粗糙度物体表面越粗糙它越能接收更大范围的光照 在渲染中我们有许多模型来近似真实物体的微观法线分布例如Normalized Blinn-PhongBeckmannGGX模型等等这些模型具有不同的近似度和计算复杂度。由于这些模型都是对真实物理特征的近似因此它们很可能不会遵循真实的物理分布因此正性positivity互换性reciprocity以及能量守恒energy conservation被用来衡量一个BRDF模型是否是基于物理真实的注意它们不是BRDF的属性哦而是对BRDF是否满足物理真实的要求因为你根据一些测量数据提出一个近似的BRDF模型很可能不是物理真实的这些条件只是用来检验BRDF模型的物理真实性。 © DreamWorks Animation 2017 顶点和像素级别的纹理可以存储在一张纹理图片中这种基于物理的材质表述怎么存储呢前面已经说过这个级别的表述是无法精确定义和存储的所以我们将这个概率密度分布直接写进shader中因为shader也是材质的一部分。 这也是为什么近几年实时渲染的游戏品质有了很大提升实时渲染与离线渲染的最大不同在于光照的传输过程实时渲染省略或者近似了很多路径但是在光与表面的交互上它只涉及一个公式的计算并不会对性能造成太大影响所以可以很容易地集成进来。不过实践中实时渲染使用的概率密度分布函数要比影视中使用的计算量要简单一些这只是在质量上稍有差异但是不影响它表述微观粒子视觉特征的能力。 PBR的限制 有了上述Microfacet BRDF理论物理着色的世界是否就完美了呢换句话说你是否就能够通过几个神奇的参数表述任意细节的物理材质呢 如果你仔细观察通过上述那些Microfacet BRDF模型渲染出的图像你会发现虽然它们能够表述粗糙度但是它们都太过平滑或者说模糊例如下边右边的图。 右图传统的Microfacet BRDF模型太过于平滑图片来自【10】 传统的Microfacet BRDF模型渲染不出上图中左图那种划痕的效果。这是为什么这是因为出于计算效率传统的Microfacet BRDF模型都是对真实BRDF分布的一个粗略近似这些近似往往都非常平滑如下图所示右图表示一个比较真实的BRDF分布而左图表示一个传统的Microfacet BRDF模型左图可以看做是对右图的一个非常平滑的结果这是因为我们需要计算效率足够高的着色计算复杂的BRDF分布会大大增加采样的计算时间。这种平滑的结果使得传统的Microfacet BRDF模型只能渲染出一定距离范围之外的表面着色你可以理解为距离越远着色越模糊当然这里实际上不是指实际物体离摄像机的距离而是说这种模型永远只能渲染出类似于超出这个距离的表面粗糙度即使拉近摄像机的距离它们看起来仍然是很平滑的因为它们所使用的BRDF已经被严重的平滑了也就是上面右图中的效果那些更细微的细节被下面左图这样类似的BRDF分布给平滑掉了。 左传统的Microfacet BRDF模型右真实的BRDF分布图片来自【5】 所以这里可以总结出传统的Microfacet BRDF模型具有哪些不足。首先传统的Microfacet BRDF太过平滑不能表现小于一个像素的几何级的细节这些细节的尺寸介于像素和微观粒子之间如文章封面左图中的划痕后面会分析更多例子。 其次物理材质的着色计算“表述”在像素着色器shader中而物体表面的宏观结构往往通过网格顶点或者像素级别的法线贴图来表述这两种几何表述是分离的并且随着表面离摄像机距离的改变一个像素的尺寸和一个纹理中的纹素的尺寸之间的相对关系发生着变化当物体表面离摄像机足够远时实际上物体的宏观法线贴图或几何结构其实变成了该像素的“微观结构”然而通常法线贴图或几何结构与BRDF都是独立的例如法线贴图首先被过滤到最模糊的级别然后用于Microfacet BRDF的计算这就使得artifacts非常严重例如下图中三种不同的距离下近处的水波细节在远距离下产生较大的artifacts。 或者如下图中光盘上的划痕在远距离下直接被模糊掉了。 在远距离下由于几何级的法线数据首先被过滤然后作用与BRDF因此这种细节丢失物体表面的细节随着距离摄像机的距离改变而改变图片来自【13】 PBR的下一步发展在哪里 上述的描述其实可以总结为两个方面 传统Microfacet BRDF对微观结构的表述精确度不足传统的Microfacet BRDF与宏观的如法线贴图或几何结构不相容或者说不能相互协调工作这是两个独立的问题例如单提高BRDF的精确度不能解决第二个问题因为对于远处的物体我们需要将几何级的结构视作像素的微观结构例如微面元否则我们需要很高的采样才能消除artifact而这对于远处的物体较高的采样显然是比较浪费的其次让宏观的几何结构与BRDF相协调对于近处物体的细节表述是没有什么意义的。当然如下所述如果高分辨率的法线贴图被视作几何结构那么第二个问题的确能改善第一个问题。 首先对于微观结构的表述出于计算效率的考虑目前我们还不可能使用非常复杂的Microfacet BRDF近似模型因为比较精确的模型可能需要上百倍的计算时间。当前的研究主要是集中于使用高分辨率的法线贴图或者其它一些特殊的高分辨率几何结构来表述这种介于像素和微观粒子之间的几何结构然后将每个像素对应的这种几何级的数据与BRDF相融合得出一种能够适应这些几何结构的Microfacet BRDF模型。这种模型能够表述更微观的几何细节例如下图所示光盘和地板上那种细节在传统的BRDF上是表现不出来的因为它们会完全被平滑掉。 Microfacet BRDF与高分辨率贴图结合产生更多细节图片来自【10】 通过结合传统的Microfacet BRDF模型与贴图两种着色技术被结合起来使得我们不必使用更复杂的Microfacet BRDF模型就可以表述更精细的微观结构。 除了将高分辨率的贴图融入进Microfacet BRDF模型中对于远处的表面我们还需要能够直接将宏观的表面几何结构融入进Microfacet BRDF模型中即这些宏观几何结构成为一个像素中的微面元本身。 在传统的Microfacet BRDF模型中针对每一个像素我们首先根据法线贴图或其它方式得到一个当前像素的法线然后代入进Microfacet BRDF模型中计算出射光照。然而我们说过Microfacet BRDF模型发生于像素尺寸而法线采样发生于纹理尺寸这两个尺寸通常是不对等且随着表面到摄像机的距离变化而变化的例如对于比较近的表面假如像素与纹理尺寸是一比一的那么这个法线采样会比较准确它可以直接被用于Microfacet BRDF模型中进行计算然后对于远处的表面一个像素尺寸可能等于多个纹素尺寸这时对法线贴图的直接采用就会导致比较大的方差我们需要花很多的样本才能把这些方差平均下来因此传统的做法就是首先对法线贴图进行过滤也就是从一个Mipmap中得到对应距离的法线值。这种做法虽然使用平滑的偏差带来了方差的减小但是它又平滑了这种几何级的细节所以我们仍然需要非常高的采样率来填补这些细节。 所以如果我们能够将几何级的宏观结构也融入到Microfacet BRDF中对于远距离的表面宏观的几何结构直接集成于Microfacet BRDF中就能够使用比较少的样本来得到远处表面的细节例如下图中使用传统的Microfacet BRDF左图使用100个样本可以得到比较精细的细节但是中图使用一个样本则比较模糊因为较远的地方法线贴图的采样被过滤了右图将几何结构融入Microfacet BRDF中可以使用较少的样本得到远处的几何细节。 左图传统的Microfacet BRDF使用每像素100个样本中图传统的Microfacet BRDF每像素一个样本右图将几何结构融入Microfacet BRDF中每像素一个样本图片来自【4】 能够将几何级的贴图数据和Microfacet BRDF融合许多的表面都可以得到更精细的表述。 图片来自【13】 当然由于bump map或normal map都是对法线的fake它们并不改变物体表面的几何结构仅仅是直接给着色器传递一个假的的法线值这个法线值可能导致物体表面的表面几何分布并不是一致的consistent因此这就破话了Microfacet BRDF的对称性和能量守恒。例如下图所示由于表面的真实几何结构没有发生变化然而着色使用了一个假的法线因此使得一部分的方向被丢失例如对于下图而言左边半球与几何平面交叉的部分红色箭头所示和右图半球面下方的方向红色箭头所示都是不能被采样的这造成了光照的泄露和丢失。 图片来自【11】 因此开发更高效的Microfacet BRDF模型使其能够与在bump/normal map的配合下能够呈现更真实的着色也是Microfacet BRDF发展的话题以下是Unity labs的一种解决方案。 图片来自【11】 总结 出于性能考虑当前传统的Microfacet BRDF都采用比较模糊近似模型这使得介于像素和微观粒子之间的微观结构被忽略。而实践上我们也不可能采用表述更精确的Microfacet BRDF模型因为这往往需要较大的数据存储例如一些基于数据驱动的Microfacet BRDF模型或者较大的计算时间不过实际上可能人眼也不可能分辨太过微观的细节因此结合传统的bump/Displacement/normal map等贴图技术通过高分辨率的贴图来展现比像素更微观的细节并让这些贴图所表述的相对宏观的几何结构融入到Microfacet BRDF模型中便成为比较简洁而有效的方法。此外除了贴图级别的宏观几何结构远处更大尺寸的如顶点级别的几何结构也是需要与Microfacet BRDF模型进行融合的。 对于理解Microfacet BRDF模型表面表述的尺寸是一个非常关键的因素仔细去理解每种尺寸下着色模型的选择以及它们之间怎么联合起来对总的表面进行着色这是让你透彻理解着色的关键。 参考引用或相关补充资源 [1] 2010 LEAN Mapping [2] 2013 Linear Efficient Antialiased Displacement and Re ectance Mapping [3] 2014 Discrete Stochastic Microfacet Models [4] 2014 Geometry into Shading [5] 2014 Rendering Glints on High-resolution Normal-mapped Specular Surfaces [6] 2014 Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs [7] 2015 Multiple-Scattering Microfacet BSDFs with the Smith Model [8] 2015 Skin Microstructure Deformation with Displacement Map Convolution [9] 2016 Multi-Scale Rendering of Scratched Materials using a Structured SV-BRDF Model [10] 2016 Position-Normal Distributions for Efficient Rendering of Specular Microstructure [11] 2017 Microfacet-based Normal Mapping for Robust Monte Carlo Path Tracing [12] 2017 Pixars Foundation for Materials [13] Racing for Realism 转载于:https://www.cnblogs.com/hielvis/p/8111531.html