AmplifyShader Dissolve Shader

Dissolve, 溶解,網路上應該可以找到很多類似的範例,這邊就所呈現的效果去分析記錄製做的方式。
可以應用在一般的 Mesh 上,也可以稍微變形使用在 Particle 上。

* 首先看一下最終的成像:

* 分析成像的組成:

        1. 一張主要的貼圖
        2. 溶解 → Alpha
        3. 溶解  RGB 染色
        4. 溶解 → 對 3. 加上 UV Flow

* 1. 一張主要的貼圖

          -- 1.1 一開始很簡單的置入一張主要貼圖,要來被溶解用,只取其 RGB,W/Alpha可以先設定為1就可以,之後要對W做溶解的效果

* 2. 溶解 → Alpha: 淡出的溶解 ( 1~0 ) 效果

          -- 2.1 一張 Noise 貼圖與一個 Input 0~1 數值經過反向後,重新映射的值相加 (圖B,沒反向映射相加 (圖A
          -- 2.2 將 2.1 輸出結果再一次重新映射取得新範圍值 (圖C
          -- 2.3 將 2.2 輸出結果限定在 0~1 間
                   -- RGB 輸出: 可以看到如分析成像組成 2 的結果 ( 方便觀察溶解的行為而已 )
                   -- Alpha 輸出: 才是我們要的最終結果



    -- Remap Node: 將 Input 根據區域範圍重新映射取得一個新值,公式如下圖


* 3. 溶解 → RGB 染色

          -- 3.1 步驟 2 溶解 -- Alpha 是拿來當遮罩,其實也是可以拿來再次利用,對遮罩的邊緣做染色,將 2.3 輸出反轉
                    (圖A,與一個顏色相乘即可做到單純染色 (圖B


          -- 3.2 要讓色彩更豐富,可以多一個圖層 (圖B,來增加染色的豐富度 (圖C


* 4. 溶解 → 對 3. 加上 UV Flow

         步驟 2 與 步驟 3 都是在拿 Noise 貼圖做溶解染色與遮罩,不過目前這是靜態的,要讓溶解部位更生動,可以使用 UV 
         Flow

          -- 4.1 新增一張 Normal 貼圖 (圖A,使用 Panner 來進行 UV 流動
                  -- Input UV: Normal UV,使用 Texture Coordinates, Reference Normal Texture
                  -- Input Speed" Normal Offset, 使用 Texture Transform, Reference Normal Texture

          -- 4.2 開放一個數值來控制流動強度,與 4.1 取 XY 相乘,這樣就有一個透過 Normal 貼圖的 UV 流動 (圖B


          -- 4.3 將 4.2 的輸出結果直接指定給 Noise 貼圖的 UV 會發現怪怪的,因為我們應該要把這個輸出結果當成對現有 UV 
                   的疊加,而不是單純取代,所以還要加上原有UV (Texture Coordinates)才是正確的結果

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
         要應用在 Particle System 上,要將 2.1 的 0~1 範圍的 Input 拿掉,用 Vertex Color Alpha 取代

留言

這個網誌中的熱門文章

UE4: Spine2D 導入與基本使用