Glass Bottle Liquid Shader By ASE

Glass Bottle Liquid Shader,魚眼效果的ㄧ種應用,其實光魚眼自己覺得就可以寫成單獨的ㄧ篇,所以這邊我就不強調是魚眼 Shader,這篇想強調的是應用。


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

這邊看到的是應用在玻璃瓶的藥水上,在學習這個Shader的過程,也想起主管常跟我談的,觀察力,似乎有點明白了什麼! 在這個資訊爆炸海量的年代,要找到類似的佛心原始碼不是大問題,問題在於為什麼人家要這樣做?!


** 特效組同事 su wen 的佛心教學。


* 分析成像的組成: 


        1. 魚眼的效果 (光折射現象): 魚眼是一種光折射現象的結果,這篇不多做贅述,下次獨立寫一篇。我們要製作一個仿魚眼UV來做縮放加成,像下圖右一樣的結果。

      
       利用簡單的數學去製作出類似UV圖中間白→漸層黑到四周的結果,是否有點像上圖右?

ASE串法:

1.1. 將原U, V 各自取出,減0.5
1.2.  自乘取得 白~黑~白 的漸層圖
1.3. 使用  One Minus: 1-input,可以想成像反轉 (* 注意: 僅有input 在 -1~1時適用反轉)                       
                       1.4. 將 UV 再乘起來取得中間白漸層到四周黑的新仿魚眼的UV圖







                       1.5. 將1.4.的仿魚眼UV圖拿來當縮放的加成效果。縮放的原理在之前 "AmplifyShader 簡單 UV 縮放
                        串點" 有提過,這邊多開放一個系數,來控制縮放加成的強度。

                       1.6. 最後用原UV去減掉1.5.加成過的UV,就可以製造出魚眼的效果囉。




        2. 貼圖平行方向 ( U ) 單一方向循環移動

           這步反而單純簡單,只是要清楚要加在哪而已(紅框後),位移可以參考 
           "AmplifyShader 簡單 UV 位移串點"。

ASE串法:


2.1 將步驟1的結果取出 U,這邊偷懶使用 Panner  來實踐,新增一個開放參數來調整移動速度。




        3. 貼圖垂直方向 ( V ) 開放數值控制上下移動
ASE串法:
3.1 將步驟1的結果取出 V,用減的才會有往上推的效果,新增一個開放參數來調整往上推的程度。

        4. 遮罩 ( Mask )
步驟1~3都是在處理UV,遮罩處理的是Alpha,Simple2D儲存最終 RGBA,雖然剛剛步驟1~3的結果
            輸出到 MainTexture 這個 Simple2D內,但這個Alpha不是我們要的。(這張貼圖沒製作Alpha Channel)
ASE串法:
4.1 取出 MainTexture 的 RGB Channel
4.2 新增一個 Mask 用的 Simple2D 貼圖,取出 R Channel (RGB任一都可,都一樣)
4.3 使用 Append 將 4.1 與 4.2 的 結果存到 RGBA(XYZW) 輸出就會的到最終的成果囉!

------------------------------------------------------------------------------------------------------------------------------------------------------
以上就是一種魚眼的應用,一個效果要細緻,似乎還是要很多的小細節的堆疊,這邊也是大量使用到UV的位移,感覺是普遍的基礎應用,以後應該會很常出現吧。XD

留言

這個網誌中的熱門文章

UE4: Spine2D 導入與基本使用