写在前面
补充去年遗漏下的知识。很多叙述都是参考了众多大佬的文章!因为是作为个人学习总结的博客,所以直接卑微的借鉴过来了,后面会给出所有参考的文章。
另外,放上一个忘了在哪一篇知乎评论里的截图:
说的蛮好。
1 PBR/PBS
1.1 PBR和传统技术相比
基于物理的渲染指的是一个总的过程:基于物理参数的美术流程和渲染流程。基于物理的灯光和相机这篇文章总结的好好,与传统的技术相比,PBR有真实的测量值作为标准,排除了主观审美带来的不确定性,制作出的效果更统一、准确。
正因此,PBR绝不止是简单的Shader,它包括以下三个部分:
- 基于物理的材质Material
- 基于物理的光照Light
- 基于物理适配的相机Camera
三部分互不影响,但都必须保证准确。传统的着色思路是在特定光照下调整材质,光照变了效果就变了,比较之下PBR才能实现一种材质在不同光照环境下呈现的效果都是正确的。
1.2 PBR和PBS的关系
基于物理渲染,其实就是基于真实物理原理的BRDF模型。去年9月份开始学习百人计划就有一点点涉及:【技术美术图形部分】2.2 模型与材质基础,这篇博客中2.3节探讨了shading的光照模型们:标准光照和PBS,甚至还探讨了PBS和PBR的关系,以及Unity中PBR的两种工作流(Metalic&Specular),这里我们就补上4个月前挖的坑:
2 4个经典光照模型
分别是,
- Lambert
- 半Lambert([0,1]-->[0.5,1],提升了漫反射亮度)
- Phong(增加了镜面反射)
- Blinn-Phong(用半角向量以优化了高光)
快速复习通道:【Unity Shader】实现基础光照模型
3 Cook-Torrance模型
着色模型与PBR原理综述叙述PBS历史的时候,开头就从Cook和Torrance提出的光反射模型——Cook-Torrance模型开始介绍。这其实是微表面材质模型的知识范畴,在6月份左右GAMES101作业7提高-实现微表面模型你需要了解的知识就有涉及到,Cook-Torrance增加了D、F、G三项信息去刻画细节,提升了渲染的真实感:
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
从diffuse项突然跳转到次表面散射,其实叙述思路是参考了【渲染】Disney BSDF 深度解析这一篇文章。
次表面散射,即Subsurface Scattering, SSS,是一种从微观尺度对物体表面漫反射光的解构,某一篇参考文章中说的非常好:“次表面散射之于漫反射,就像H2O之于水,只有研究水的分子结构才会说H2O,日常都会说水而非H2O”,所以对于日常使用来讲,漫反射更多想到粗糙的Lambert漫反射模型,而深究下去漫反射其实是次表面散射。
5.1 漫反射的实质
用Lambert模型计算diffuse分量,出射光线方向和入射光线的方向是无关的。
但严格来讲,漫反射是次表面散射——光线折射进物体表面多次反射再折射出来,它并不是一种光学现象,反射/折射的方向也会随着入射角度的改变而改变。
5.2 与微表面模型的关系
微表面模型的假设
4.3小节中的Specular项计算就是基于微表面理论的了,微表面模型做了以下假设:
- 微表面的尺寸小于着色区域大于可见光波长:物体表面从远处看是外观(diffuse、glossy),近处看是一个个微小的、平的几何面
- 这些平坦的几何面都符合几何光学定律:可以看成是一个个非常小的镜子
- 光线只在微表面之间弹射一次(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)。
所以模型计算中,逆反射一定要补上!
公式中的具体体现
- :表示着掠射散射的强弱,大于1越强,小于1越弱
- 粗糙度:控制着临界点出现的早晚,符合“表面越粗糙,掠射角处就有越多微表面垂直于光线”,
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