PBR 材质详解

PBR 材质详解

做仿真场景、游戏资产或自动驾驶可视化时,「PBR 材质」几乎是默认选项------但若把 Metallic/Roughness 五张贴图当成全部,遇到皮肤、玻璃、雾效或道路标线就会对不上号。PBR 是一种渲染哲学与纹理工作流 ;Metallic/Roughness 只是其中一种 BRDF 参数化方式。它主要解决大多数不透明表面的 BRDF;完整管线里还有 SSS、折射、自发光、体积散射等扩展。

术语 :行业口语里的「PBR 材质」,严格说是遵循 PBR 原则的着色模型 + 贴图工作流,并非某一种单一材质类型。


目录

  • [1. PBR 是什么](#1. PBR 是什么)
  • [2. 主流工作流:Metallic / Roughness](#2. 主流工作流:Metallic / Roughness)
  • [3. 线性色彩空间与贴图规范](#3. 线性色彩空间与贴图规范)
  • [4. 常见材质参数参考](#4. 常见材质参数参考)
  • [5. 典型材质怎么搭](#5. 典型材质怎么搭)
  • [6. 另一工作流:Specular / Glossiness](#6. 另一工作流:Specular / Glossiness)
  • [7. 制作要点与禁忌](#7. 制作要点与禁忌)
  • [8. 扩展通道:Emission 与 Subsurface](#8. 扩展通道:Emission 与 Subsurface)
  • [9. 其他常见扩展属性](#9. 其他常见扩展属性)
  • [10. IBL 与环境 Lookdev](#10. IBL 与环境 Lookdev)
  • [11. 不止 PBR:仿真引擎里的其他材质类型](#11. 不止 PBR:仿真引擎里的其他材质类型)
  • [12. 引擎侧分类速览](#12. 引擎侧分类速览)
  • [13. 常见问题与反模式](#13. 常见问题与反模式)
  • [14. 延伸阅读](#14. 延伸阅读)

1. PBR 是什么

PBR(Physically Based Rendering,基于物理的渲染)用接近真实物理的模型描述光与表面的交互,核心约束包括:

概念 含义
能量守恒 反射 + 吸收 ≤ 入射,避免「越打越亮」
微表面理论 粗糙度决定微法线分布,影响高光形状与宽度
菲涅尔效应 掠射角反射增强;正视角也有基础反射

目标不是「某一种艺术风格」,而是换光照环境仍合理------同一套贴图在室外、室内、HDR 环境下都应可信。

1.1 微表面 BRDF 在算什么

实时 PBR 大多采用 Cook-Torrance 形式的镜面项 + Lambert(或 Disney 风格)漫反射项,常见实现为:

text 复制代码
f_r = f_diffuse + f_specular
f_specular = D(h) · F(v,h) · G(v,l,h) / (4 · (n·v) · (n·l))
符号 常见实现 作用
D GGX / Trowbridge-Reitz 微表面法线分布;shader 内常令 α = roughness² 再传入 GGX 的 D()
F Schlick 近似 菲涅尔:非金属 F0 约 4%,金属 F0 = Albedo
G Smith / Schlick-GGX 几何遮蔽与阴影,防止掠射角过亮

非金属的 F0 (垂直入射反射率)在 Metallic/Roughness 工作流里通常不单独做贴图 ,引擎按 ~0.04(约 4%) 处理;金属则把 Base Color 当作 F0。这是 Metallic 贴图存在的原因之一------用一张灰度图切换「漫反射 + 低 F0」与「无漫反射 + 有色 F0」两套行为。
#mermaid-svg-4x8996noAsQIRDRQ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-4x8996noAsQIRDRQ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-4x8996noAsQIRDRQ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-4x8996noAsQIRDRQ .error-icon{fill:#552222;}#mermaid-svg-4x8996noAsQIRDRQ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-4x8996noAsQIRDRQ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-4x8996noAsQIRDRQ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-4x8996noAsQIRDRQ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-4x8996noAsQIRDRQ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-4x8996noAsQIRDRQ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-4x8996noAsQIRDRQ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-4x8996noAsQIRDRQ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-4x8996noAsQIRDRQ .marker.cross{stroke:#333333;}#mermaid-svg-4x8996noAsQIRDRQ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-4x8996noAsQIRDRQ p{margin:0;}#mermaid-svg-4x8996noAsQIRDRQ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-4x8996noAsQIRDRQ .cluster-label text{fill:#333;}#mermaid-svg-4x8996noAsQIRDRQ .cluster-label span{color:#333;}#mermaid-svg-4x8996noAsQIRDRQ .cluster-label span p{background-color:transparent;}#mermaid-svg-4x8996noAsQIRDRQ .label text,#mermaid-svg-4x8996noAsQIRDRQ span{fill:#333;color:#333;}#mermaid-svg-4x8996noAsQIRDRQ .node rect,#mermaid-svg-4x8996noAsQIRDRQ .node circle,#mermaid-svg-4x8996noAsQIRDRQ .node ellipse,#mermaid-svg-4x8996noAsQIRDRQ .node polygon,#mermaid-svg-4x8996noAsQIRDRQ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-4x8996noAsQIRDRQ .rough-node .label text,#mermaid-svg-4x8996noAsQIRDRQ .node .label text,#mermaid-svg-4x8996noAsQIRDRQ .image-shape .label,#mermaid-svg-4x8996noAsQIRDRQ .icon-shape .label{text-anchor:middle;}#mermaid-svg-4x8996noAsQIRDRQ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-4x8996noAsQIRDRQ .rough-node .label,#mermaid-svg-4x8996noAsQIRDRQ .node .label,#mermaid-svg-4x8996noAsQIRDRQ .image-shape .label,#mermaid-svg-4x8996noAsQIRDRQ .icon-shape .label{text-align:center;}#mermaid-svg-4x8996noAsQIRDRQ .node.clickable{cursor:pointer;}#mermaid-svg-4x8996noAsQIRDRQ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-4x8996noAsQIRDRQ .arrowheadPath{fill:#333333;}#mermaid-svg-4x8996noAsQIRDRQ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-4x8996noAsQIRDRQ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-4x8996noAsQIRDRQ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-4x8996noAsQIRDRQ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-4x8996noAsQIRDRQ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-4x8996noAsQIRDRQ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-4x8996noAsQIRDRQ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-4x8996noAsQIRDRQ .cluster text{fill:#333;}#mermaid-svg-4x8996noAsQIRDRQ .cluster span{color:#333;}#mermaid-svg-4x8996noAsQIRDRQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-4x8996noAsQIRDRQ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-4x8996noAsQIRDRQ rect.text{fill:none;stroke-width:0;}#mermaid-svg-4x8996noAsQIRDRQ .icon-shape,#mermaid-svg-4x8996noAsQIRDRQ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-4x8996noAsQIRDRQ .icon-shape p,#mermaid-svg-4x8996noAsQIRDRQ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-4x8996noAsQIRDRQ .icon-shape .label rect,#mermaid-svg-4x8996noAsQIRDRQ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-4x8996noAsQIRDRQ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-4x8996noAsQIRDRQ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-4x8996noAsQIRDRQ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 入射光 Li
微表面 BRDF
漫反射

非金属为主
镜面反射

D·F·G
出射 radiance Lo
环境贴图 IBL


2. 主流工作流:Metallic / Roughness

Unreal、Unity、Blender Principled BSDF、Substance Painter 等默认采用 Metallic / Roughness 工作流。

贴图 / 参数 作用 要点
Albedo / Base Color 固有颜色 非金属 = 漫反射色;金属 = 反射色(如金 #FFD700)。不含烘焙光影、高光、阴影
Metallic 金属度 0 = 非金属,1 = 纯金属;中间灰表示物理混合层(锈、灰尘、油漆剥落),不代表单一均质材质
Roughness 粗糙度 0 = 镜面光滑,1 = 完全哑光;贴图值为 Perceptual Roughness (观感),GGX 内部多用 α = roughness²
Normal 微凹凸 切线空间 RGB;纹理色彩空间选 Non-Color / Linear
AO 环境光遮蔽 缝隙暗部;只影响间接光/环境光,不应烘焙进 Albedo

可选补充贴图:

贴图 作用
Height / Displacement 真实几何位移(需 tessellation)或 parallax 近似
Curvature 边缘磨损、污渍分布(Substance 常用)
Thickness 配合 SSS / Transmission 的薄厚

2.1 ORM 打包(引擎常见)

为省采样与带宽,引擎常把通道打包:

引擎 / 习惯 R G B
Unreal 默认 ORM Ambient Occlusion Roughness Metallic
部分自定义 Roughness Metallic AO

导入前确认目标引擎的 通道顺序;Substance Painter 导出时可指定 UE / Unity 预设,避免 Roughness 与 Metallic 对调。

2.2 Normal 与 Height 的分工

Normal Map Height Map
改变 光照方向(假凹凸) 可驱动 parallax / 置换
成本 置换更高
适用 绝大多数资产 近景地面、砖墙、硬币边缘

Normal 切线空间 OpenGL(Y+)与 DirectX(Y−) 绿通道可能相反;跨引擎迁移时需勾选 Flip Green Channel 或重新烘焙。

多数实时管线在 fragment shader 内将 perceptual roughness 平方后作为 GGX 的 α 使用------因此贴图上 0.5 的 roughness 在分布上往往比「一半光滑」更锐,Lookdev 宜在目标引擎内调,而非只看 DCC 数值。

贴图数据流:

text 复制代码
Albedo + Metallic + Roughness + Normal + AO  →  BRDF + IBL  →  Tone Mapping  →  显示

3. 线性色彩空间与贴图规范

PBR 计算在线性光强空间进行;sRGB 贴图若当线性用,高光会过曝、漫反射发灰

贴图类型 通常色彩空间 说明
Albedo / Base Color sRGB(导入时转 linear) 人眼感知的「颜色」
Metallic、Roughness、AO Linear / Non-Color 数据而非颜色
Normal Linear / Non-Color RGB 存方向
HDR 环境贴图 Linear HDR .hdr / .exr

工程习惯:

  • DCC 导出勾选 「Color management / ACES / Linear」 与目标引擎一致。
  • 查看贴图时用 Mipmap + 正确 gamma 的查看器;浏览器直接看 PNG 容易误判 Albedo 是否过暗。
  • 最终上屏还有 Tone Mapping(Reinhard / ACES / AgX)Exposure ;Lookdev 必须在目标 tone mapper 下做,不能只在 Substance 里满意就入库。

4. 常见材质参数参考

以下为经验起点,实际项目需结合参考照片与引擎 tone mapping 微调。

材质 Metallic Roughness Albedo 提示
抛光金属 1 0.05 ~ 0.2 钢浅灰 / 金 / 铜红棕
轻微氧化金属 1(锈区降 Metallic) 0.3 ~ 0.6 锈迹单独 Roughness ↑
木头、布料 0 0.6 ~ 0.9 材质本色
塑料 0 0.3 ~ 0.5 可较鲜艳
陶瓷 0 0.05 ~ 0.15 偏白或彩色哑光
橡胶、轮胎 0 0.7 ~ 0.95 深灰,仿真中有时单独 Lambert
皮革 0 0.4 ~ 0.7 棕系;微 SSS 可选
湿路面 0 0.05 ~ 0.15(水膜) 深灰;常配合 Clear Coat 或单独 Roughness 层

5. 典型材质怎么搭

5.1 车漆(Clear Coat 双层)

text 复制代码
底层:Car Paint Color(Metallic=0 或 0.3~0.5 金属漆)
      + Flakes Normal(可选)
      + Roughness 0.2~0.4
顶层:Clear Coat Weight ≈ 1
      + Clear Coat Roughness 0.02~0.1
      + Coat IOR ≈ 1.45~1.55(默认常接近 1.5,与薄层清漆/玻璃接近)

清漆层提供第二层镜面高光 ;底色 Roughness 与清漆 Roughness 分开调,否则要么「塑料感」要么「肥皂泡」。

5.2 玻璃

模式 Metallic Roughness Transmission IOR 说明
实心玻璃 0 0 ~ 0.05 1 1.45 ~ 1.52 实时需透明混合或 RT
磨砂玻璃 0 0.3 ~ 0.6 0.8 ~ 1 1.5 Roughness 主导模糊
车窗(仿真) 0 极低 1.52 常关阴影接收,防噪点

IOR ≈ 1.33 ,玻璃 ≈ 1.5 ,钻石 ≈ 2.4(实时很少真算)。

5.3 皮肤(SSS + Specular)

text 复制代码
Base Color:整体肤色(勿过饱和)
Roughness:0.4 ~ 0.6(面部略低于肢体)
Subsurface:0.3 ~ 0.5,Scatter Color 偏红
Specular:保留 oily layer(部分引擎单独 Specular Scale)

近景角色用 Subsurface Profile / 预积分 SSS;远景可降为普通 PBR + 暖色 Scatter 近似。

5.4 树叶(卡片 + 双面)

text 复制代码
Albedo + Alpha Mask(或 Alpha Clip)
Two-Sided / 关闭 Backface Culling
Subsurface + Transmission + Thickness Map(叶脉薄、叶缘更透)

Alpha Blend 排序贵且易错;游戏/仿真大量植被常用 Alpha Clip(Mask) + MSAA/TAA。


6. 另一工作流:Specular / Glossiness

较老管线(CryEngine 等曾用)以 Diffuse + Specular(RGB 控 F0 反射率)+ Glossiness(≈ 1 − Roughness) 代替 Metallic + Roughness。

Specular / Glossiness Metallic / Roughness
优点 非金属 F0 可精细控制(宝石、液体) 贴图少、能量守恒易保证
缺点 易过亮、贴图占用大、上手难 极端非金属 F0 需额外技巧
转换 Glossiness = 1 − Roughness 非金属 Specular ≈ 0.04
现状 维护旧资产 新项目首选

7. 制作要点与禁忌

  • Base Color 纯净:不烘焙光照、高光、AO;AO 走独立通道。
  • Metallic 二值化 :主体材质尽量 0 或 1 ;中间灰只用于空间混合的多层物理(锈斑、尘边、清漆磨损),勿当作「半金属」均质参数。
  • Albedo 亮度范围 :非金属不要太暗(sRGB 约 30~50 为常见下限);金属 Base Color 别超过约 240
  • Roughness 讲故事:划痕、污渍、磨损用局部 Roughness 变化表现,比改 Albedo 更物理。
  • AO 使用边界 :只压 间接光 / 环境光;直射光不应被 AO 贴图「假阴影」掉。
  • 分辨率一致 :同一资产 Albedo / Normal / ORM 同尺寸、同 UV 壳,避免 Mipmap 错位。
  • Cavity / 微遮挡(Specular 工作流) :UE 等允许 BaseColor *= CavitySpecular *= Cavity 做缝隙变暗------Cavity 不是高光贴图,勿用 Specular 通道手绘镜面形状(Metallic/Roughness 工作流下通常无独立 Specular 贴图)。

8. 扩展通道:Emission 与 Subsurface

标准 PBR 五通道之外,DCC 与引擎普遍还提供以下扩展------与 Metallic/Roughness 一起构成完整表面材质系统

8.1 Emission(自发光)

表面自身发光,亮度由 Emissive Color × Intensity 决定,不依赖外部光照。

场景 参数示意
日光灯管 白色 × 5 ~ 15 (量级参考,非跨引擎统一单位
灯泡、火焰辉光 暖橙 × 2 ~ 5
屏幕、键盘背光、霓虹、车尾灯 Emissive Map 控制发光区域

引擎单位差异(验收时以对齐曝光为准):

引擎 / DCC 常见语义
Unreal Emissive 常与 nits(cd/m²) 等量纲挂钩(Lumen/HDR 管线)
Blender Emission Strength 为能量乘数
Unity HDRP Exposure + Emissive Intensity 共同决定上屏亮度

不同引擎对 Emission 的定义与 tone mapping 耦合方式不同,同一数值不能跨引擎照搬

注意:

  • 默认常不参与阴影投射;要照亮周围需烘焙 GI(如 UE Lightmass)或实时 GI / Lumen。
  • 普通「很亮的颜色」应优先用 Albedo + 灯光,不要把一切高光都塞进 Emission。
  • 仿真里交通灯、刹车灯常用 Emissive + 正确色坐标,便于摄像头检测 pipeline 分割。

8.2 Subsurface / SSS(次表面散射)

模拟光进入半透明介质、内部散射后再出射------背光处透红/暖,普通 BRDF 难以表现。

简单版(Blender Principled / UE Subsurface Weight)

参数 典型值
Subsurface Amount 皮肤 0.3 ~ 0.6 ;树叶 0.5 ~ 0.8 ;蜡 0.7 ~ 1.0 ;石头/金属 0
Subsurface Color / Radius 皮肤淡粉红/红橙;Blender 用 RGB Radius 控散射深度

透射辅助

参数 用途
Transmission 背光穿透(薄布、叶片)
Thickness Map 越薄越透;叶片边缘效果
材质 Subsurface 散射色
人体皮肤 0.3 ~ 0.5 浅粉红
蜂蜡 / 蜡烛 0.7 ~ 1.0 暖黄
0.4 ~ 0.6 淡绿
树叶 0.5 ~ 0.8 + Transmission 黄绿

SSS 在数学上走 BSSRDF(如 dipole、预积分 profile),与标准 BRDF 是不同着色路径:

BRDF BSSRDF
光进出位置 同一点(表面反射) 不同点(入射后体内散射再出射)
典型代价 每像素一次 BRDF 采样 模糊 pass / profile 查表,显著更贵

9. 其他常见扩展属性

属性 作用 典型场景
Opacity / Alpha 透明度 玻璃、树叶卡片
Alpha Clip vs Blend 不透明测试 vs 真实混合 植被用 Clip;玻璃用 Blend/RT
Transmission + IOR 折射 1.33 ,玻璃 ~1.5
Clear Coat 顶层清漆 车漆、烤漆木;Coat IOR1.45~1.55
Anisotropy + Aniso Angle 定向高光 拉丝金属、CD 盘面、头发
Sheen 纤维边缘光 绒布、天鹅绒、麂皮;Disney/Blender 中为独立层,位于其它 BRDF 层之上
Thin Film(薄膜干涉) 视角相关色散 油膜、肥皂泡、镀膜玻璃;厚度约 400~800 nm + 薄膜 IOR

Anisotropy 在切线方向拉伸高光;需 Anisotropy Direction Map 或 Flow Map 控制方向,与 Normal 切线空间一致。

Sheen 模拟微观纤维在掠射角的额外反射,与 Anisotropy(定向拉伸高光)不同------布料近景常 Sheen + 低 Roughness 纤维 Normal 合用。

Thin Film 在 Principled / OpenPBR 一类模型里用薄膜厚度与 IOR 产生随视角变化的彩虹边;实时里多作近景点缀,远距可省略。


10. IBL 与环境 Lookdev

PBR 材质在均匀灰背景 下几乎无法验收;Lookdev 依赖 IBL(Image-Based Lighting)
#mermaid-svg-7UF2wuYiQGKAohBe{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7UF2wuYiQGKAohBe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7UF2wuYiQGKAohBe .error-icon{fill:#552222;}#mermaid-svg-7UF2wuYiQGKAohBe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7UF2wuYiQGKAohBe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7UF2wuYiQGKAohBe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7UF2wuYiQGKAohBe .marker.cross{stroke:#333333;}#mermaid-svg-7UF2wuYiQGKAohBe svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7UF2wuYiQGKAohBe p{margin:0;}#mermaid-svg-7UF2wuYiQGKAohBe .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7UF2wuYiQGKAohBe .cluster-label text{fill:#333;}#mermaid-svg-7UF2wuYiQGKAohBe .cluster-label span{color:#333;}#mermaid-svg-7UF2wuYiQGKAohBe .cluster-label span p{background-color:transparent;}#mermaid-svg-7UF2wuYiQGKAohBe .label text,#mermaid-svg-7UF2wuYiQGKAohBe span{fill:#333;color:#333;}#mermaid-svg-7UF2wuYiQGKAohBe .node rect,#mermaid-svg-7UF2wuYiQGKAohBe .node circle,#mermaid-svg-7UF2wuYiQGKAohBe .node ellipse,#mermaid-svg-7UF2wuYiQGKAohBe .node polygon,#mermaid-svg-7UF2wuYiQGKAohBe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7UF2wuYiQGKAohBe .rough-node .label text,#mermaid-svg-7UF2wuYiQGKAohBe .node .label text,#mermaid-svg-7UF2wuYiQGKAohBe .image-shape .label,#mermaid-svg-7UF2wuYiQGKAohBe .icon-shape .label{text-anchor:middle;}#mermaid-svg-7UF2wuYiQGKAohBe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7UF2wuYiQGKAohBe .rough-node .label,#mermaid-svg-7UF2wuYiQGKAohBe .node .label,#mermaid-svg-7UF2wuYiQGKAohBe .image-shape .label,#mermaid-svg-7UF2wuYiQGKAohBe .icon-shape .label{text-align:center;}#mermaid-svg-7UF2wuYiQGKAohBe .node.clickable{cursor:pointer;}#mermaid-svg-7UF2wuYiQGKAohBe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7UF2wuYiQGKAohBe .arrowheadPath{fill:#333333;}#mermaid-svg-7UF2wuYiQGKAohBe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7UF2wuYiQGKAohBe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7UF2wuYiQGKAohBe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7UF2wuYiQGKAohBe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7UF2wuYiQGKAohBe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7UF2wuYiQGKAohBe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7UF2wuYiQGKAohBe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7UF2wuYiQGKAohBe .cluster text{fill:#333;}#mermaid-svg-7UF2wuYiQGKAohBe .cluster span{color:#333;}#mermaid-svg-7UF2wuYiQGKAohBe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7UF2wuYiQGKAohBe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7UF2wuYiQGKAohBe rect.text{fill:none;stroke-width:0;}#mermaid-svg-7UF2wuYiQGKAohBe .icon-shape,#mermaid-svg-7UF2wuYiQGKAohBe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7UF2wuYiQGKAohBe .icon-shape p,#mermaid-svg-7UF2wuYiQGKAohBe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7UF2wuYiQGKAohBe .icon-shape .label rect,#mermaid-svg-7UF2wuYiQGKAohBe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7UF2wuYiQGKAohBe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7UF2wuYiQGKAohBe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7UF2wuYiQGKAohBe :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} HDRI 环境贴图
Diffuse Irradiance

或 SH 近似
Specular Prefilter

Mip 链
材质 BRDF
合成 Lo
Tone Mapping + Gamma

概念 说明
Split-Sum Approximation 实时把环境镜面积分拆成 预滤波环境贴图 + BRDF LUT,UE/Unity 内置
HDRI 选择 室外资产用室外 HDRI,室内用室内;勿用错误色温验收 Albedo
Exposure 同一材质在不同 Exposure 下观感差很大;仿真需与 相机 ISP / gamma 管线对齐

Substance Painter、Blender Lookdev、UE Asset Validation 场景宜固定一套 Studio HDRI + 室外 HDRI 双验收。


11. 不止 PBR:仿真引擎里的其他材质类型

仿真与实时引擎默认推荐 PBR ,但下列场景往往需专用着色模型或 PBR 扩展:
#mermaid-svg-Fq9aSALR03JV0Cq4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Fq9aSALR03JV0Cq4 .error-icon{fill:#552222;}#mermaid-svg-Fq9aSALR03JV0Cq4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Fq9aSALR03JV0Cq4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .marker.cross{stroke:#333333;}#mermaid-svg-Fq9aSALR03JV0Cq4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Fq9aSALR03JV0Cq4 p{margin:0;}#mermaid-svg-Fq9aSALR03JV0Cq4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .cluster-label text{fill:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .cluster-label span{color:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .cluster-label span p{background-color:transparent;}#mermaid-svg-Fq9aSALR03JV0Cq4 .label text,#mermaid-svg-Fq9aSALR03JV0Cq4 span{fill:#333;color:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .node rect,#mermaid-svg-Fq9aSALR03JV0Cq4 .node circle,#mermaid-svg-Fq9aSALR03JV0Cq4 .node ellipse,#mermaid-svg-Fq9aSALR03JV0Cq4 .node polygon,#mermaid-svg-Fq9aSALR03JV0Cq4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .rough-node .label text,#mermaid-svg-Fq9aSALR03JV0Cq4 .node .label text,#mermaid-svg-Fq9aSALR03JV0Cq4 .image-shape .label,#mermaid-svg-Fq9aSALR03JV0Cq4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-Fq9aSALR03JV0Cq4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .rough-node .label,#mermaid-svg-Fq9aSALR03JV0Cq4 .node .label,#mermaid-svg-Fq9aSALR03JV0Cq4 .image-shape .label,#mermaid-svg-Fq9aSALR03JV0Cq4 .icon-shape .label{text-align:center;}#mermaid-svg-Fq9aSALR03JV0Cq4 .node.clickable{cursor:pointer;}#mermaid-svg-Fq9aSALR03JV0Cq4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .arrowheadPath{fill:#333333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Fq9aSALR03JV0Cq4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Fq9aSALR03JV0Cq4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Fq9aSALR03JV0Cq4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Fq9aSALR03JV0Cq4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .cluster text{fill:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 .cluster span{color:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Fq9aSALR03JV0Cq4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Fq9aSALR03JV0Cq4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-Fq9aSALR03JV0Cq4 .icon-shape,#mermaid-svg-Fq9aSALR03JV0Cq4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Fq9aSALR03JV0Cq4 .icon-shape p,#mermaid-svg-Fq9aSALR03JV0Cq4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Fq9aSALR03JV0Cq4 .icon-shape .label rect,#mermaid-svg-Fq9aSALR03JV0Cq4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Fq9aSALR03JV0Cq4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Fq9aSALR03JV0Cq4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Fq9aSALR03JV0Cq4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} PBR Metallic/Roughness

金属/塑料/木/墙...
Clear Coat / Anisotropy
非标准或专用 Shader
折射 / Translucent
Subsurface Profile
Unlit / Emissive
Lambert 仅漫反射
Retro-reflective 标线
Volume 雾/霾/水

类型 用途 与标准 PBR 关系
Clear Coat 车漆、钢琴烤漆 PBR 双层扩展
Translucent / Refractive 挡风玻璃、镜头、水杯 折射 + IOR;实时常近似
Subsurface Profile 皮肤、蜡、橡胶 BSSRDF,非普通 BRDF
Unlit / Emissive HUD、标定板、天空盒 无光照计算
Lambert / Diffuse Only 部分 LiDAR 反射建模 快但不守恒
Retro-reflective 道路标线、反光带 逆反射,需自定义 BRDF/IES
Volume 雾、烟、霾、大气 参与介质,非表面 shader

仿真双目标 :人眼可视化要「像」;传感器仿真还要 反射率曲线、Retro 角度响应、雾的散射相位函数 等------同一 Mesh 上可能 渲染用 PBR + 传感器用简化 BRDF 双材质 ID。


12. 引擎侧分类速览

引擎 / 场景 常见材质 / Shader
Unreal Engine Default Lit(PBR)、Clear Coat、Subsurface / Profile、Translucent、Unlit、Masked、Volume Fog
Unity HDRP Lit 通过 Material Type 切换 Standard / Subsurface / Anisotropic / Iridescence 等,本质仍是 Principled 家族变体;另有 Fabric / Hair / Eye、Unlit、Decal、Volume
Blender(Cycles/Eevee) Principled BSDF:Base + Subsurface/Radius + Coat/IOR + Sheen + Thin Film + Emission 等于 OpenPBR Surface 一体化栈
自动驾驶仿真(CARLA、VTD、PreScan 等) 车身 PBR ;标线 Retroreflective ;信号灯 Emissive ;部分传感器 Lambert ;天气 Volumetric Fog

一句话对照:

  • Emission = 自己发光,不依赖外界亮度。
  • Subsurface = 光透入再散出,做皮肤 / 蜡 / 叶 / 玉。
  • PBR = 主流通用不透明表面 模型;仿真里常与折射、体积、逆反射等并存

13. 常见问题与反模式

现象 常见原因 处理
整体发灰、无对比 Albedo 过暗;或 AO 乘进直射光 提高 Base Color;AO 只影响间接项
高光过曝、发白 sRGB 贴图未转 linear;Roughness 反相 检查导入设置;ORM 通道顺序
金属像塑料 Metallic 非 0/1;Albedo 过饱和 二值化 Metallic;金属用合理反射色
塑料像金属 Metallic 残留灰度;F0 被错误提高 清理 Metallic 贴图
Normal 看起来「假」 强度过高;OpenGL/DX 绿通道反了 降强度或重烘焙;Flip Y
玻璃全黑/全透明 Blend 排序;无 IBL;无 Transmission 调整渲染队列;补环境光;开折射
仿真与实车色差大 Tone mapping / 曝光 / 色域不一致 对齐相机 ISP 与 ACES / sRGB 输出
远处闪烁 Alpha Blend 植被;Mipmap 与 Alpha 改 Alpha Clip;Alpha to Coverage

反模式速记:在 Albedo 里画阴影、把 AO 烘焙进 Base Color、用 Emission 代替照明、全场景 Metallic 中间灰、用 Specular 贴图手绘高光(Cavity 误用)、不看 HDRI 就定稿。


14. 延伸阅读


参数范围为常见工程经验值;不同引擎对 Roughness→α 映射、Emission 单位与 tone mapping 可能不同,请以目标引擎文档与 Lookdev 场景为准。文中「PBR 材质」均指遵循 PBR 原则的着色与工作流,非单一材质分类。