<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何快速升級 Cocos Shader 版本,以簡易水shader為例

          共 4694字,需瀏覽 10分鐘

           ·

          2023-01-16 19:50

          背景

          講述如何 將一份 3.0.0 版本的水shader 升級至 Cocos Creator 3.6 。希望對大家有所幫助。

          dc3b2594fbc03670a65293d530fdde01.webp

          環(huán)境

          Cocos Creator 3.6.2

          效果

          9908e5e3ef0a674f76dff85b92f819f5.webp

          此處是魚??,介紹如何使用

          在資源管理器中新建著色器(Effect)

          b21a229fb82b7334e9e11f23ee84073f.webp

          復(fù)制 文末的?mywater.effect?代碼至當前文件

          a08fb9596e07be39fdef6d708ee9c4a8.webp

          在資源管理器中新建材質(zhì)

          25ab85a2092bcb8fe9d36d3acb40930c.webp

          選擇材質(zhì)的著色器

          e5ead85ac1ef00bf3dceb8a9c1ad6a36.webp

          在場景中創(chuàng)建平面

          f8303dbd8176de2335eb22126fba88a3.webp

          讓平面使用水的材質(zhì)

          63c7f3d2b04129839952681044b8a508.webp

          為材質(zhì)上貼圖

          7d45d5f04a996b563c8b8893030db010.webp

          調(diào)整材質(zhì)參數(shù)

          可以根據(jù)預(yù)覽效果調(diào)整參數(shù)
          df9d29ff6f76d8b802d3936fbb200657.webp

          此處是漁,介紹如何快速升級

          https://www.bilibili.com/video/BV1WY4y1f7mS

          前置準備

          參考前面的步驟準備以下幾個點:

          1. 新建著色器(Effect),?mywater.effect

          2. 新建材質(zhì)?mywater.mtl?,并使用?mywater.effect?材質(zhì)

          e5ead85ac1ef00bf3dceb8a9c1ad6a36.webp

          3. 在場景中創(chuàng)建平面,并使用mywater.mtl材質(zhì)

          b86842f49ad41a9c10e8ce6a9047a7dd.webp

          4.將參考的水放在工程中

          5e36d7e89ba0629372f112ffdfa68faf.webp

          確定入口

          打開兩份著色器代碼,片元著色器的入口在 frag 變量下

          e209184a6dced70bea5e7e1cb6fbc253.webp

          入口在?water-fs:frag

          efb331b5633224a704542c689d1ece1d.webp

          從后往前抄

          返回顏色

          9eb828a03934558a942c186462d265fb.webp

          將每個變量都移植過來
          fd8e5c49a6d8a008031b224cf07b1f47.webp

          全局變量

          拷貝?屬性檢查器?面板參數(shù)?properties

          a2380d0ba25c9a86ef8fd81aa8f4b797.webp

          拷貝UBO。引擎不支持離散聲明的?uniform?變量,必須使用 UBO 并保持內(nèi)存對齊,以避免 implicit padding。

          b41eb680f69e263dd0125369aa424c6c.webp

          拷貝引用UBO

          38c1a5a0a7c2db572d933f02038413bb.webp

          函數(shù)

          拷貝顏色計算的部分

          9dbdae5821bfb09ba86ff721ca64de74.webp

          拷貝相關(guān)的全局變量

          1a290c7d8d27462c24ffe8bfc82d56cf.webp

          拷貝UBO

          cf72b1ed11e16017582ac2684d07b0f3.webp

          拷貝紋理聲明?causticTexture

          79a5e64df97c59ebbda88c79f279e5db.webp

          拷貝函數(shù)

          6bbceedebad36ef7341d7ab589e3b1cb.webp

          材質(zhì)參數(shù)

          在參考材質(zhì)中搜索對應(yīng)的紋理,找到使用的紋理文件

          bdea08129cb4a4944918358ca280fd55.webp

          拖入貼圖

          050c95c689464a055bc5e23c1c114b05.webp

          為材質(zhì)上貼圖

          7d45d5f04a996b563c8b8893030db010.webp

          其他參數(shù)的拷貝

          cc7d6ce97c9be3f5637ca9b705749ab1.webp

          效果

          9908e5e3ef0a674f76dff85b92f819f5.webp

          此處是相關(guān)資源資料

          貼圖 Caustics

          6a93f9a49683fd87e97d419e64b738d1.webp

          mywater.effect

              // Effect Syntax Guide: https://docs.cocos.com/creator/manual/zh/shader/index.html

          CCEffect %{
          techniques:
          - name: opaque
          passes:
          - vert: legacy/main-functions/general-vs:vert # builtin header
          frag: unlit-fs:frag
          properties: &props
          shallowColor: { value: [0.07843, 0.6667, 1, 1], editor: { type: color } }
          causticStrength: { value: 0.2, target: causticParams1.x, editor: { parent: USE_CAUSTIC } }
          causticScale: { value: 2.33, target: causticParams1.y, editor: { parent: USE_CAUSTIC } }
          causticSpeed: { value: 0.1, target: causticParams1.z, editor: { parent: USE_CAUSTIC } }
          causticRGBSplit: { value: 0.35, target: causticParams1.w, editor: { parent: USE_CAUSTIC } }
          causticDepth: { value: 1, target: causticParams2.x, editor: { parent: USE_CAUSTIC } }
          causticColor: { value: [0.01176, 0.4, 0.47451], target: causticParams2.yzw, editor: { parent: USE_CAUSTIC, type: color } }
          causticTexture: { value: white, editor: { parent: USE_CAUSTIC } }
          - name: transparent
          passes:
          - vert: general-vs:vert # builtin header
          frag: unlit-fs:frag
          blendState:
          targets:
          - blend: true
          blendSrc: src_alpha
          blendDst: one_minus_src_alpha
          blendSrcAlpha: src_alpha
          blendDstAlpha: one_minus_src_alpha
          properties: *props
          }%

          CCProgram shared-ubos %{
          #define pi 3.14

          uniform Water {
          vec4 shallowColor;
          vec4 causticParams1;
          vec4 causticParams2;
          };
          }%

          CCProgram unlit-fs %{
          precision highp float;
          #include <shared-ubos>
          #include <legacy/output>
          #include <legacy/fog-fs>

          #if USE_CAUSTIC
          uniform sampler2D causticTexture;
          #endif

          in vec2 v_uv;
          in vec3 v_position;

          #if USE_CAUSTIC
          vec2 panner(vec2 uv, float direction, float speed, vec2 offset, float tiling)
          {
          direction = direction * 2. - 1.;
          vec2 dir = normalize(vec2(cos(pi * direction), sin(pi * direction)));
          return (dir * cc_time.x * speed) + offset + (uv * tiling);
          }

          vec3 rgbSplit(float split, sampler2D tex, vec2 uv)
          {
          vec2 UVR = uv + vec2(split, split);
          vec2 UVG = uv + vec2(split, -split);
          vec2 UVB = uv + vec2(-split, -split);

          float r = texture(tex, UVR).r;
          float g = texture(tex, UVG).g;
          float b = texture(tex, UVB).b;

          return vec3(r,g,b);
          }

          vec3 caustic()
          {
          vec2 uv = v_position.xz;

          float strength = causticParams1.x;
          float split = causticParams1.w * 0.01;
          float speed = causticParams1.z;
          float scale = causticParams1.y;

          vec3 texture1 = rgbSplit(split, causticTexture, panner(uv, 1., speed, vec2(0., 0.), 1./scale));
          vec3 texture2 = rgbSplit(split, causticTexture, panner(uv, 1., speed, vec2(0., 0.), -1./scale));
          vec3 textureCombined = min(texture1, texture2);

          return strength * 10. * textureCombined;
          }
          #endif

          vec4 frag () {
          vec4 waterColor = shallowColor;
          vec4 finalFoamColor = vec4(0.);
          // caustic
          vec4 finalCausticColor = vec4(0.);
          #if USE_CAUSTIC
          float causticDepth = causticParams2.x;
          vec3 causticColor = causticParams2.yzw;
          finalCausticColor.rgb = caustic() * causticColor;
          #endif

          vec4 finalColor = waterColor + finalFoamColor + finalCausticColor;
          CC_APPLY_FOG(finalColor, v_position);
          return CCFragOutput(finalColor);
          }
          }%

          // 歡迎關(guān)注【白玉無冰】 https://mp.weixin.qq.com/s/4WwCjWBtZNnONh8hZ7JVDA

          工程

          https://forum.cocos.org/uploads/short-url/5ytjWtYU1A4xNheA6nYxtBCs8h4.zip

          mywater.zip?(391.1 KB)

          其他

          整理了一份往期的游戲開發(fā)資料合集 ???游戲開發(fā)資料合集,2022年版

          閱讀原文下載相關(guān)素材

          https://forum.cocos.org/t/topic/144800

          ??????

          瀏覽 91
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狼人色区 | 在线 色| 婷婷五月天色导航 | 伊人成人网络 | 大香蕉亚洲视频 |