18年專(zhuān)注木地板定制廠(chǎng)商

13544174867

3d木地板插件|Effect Exporter:一款 2D&3D 特效編輯器插件
時(shí)間:2023-03-20 11:08:58 來(lái)源:網(wǎng)絡(luò )整理

隨著(zhù) Cocos Creator 3.x 版本的發(fā)布,Cocos Creator 的 3D 功能更加完善。開(kāi)發(fā)者 Oreo大魔王 著(zhù)手制作了一款支持Shader 2D&3D 的特效編輯器插件,現已更新到 v1.0.2,支持 Cocos Creator 3.3。

我對 Effect3D 效果的實(shí)現一直很感興趣,在 Cocos Creator 3.x 版本發(fā)布后,我萌生了一個(gè)大膽的想法:在 Cocos Creator 編輯器內集成 Effect3D 材質(zhì)編輯器!于是,就有了 Effect Exporter。

Effect Exporter

71b7926c96889f318e6542e60ce8aad3.png

主界面

點(diǎn)擊頂部左側菜單按鈕,可以彈出編輯器菜單。編輯器當前支持一鍵導出 effect 并即時(shí)生效預覽,并可重復編輯:

8ad772e8d2a53bfc1f217557d1600c73.png

點(diǎn)擊頂部右側菜單按鈕,打開(kāi)在線(xiàn)示例 面板,選擇喜歡的示例,點(diǎn)擊即可加載:

a9066263da1dac45335e1f33543ad99b.gif

默認 Effect3D 模板

2debad60d6ba40fb4f38f34dd325c4fc.png

當第一次編輯某個(gè) effect 文件時(shí),會(huì )生成一份默認的節點(diǎn)樹(shù)結構(如上圖),其中包含兩大部分:

一是 VertexOutput 控制的 頂點(diǎn)著(zhù)色器 :

在頂點(diǎn)著(zhù)色器中3d木地板插件,主要實(shí)現了坐標空間的轉換。具體原理可以參考 LearnOpengL 坐標系統[1]。

ce64e7ee46d13ff4280ed00b2392deec.png

VertexOutput 根據節點(diǎn)樹(shù)計算出一個(gè) Vector4 裁剪空間坐標作為頂點(diǎn)著(zhù)色器的結果輸出,最終生成 effect 內頂點(diǎn)著(zhù)色器部分的代碼如下:

vec4?vert(void)?{
????//WorldPos
????vec4?output1?=?cc_matWorld?*?vec4(a_position,?1.0);
????//WorldPos?*?ViewProjectionTransform
????vec4?output0?=?cc_matViewProj?*?output1;
????//VertexOutput
????vec4?target_VertPosition?=?output0;
????return?target_VertPosition;
??}

以上需要了解 CocosEffect v3 常用 shader 內置 Uniform[2]。

二是 FragmentOutput 控制的片元著(zhù)色器:

在默認模板中提供了一個(gè) Color4 顏色輸入變量,并直接作為片元著(zhù)色器的結果輸出,最終生成 effect 內片元著(zhù)色器部分的代碼如下:

vec4?frag(void)?{
????//FragmentOutput
????vec4?target_FragColor?=?u_color;
????return?target_FragColor;
}

默認 Effect2D 模板

2D 模板與 3D 模板差異不大3d木地板插件,主要是默認在片元著(zhù)色器加了個(gè) TextureBlock 類(lèi)型的貼圖節點(diǎn) SpriteFrame,方便控制 2D 紋理。

16f14a04e2a8ef6a8862927111d456e6.png

對應到 effect 文件,每個(gè)紋理輸出都由一張紋理貼圖和一個(gè)紋理權重控制:

1b616ca2add49f4b733a901486f64c75.png

在該默認模板中,片元著(zhù)色器還有一個(gè) MultiplyBlock 乘法節點(diǎn),用來(lái)混合貼圖顏色與 Color4 定義的顏色,生成的 effect 代碼如下:

vec4?frag(void)?{
????//SpriteFrame?紋理采樣
????#if?(USE_2D_SPRITE_FRAME)
?????//?當啟用宏?USE_2D_SPRITE_FRAME?時(shí),采樣?cc.Sprite?自身組件上的紋理
????????vec4?tempTextureRead?=?texture(cc_spriteTexture,?transformedUV);
????#else
?????//?采樣?SpriteFrameSampler?定義的輸入紋理
????????vec4?tempTextureRead?=?texture(SpriteFrameSampler,?transformedUV);
????#endif
????//紋理權重
????vec4?rgba?=?tempTextureRead.rgba?*?SpriteFrameWeight;
????//Multiply(乘法結節,這里用來(lái)混合顏色)
????vec4?output2?=?u_color?*?rgba;
????//FragmentOutput(最終輸出的顏色)
????vec4?target_FragColor?=?output2;
????return?target_FragColor;
}

在 Cocos Creator 中演示效果如下:

a4458a24b5c01abba739463b4ef7b904.gif

注意:在 Cocos Creator 2D 對象(比如 Sprite 對象)下使用自定義材質(zhì)時(shí),宏 USE_2D_EFFECT 一定要勾選,使 effect 內相關(guān)定義生效,否則會(huì )報 CCLocal 相關(guān)錯誤:

02f048c91f579be65c60f6263456bd8e.png

同時(shí)支持 2D/3D 顯示

一個(gè)特效可以同時(shí)支持 2D 或 3D 顯示效果,可參考在線(xiàn)示例中的扭曲特效(2D/3D)。

d35481664be597b5c41ad8bff9088eb0.gif

4fdfcaf9f3e8b48cf54ad0061b61ce3a.gif

編輯特效

新建 Cube 節點(diǎn),新建 effect 、material 文件,為 material 指定 effect 后,右鍵選中剛才新建的 material 或 effect,可看到編輯 Effect 相關(guān)菜單,點(diǎn)擊即可打開(kāi) Effect Exporter 編輯器。簡(jiǎn)單修改下默認模板(這里只是簡(jiǎn)單調整了顏色),點(diǎn)擊左上角菜單導出(.effect) 即可導出到關(guān)聯(lián)的 effect 文件并實(shí)時(shí)生效預覽。

操作演示

注意:插件第一次編輯某個(gè) effect 文件時(shí),會(huì )生成一份默認(3D)的節點(diǎn)樹(shù)結構。該行為與操作左上角菜單彈出面板下的新建默認Effect3D項目行為相同。

加載示例

Effect Exporter 提供了完整的在線(xiàn)示例,可以很方便地瀏覽效果并一健導入:

導入操作演示

示例導入后,點(diǎn)擊左上角菜單導出(.effect)即可在 Cocos Creator 中看到效果:

導出操作演示

目前示例還在持續添加,部分示例展示:

6d5f36d5cba738caf5e4e93c0260709c.gif

溶解與定向消失

ad262dd496e5f56ee5d76fe61a533cff.gif

菲涅爾反射

光照貼圖

另外,線(xiàn)上示例均可一鍵導出到 Cocos Creator 中,以下是部分示例運行效果:

2012ba89fa95a18ad5ce96e08d7a6712.gif

自定義節點(diǎn)

v1.0.2 參考 ShaderToy 特效實(shí)現了部分示例,實(shí)現細節請參考插件 oreo-shader-effect-exporter\editor\blocks 文件實(shí)現。部分示例效果:

addf05fd071c3c98a0227a3e0ae6a20e.gif

火焰效果

e296188b6a2842f594482d91d7aca4db.gif

水波效果

7f8315d399db2be4d138ae1807a67810.gif

萬(wàn)花筒效果

導出到 Cocos Creator 中運行效果如下:

fbd694c085301ee3620f28870634cd00.gif

資源地址

Effect Exporter 完整文檔與在線(xiàn)體驗

點(diǎn)擊【閱讀原文】下載 Effect Exporter- Cocos Store

論壇討論帖

關(guān)于 Effect Exporter 編輯器的實(shí)現,我大量參考了 babylon.js、Shader Forge、webglstudio、react-diagrams、ez-shader-editor 等開(kāi)源項目,感興趣的小伙伴可以了解一下。更全面的技術(shù)實(shí)現過(guò)程和效果展示、以及插件的更新內容等等,我都會(huì )第一時(shí)間發(fā)布在論壇討論帖,歡迎大家來(lái)論壇一起學(xué)習交流!

擴展鏈接

[1] LearnOpengL坐標系統

%20Getting%20started/08%20Coordinate%20Systems/#_2

[2]常用 shader 內置 Uniform

06265324e210606c4d729d0f3c9d86c5.jpeg

>> 點(diǎn)擊查看嘉賓及演講主題

12月18日下午14:00,Cocos 開(kāi)發(fā)者沙龍「廈門(mén)站」將在廈門(mén)香格里拉酒店舉辦。Cocos 引擎、亞馬遜云科技、網(wǎng)易易盾、青瓷游戲、風(fēng)領(lǐng)科技圍繞引擎技術(shù)與生態(tài)、游戲開(kāi)發(fā)與發(fā)行等內容,為各位開(kāi)發(fā)者準備了一場(chǎng)干貨盛宴。

報名來(lái)到現場(chǎng)的小伙伴,還將獲得「Cocos 最新定制周邊大禮包」,人手一份哦!掃描下方二維碼免費報名吧↓

>> 開(kāi)發(fā)者報名通道

往期精彩

972add5425d168724e70586029614b64.png

96668dcded711c2ce82495d3002bcc29.png

05ff236de588942f0f0def1067e8129b.png

c1bf89a35ccbec74945c8b770f3f8fd4.gif

以上內容由用戶(hù)投稿,彬迪地板進(jìn)行整理發(fā)布,希望對大家有所幫助,如有侵權,請聯(lián)系我們進(jìn)行刪除。

裝修材料一站式解決方案商

CopyRight ? 2020-2025 彬迪地板 版權所有
備案號:粵ICP備20070241號
技術(shù)支持:豐涵科技

掃碼關(guān)注
獲取更多優(yōu)惠報價(jià)

韩国三级大全久久网站_久久精品人人槡_精品一区二区三区无码免费视频_亚洲成av人片在线观看无