主流的工作流
Metallic WorkFlow
- 首先需要BaseMap(albedo)和Metallic Mask 两张贴图
- DiffuseColor 可以通过albedo * (1 - metallic)得到,金属的Diffuse = 0
- SpecularColor F0 可以通过lerp(0.04,albedo,metallic)得到,非金属反射率很低,统一近似0.04,也就钻石比较高,需要额外修改。
- 反射率 1.0-(1-metallic)*(1.0-0.04)用于计算IBL的反射,结合Roughness用来计算F90时候的反射率
- ue 内置pbr对Specular进行了改良,增加了Specular节点,lerp(0.08 * Specular, BaseColor,Metallic);默认值 0.5,其实0.5*0.08 也是 0.04 。 这样可以修改specular来实现模拟钻石。
能成为主流的主要原因是能省一张图片吧。
Specular WorkFlow
- DiffuseColor 可以直接从Albedo贴图中获得
- SpecularColor F0 从SpecularColorMap中获取
- 没有金属和非金属的概念
- 能量守恒 DiffuseColor+SpecularColor 小于等于1
- 在unity中,光滑度一般可以放到DiffuseMap的透明通道或者SpecularMap的透明通道
- 法向贴图
- ao贴图
paragon WorkFlow
需要三张贴图:
ID Mask 用于表示区域 污渍Mask 划痕Mask
- DIffuseColor 由三种贴图混合得到标记区域,从shader中直接计算对应的数值。
- SpecularColor F0 由三种贴图混合得到标记区域,从shader中直接计算对应的数值。
- 使用这种,颜色直接指定特定的颜色,可以实现多种颜色变化。