Unity材質(zhì)神器 [Amplify Shader Editor]
Amplify Shader Editor的功能
Amplify Shader Editor是行業(yè)領(lǐng)先開放且緊密集成的解決方案,它提供了一個Unity開發(fā)者易于上手的開發(fā)環(huán)境,可以與Unity編輯器和著色器使用無縫融合。通過這款工具,開發(fā)者能輕松實(shí)現(xiàn)AAA級質(zhì)量的作品,并能靈活地應(yīng)用在任何Unity項(xiàng)目開發(fā)之中,進(jìn)而大大縮短了制作團(tuán)隊(duì)在美術(shù)效果上的迭代時間。而這些也正是其在Asset Store資源商店上如此暢銷的重要原因。

通過這款插件,您有可能實(shí)現(xiàn)一些AAA級場景的驚人效果,例如:






不僅如此,它還含有更多特效等您發(fā)現(xiàn)。

下載鏈接:https://www.assetstore.unity3d.com/en/#!/content/68570
下面就一起來學(xué)習(xí)一下Amplify Shader Editor的使用方法吧!
安裝
安裝Amplify Shader Editor只要以下三步就可以完成。
1. 第一步
打開Unity項(xiàng)目工程,雙擊您下載好的文件中的Amplify Shader Editor.unitypackage導(dǎo)入工程中。

或者通過依次點(diǎn)擊 Assets → Import Package → Custom Package…,選擇Amplify Shader Editor.unitypackage進(jìn)行導(dǎo)入。

?2. 第二步
在Unity解包進(jìn)度條結(jié)束后,在“Importing package”窗口全選所有項(xiàng)目并點(diǎn)擊“Import”按鈕導(dǎo)入所有資源。

?3. 第三步
為了更好地理解,一起了解一下Amplify Shader Editor目錄結(jié)構(gòu):

從項(xiàng)目目錄中我們可以發(fā)現(xiàn),Amplify Shader Editor預(yù)先提供了不少著色器示例,每個示例都有單獨(dú)Scene(場景)做展示,可以供使用者根據(jù)自身需要使用。
編輯界面簡介
1. 打開Amplify Shader Editor編輯器界面

依次點(diǎn)擊Window → Amplify Shader Editor → Open Canvas打開編輯器畫布(Canvas)界面;或者可以雙擊Amplify Shader Editor(下文簡稱ASE)材質(zhì)或著色器自動打開畫布界面。
2. 創(chuàng)建Amplify表面著色器(Surface Shader)

在項(xiàng)目(Project)界面選中資源文件夾的情況下,依次點(diǎn)擊 Assets → Create → Shader → Amplify Surface Shader創(chuàng)建;或者依次點(diǎn)擊右鍵 → Create → Shader → Amplify Surface Shader進(jìn)行創(chuàng)建。
3. 打開ASE著色器
雙擊ASE著色器文件可以在ASE畫布中打開它。

或者您可在選擇ASE著色器文件的情況下,通過檢視面板(Inspector)的“Open in Shader Editor”按鈕打開文件。

4. 著色器文件名命名
您可以直接在節(jié)點(diǎn)屬性(Node Properties)選項(xiàng)卡的著色器名稱(Shader Name)項(xiàng)目進(jìn)行著色器文件名的設(shè)置,可以使用正斜杠(/)分隔符添加自己的類別。

注意:著色器文件名是唯一的,必須在項(xiàng)目(Project)界面中手動設(shè)置。實(shí)際上,將文件名與實(shí)際著色器可以使用不同名稱。
5. 定位ASE著色器

此區(qū)域在畫布的左下角,顯示當(dāng)前的著色器,單擊這塊可以將這個ASE著色器在項(xiàng)目界面中定位出來。綠框的邊緣顯示提示當(dāng)前打開的著色器。
6. 查看ASE材質(zhì)
雙擊ASE材質(zhì)文件可以在ASE畫布中打開它。

7.定位ASE材質(zhì)文件

與ASE著色器操作相同的是,單擊左下角也能定位對應(yīng)ASE著色器文件,單擊右下角可以定位對應(yīng)ASE材質(zhì)文件,而且ASE材質(zhì)的話是藍(lán)色框體的邊緣顯示。
畫布的UI交互
1. 節(jié)點(diǎn)屬性界面



通過單擊畫布中的各個節(jié)點(diǎn)(Node),被選中的節(jié)點(diǎn)會呈現(xiàn)橙色框高亮狀態(tài)。該節(jié)點(diǎn)的屬性就會在畫布左側(cè)的節(jié)點(diǎn)屬性界面中顯示出來,您可以根據(jù)需要調(diào)整節(jié)點(diǎn)的屬性。如果未選擇節(jié)點(diǎn)或多個節(jié)點(diǎn),則顯示主節(jié)點(diǎn)的屬性。
如有需要,可以通過點(diǎn)擊界面右上角的“-”按鈕,將界面最小化;通過點(diǎn)擊“方塊”按鈕將界面恢復(fù)。

?2. 畫布頂端區(qū)域
畫布左上區(qū)域 — 四個基本操作按鈕:





畫布右上區(qū)域 — 兩個界面調(diào)整按鈕:

回歸按鈕:選中并定位主節(jié)點(diǎn)

您也可以通過雙擊左鍵或者雙擊鍵盤“F”鍵,進(jìn)行畫布界面的自動縮放。
?3. 節(jié)點(diǎn)選擇板界面


4.快捷鍵直接創(chuàng)建節(jié)點(diǎn)
畫布上還有一個重要操作就是可以按住快捷鍵,然后單擊畫布上的任意位置以創(chuàng)建新節(jié)點(diǎn)。一般在節(jié)點(diǎn)選項(xiàng)板界面中快捷鍵會顯示對應(yīng)節(jié)點(diǎn)名稱右側(cè)的“[]”內(nèi)。比如:數(shù)字鍵“1”用于浮點(diǎn)(Float)節(jié)點(diǎn),數(shù)字鍵“5”則是創(chuàng)建顏色(Color)節(jié)點(diǎn)。

5. ASE處理數(shù)據(jù)流

從上圖我們可以發(fā)現(xiàn),ASE的數(shù)據(jù)流處理是從左至右的,即輸入端口 → 處理數(shù)據(jù) → 輸出端口。只有直接或間接連接到主節(jié)點(diǎn)的節(jié)點(diǎn)才會被分析,并用于最終生成著色器指令。如果節(jié)點(diǎn)包含未連接的輸入端口,ASE將在處理階段使用內(nèi)部數(shù)據(jù),而這些內(nèi)部數(shù)據(jù)值可以通過節(jié)點(diǎn)屬性界面進(jìn)行編輯。
6. 可視化編輯重要元素

選擇節(jié)點(diǎn):節(jié)點(diǎn)可以通過單擊左鍵或左鍵拖動框選擇。 通過按住“Shift”鍵并單擊它,可以從選擇中添加或刪除節(jié)點(diǎn)??梢园础癈TRL/CMD + A”進(jìn)行全選。您也可通過在節(jié)點(diǎn)畫布上的空白處單擊左鍵來取消選擇所有內(nèi)容。按住左鍵并拖動則可以移動所選節(jié)點(diǎn)。當(dāng)節(jié)點(diǎn)不需要的時候,可以選中節(jié)點(diǎn)按鍵盤delete鍵進(jìn)行刪除。
連線:通過按住“Alt”鍵并單擊節(jié)點(diǎn)端口,或?qū)⑦B接拖動到畫布空白處再點(diǎn)擊左鍵,就可以刪除連線。當(dāng)連線有完整的前后端口連接,它就會高亮顯示,表示它擁有從左至右完整的數(shù)據(jù)流。
連接:單擊左鍵就可以創(chuàng)建連接,拖拽連線從輸出端口到輸入端口,或者從空輸入端口到輸入端口就可以完成連接。您還可以點(diǎn)擊完整連線的端口進(jìn)行切斷,并拖到另一個端口形成新的連接。將連線拖到畫布空白空間,會自動彈出快捷節(jié)點(diǎn)選項(xiàng)板界面,可以根據(jù)需要選擇節(jié)點(diǎn)類型建立新的連接。
端口:輸出端口可以連接多個輸入端口,但是輸入端口只接受單個輸入。連線還會自動捕捉到鼠標(biāo)光標(biāo)附近的端口。有效端口的區(qū)域很大,使得操作更為舒適。您甚至可以直接將連線放到端口名稱上。
視圖:按住右鍵或者中鍵可以平移整個畫布的視圖。當(dāng)選中的框體或節(jié)點(diǎn)離開了可視范圍后,畫布將自動滾動。您還可通過滾輪放大或縮小視圖顯示,縮放的大小是根據(jù)畫布上節(jié)點(diǎn)布局而定的。
兩側(cè)界面:當(dāng)ASE整體界面的寬度小于750px時,節(jié)點(diǎn)屬性界面和節(jié)點(diǎn)選項(xiàng)板界面會自動最小化。
材質(zhì)模式與著色器模式

您可以選中使用ASE的著色器模式或者材質(zhì)模式,這主要取決于您加載著色器文件的方式。通過畫布的框體輪廓顏色來判斷,綠色輪廓代表著色器模式,藍(lán)色則為材質(zhì)模式。

在著色器中設(shè)置的值通常稱為默認(rèn)值(Default Value)。對任何給定著色器的默認(rèn)值所做的任何更改將自動影響使用它的所有材料。當(dāng)同時編輯材質(zhì)和著色器時,請密切注意哪些值正在被改變。

與著色器中的默認(rèn)值不同,材質(zhì)值可以是唯一的。 材料值僅在材料模式(材質(zhì)和著色器打開)下工作時顯示。只有表示變量(顏色Color,浮點(diǎn)數(shù)Float,整數(shù)型Int,向量Vector,矩陣Matrix)的節(jié)點(diǎn)有一個Parameter Type下拉菜單,可以設(shè)置為Property。選擇屬性或統(tǒng)一參數(shù)類型時,默認(rèn)值始終復(fù)制到材質(zhì)值。每種材料都可以調(diào)整,以便創(chuàng)建無限數(shù)量的變化,同時仍然使用相同的著色器。您可以將材質(zhì)視為著色器實(shí)例,每個實(shí)例都是唯一的,但使用相同的默認(rèn)值集創(chuàng)建。

如上圖所示,您可以使用相同的ASE著色器在材質(zhì)之間進(jìn)行屬性值的復(fù)制與粘貼。“Open in Shader Editor”按鈕也提供了快速打開Amplify Shader Editor去編輯著色器和材質(zhì)的方法。

除了通過“Open in Shader Editor”按鈕以ASE編輯著色器,您還可以選擇點(diǎn)擊“Open in Text Editor”按鈕,使用文本編輯器來修改著色器。
可視化調(diào)試模式
啟用這個模式的方式是,按住鍵盤P鍵,就可使用可視化調(diào)試模式查看節(jié)點(diǎn)網(wǎng)絡(luò)。雙擊P鍵進(jìn)行切換。
主節(jié)點(diǎn)詳解
其中大部分內(nèi)容參考Unity著色器官方文檔:https://docs.unity3d.com/Manual/SL-Reference.html
1.主屬性(Main Properties)

著色器類型(Shader Type):此區(qū)域顯示所使用的當(dāng)前著色器類型。
著色器名稱(Shader Name):可編輯文本框,定義著色器的名稱和路徑。使用正斜杠“/”定義其類別和名稱,例如UserSamples / EnvironmentGradient。請注意,此框中顯示的名稱與文件名不同,必須單獨(dú)設(shè)置。
光照模型(Light Model):定義表面如何反射光,通常稱為所使用的著色器類型。 ASE目前提供標(biāo)準(zhǔn)(金屬 Standard(Metallic))、標(biāo)準(zhǔn)鏡面(Standard Specular)、Lambert和Blinn Phong。
著色器模型(Shader Model):當(dāng)編寫表面著色器或常規(guī)著色器程序時,HLSL源可以編譯成不同的“著色器模型”。更高的著色器編譯目標(biāo)允許使用更多的現(xiàn)代GPU功能,但可能使得著色器不能在較舊的GPU或平臺上工作。
精度(Precision):定義內(nèi)部計(jì)算的精度,使用較低類型提供了額外的性能提升以換取一些精度。默認(rèn)設(shè)置為Float。
剔除模式(Cull Mode):Front – 剔除前向幾何體,Back – 剔除后向幾何體,關(guān)閉 - 禁用剔除(雙面材料)。默認(rèn)情況下設(shè)置為Back。
渲染路徑(Render Path):允許您定義著色器支持哪種模式(提前Forward / 延時Deferred)。默認(rèn)設(shè)置為全部。
投射陰影(Cast Shadows):定義使用著色器的對象是否投射陰影。
接收陰影(Receive Shadows):定義使用著色器的對象是否接收陰影,這包括自陰影(只有使用正向渲染)。
隊(duì)列索引(Queue Index):渲染隊(duì)列偏移值,接受正(較晚)和負(fù)(較早)整數(shù)。
自定義編輯器(Custom Editor):自定義檢查器允許您自定義ASE材料檢查器。
2. 混合模式(Blend Mode)

混合模式(Blend Mode):所選模式自動調(diào)整可用參數(shù);不透明(Opaque),遮罩(Masked),透明(Transparent),Alpha預(yù)乘(Alpha??Transparent)或自定義(Custom)。
渲染類型(Render Type):該標(biāo)記將著色器分為幾個預(yù)定義組。可用標(biāo)簽:不透明(Opaque),透明(Transparent),透明摳出(Transparent Cutout),背景(Background),覆蓋(Overlay),不透明樹(Tree Opaque),透明樹剪出(Tree Transparent Cutout),布告板樹(Tree Billboard),草和布告板草皮(Grass and Grass Billboard)。
渲染隊(duì)列(Render Queue):為了獲得最佳性能,通過幾何體渲染隊(duì)列排布,從而優(yōu)化對象的繪制順序。所有其他渲染隊(duì)列按距離對對象進(jìn)行排序,從最遠(yuǎn)的那些開始渲染,并以最接近的結(jié)束。可用選項(xiàng)有背景、幾何、Alpha測試、透明和覆蓋。
掩碼片段值(Mask Clip Value):要與不透明度alpha比較的默認(rèn)值。 0完全不透明,1完全掩蔽。默認(rèn)設(shè)置為0,常用于透明摳出(Transparent Cutout)材質(zhì)。
混合RGB和混合Alpha(Blend RGB and Blend Alpha):當(dāng)渲染圖形時,在所有著色器執(zhí)行并且所有紋理都應(yīng)用后,像素被寫入屏幕。它們?nèi)绾闻c已經(jīng)存在的內(nèi)容組合由Blend命令控制。 ASE目前提供定制、Alpha混合(Alpha Blend)、預(yù)乘(Premultiplied)、加法(Additive)、軟加法(Soft Additive)、乘法(Multiplicative)和2x乘法(2x Multiplicative)模式。
混合因子(Blend Factor)(SrcFactor & DstFactor):以下所有屬性都適用于混合命令中的SrcFactor&DstFactor。源指的是計(jì)算的顏色,目標(biāo)是已經(jīng)在屏幕上的顏色。如果BlendOp使用邏輯運(yùn)算,則忽略混合因子。

混合操作RGB和混合操作Alpha(Blend Op RGB & Blend Op Alpha):添加(Add)、子(Sub)、修改子(Rev Sub)、最?。∕in)和最大(Max)。
顏色蒙版(Color Mask):設(shè)置顏色通道寫入蒙版,將其全部關(guān)閉使其不可見。
3.模板緩沖(Stencil Buffer)

模板緩沖器可以用作每像素掩模的通用目的,用于保存或丟棄像素。它通常是每個像素8位整數(shù)。該值可以寫入、遞增或遞減。 后續(xù)繪制調(diào)用可以根據(jù)該值進(jìn)行測試,以決定是否應(yīng)該在運(yùn)行像素著色器之前丟棄該像素。
參考(Reference):要比較的值和/或要寫入緩沖區(qū)的值(如果Pass,F(xiàn)ail或ZFail設(shè)置為替換)。范圍是0-255整數(shù)。
讀取掩碼(Read Mask):作為0-255整數(shù)的8位掩碼,用于將參考值與緩沖區(qū)(referenceValue&readMask),比較方法comparisonFunction(stencilBufferValue&readMask)的內(nèi)容進(jìn)行比較。默認(rèn)值是255。
寫掩碼(Write Mask):8位掩碼,作為0-255整數(shù),寫入緩沖區(qū)時使用。默認(rèn)值是255。
比較(Comparison):用于將參考值與緩沖區(qū)的當(dāng)前內(nèi)容進(jìn)行比較的函數(shù)。默認(rèn)值是always。
通過(Pass):如果模板測試(和深度測試)通過,對緩沖區(qū)的內(nèi)容做什么。默認(rèn)值是keep。
失敗(Fail):如果模板測試失敗,對緩沖區(qū)的內(nèi)容做什么。默認(rèn)值是keep。
ZFail(ZFail):如果模板測試通過,則緩沖區(qū)的內(nèi)容如何處理,但深度測試失敗。默認(rèn)值是keep。
4. 曲面細(xì)分(Tessellation)

馮氏曲面細(xì)分(Phong):修改細(xì)分面的位置,使得生成的面稍微跟隨網(wǎng)格法線,默認(rèn)設(shè)置為OFF。
類型(Type):定義所使用的技術(shù),基于距離、固定、邊長和邊長Cull。
曲面細(xì)分因子(Tess):范圍是1-32。
最小值(Min):最小細(xì)分距離。
最大值(Max):最大細(xì)分距離。
5. 深度(Depth)

ZWrite模式(ZWrite Mode):控制來自此對象的像素是否寫入深度緩沖區(qū)(默認(rèn)為開)。如果你畫的是實(shí)體對象,請保持此狀態(tài)。如果您繪制半透明效果,請切換到ZWrite Off。
ZTest模式(ZTest Mode):如何進(jìn)行深度測試。默認(rèn)值為LEqual(將對象從現(xiàn)有對象或遠(yuǎn)距離繪制為現(xiàn)有對象;隱藏其后面的對象)。 ASE提供ZTest 小于(Less)、大于(Greater)、小于等于(LEqual)、大于等于(GEqual)、等于(Equal)、不等于(NotEqual)和通常(Always)。
偏移(Offset):允許您使用兩個參數(shù)指定深度偏移 — 因子和單位。因子相對于多邊形的X或Y縮放最大Z斜率,單位縮放最小可分辨深度緩沖區(qū)值。這允許您強(qiáng)制一個多邊形繪制在另一個頂部,雖然它們實(shí)際上在相同的位置。例如,偏移(0,-1)拉動多邊形更接近相機(jī)忽略多邊形的斜率,而偏移(-1,-1)將拉近多邊形,看看掠角。
因子(Factor):相對于多邊形的X或Y,縮放最大Z斜率。
單位(Units):單位縮放最小可分辨深度緩沖區(qū)值。
6. 渲染平臺(Rendering Platforms)
定義支持哪些平臺, 默認(rèn)設(shè)置為全部。

7. 可用屬性(Available Properties)
設(shè)置為屬性(Property)的變量將在此部分中列出,您可以通過拖動它們來調(diào)整它們的位置。

?
動手實(shí)現(xiàn)第一個ASE著色器

1. 第一步
在項(xiàng)目窗口右鍵 → Create → Shader → Amplify Surface Shader創(chuàng)建ASE著色器,并重命名為MyShader。右鍵 → Create → Material創(chuàng)建材質(zhì),重命名MyMaterial。選中MyShader,在檢視面板(Inspector)點(diǎn)擊“Open in Shader Editor”打開ASE編輯器。在“節(jié)點(diǎn)屬性界面”將著色器的名稱修改為“MyCollection/Shader1”并保存。您可以將材質(zhì)拖到畫布的“Material”上建立關(guān)聯(lián)。

2.第二步
修改“光照模型”為Standard Specular。

3.第三步
在畫布右鍵打開“快捷節(jié)點(diǎn)選項(xiàng)板界面”,輸入“Lerp”,點(diǎn)擊生成Lerp節(jié)點(diǎn),將其輸出節(jié)點(diǎn)連接到主節(jié)點(diǎn)的Albedo的輸入端口上。

4.第四步
鍵盤按下5鍵,左鍵單擊畫布,快捷生成Color節(jié)點(diǎn);或者可以在右邊的“節(jié)點(diǎn)選項(xiàng)板界面”搜索Color,找到并添加到畫布上。

5.第五步
選中新生成的Color節(jié)點(diǎn),點(diǎn)擊”CTRL / CMD + D”復(fù)制它。將兩個節(jié)點(diǎn)連接到Lerp輸入端口。將第一個節(jié)點(diǎn)設(shè)置為灰色連接到A節(jié)點(diǎn),將第二個節(jié)點(diǎn)設(shè)置為更鮮艷的顏色連接到B節(jié)點(diǎn)。

6.第六步
通過右邊的“節(jié)點(diǎn)選項(xiàng)板界面”再創(chuàng)建一個Float節(jié)點(diǎn),將其連接到Lerp節(jié)點(diǎn)的Alpha端口。將這個節(jié)點(diǎn)屬性的最小值設(shè)置為0,將最大值設(shè)置為1。請注意,浮點(diǎn)現(xiàn)在可以由滑塊控制。不要忘記將其Parameter Type(參數(shù)類型)設(shè)置為Property(屬性),這樣您就可以直接在材質(zhì)中更改它。現(xiàn)在把它命名為Color Mix。

7. 第七步
創(chuàng)建一個新的浮點(diǎn)并將其連接到主節(jié)點(diǎn)的Smoothness(平滑)輸入端口,將其最小值設(shè)置為0,最大值設(shè)置為1,將其類型設(shè)置為Property,并將其命名為Smoothness Level。 創(chuàng)建另一個浮點(diǎn)并將其連接到Specular(高光)輸入端口,將其最小值設(shè)置為0,最大值設(shè)置為1。將其類型設(shè)置為Property,并將其命名為Specular Level。

8. 第八步
另外再找一張發(fā)現(xiàn)貼圖Brushed,直接從拖到畫布上,這樣就生成了一個法相貼圖的節(jié)點(diǎn),將它連接到主節(jié)點(diǎn)的Normal(法線)輸入端口上。因?yàn)檫@張法線貼圖有種拉絲的金屬質(zhì)感,所以我們得到的著色器會有這樣的效果。
恭喜您!我們成功構(gòu)建了第一個著色器。不要忘記通過單擊位于左上角的更新按鈕定期保存您的工作,或者您可以在啟用LIVE模式的情況下編輯著色器,任何更改都會立即保存和更新。根據(jù)著色器的復(fù)雜性,LIVE模式可能需要一秒左右的時間來更新。與默認(rèn)著色器值相反,對材質(zhì)屬性所做的任何更改都會立即顯示。
原文鏈接:https://gwb.tencent.com/community/detail/120808