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

        共 1461字,需瀏覽 3分鐘

         ·

        2021-07-29 14:09

        效果展示

        ?

        時(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版本,看完后,相信大家可以在其他任意版本都可移植!

        本次借鑒的源代碼如下:

        https://github.com/akella/webgl-mouseover-effects/blob/master/js/step1.js
        參考代碼

        實(shí)現(xiàn)

        本次實(shí)現(xiàn)分以下三步:

        • 創(chuàng)建模版

        • 基本實(shí)現(xiàn)

        • 腳本控制

        模版

        新建場(chǎng)景,在場(chǎng)景中添加一個(gè) 2D 的sprite節(jié)點(diǎn),刪除 3D 相機(jī)燈光。
        新建場(chǎng)景
        拖入圖片資源,類(lèi)型Type改為sprite-frame,去掉自動(dòng)合圖Packable(方便 uv 計(jì)算)。
        拖入資源
        為精靈拖一個(gè)圖片資源。
        拖入資源
        新建effect。
        effect
        查找模版builtin-sprite,并拷貝到剛剛創(chuàng)建的effect。
        builtin-sprite
        新建材質(zhì)matertial,并選擇剛剛創(chuàng)建的effect,勾上USE TEXTURE。
        拖入資源
        為精靈選擇材質(zhì)。
        拖入資源
        看到圖片,完成模版創(chuàng)建!

        基礎(chǔ)

        接下來(lái),開(kāi)始編寫(xiě)effect。

        我們先處理uniform部分,看看源頭有幾個(gè)uniform。

        源頭中的 uniform
        參考builtin-standard.effect中定義uniform的部分。
        builtin-standard.effect
        effect中定義uniform。
        定義 uniform
        寫(xiě)完后可以在編輯的材質(zhì)中看到剛才定義的屬性。
        材質(zhì)中的 uniform
        接著就是抄一下片元著色器部分,大部分語(yǔ)法都是通用的。
        材質(zhì)中的 uniform
        在編輯器中改改參數(shù),可以看到初步效果。
        初步效果

        升級(jí)

        接下來(lái)我們加入跟隨鼠標(biāo)變化的效果。

        首先新建一個(gè)腳本,添加一個(gè)節(jié)點(diǎn)掛載這個(gè)腳本。

        新建腳本

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

        添加屬性
        接著編寫(xiě)腳本邏輯
        • 添加鼠標(biāo)監(jiān)聽(tīng)事件
        • 鼠標(biāo)坐標(biāo)轉(zhuǎn)換
        • 處理uniform變量傳遞(數(shù)值邏輯參考源文件)
          • resolution 是高寬比
          • uMouse 是鼠標(biāo)以左上角為原點(diǎn),相對(duì)寬高歸一化的值
        源頭中的 uniform
        最后再隨便寫(xiě)一個(gè)按鈕,切換精靈的圖片,就達(dá)到最終的效果啦。

        代碼工程

        https://github.com/baiyuwubing/cocos-creator-examples/tree/master/awesome-shader


        點(diǎn)擊【閱讀原文】跳轉(zhuǎn)至白玉無(wú)冰個(gè)人公眾號(hào)本文首發(fā)地址,希望大家多多討論交流,一起學(xué)習(xí)一起成長(zhǎng)!
        往期精彩

        瀏覽 70
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 日日躁夜夜躁狠狠躁av | 古装一级裸体片在线观看 | 在线黄色国产 | 老司机一区二区 | 国产新婚疯狂做爰视频 |