保姆級(jí)教程!如何將一個(gè) Shader 迅速移植到 Cocos Creator?

效果展示
時(shí)常有人問(wèn)我怎么學(xué)習(xí)shader,其實(shí)白玉無(wú)冰學(xué)的也很淺,推薦幾個(gè)曾經(jīng)用過(guò)的在線學(xué)習(xí)網(wǎng)站。
https://thebookofshaders.com/
https://webglfundamentals.org
https://learnopengl-cn.github.io/
里面有自帶環(huán)境編輯,在線編寫(xiě)代碼,邊學(xué)邊做。
了解了一些概念(頂點(diǎn)著色器/片元著色器/uniform/glsl 語(yǔ)法/內(nèi)置函數(shù)/uv 坐標(biāo))后,參考Cocos官方文檔和論壇帖子。
看看Cocos內(nèi)置的effect語(yǔ)法怎么寫(xiě)的,動(dòng)手改改其中的幾個(gè)數(shù)值,看看效果。
在有需求要做的時(shí)候,網(wǎng)上搜一搜,大部分效果都能搜到,剩下的就是借鑒搬運(yùn)了。
這次我們來(lái)講講如何把搜到的shader化為己有,在Cocos中實(shí)現(xiàn)其中的效果。
本次演示使用Cocos Creator 3.1.0版本,看完后,相信大家可以在其他任意版本都可移植!
本次借鑒的源代碼如下:

實(shí)現(xiàn)
本次實(shí)現(xiàn)分以下三步:
創(chuàng)建模版
基本實(shí)現(xiàn)
腳本控制
模版
sprite節(jié)點(diǎn),刪除 3D 相機(jī)燈光。
Type改為sprite-frame,去掉自動(dòng)合圖Packable(方便 uv 計(jì)算)。

effect。
builtin-sprite,并拷貝到剛剛創(chuàng)建的effect。
matertial,并選擇剛剛創(chuàng)建的effect,勾上USE TEXTURE。

基礎(chǔ)
接下來(lái),開(kāi)始編寫(xiě)effect。
我們先處理uniform部分,看看源頭有幾個(gè)uniform。

builtin-standard.effect中定義uniform的部分。
effect中定義uniform。



升級(jí)
接下來(lái)我們加入跟隨鼠標(biāo)變化的效果。
首先新建一個(gè)腳本,添加一個(gè)節(jié)點(diǎn)掛載這個(gè)腳本。

在腳本中添加一個(gè)精靈屬性,并綁定場(chǎng)景中的精靈。

添加鼠標(biāo)監(jiān)聽(tīng)事件 鼠標(biāo)坐標(biāo)轉(zhuǎn)換 處理 uniform變量傳遞(數(shù)值邏輯參考源文件)resolution是高寬比uMouse是鼠標(biāo)以左上角為原點(diǎn),相對(duì)寬高歸一化的值

代碼工程



