使用Stencil buffer做出球形(圓形)的dissolve效果,原理就是比較兩個物件的Stencil中的reference值有沒有通過各自的條件,並顯示通過的部分。要被透過去的目標只要設定Stencil buffer內容。如下
▲設定Ref為1,通過條件是Not Equal。
Mask shader設定就比較多一點如下:
▲上圖中需要把Render Queue-1,原因在要比目標物還要早繪出,blend調整成premultiplied,stencil部分要調整成總是通過,並把本身的Ref value寫進buffer裡(Pass Front)
設定完上面的部分後,接著設計Mask shader如下:
▲藉由CutOff來控制Mask的穿透度,只要大於0.5就會完全穿透
完成後就可以套進物件裡,就可以看到透過去的特效了。
▲mask可以放大以及移動。
接下來做點變化,搭配
此篇的半透明特效來做到半透明的mask。
▲使用Dither來做出半透明效果
接下來就可以用CutOff來控制半透明的情況,如下:
▲可以看到物件逐漸淡入與淡出
好的,接下來就是本篇的重點了,可能上面的運用情境感覺不出來有甚麼特別的,但這個東西還可以用在下面遊戲類型,請小心服用。
就像上圖一樣這可以在遊戲中表現有出衣服逐漸破損的效果,比如說攻擊到哪邊,那邊的衣服就會逐漸破損,最後那一塊就會整個破掉,這可以運用在一些很紳士的場景或是遊戲類型中。