關於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中獲取