Shader Graph學習(一)

前言

在Unity2018.1之後新增了Shader Graph功能。(emmm,現在都2020了,只怪自己平時關注新知識太少了)Shader Graph可以在一個可視化的面板中完成shader功能的實現,一句代碼都不需要寫,大大降低了shader的開發難度。

官方文檔:https://docs.unity3d.com/Packages/[email protected]/manual/index.html

環境

Unity版本2018.1或者更新,同時需要在Package Manager中安裝好URP,HDRP或者LWRP。裝好URP或者其他會自動幫你安裝好Shader Graph Package。

本文用的是Unity2019.3,以及URP

 

創建第一個Shader Graph

Package都安裝好後,我們在Project中右鍵Create->Shader中就可以看見有幾個Graph選項。我們創建一個PBR Graph,就會生成一個.shadergraph的文件,簡單的命名爲PBRGraph,雙擊該文件就可以打開我們的編輯界面。

左邊的面板會顯示我們Shader的可配置參數,右邊的面板會顯示預覽效果,我們可以通過右上角的兩個按鈕來開關它們。

首先先簡單的介紹下下面幾種Graph:

PBR Graph:(physically based rendering)

用於製作基於物理的Shader,可以用於金屬或鏡面效果等。其輸入的值有如圖這些:

Vertex Position 每個頂點在模型空間中座標
Vertex Normal 頂點的法線
Vertex Tangent 頂點的法線切線
Albedo 定義Material的反射率
Normal 定義Material的法線,法線最好在切線空間中
Emission 定義Material的發散效果
Metallic 定義Material的金屬效果
Smoothness 定義Material的光滑程度
Occlusion 定義Material的環境光遮擋值
Alpha 定義Material的alpha值,被用於透明材質或者alpha裁剪
AlphaClipThreshold alpha低於該值的片段會被丟棄

 

Unlit Graph:

用於製作無光照效果的Shader,參數相對比PBR的要來的少

 

Sub Graph:

子模塊,類似於我們代碼中的函數,會有一個Output(也就是return)來輸出值。我們可以通過設置自定義輸出的類型以及個數等。適用於一些模塊會被頻繁使用的時候,可以做成一個Sub Graph,然後在其他地方要使用的時候,添加Node並選擇它即可。

          

 

Material選項

在我們的Master Node上點擊小齒輪按鈕,會出現Material的相關配置選項,如下圖。例如,若我們要使Shader實現透明效果,需要在Surface選項中選擇Transparent

選項 可選值 作用
Precision Inherit / Float / Half 定義精度
Workflow Speculat / Metallic 設置Material的默認工作模式
Surface Opaque / Transparent 定義Material是否透明
Blend Alpha / Premultiply / Additive / Multiply 當Material設置爲透明,定義其混合模式
Fragment Normal Space Tangent / Object / World 定義默認的座標空間值
Two Sided True / False 設置爲true,則Mesh的兩面都會被渲染

言歸正傳,在打開我們創建的PBRGraph編輯界面後,我們可以右鍵來創建Node,這些Node同樣的可以看做是一個個函數,都擁有對應的輸出值,有些Node也會有對應的輸入值。這裏我們先創建一個Color的Node(可以利用搜索功能直接定位),然後將其輸出的值拖到Albedo上,此時預覽界面的效果也隨之變化,點擊左上角的Save Asset保存一下。

接着我們創建一個新的Material,在Shader中選擇我們的PBR Graph,然後替換物體原有的material,就可以看見效果了。

 

添加Property

此時我們無法通過修改Material的參數來修改顏色,解決方法就是利用我們的Properies。進入到我們的編輯界面,我們可以直接在Color節點上右鍵,選擇Convert To Property,這樣就可以將我們的color的值轉換爲一個可以修改的參數,顯示如圖:

        

當然,我們也可以在Properties面板中點擊加號,直接添加參數,然後拖到編輯面板中,進行關聯。保存一下後,就可以發現現在我們可以通過Material來自己調整需要的顏色了。

 

生成Shader文件

我們可以通過在Master面板上右鍵,選擇Copy Shader就可以得到對應的hlsl語法的Shader腳本了。

 

在下一篇我們會通過一個簡單的案例,來更加熟悉Shader Graph和Node

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章