Lazy loaded image
metallic/roughness与specular/glossness对比
Words 1024Read Time 3 min
2025-3-11
在基于物理的渲染(PBR)中,Metallic/Roughness 和 Specular/Glossiness 是两种常见的工作流,用于描述材质表面的物理属性。它们的核心区别在于参数的定义方式、贴图的使用以及适用场景。以下是详细的对比:

一、 参数与贴图组成

Metallic/Roughness 工作流

  • 基础颜色(Albedo):RGB 贴图,表示材质的漫反射颜色(非金属)或金属的反射颜色(金属)。
  • 金属度(Metallic):单通道灰度贴图,标记材质是否为金属(1 为金属,0 为非金属)。
  • 粗糙度(Roughness):单通道灰度贴图,控制表面的粗糙程度(0 为光滑,1 为粗糙)。
  • 其他通用贴图:法线贴图、环境光遮蔽(AO)等。

Specular/Glossiness 工作流

  • 漫反射颜色(Diffuse):RGB 贴图,仅表示非金属的漫反射颜色(金属的漫反射通常设为黑色)。
  • 高光颜色(Specular):RGB 贴图,定义非金属的高光反射颜色和金属的反射率。
  • 光泽度(Glossiness):单通道灰度贴图,控制表面的光滑程度(1 为镜面般光滑,0 为完全粗糙)。
  • 其他通用贴图:法线贴图、环境光遮蔽(AO)等。

二、核心区别

特性
Metallic/Roughness
Specular/Glossiness
金属与非金属的区分
通过 金属度贴图 明确区分(0 或 1)。
依赖 高光颜色贴图 间接区分(金属的高光颜色通常更亮)。
贴图复杂度
更简单:金属度和粗糙度均为单通道。
更复杂:高光颜色为 RGB 三通道。
资源占用
更低(单通道贴图节省内存)。
更高(高光贴图占用更多资源)。
物理准确性
更符合能量守恒(金属与非金属分离明确)。
需要手动确保高光颜色与漫反射颜色的物理合理性。
适用场景
更适合区分金属与非金属的材质(如武器、机械)。
更适合复杂混合材质(如带污渍的金属或多层材质)。

三、工作流程对比

Metallic/Roughness

  • 非金属:基础颜色 = 漫反射颜色;金属度 = 0;粗糙度决定表面光滑度。
  • 金属:基础颜色 = 反射颜色;金属度 = 1;粗糙度决定反射模糊程度。
  • 优点:参数直观,易于区分材质类型,资源占用低。
  • 缺点:难以表现金属与非金属混合的复杂材质(如生锈金属)。

Specular/Glossiness

  • 非金属:漫反射颜色 = 基础颜色;高光颜色 = 非金属的反射颜色;光泽度控制光滑度。
  • 金属:漫反射颜色 = 黑色;高光颜色 = 金属的反射颜色;光泽度控制反射锐利度。
  • 优点:灵活性高,可自定义高光颜色,适合复杂材质。
  • 缺点:需要手动确保物理合理性(如金属的漫反射应为黑色)。

四、转换与兼容性

  • 互相转换:两种工作流可通过数学公式转换,但需注意:
    • Metallic → Specular:金属区域的高光颜色 = 基础颜色,非金属的高光颜色需单独定义。
    • Specular → Metallic:需分离金属和非金属区域,可能损失部分信息。
  • 引擎支持
    • Metallic/Roughness:Unreal Engine、Unity(推荐)等主流引擎默认支持。
    • Specular/Glossiness:常见于旧版工作流或特定材质需求(如 Substance Painter)。

五、示例对比

  • 金属材质(如黄金)
    • Metallic/Roughness:基础颜色 = 金色,金属度 = 1,粗糙度 = 低。
    • Specular/Glossiness:漫反射 = 黑色,高光颜色 = 金色,光泽度 = 高。
  • 非金属材质(如塑料)
    • Metallic/Roughness:基础颜色 = 塑料色,金属度 = 0,粗糙度 = 中。
    • Specular/Glossiness:漫反射 = 塑料色,高光颜色 = 白色(或浅灰色),光泽度 = 中。

六、总结

  • 选择 Metallic/Roughness:追求效率、直观性,适合明确区分金属/非金属的场景。
  • 选择 Specular/Glossiness:需要更高灵活性,处理复杂混合材质或自定义高光颜色。
两种工作流各有优劣,最终选择取决于项目需求、引擎支持及艺术家的偏好。
上一篇
物理基础着色(PBS)的物理学与数学基础
下一篇
物理基础着色(PBS)的物理学与数学基础