在 PBR 框架下,材质的视觉表现主要依赖于微表面(Microfacet)理论和能量守恒定律。为了在渲染引擎中标准化地输入这些物理参数,工业界发展出了两套主流的材质工作流:金属度-粗糙度(Metallic-Roughness,MR 模型)与镜面反射-光泽度(Specular-Glossiness,SG 模型)。
这两种模型在底层物理数学模型(如 BRDF 的计算公式)上是等价的,它们的核心区别在于输入贴图的数据结构、对能量守恒的约束方式以及显存开销。
1. 金属度-粗糙度(MR)模型#
MR 模型是目前游戏引擎(如 Unreal Engine、Unity)和实时渲染管线中最普遍的标准工作流。
核心贴图构成:
- Base Color(基础色,RGB): 包含两层物理含义。对于绝缘体(非金属),它表示漫反射的颜色;对于导体(金属),它表示镜面反射的物理基准值,即 $F_0$。
- Metallic(金属度,Grayscale): 掩码贴图。用于区分材质是金属(值为 1)还是绝缘体(值为 0)。
- Roughness(粗糙度,Grayscale): 描述微表面的粗糙程度。值为 0 表示绝对光滑,值为 1 表示极度粗糙。
2. 镜面反射-光泽度(SG)模型#
SG 模型提供了更高的自由度,更接近传统的光照计算分离逻辑,常用于对材质细节有极高要求的离线渲染或特定材质制作。
核心贴图构成:
- Diffuse(漫反射,RGB): 仅包含材质的漫反射颜色。如果是纯金属,该贴图对应区域必须为纯黑,因为金属没有漫反射。
- Specular(镜面反射,RGB): 直接定义材质的 $F_0$ 值。无论是金属还是非金属,其镜面反射的颜色和强度都完全由这张贴图控制。
- Glossiness(光泽度,Grayscale): 描述微表面的光滑程度。它是 Roughness 的反义值(
Glossiness = 1 - Roughness),值为 1 表示绝对光滑,值为 0 表示极度粗糙。
3. 核心区别对比#
| 特性维度 | MR 模型(Metallic-Roughness) | SG 模型(Specular-Glossiness) |
|---|---|---|
| 通道数量 | 5 个通道(RGB + 1 + 1) | 7 个通道(RGB + RGB + 1) |
| 内存/显存开销 | 较低,Metallic 和 Roughness 常打包在同一张贴图的通道中 | 较高,Specular 需要额外的一张 RGB 贴图 |
| 能量守恒 | 强制守恒,通过 Shader 内部逻辑自动分配反射与漫反射比例,不易出错 | 依赖创作者,若 Diffuse 和 Specular 值设置过高,极易违背物理规律 |
| 非金属 $F_0$ 控制 | 缺乏灵活性,通常被引擎硬编码为 4% / 0.04 标量 | 极高灵活性,可为任何绝缘体自定义特殊的 $F_0$ 颜色和强度 |
| 边界过滤伪影 | 存在,金属与非金属交界处,贴图线性插值会导致白边/黑边伪影 | 无此问题,漫反射与镜面反射完全分离计算 |
4. 技术细节分析#
边界伪影(Fringe Artifacts)#
在 MR 模型中,当一个像素恰好处于金属与非金属的交界处时,GPU 纹理采样器的双线性插值(Bilinear Filtering)会对 Base Color 和 Metallic 贴图同时进行插值。这会导致在过渡区域出现半金属半绝缘体的错误物理状态,视觉上表现为明显的白边或黑边。
在 SG 模型中,由于 Diffuse 和 Specular 是完全独立的 RGB 贴图,过渡区域的插值只在颜色空间内进行,不会引起底层物理状态的逻辑冲突,因此边界过渡更加自然。
能量守恒约束#
PBR 的核心原则之一是出射光能量不能超过入射光能量。
- MR 模型的安全性: 在着色器内部,漫反射能量计算通常被定义为
Diffuse = BaseColor * (1.0 - Metallic)。这种硬编码逻辑强制剥夺了金属的漫反射,确保了能量的物理正确性。 - SG 模型的风险性: 由于允许手动指定 Diffuse 和 Specular,如果没有严格的校验,创作者可能会同时赋予同一区域高强度的漫反射和高强度的镜面反射,从而打破能量守恒。
工业界选择#
MR 模型因其管线友好、显存占用低、容错率高,是现代引擎中常用的模型。SG 模型则在需要精确控制绝缘体折射率与高光表现(如复杂的宝石、布料或多层车漆)的特定材质管线中作为补充存在。