{
  "ver": "1.0.25",
  "uuid": "478d6745-6406-4f03-84f4-194af9a5b89c",
  "compiledShaders": [
    {
      "glsl1": {
        "vert": "\nprecision highp float;\nuniform mediump mat4 cc_matViewProj;\nuniform mat4 cc_matWorld;\nattribute vec3 a_position;\nattribute vec4 a_color;\nvarying vec4 v_color;\n#if USE_TEXTURE\nattribute vec2 a_uv0;\nvarying vec2 v_uv0;\n#endif\nvoid main () {\n  vec4 pos = vec4(a_position, 1);\n  #if CC_USE_MODEL\n  pos = cc_matViewProj * cc_matWorld * pos;\n  #else\n  pos = cc_matViewProj * pos;\n  #endif\n  #if USE_TEXTURE\n  v_uv0 = a_uv0;\n  #endif\n  v_color = a_color;\n  gl_Position = pos;\n}",
        "frag": "\n  precision highp float;\n  uniform sampler2D texture;\n  uniform sampler2D texture2;\n  uniform float time;\n  float progress = time;\n  varying mediump vec2 v_uv0;\n  varying vec4 v_color;\n  vec4 getFromColor(vec2 uv) {\n    return texture2D(texture, uv);\n  }\n  vec4 getToColor(vec2 uv) {\n    return texture2D(texture2, uv);\n  }\n  vec4 transition(vec2 p) {\n    vec2 block = floor(p.xy / vec2(16));\n    vec2 uv_noise = block / vec2(64);\n    uv_noise += floor(vec2(progress) * vec2(1200.0, 3500.0)) / vec2(64);\n    vec2 dist = progress > 0.0 ? (fract(uv_noise) - 0.5) * 0.3 * (1.0 - progress) : vec2(0.0);\n    vec2 red = p + dist * 0.2;\n    vec2 green = p + dist * 0.3;\n    vec2 blue = p + dist * 0.5;\n    return vec4(\n        mix(getFromColor(red).r, getToColor(red).r, progress),\n        mix(getFromColor(green).g, getToColor(green).g, progress),\n        mix(getFromColor(blue).b, getToColor(blue).b, progress),\n        1.0\n    );\n}\n  void main () {\n      gl_FragColor = v_color * transition(v_uv0);\n  }"
      },
      "glsl3": {
        "vert": "\nprecision highp float;\nuniform CCGlobal {\n  highp   vec4 cc_time;\n  mediump vec4 cc_screenSize;\n  mediump vec4 cc_screenScale;\n  mediump vec4 cc_nativeSize;\n  highp   mat4 cc_matView;\n  mediump mat4 cc_matViewInv;\n  mediump mat4 cc_matProj;\n  mediump mat4 cc_matProjInv;\n  mediump mat4 cc_matViewProj;\n  mediump mat4 cc_matViewProjInv;\n  mediump vec4 cc_cameraPos;\n};\nuniform CCLocal {\n  mat4 cc_matWorld;\n  mat4 cc_matWorldIT;\n};\nin vec3 a_position;\nin vec4 a_color;\nout vec4 v_color;\n#if USE_TEXTURE\nin vec2 a_uv0;\nout vec2 v_uv0;\n#endif\nvoid main () {\n  vec4 pos = vec4(a_position, 1);\n  #if CC_USE_MODEL\n  pos = cc_matViewProj * cc_matWorld * pos;\n  #else\n  pos = cc_matViewProj * pos;\n  #endif\n  #if USE_TEXTURE\n  v_uv0 = a_uv0;\n  #endif\n  v_color = a_color;\n  gl_Position = pos;\n}",
        "frag": "\n  precision highp float;\n  uniform sampler2D texture;\n  uniform sampler2D texture2;\n  uniform Common {\n    float time;\n  };\n  float progress = time;\n  in mediump vec2 v_uv0;\n  in vec4 v_color;\n  vec4 getFromColor(vec2 uv) {\n    return texture(texture, uv);\n  }\n  vec4 getToColor(vec2 uv) {\n    return texture(texture2, uv);\n  }\n  vec4 transition(vec2 p) {\n    vec2 block = floor(p.xy / vec2(16));\n    vec2 uv_noise = block / vec2(64);\n    uv_noise += floor(vec2(progress) * vec2(1200.0, 3500.0)) / vec2(64);\n    vec2 dist = progress > 0.0 ? (fract(uv_noise) - 0.5) * 0.3 * (1.0 - progress) : vec2(0.0);\n    vec2 red = p + dist * 0.2;\n    vec2 green = p + dist * 0.3;\n    vec2 blue = p + dist * 0.5;\n    return vec4(\n        mix(getFromColor(red).r, getToColor(red).r, progress),\n        mix(getFromColor(green).g, getToColor(green).g, progress),\n        mix(getFromColor(blue).b, getToColor(blue).b, progress),\n        1.0\n    );\n}\n  void main () {\n      gl_FragColor = v_color * transition(v_uv0);\n  }"
      }
    }
  ],
  "subMetas": {}
}