
上面这张图是我整理的「贴图工作流 → 渲染引擎 → 宿主软件」对应关系。它回答的是一个几乎每个 CG 从业者都踩过的坑:为什么同一套从 Substance、Quixel 或网上下载的 PBR 贴图,在 Blender 里效果很好,拖进 V-Ray 就面目全非?
答案很简单:虽然大家都叫「PBR」,但各渲染器的光照模型并不相同,它们期望的贴图内容也不相同。这篇文章把这件事彻底讲清楚。
一、PBR 并不只有一个标准
物理渲染(Physically Based Rendering)只是一个原则——能量守恒、菲涅尔反射、微表面理论——而不是一份统一的贴图规格。在 2019 年这个时间点,业界实际存在两大主流贴图工作流,外加若干厂商自定义方案:
1. 金属度/粗糙度工作流(Metal-Rough)
核心贴图组合:
- Base Color:对非金属是漫反射颜色,对金属是菲涅尔 F0 反射颜色
- Metallic:0 或 1(或中间过渡值)标记表面是否为金属
- Roughness:微表面粗糙度
- 辅助:Normal、Height、AO 等
它的设计哲学是:用一个 Metallic 开关,让着色器在「绝缘体」和「导体」两种物理模型之间切换。绝缘体的 F0 很低(约 4% 反射率,即 0.04),金属的 F0 直接取 Base Color。贴图里不存高光强度——高光由物理模型推导。
2. 高光/光泽度工作流(Spec-Gloss)
核心贴图组合:
- Diffuse:漫反射颜色(金属的 Diffuse 通常为黑)
- Specular:F0 反射颜色/强度(金属的彩色反射直接存在这里)
- Glossiness:光泽度——注意,它是 Roughness 的倒数关系
- 辅助:Normal、Height、AO 等
它更「自由」:Specular 通道可以为任意值,艺术家可以直接画出镜面反射的颜色和强度。但自由的代价是容易做出违反能量守恒的材质(比如漫反射和高光能量之和超过入射光)。
3. 两者的本质区别在哪
关键在 F0(正入射反射率)的存储位置:
| Metal-Rough | Spec-Gloss | |
|---|---|---|
| 绝缘体 F0 | 固定 0.04(由模型内置) | 存在 Specular 贴图里(通常 0.02–0.05 灰度) |
| 金属 F0 | 存在 Base Color 里 | 存在 Specular 贴图里(彩色) |
| 漫反射颜色 | Base Color(金属部分被忽略) | Diffuse(金属部分为黑) |
| 粗糙度参数 | Roughness(越白越糙) | Glossiness(越白越滑) |
所以一张 Spec-Gloss 的 Diffuse 贴图直接当 Base Color 用,金属区域就会发黑;一张 Metal-Rough 的 Base Color 直接当 Diffuse 用,金属会带着彩色漫反射——两者直接互换都会出错。
二、各渲染器站在哪一边
回到开头的图,逐一说明 2019 年各家的贴图约定:
Principled BSDF / Pxr 系
RenderMan(PxrDisney/PxrSurface)、Blender Cycles/EEVEE(Principled BSDF)、Houdini Mantra(Principled Shader)、Clarisse IFX 都属于这一系——它们的着色器都源自迪士尼 2012 年提出的 Principled BRDF 模型(即「迪士尼原则」)。这套模型以 Metal-Rough 风格为主:Base Color + Metallic + Roughness,外加 Specular、Clearcoat、Subsurface 等艺术化参数。这一系之间的贴图基本可以无缝通用,也是和 Substance Painter 默认输出兼容性最好的一类。
PBR Metal-Rough 系
Arnold 5 的 Standard Surface 是这一代的标准化代表(Arnold 5 于 2017 年发布,用 Standard Surface 取代了旧材质体系,参数与 Metal-Rough 工作流一一对应)。Octane、Redshift、iClone 等 GPU/实时渲染器也提供或默认采用 Metal-Rough 模式。这一系同样可以直接吃 Substance 的 Metal-Rough 预设输出。
PBR Spec-Gloss 系
V-Ray 的 VRayMtl 长期以 Reflection(高光强度)+ Reflection Glossiness(光泽度)为核心参数,是典型的 Spec-Gloss 风格。直到 V-Ray Next(2018)才在 VRayMtl 里加入 Metalness 参数以兼容 Metal-Rough 贴图——但注意它的 Roughness 参数和 Glossiness 仍然是倒数关系,导入贴图时要留意通道语义。Mental Ray 也属于这一流派(虽然它已经基本退出历史舞台)。
引擎特例
- Unity:Standard Shader 同时提供两种 setup——Metallic 模式和 Specular 模式,对应两大流派,导入贴图前先确认材质用的是哪种。
- Unreal:材质系统默认 Base Color + Metallic + Roughness + Specular 四参数,其中 Specular 对非金属默认 0.5(对应 4% F0),一般不需要贴图。
- Corona、MODO:各有自己的材质模型(Corona 偏向简化的 PBR 参数集,MODO 有自家着色器体系),与其他渲染器没有直接的贴图对应关系,需要按文档单独处理。
三、跨渲染器迁移的换算要点
如果必须在两个流派之间搬运材质,记住这几条:
- Glossiness = 1 - Roughness(反向通道,别直接复制)。
- Metal → Spec 转换:Diffuse = BaseColor × (1 - Metallic);Specular = lerp(0.04, BaseColor, Metallic)。Substance Painter 和 Substance Designer 都内置了这个转换,导出时选对应预设即可。
- Spec → Metal 转换是有损的:Spec-Gloss 允许非物理的 Specular 值(比如把绝缘体高光画成红色),这些无法映射回 Metal-Rough 模型。
- 色彩空间:Base Color / Diffuse / Specular 是 sRGB;Metallic / Roughness / Glossiness / Normal / Height 必须是 Linear。项目里最常见的 bug 之一就是 Roughness 被错误地做了 gamma 校正,导致高光质感整体偏移。
- IOR 与 Specular 强度的关系:部分渲染器(如 Blender 的 Principled BSDF 新版、Unreal)用 Specular 0–1 映射 F0 0–8%,而 V-Ray 等用 IOR 控制反射强度,二者之间的换算是 。
四、实践建议
- 以 Metal-Rough 为中间格式:它是 2019 年兼容性最好的工作流,Substance/Quixel 默认输出、大部分新渲染器都原生支持;要进 Spec-Gloss 渲染器时再转换。
- 导出时选对预设:Substance Painter 的导出预设列表里明确区分了 Arnold、V-Ray、Unreal、Unity 等目标,别用错。
- 搞清楚目标渲染器的参数语义再贴图:同名参数在不同渲染器里可能语义相反(Roughness vs Glossiness)或范围不同。
- 用已知材质的测试球验证:迁移管线时,先渲一个金属球+粗糙塑料球的标准测试场景,和参考图对比,比逐参数检查快得多。
随着各渲染器陆续统一到标准化的 PBR 材质模型,这类「贴图不通用」的问题会逐渐成为历史——但在可预见的几年里,理解两大工作流的差异仍然是 CG 管线里的基本功。