在基于物理的渲染(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:需要更高灵活性,处理复杂混合材质或自定义高光颜色。
两种工作流各有优劣,最终选择取决于项目需求、引擎支持及艺术家的偏好。