ShaderGraph方向性Dissolve製作(一)

這篇筆記主要紀錄shader graph 製作方向性dissolve效果邏輯,效果如下。

(圖一) 消散效果
(圖二) 串接圖

基本概念我們要思考這功能需要那些通道,透過Emission/Alpha/AlphaClipThreshold這三個通道可達成此效果。
Emission 自發光
Alpha 透明區域
AlphaClipThreshold 透明消散的變化

再來思考效果運用到哪些東西,
1. 雲狀消散效果 —->Noise
2.消散邊緣有自發光 —>color
3.消散的方向性—>定義object的位置(position),Vector3

因為1跟2在技術上簡單解決,這邊主要以3做筆記,首先要定義消散的起點與終點,需在Black board定義兩個Vector3(圖三)

(圖三) 定義起點與終點

Lerp(內差),因為要做起點跟終點的變化,Lerp主要就是判定兩數值之間的變化,Lerp 有A B T三點,A與B是連接兩個數值點,T則是變化的觸發器,本例是用slider連結T(圖四)。

Subtract(減去),因為要計算每個頂點法向量的位置,因此用 終點-起點 便可以得到目前變化位置(理論不太懂,用背的) (圖四) 。

(圖四)。

Position(位置),這個屬性可以告訴Shader東西在引擎中的位置,判斷依據有world/object/view/tangent,依效果需求選擇判斷方式,在這個效果中,我們用Lerp與Position做相減(subtract),得到物體在內差過程中,消散的位置。(圖五)

(圖五)

以原理來看以(圖六)為例,圓球左邊是start,右邊是end,光有Lerp只算出內差,但還不知道要在那些vertex座內差效果,因此定義position並與Lerp做相減,得知消散的範圍。(圖六)

(圖六) Position與Lerp相減的結果

前面用End Position -Start Position 得知目前的法向量,但在判定上還需要讓這個向量單位畫,舉例可能以四捨五入來計算0.5以下算0,以上算1,總之結果只有0跟1。(圖七)

(圖七)Normalize

消散效果的最後,我們要接上一個Dot Product(點積),這原理上也很複雜看不懂,但也是背起來,因為要串接上Dot Product,可以從畫面中看到消散的方向是否正確。(圖八)

(圖八) Dot Product

接下來一篇再筆記如何跟Noise還有自發光做結合。

發表留言