PBR贴图基础知识

一,基础知识

基于物理的渲染(Physically Based Rendering , PBR)在高质量实时渲染中应用广泛,其主要知识体系在闫老师的games101中已经铺垫学习过了。

Blinn-Phong 反射模型
BRDF和渲染方程
微平面理论–Cook-Torrance模型计算BRDF
IBL(Image-Based Lighting 基于纹理的光照)

二,PBR贴图类型

传统次世代方式

主要以颜色贴图(diffuse map),反射贴图(specular map),法线贴图(normal map)三个组成,分别反映了颜色、反光、凹凸信息。

  • 传统次世代方式主要用PS制作素材,颜色贴图中体现了高光,因此塑料感严重。

PBR次世代方式

这个阶段主要分为2个流程,金属度粗糙度流程(metalness-roughness workflow)和反射度光滑度流程(specular-smoothness workflow),主要变为4张贴图。

  • PBR方式中颜色贴图不绘制光线,制作工具是SubstancePainter,概念是材质的叠加,并且依赖于引擎查看效果。

在这里插入图片描述

1,金属度粗糙度流程—Base Color+Metallic+Roughness

  • 由颜色贴图(Base Color,其实和diffuse作用一样),金属度贴图(Metallic或Metalness,单通道),粗糙度贴图 (Roughness,单通道)组成。
  • 有的地方粗糙度会写成光滑度(smoothness),两者意义类似,数学上为(1-x)的关系。
  • Roughness粗糙度贴图 与Glossiness Map光泽度贴图是相反的。Roughness 反向就变成Glossiness Map 。

2,反射度光滑度流程—Diffuse/Albedo+specular+Glossiness/Smoothness

  • 由颜色贴图(diffuse漫反射,在unity中叫Albedo),反射(specular,反映了BRDF的F0,三通道),光泽度 (Glossiness/Smoothness,单通道)组成。

  • 注意:金属的diffuse为黑色图,非金属的specular比较暗(0.15-0.3),金属的specular比较亮(0.6-1.0)。

  • Base Color与Diffuse容易混淆,Base Color带了金属的反射率值需要配合上Metallic Map一起使用,其本质上是Diffuse和Specular的结合,这也是有时候通过先创建金属/粗糙度材质再将其转化为高光反射/光泽度的原因之一。(区别见下图)
    在这里插入图片描述

  • 反射度光滑度流程其实是对光照公式更直接的描绘。在shader内部实现的时候,会把BaseColor和metallic转换成diffuse和specular再计算。

  • 主流引擎一般采用金属度流程,主要因为其对美术更友好并且Metallic比specular三通道少亮个通道,可以用来放AO和smoothness。但这样也会牺牲一部分质量、转换过程也会产生损耗(见下图),因此高质量的离线渲染中会采用反射度流程。

在这里插入图片描述

3,通用贴图类型

法线贴图(normal)

存储表面的法线方向。方向是相对空间而言的,针对不同空间有3中法线贴图:Tangent切线空间、Object对象空间、World世界空间。

  • Tangent Space切线空间—基于每个面的切线方向,最常见

大部分浅蓝紫色,其中B通道表示法线方向的斜率;R通道表示左右切线方向的斜率;G通道表示切线方向向上或向下的斜率,如下图。
在这里插入图片描述

  • Object Space对象/模型空间—基于整个对象而不是每个面

大部分看起来五颜六色,渲染快但无法镜像uv会浪费,且不能进行uv动画,因此一般切线空间更好。
在这里插入图片描述

  • World Space世界空间—基于全坐标,最不灵活

仅用于环境或大型静态不对称物体,或用于风化效果等。
在这里插入图片描述

高度贴图(Height map)或者凹凸贴图(Bump Map)

包含高度信息(不包含角度)----单通道
「Substance Painter、Substance Designer导出的Height高度图等同于Bump凹凸贴图,而不是Displacement置换贴图的信息。」

环境光吸收贴图( AO Ambient Occlusion)

描述了表面某点能获得多少环境中的光,单通道。该贴图只影响漫反射分配,不影响高光反射分配。
在这里插入图片描述

自发光贴图(Emissive/Emission Map)

控制表面发射光的颜色和亮度,用于内部发光的物体,屏幕、led等。
在这里插入图片描述

透明贴图(Opacity Map)

定义贴图的不透明度。当材质使用不透明度贴图时,它将充当mask隐藏对象的某些部分。例如可以将“不透明度”贴图用于剪切树叶形状,穿孔表面和网格等。

4,其他贴图类型

置换/位移贴图( Displacement Map)

可以改变模型对象的几何形状(顶点),但需要提高顶点数,通常结合曲面细分使用,因此开销大,开销和质量Dispalcement>Normal>Bump(>Reflection)。

对模型轮廓能实现Bump和Normal无法实现的效果。也作为高度图来生成地形,并结合凹凸贴图实现丰富的地形效果。
在这里插入图片描述

Gradient&Ramp渐变图、ColorLUT颜色查找表

通常作为颜色贴图的一种全局使用。

视差贴图(Parallax Map)和陡峭视差贴图(Steep Parallax Map)

Displacement Map的另一个用途,也称为Virtual Displacement Map虚拟置换贴图,陡峭视差贴图额外通过增加采样数量提高陡峭处的正确率,但还是会在陡峭处有断层和锯齿,目前一般采用Relief Map(浮雕贴图)和Parallax Occlusion Map(视差遮蔽贴图)解决。
在这里插入图片描述

各向异性贴图(Anisotropic Map)

制作拉丝效果或各类微划痕时常用(101课程举例为电梯)
在这里插入图片描述

缝隙图(Cavity Map)

描述了比AO图更小尺度的光线遮蔽信息。只包含模型对象表面的凹面区域而不包括凸面区域,因此缝隙图通常大部分都是白色的,只有凹陷区域是深色的。

与AO图不同的是,缝隙图影响不仅会影响漫反射,还会影响高光反射部分。
在这里插入图片描述

环境法线贴图(Bent Normal Map)

环境法线贴图能够和AO图结合使用以改善漫反射间接照明,通过将环境发现代替法线用于间接照明来使漫反射间接照明更接近于全局光照。

曲率贴图(Curvature)

存储网格的凸度/凹度的纹理,黑色的值代表了凹区域,白色的值代表了凸区域,灰色值表示中性/平坦区域。通常用于一些特殊效果如磨损等,也是卡通渲染中的常用贴图。
在这里插入图片描述

厚度贴图(Thickness)

记录了表面厚度信息,可以用于辅助制作表面散射(SSS,简称3S材质)材质,或直接扩散/反照率假装SSS的效果。其黑色代表薄的地方、白色代表厚的地方。通常用在角色材质上。
在这里插入图片描述

位置贴图(Position Map)

使用R/G/B三个通道描述X/Y/Z轴上顶点对应的位置,通常用来实现模型底部到顶部的渐变效果,如墙壁底部的污渍、石块底部的青苔。
在这里插入图片描述

细节贴图(Detail Map)

平铺的局部贴图纹理,用于增加表面细节。通常为4通道,如图。
在这里插入图片描述在这里插入图片描述

流动贴图(Flow Map)

存储的是向量场数据,可以用来制作流动的水面效果。
SIGGRAPH 2010论文Vlachos/Water Flow in Portal 2中分享了用流动贴图制作流动水面的技术。

5,光照环境贴图

光照贴图(Light Map)

存储预渲染的光照信息(颜色和亮度),用于静态模型上的间接光照,解决实时动态光源效果不好且消耗性能的问题。

球面环境贴图(Spherical Environment Map)

环境球映射(会在靠近极点的地方出现扭曲)

立方体贴图(Cube Map)

环境盒映射,6张展开图像组成(不能模拟多次反射的结果)


参考资料

1,毛星云大神的【基于物理的渲染(PBR)白皮书】系列
2,Adobe-Substance学院官方–创建PBR纹理实用指南
3,八猴渲染器–PBR纹理转换
4,游戏资源中常见的贴图类型

猜你喜欢

转载自blog.csdn.net/yx314636922/article/details/124127672