UNITY Shader--實現翻頁效果


在unity中我們可以通過shader來實現各種有意思而且炫酷的一些渲染效果出來。比如流光效果,毛玻璃效果,平靜水面,波濤洶涌的海面,甚至是一些炫酷的技能特效等。主要就是因為unity為我們渲染准備了一個shaderlab的結構,我們可以很方便的在這個模塊下面進行開發,寫上我們自己的CG代碼,渲染算法等,這樣就可以很好的做出一些效果了。這里我做了一個翻頁的效果,這個效果可以用在UI上面,或者游戲其他的地方。在這里先看下效果圖。推薦一個學習交流群:1072209430

首先運行后場景里是沒有東西的,然后我們按鍵就會讓這個紋理顯現出來,從左到右。慢慢的填充完整。當然這個順序我們也可以改的。然后有些地方比較淡,這個主要是多做的一點效果,可以有,也可以沒有,一般情況我們都需要,因為這樣更加好看。那么這個效果是怎么做的呢?接下來詳細說下。

首先做這個翻頁效果的原理就是,我們是通過對比像素值來對vu上的像素點進行剔除的。從而達到翻頁的效果。原理很簡單,那么翻頁怎么翻的呢?首先我們下一頁是沒有的,然后翻頁是漸變的過程,從無到有的過程。那么就可以設置一個變量,首先讓變量比較大,這樣的話,對比過后就會發現所有的uv上面的坐標都是比這個變量小的,所有全部剔除點像素點,這樣就看不見了。然后隨着時間自動把這個變量值變小,這樣的話,有些地方的像素就可能會比變量值大,這樣就能顯示了,但是這樣的話,它並不是按照從左到右的順序的,那么怎么樣才能保證它是從左到右的順序呢?所以光靠剔除是不夠的,我們通過獲取到當前像素點的UV坐標的U(X)坐標然后和總的U長度做對比,算出占比,然后根據這個比值來進行剔除就可以了。這樣就能達到我們想要的效果了。這里給出Shader代碼。

這個就是全部的shader效果了,然后我們需要從C#中調用Shader里面的變量來控制。C#代碼如下:

這里沒有太多的難度,就是動態的修改變量的值,很好理解的。好了,本次的分享就到這里了。不喜勿噴哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM