Unity之PBR两种工作流简介
关于PBR工作流,看下unity内置shader的设定:
可以看到有2种工作流,Specular和Metallic。它们的区别如下:
也就是前者用了一张Specular Map,后者用的是Metallic Map。那么它们的不同点总结如下:
Specular WorkFlow
1. Diffuse Color 直接从 Base Map 中获得
2. Specular Color 从 Specular Map 贴图中获得
3. 没有金属和非金属的概念
Metallic WorkFlow(主流)
1. Diffuse Color 和 Specular Color 由 Base Map、Metallic Mask两张贴图解码得到。如何解码:
float metallic = MetallicMap.r;
float3 diffuseColor = baseMap.rgb * (1 - metallic );
float3 specularColor = lerp(0.04, baseMap.rgb, metallic);
2. 改良,加入Specular接口:
float3 specularColor = lerp(0.08 * Specular, baseMap.rgb, metallic);
3. 由上我们可以得知,金属与非金属的区别如下:
非金属:有漫反射颜色,从BaseMap中获取,高光反射率很低,高光颜色为纯色,近似值为0.04
金属:无漫反射颜色,高光颜色为彩色,高光颜色从BaseMap中获取