[1,["3eqv5tGHpBdZZpewPZLU1t"],["_effectAsset"],[["cc.EffectAsset",["_name","shaders","techniques"],0],["cc.Material",["_name","_techniqueData"],1]],[[0,0,1,2,4],[1,0,1,3]],[[[[0,"Blur",[{"hash":1694060993,"record":null,"name":"Blur|vs|fs","glsl3":{"vert":"\nprecision highp float;\nuniform CCGlobal {\n  mat4 cc_matView;\n  mat4 cc_matViewInv;\n  mat4 cc_matProj;\n  mat4 cc_matProjInv;\n  mat4 cc_matViewProj;\n  mat4 cc_matViewProjInv;\n  vec4 cc_cameraPos;\n  vec4 cc_time;\n  mediump vec4 cc_screenSize;\n  mediump vec4 cc_screenScale;\n};\nin vec3 a_position;\nin vec2 a_uv0;\nin vec4 a_color;\nout vec2 v_uv0;\nout vec4 v_color;\nvoid main () {\n  gl_Position = cc_matViewProj * vec4(a_position, 1);\n  v_uv0 = a_uv0;\n  v_color = a_color;\n}","frag":"\nprecision highp float;\nin vec2 v_uv0;\nin vec4 v_color;\nuniform sampler2D texture;\nuniform Properties {\n  vec2 size;\n  float radius;\n};\nvec4 getBlurColor (vec2 uv, float radius) {\n  vec4 color = vec4(0);\n  float sum = 0.0;\n  float offset[8];\n  for (int i = 0; i < 8; i++) {\n    offset[i] = -radius + float(i) * (2.0 * radius) / 10.0;\n  }\n  for (int i = 0; i < 8; i++) {\n    float x = uv.x + offset[i] / size.x;\n    if (x < 0.0 || x > 1.0) continue;\n    for (int j = 0; j < 8; j++) {\n      float y = uv.y + offset[j] / size.y;\n      if (y < 0.0 || y > 1.0) continue;\n      vec2 target = vec2(x, y);\n      float weight = (radius - abs(offset[i])) * (radius - abs(offset[j]));\n      color += texture2D(texture, target) * weight;\n      sum += weight;\n    }\n  }\n  color /= sum;\n  return color;\n}\nvoid main () {\n  vec4 color = v_color;\n  color *= texture(texture, v_uv0);\n  if (color.a != 0.0) {\n    color = getBlurColor(v_uv0, radius);\n  }\n  color.a *= v_color.a;\n  gl_FragColor = color;\n}"},"glsl1":{"vert":"\nprecision highp float;\nuniform mat4 cc_matViewProj;\nattribute vec3 a_position;\nattribute vec2 a_uv0;\nattribute vec4 a_color;\nvarying vec2 v_uv0;\nvarying vec4 v_color;\nvoid main () {\n  gl_Position = cc_matViewProj * vec4(a_position, 1);\n  v_uv0 = a_uv0;\n  v_color = a_color;\n}","frag":"\nprecision highp float;\nvarying vec2 v_uv0;\nvarying vec4 v_color;\nuniform sampler2D texture;\nuniform vec2 size;\nuniform float radius;\nvec4 getBlurColor (vec2 uv, float radius) {\n  vec4 color = vec4(0);\n  float sum = 0.0;\n  float offset[8];\n  for (int i = 0; i < 8; i++) {\n    offset[i] = -radius + float(i) * (2.0 * radius) / 10.0;\n  }\n  for (int i = 0; i < 8; i++) {\n    float x = uv.x + offset[i] / size.x;\n    if (x < 0.0 || x > 1.0) continue;\n    for (int j = 0; j < 8; j++) {\n      float y = uv.y + offset[j] / size.y;\n      if (y < 0.0 || y > 1.0) continue;\n      vec2 target = vec2(x, y);\n      float weight = (radius - abs(offset[i])) * (radius - abs(offset[j]));\n      color += texture2D(texture, target) * weight;\n      sum += weight;\n    }\n  }\n  color /= sum;\n  return color;\n}\nvoid main () {\n  vec4 color = v_color;\n  color *= texture2D(texture, v_uv0);\n  if (color.a != 0.0) {\n    color = getBlurColor(v_uv0, radius);\n  }\n  color.a *= v_color.a;\n  gl_FragColor = color;\n}"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]}],"samplers":[]},"locals":{"blocks":[],"samplers":[]}},"defines":[],"blocks":[{"name":"Properties","binding":0,"members":[{"name":"size","type":14,"count":1},{"name":"radius","type":13,"count":1}],"defines":[]}],"samplers":[{"name":"texture","type":29,"count":1,"binding":30,"defines":[]}]}],[{"passes":[{"program":"Blur|vs|fs","blendState":{"targets":[{"blend":false}]},"rasterizerState":{"cullMode":0},"properties":{"size":{"type":14,"value":[500,500],"editor":{"tooltip":"节点尺寸"}},"radius":{"type":13,"value":[2],"editor":{"min":0,"max":10,"step":0.1,"slider":true,"tooltip":"模糊半径"}}}}]}]]],0,0,[],[],[]],[[[1,"Blur",{"0":{"props":{},"defines":{}}}]],0,0,[0],[0],[0]]]]