前言
Metallic-Roughness与 Specular/Smoothness 是业界最主流的工作流,虽然控制参数不同,但最终目的都是进行BRDF光照计算。那么这两种工作流究竟有什么本质的区别,它们各自的优缺点是什么,为什么有两种工作流,对应工作流适用的场景是什么。本文将一一解答这些问题
两种工作流的定义
Metallic-Roughness
Metallic-Roughness是现如今最主流的工作流,UE就采用这个工作流
- 核心参数
- Albedo:包含绝缘体的漫反射颜色,以及金属的高光反射率F0
通过后续配合metallic解码,得到真正的漫反射、F0
o.DiffuseColor = o.BaseColor - o.BaseColor * o.Metallic; o.SpecularColor = ComputeF0(o.Specular, o.BaseColor, o.Metallic);- Metallic:定义材质是绝缘体(0)还是金属(1)
-
Roughness:定义表面的微表面粗糙度
-
优点
- 强制能量守恒:可以看到这种工作流提供的参数都是与PBR有关的,没有手绘什么的,由引擎底层自动处理处理漫反射和F0的比例
- 省显存: Metallic 和 Roughness 都是单通道灰度图,可以和其他的单通道如AO打包成一张贴图
- 缺点
- F0固定。大多数引擎固定编码为0.04,如果需要宝石、玉石,这种高F0的效果,需要额外开放一个specular参数,它会影响F0的值
F0 = 0.08×Specular- 白边瑕疵。当材质在一个像素从绝缘体过渡到金属时,Base Color 会从漫反射颜色剧变到金属的高光颜色,而 Metallic 也会从 0 变到 1。过渡区域会出现非物理的“亮斑”或白边
Specular/Smoothness
Specular/Smoothness工作流在PBR早期很流行,在概念上更接近前 PBR 时代的次世代渲染工作流
- 核心参数
- Diffuse:仅包含漫反射颜色,不包含F0
- Specular(RGB):直接定义材质在垂直入射角下的F0;于绝缘体,通常是非常暗的灰色;对于金属,则是带有颜色的亮色
- Smoothness:与粗糙度完全相反
- 优点
- 绝对的控制力:美术可以直接控制所有材质的 F0 数据流
- 无过渡的白边瑕疵
- 缺点
- 容易打破能量守恒
- 显存占用更大:Specular是RGB贴图
为什么有两种工作流
- 美术的习惯
在 PBR 普及前,美术习惯了手动绘制 Specular 贴图来控制高光颜色和强度
适用场景
-
“物理正确”与“自由度”的选择
- Metallic-Roughness :追求渲染管线的健壮性、避免美术打破能量守恒、更好的内存
就算F0有限制,还可以开发不同的shadingmodel来满足特殊材质
- Specular/Smoothness:需要开发有大量特殊、F0很高的非金属材质(如薄膜)、且美术团队极其专业




Comments | NOTHING