【技术美术图形部分】PBR直接光部分:Disney原则的BRDF和次表面散射模型

写在前面

补充去年遗漏下的知识。很多叙述都是参考了众多大佬的文章!因为是作为个人学习总结的博客,所以直接卑微的借鉴过来了,后面会给出所有参考的文章。

另外,放上一个忘了在哪一篇知乎评论里的截图:

说的蛮好。

1 PBR

叙述参考PBR(物理渲染技术)在实时渲染中的概念与限制

PBR,即Physically Based Rendering,基于物理的渲染。指的是一个总的过程:基于物理参数的美术流程和渲染流程。基于物理的灯光和相机这篇文章总结的好好,与传统的技术相比,PBR有真实的测量值作为标准,排除了主观审美带来的不确定性,制作出的效果更统一、准确。

正因此,PBR绝不止是简单的Shader,它主要包括以下三个部分:

  • 基于物理的材质Material
  • 基于物理的光照Light
  • 基于物理适配的相机Camera 

三部分互不影响,但都必须保证准确。传统的着色思路是在特定光照下调整材质,光照变了效果就变了,比较之下PBR才能实现一种材质在不同光照环境下呈现的效果都是正确的。

1.1 基于物理的光照 Lighting

基于物理的光照,就是:全局光照。

光源表述:辐射强度

我们之所以能看物体,是因为光源发射光线,照亮了物体。那既然是基于物理的光照,就需要严格用辐照度来量化光了,具体可以跟着101闫神过一遍辐射度量学的内容。

光线传输方式

确定光源表述后,还需要确定渲染采用什么算法考虑光线传输:是直接上光追模拟出真实的光线传播过程,还是只采用模拟直接光照的光栅化+其他全局光照的算法?

光线传输方式往往是渲染引擎内置,例如离线渲染的路径追踪、实时渲染的光栅化+其他全局光照算法,已有稳定成熟的算法,一般讨论PBR的时候重点会放在第3个材质部分。

1.2 基于物理的相机 Camera

【技术美术百人计划】图形 5.1.2 基于物理的相机概述

 主要涉及曝光三角形、快门速度、光圈、感光度、相机和引擎。

1.3 基于物理的材质 Material

平时讲材质的时候其实就是在讲光照模型(Illumination Model),因为材质决定了物体表面与光线相交时的如何进行光学交互,光学交互又决定着着色思路和算法

(补充一点,某着色点在屏幕上的最终颜色 = 光源颜色 * 材质颜色 * 反射系数 * 规定的函数。)

2 光照模型

2.1 发展历程

简单总结一下参考文章种列举的光照模型研究的发展历程: (参考自什么是光照模型

1970 Lambert -- > 1975 Phong、Blinn-Phong --> 1980 Whitted光线追踪 --> 1982 Cook-Torrance模型 --> 1986 Kajiya-路径追踪

2.2 分类1:基于物理/经验

基于物理

PBR(基于物理的BRDF)

基于经验

通过经验总结出一套模拟光照的模型,就是那4个传统光照(基于经验的BRDF)

2.3 分类2:局部光照/全局光照

局部光照模型

local的,仅考虑直接光照的光照模型。光栅化就是基于局部光照模型进行的,例如4个熟知的经典光照模型,由于只考虑直接光照来计算交点处的光强,能计算的仅仅是漫反射高光反射自发光环境光

基于BRDF的微表面模型也是局部光照模型。

全局光照模型

Global,描述光的真实传播。基于渲染方程(由BRDF反射方程进一步得到的渲染方程)的光线追踪、路径追踪等等都算作全局光照模型。

2.4 4种经验光照模型

分别是,

  • Lambert
  • 半Lambert([0,1]-->[0.5,1],提升了漫反射亮度)
  • Phong(增加了镜面反射)
  • Blinn-Phong(用半角向量以优化了高光)

快速复习通道:【Unity Shader】实现基础光照模型

2.5 经典光照模型与PBR对比

理论基础 经典光照模型 PBR
漫反射 Lambert

Lambert

经典光照模型中,

漫反射——Lambert

镜面反射——Blinn-Phong

环境光——

3 BRDF

BRDF,即双向反射分布函数,注意这里的“反射”,意味着

3.1 Cook-Torrance模型

着色模型与PBR原理综述叙述PBS历史的时候,开头就从Cook和Torrance提出的光反射模型——Cook-Torrance模型开始介绍。这其实是微表面材质模型的知识范畴,在6月份左右GAMES101作业7提高-实现微表面模型你需要了解的知识就有涉及到,Cook-Torrance增加了D、F、G三项信息去刻画细节,提升了渲染的真实感:

3.2 讨论BRDF和光线追踪

BRDF是一种场景中光线与物体表面交点的光强度的计算方法,而光线追踪是上述基于物理的光线传播方式的算法,这意味着BRDF即使不用光追算法就能实现。

如果不用光追,BRDF即使是叠了“基于物理”“考虑了次表面散射”双重buff,它还是只能计算直接光照的局部光照模型。

4 Disney原则的BRDF

该部分学习主要参考了:【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结

基于对现实材料的考察,Disney的BRDF简化了复杂的PBR参数和制作流程,给出了一套基于少量简单易懂的参数和高度完善的美术工作流程,成为了后续游戏和影视行业遵循的PBR方向和标准,也是次世代(后续有介绍“次世代”概念)高品质渲染技术的代名词。

BRDF之后又提出了BSDF,时间线大概是2012年推出Disney Principled BRDF,2015年提出Disney BSDF。

4.1 Disney采用的材质分析

MERL 100 BRDF材质库

BRDF Explorer

BRDF Image Slice切片

点到为止,具体可以直接看参考文章的第二部分总结。

4.2 10个标量参数

迪士尼原则的BRDF核心理念在于:使用直观参数,参数尽可能少,范围在[0,1]等,总之是一种非金属和金属材质的混合模型,用参数金属度metallic在金属和非金属BRDF之间进行线性插值,这个方法不是那么的“物理”,但“美术友好”。

至于都有哪些参数,我选择直接截图的方式展示出来,之后复习也会更加方便(图源):

4.3 Disney原则的Specular

主要是微平面理论的内容,我在GAMES101作业7提高-实现微表面模型你需要了解的知识这一篇文章对于以下关键的三项都过讨论:

  • 法线分布项D
  • 阴影遮挡项G
  • 菲涅尔项F

本篇文章主要补充的是下一节计算Diffuse项的方法,以及次表面模型的细节。 

4.4 Disney原则的Diffuse

关于Lambert模型

实时渲染中最常采用的是Lambert来模拟漫反射:

Disney原则的BRDF也采用了Cook Torrance BRDF模型,但对于漫反射计算有自己的看法。

Diffuse项的特点

Disney通过分析MERL 100 BRDF材质,发现真实材质的diffuse项有这两种特点:

  • diffuse会有类似于specular的光斑
  • 部分材质的diffuse会在掠射角有明显的光环——掠射逆反射(会在5.4小节细说)

以上提到的两个特点都是简单的Lambert模型所无法实现的,为了解决这一问题Disney选择了更加复杂的、具有方向性的(non-Lambertian)漫反射计算方法——Schlick菲涅尔近似等式+掠射逆反射,先放上Disney的漫反射公式(公式我就直接截图的参考文章里的了~):

这个公式耦合了两个因素,

  • Schlick菲涅尔近似
  • 掠射逆反射

之前在用Cubemap实现天空盒和环境映射中实现菲涅尔反射时就用这个近似来计算了,下一小节的重点会放在掠射逆反射相关的次表面散射。

5 次表面散射 SSS

次表面散射,即Subsurface Scattering, SSS,是一种从微观尺度对物体表面漫反射光的解构,某一篇参考文章中说的非常好:“次表面散射之于漫反射,就像H2O之于水,只有研究水的分子结构才会说H2O,日常都会说水而非H2O”,所以对于日常使用来讲,漫反射更多想到粗糙的Lambert漫反射模型,而深究下去漫反射其实是次表面散射。

5.1 漫反射的实质

用Lambert模型计算diffuse分量,出射光线方向和入射光线的方向是无关的。

但严格来讲,漫反射是次表面散射——光线折射进物体表面多次反射再折射出来,它并不是一种光学现象,反射/折射的方向也会随着入射角度的改变而改变。

5.2 与微表面模型的关系

微表面模型的假设

4.3小节中的Specular项计算就是基于微表面理论的了,微表面模型做了以下假设:

  1. 微表面的尺寸小于着色区域大于可见光波长:物体表面从远处看是外观(diffuse、glossy),近处看是一个个微小的、平的几何面
  2. 这些平坦的几何面都符合几何光学定律:可以看成是一个个非常小的镜子
  3. 光线只在微表面之间弹射一次(single-bounce):一次之后弹射的光线不改变着色结果,也就是离开表面的点就是进入表面的点 

glossy和diffuse材质

注意这里的材质表现是基于法线分布的混乱程度,因此glossy在微观上看仍然是specular。而diffuse仅仅是法线分布混乱,真正计算时,由于假设中只考虑光线弹射一次,diffuse计算还是会按照Lambert模型来考虑。

多次弹射:次表面散射

以上假设3中,当考虑多次弹射情况时,就是这一小节所讲的次表面散射了。 

5.3 光滑的次表面散射模型

微表面的不规则程度小于次表面散射距离,如下图:

由于散射距离实在太大了,发生逆反射几率很小很小(后面有补充解释),整个表面可以被认为是平坦的,此时次表面散射已经不是局部而言了,要整体一起建模计算,微表面理论也就用不上了。

考虑菲涅尔效应

这种情况下,能影响次表面散射的只有表面反射(高光项Specular)与次表面反射(漫反射项Diffuse)之间的能量平衡关系。

菲涅尔效应告诉我们:随着掠射角度的增加,漫反射随着高光的反射的增加而减小。所以我们需要去除specular拿走的部分,因此光滑次表面这类模型通常会乘上1-菲涅尔项。也就是在原有的Lambert漫反射基础上叠加上1-菲涅尔项。具体参考【渲染】Disney BSDF 深度解析

公式中的具体体现

5.4 粗糙的次表面散射模型

当微表面不规则程度大于次表面散射距离,如下图:

此时次表面散射就要针对每个微小表面局部计算了,涉及到微分几何相关的效应(逆反射),因此计算漫反射时需要基于微表面理论,每个微表面局部发生次表面散射。

举例:月球漫反射

拿人在地球上看月球举例,月球本身不是自发光物体,光都来自漫反射太阳光,因为我们能观察到他的逆反射(如下图所示,图源水印),月球常被认为是一个应该使用粗糙次表面散射模型的例子。这是由于人站在地球上观察月球的观察尺度实在太大了,即使是月球上巨大规模的陨石坑,与散射距离相比起来都算是微结构。

逆反射:基于微观的

粗糙次表面散射自然要与表面的粗糙程度挂钩,此外还需要关注掠射逆反射

光学中(我表达得不一定严谨),

  • 掠射:指光从一种介质向另一种传播,入射角接近于90度时的情况,也就是几乎贴着反射面的入射
  • 逆反射:光线照射到表面后反射回到光源方向的现象

由于缺乏专业知识,百度了解了一下逆反射:

可见逆反射技术也是用非常微小的表面来实现光线折返,这意味着逆反射的发生更多是在微观的,这也解释了前面在介绍光滑次表面散射时为什么说“发生逆反射几率很小”。

由于表面粗糙,所以次表面散射过程中的逆反射可能性就加大了。在掠射角方向,视线和光线越靠近,则逆反射现象越明显。

考虑逆反射的重要性

前面提到的光滑次表面散射仅仅考虑了剔除了specular分出去的部分,本身Lambert漫反射边缘就很暗,剔除之后就更暗了,原本在掠射角处发生的逆反射现象被完全忽略(Lambert逆反射直接为0)。

所以模型计算中,逆反射一定要补上!

公式中的具体体现

  • FD_{90}:表示着掠射散射的强弱,大于1越强,小于1越弱
  • 粗糙度roughness:控制着临界点出现的早晚,符合“表面越粗糙,掠射角处就有越多微表面垂直于光线”,

6 Disney原则的BSDF*

BRDF --> BSDF标志着从专注于着色和光照转向了路径追踪全局照明,BSDF将折射、次表面散射和间接光照都被整合在了一起,遵循能量守恒就变得更加重要了。

路径追踪我也在学习101的时候写了小部分的内容:

GAMES101作业7-路径追踪实现过程&代码框架超全解读

BSDF可以渲染更加多的例子(图源水印):

但由于:

我打算BSDF先提到这里,之后有时间再学习起来~

参考

着色模型与PBR原理综述 - 知乎 (zhihu.com)

【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结

【译 】Disney2015-将BRDF扩展至集成次表面散射的BSDF - 知乎 (zhihu.com)

【渲染】Disney BSDF 深度解析 - 知乎 (zhihu.com)

BRDF理论及shader实现(下)__子宽的博客-CSDN博客_brdf f0 f90

基于物理的光照推演(一) - 知乎 (zhihu.com)

什么是光照模型 - 知乎 (zhihu.com)

猜你喜欢

转载自blog.csdn.net/qq_41835314/article/details/128757082