[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"Lash",[{"hash":1075908880,"record":null,"name":"Lash|vs|fs","glsl3":{"vert":"\nprecision highp float;\nconst int SEG_PER_CTRL = 25;\nattribute vec3 a_position;\nvarying vec2 v_uv;\nvarying vec4 color;\nuniform Controls {\n  vec4 points[21];\n  float screenWidth;\n  float screenHeight;\n  float beamWidth;\n  float segLength;\n  float controlLength;\n  float flowing;\n};\nvoid main () {\n  int c = int(a_position.y);\n  int dc = c / SEG_PER_CTRL;\n  float dt = float(c - dc * SEG_PER_CTRL) / float(SEG_PER_CTRL);\n  vec4 src = points[dc];\n  vec4 dest = points[dc + 1];\n  vec2 p0 = src.xy;\n  vec2 p3 = dest.xy;\n  float dist = distance(p0, p3);\n  vec2 p1 = p0 + normalize(src.zw) * dist * controlLength;\n  vec2 p2 = p3 - normalize(dest.zw) * dist * controlLength;\n  float dtm = 1.0 - dt;\n  vec2 offset = dtm * dtm * dtm * p0 + 3.0 * dtm * dtm * dt * p1 + 3.0 * dtm * dt * dt * p2 + dt * dt * dt * p3;\n  vec2 dir = 3.0 * dtm * dtm * (p1 - p0) + 6.0 * dtm * dt * (p2 - p1) + 3.0 * dt * dt * (p3 - p2);\n  dir = normalize(dir);\n  float side = a_position.x;\n  vec2 rotate = vec2(dir.y * side, - dir.x * side) * beamWidth * 0.5;\n  vec2 p = offset + rotate;\n  gl_Position = vec4(p.x  / screenWidth * 2.0, p.y / screenHeight * 2.0, 0.0, 1.0);;\n  v_uv = vec2(a_position.x * 0.5 + 0.5, - a_position.y * segLength / screenWidth + flowing);\n}","frag":"\n  precision highp float;\n#if USE_ALPHA_TEST\n  uniform ALPHA_TEST {\n    float alphaThreshold;\n  };\n#endif\n  varying vec2 v_uv;\n  uniform sampler2D texture;\nvarying vec4 color;\n  void main () {\n    vec4 o = vec4(1, 1, 1, 1);\n    vec2 uv = v_uv;\n    uv.y = fract(uv.y);\n    o *= texture(texture, uv);\n    gl_FragColor = o;\n  }"},"glsl1":{"vert":"\nprecision highp float;\nconst int SEG_PER_CTRL = 25;\nattribute vec3 a_position;\nvarying vec2 v_uv;\nvarying vec4 color;\nuniform vec4 points[21];\nuniform float screenWidth;\nuniform float screenHeight;\nuniform float beamWidth;\nuniform float segLength;\nuniform float controlLength;\nuniform float flowing;\nvoid main () {\n  int c = int(a_position.y);\n  int dc = c / SEG_PER_CTRL;\n  float dt = float(c - dc * SEG_PER_CTRL) / float(SEG_PER_CTRL);\n  vec4 src = points[dc];\n  vec4 dest = points[dc + 1];\n  vec2 p0 = src.xy;\n  vec2 p3 = dest.xy;\n  float dist = distance(p0, p3);\n  vec2 p1 = p0 + normalize(src.zw) * dist * controlLength;\n  vec2 p2 = p3 - normalize(dest.zw) * dist * controlLength;\n  float dtm = 1.0 - dt;\n  vec2 offset = dtm * dtm * dtm * p0 + 3.0 * dtm * dtm * dt * p1 + 3.0 * dtm * dt * dt * p2 + dt * dt * dt * p3;\n  vec2 dir = 3.0 * dtm * dtm * (p1 - p0) + 6.0 * dtm * dt * (p2 - p1) + 3.0 * dt * dt * (p3 - p2);\n  dir = normalize(dir);\n  float side = a_position.x;\n  vec2 rotate = vec2(dir.y * side, - dir.x * side) * beamWidth * 0.5;\n  vec2 p = offset + rotate;\n  gl_Position = vec4(p.x  / screenWidth * 2.0, p.y / screenHeight * 2.0, 0.0, 1.0);;\n  v_uv = vec2(a_position.x * 0.5 + 0.5, - a_position.y * segLength / screenWidth + flowing);\n}","frag":"\n  precision highp float;\n#if USE_ALPHA_TEST\n#endif\n  varying vec2 v_uv;\n  uniform sampler2D texture;\nvarying vec4 color;\n  void main () {\n    vec4 o = vec4(1, 1, 1, 1);\n    vec2 uv = v_uv;\n    uv.y = fract(uv.y);\n    o *= texture2D(texture, uv);\n    gl_FragColor = o;\n  }"},"builtins":{"globals":{"blocks":[],"samplers":[]},"locals":{"blocks":[],"samplers":[]}},"defines":[{"name":"USE_ALPHA_TEST","type":"boolean","defines":[]}],"blocks":[{"name":"Controls","binding":0,"members":[{"name":"points","type":16,"count":21},{"name":"screenWidth","type":13,"count":1},{"name":"screenHeight","type":13,"count":1},{"name":"beamWidth","type":13,"count":1},{"name":"segLength","type":13,"count":1},{"name":"controlLength","type":13,"count":1},{"name":"flowing","type":13,"count":1}],"defines":[]},{"name":"ALPHA_TEST","binding":1,"members":[{"name":"alphaThreshold","type":13,"count":1}],"defines":["USE_ALPHA_TEST"]}],"samplers":[{"name":"texture","type":29,"count":1,"binding":30,"defines":[]}]}],[{"passes":[{"program":"Lash|vs|fs","blendState":{"blendSrc":770,"blendDst":1,"BlendDstAlpah":1,"targets":[{"blend":true}]},"rasterizerState":{"cullMode":0},"properties":{"texture":{"value":"white","type":29}}}]}]]],0,0,[],[],[]]