本文首發(fā)于“洪流學(xué)堂”微信公眾號。
洪流學(xué)堂,讓你學(xué)Unity快人幾步。你好,我是你的技術(shù)探路者鄭洪智,你可以叫我大智(vx: zhz11235)。
洪流學(xué)堂公眾號回復(fù)節(jié)點(diǎn),獲取ShaderGraph節(jié)點(diǎn)詳解PDF文件(帶目錄)。
Shader一直是Unity開發(fā)者的一個(gè)難關(guān),涉及到數(shù)學(xué)、圖形學(xué)、shader語法等多個(gè)難題。不過,ShaderGraph來拯救你了!Unity2018的一個(gè)重磅功能是ShaderGraph,通過可視化界面拖拽就可以實(shí)現(xiàn)著色器的創(chuàng)建和編輯。

配置使用ShaderGraph
目前最新版本Unity(2019.3)中的Shader Graph正式版支持URP(原LWRP)和HDRP,自定義的pipeline需要自行實(shí)現(xiàn)一些節(jié)點(diǎn)。
在Unity 2018后,Unity采用了PackageManager來管理Unity的眾多新功能,包括Shader shader包和Lightweight Render Pipeline包。
1、下載最新的Unity(建議2019.1及以上版本),建議通過UnityHub安裝,下載地址是:
MAC:https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.dmg
Windows:https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe
2、安裝Lightweight Render Pipeline和ShaderGraph包。
在新工程中使用ShaderGraph
如果是新建工程,在新建工程時(shí)選擇Universal Project Template或者Hight-Definition RP模板,工程中會自動包含ShaderGraph及其依賴的功能包。

URP和Hight-Definition RP是Unity新加入的兩種可編程渲染管線,目前我們不用過多了解,知道如何使用即可。主要區(qū)別是:
- URP適用于所有平臺
- Hight-Definition RP適用于PC或游戲主機(jī)等計(jì)算性能好的平臺,對畫質(zhì)要求很高的畫選這個(gè),目前基本不支持移動平臺
在已有工程中使用ShaderGraph
1、在已有工程中使用ShaderGraph需要手動安裝安裝Render Pipeline和ShaderGraph相關(guān)的包。
有兩種方式:
1)在菜單欄Window > Package Manager打開Packages窗口。需要安裝Shadergraph包和Universal RP包(2019.3之前叫Lightweight RP)。

2)通過手動設(shè)置Unity工程下Packages/manifest.json文件

目前通過Package Manager只能下載最新版本的包,而通過manifest文件可以設(shè)置使用任意版本的包。如果有時(shí)候新版本的包和Unity版本不兼容的話,可以通過manifest文件回退到之前的舊版本。
【常見問題1】Package Manager界面左下角一直在Loading怎么辦?
這是由于國內(nèi)的網(wǎng)絡(luò)原因,通常切換網(wǎng)絡(luò)即可解決。比如使用寬帶無法加載出來時(shí),可以嘗試切換到4G/5G手機(jī)熱點(diǎn),如果再不行可以嘗試翻墻。
大智這邊切換到聯(lián)通4G熱點(diǎn)是可以刷新出來的。

【常見問題2】已有工程切換到URP/HDRP后材質(zhì)都變成洋紅色怎么辦?
在菜單欄Edit > Render Pipeline > Universal Render Pipeline > Upgrade ...可自動更新工程中的材質(zhì)。但是只能更新Unity自帶的Shader,自定義Shader需要自己修改哦。

2、創(chuàng)建設(shè)置SRP(可編程渲染管線)
1)菜單欄Assets > Create > Rendering>Universal Pipeline Asset,會創(chuàng)建出來一個(gè)文件,這是渲染管線的配置文件。

2)在菜單欄 Edit > Project Settings > Graphics中設(shè)置剛才的SRP文件

經(jīng)過這些設(shè)置,現(xiàn)在就可以開始使用ShaderGraph了!
創(chuàng)建ShaderGraph文件
通過菜單欄 Create > Shader > *** Graph 可以創(chuàng)建ShaderGraph文件,會在Project創(chuàng)建一個(gè)graph文件。

PBR Graph PBR圖
Sub Graph 子圖,用于創(chuàng)建一些可復(fù)用的節(jié)點(diǎn)
Unlit Graph 不受光照的圖
ShaderGraph窗口
我們先創(chuàng)建一個(gè)PBRGraph來看一看。雙擊graph文件即可打開ShaderGraph窗口。

ShaderGraph的圖是以節(jié)點(diǎn)和連線組成的,默認(rèn)創(chuàng)建出來會有一個(gè)Master Node(主節(jié)點(diǎn))。你可以通過把其他節(jié)點(diǎn)連接到Master Node來創(chuàng)造你想要的效果。
編輯節(jié)點(diǎn)的屬性
如下圖所示,你可以通過編輯默認(rèn)的數(shù)值快速改變物體的表面屬性。

添加節(jié)點(diǎn)
添加紋理和其他復(fù)雜的交互操作,只要右鍵點(diǎn)擊并選擇“Create Node”。

連接節(jié)點(diǎn)
通過拖拽對應(yīng)的值即可創(chuàng)建連線。

創(chuàng)建輸入變量
一個(gè)shader當(dāng)然必不可少要有輸入的變量了,這在ShaderGraph中也很簡單。

使用輸入變量
你可以給輸入變量設(shè)置一個(gè)默認(rèn)值,方便調(diào)試。

在Graph中使用這個(gè)變量也很簡單,只需要將變量拖入圖中,和其他節(jié)點(diǎn)創(chuàng)建連線即可。

自定義預(yù)覽模型
ShaderGraph右下角有一個(gè)預(yù)覽窗口,可以選擇內(nèi)置的5種和自定義的模型來更好的預(yù)覽Shader的效果。

材質(zhì)球使用Shader
Shader調(diào)好以后,當(dāng)然最最終要應(yīng)用到材質(zhì)球上。材質(zhì)球的Shader選擇菜單中會多出一個(gè)graphs的類別,下面就是你創(chuàng)建的ShaderGraph對應(yīng)的shader。

總結(jié)
本文講了如何配置、創(chuàng)建、編輯、使用ShaderGraph。后面幾天我將通過實(shí)例的方式講解ShaderGraph如何實(shí)戰(zhàn)應(yīng)用。
洪流學(xué)堂公眾號回復(fù)節(jié)點(diǎn),獲取ShaderGraph節(jié)點(diǎn)詳解PDF文件(帶目錄)。