[1,0,0,[["cc.EffectAsset",["_name","shaders","techniques"],0]],[[0,0,1,2,4]],[[0,"StencilSprite",[{"hash":121406757,"record":null,"name":"StencilSprite|vs|fs","glsl3":{"vert":"\n  precision 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};\nuniform CCLocal {\n  mat4 cc_matWorld;\n  mat4 cc_matWorldIT;\n};\n  in vec3 a_position;\n  in vec4 a_color;\n  out vec4 v_color;\n  #if USE_TEXTURE\n  in vec2 a_uv0;\n  out vec2 v_uv0;\n  out vec2 v_uv1;\n  #endif\nuniform MaskCoords {\n   vec4 maskTilingOffset;\n};\n  void 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    v_uv1 = (a_uv0 - maskTilingOffset.zw) / maskTilingOffset.xy ;\n    #endif\n    v_color = a_color;\n    gl_Position = pos;\n  }","frag":"\nprecision highp float;\n#if USE_ALPHA_TEST\n  uniform ALPHA_TEST {\n    float alphaThreshold;\n  };\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n  #if USE_ALPHA_TEST\n      if (color.a < alphaThreshold) discard;\n  #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n  #if USE_ALPHA_TEST\n      if (alpha < alphaThreshold) discard;\n  #endif\n}\nin vec4 v_color;\n#if USE_TEXTURE\nin vec2 v_uv0;\nuniform sampler2D texture;\nin vec2 v_uv1;\nuniform sampler2D maskTexture;\n#endif\nvoid main () {\n  vec4 o = vec4(1, 1, 1, 1);\n  #if USE_TEXTURE\n  vec4 texture_tmp = texture(texture, v_uv0);\n  #if CC_USE_ALPHA_ATLAS_texture\n      texture_tmp.a *= texture(texture, v_uv0 + vec2(0, 0.5)).r;\n  #endif\n  #if INPUT_IS_GAMMA\n    o.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n    o.a *= texture_tmp.a;\n  #else\n    o *= texture_tmp;\n  #endif\n    vec4 mask = texture(maskTexture, v_uv1);\n  #endif\n   o *= v_color;\n   o *= mask.a;\n  ALPHA_TEST(o);\n  gl_FragColor = o;\n}"},"glsl1":{"vert":"\n  precision highp float;\nuniform mat4 cc_matViewProj;\nuniform mat4 cc_matWorld;\n  attribute vec3 a_position;\n  attribute vec4 a_color;\n  varying vec4 v_color;\n  #if USE_TEXTURE\n  attribute vec2 a_uv0;\n  varying vec2 v_uv0;\n  varying vec2 v_uv1;\n  #endif\nuniform vec4 maskTilingOffset;\n  void 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    v_uv1 = (a_uv0 - maskTilingOffset.zw) / maskTilingOffset.xy ;\n    #endif\n    v_color = a_color;\n    gl_Position = pos;\n  }","frag":"\nprecision highp float;\n#if USE_ALPHA_TEST\n  uniform float alphaThreshold;\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n  #if USE_ALPHA_TEST\n      if (color.a < alphaThreshold) discard;\n  #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n  #if USE_ALPHA_TEST\n      if (alpha < alphaThreshold) discard;\n  #endif\n}\nvarying vec4 v_color;\n#if USE_TEXTURE\nvarying vec2 v_uv0;\nuniform sampler2D texture;\nvarying vec2 v_uv1;\nuniform sampler2D maskTexture;\n#endif\nvoid main () {\n  vec4 o = vec4(1, 1, 1, 1);\n  #if USE_TEXTURE\n  vec4 texture_tmp = texture2D(texture, v_uv0);\n  #if CC_USE_ALPHA_ATLAS_texture\n      texture_tmp.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n  #endif\n  #if INPUT_IS_GAMMA\n    o.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n    o.a *= texture_tmp.a;\n  #else\n    o *= texture_tmp;\n  #endif\n    vec4 mask = texture2D(maskTexture, v_uv1);\n  #endif\n   o *= v_color;\n   o *= mask.a;\n  ALPHA_TEST(o);\n  gl_FragColor = o;\n}"},"builtins":{"globals":{"blocks":[{"name":"CCGlobal","defines":[]}],"samplers":[]},"locals":{"blocks":[{"name":"CCLocal","defines":[]}],"samplers":[]}},"defines":[{"name":"USE_TEXTURE","type":"boolean","defines":[]},{"name":"CC_USE_MODEL","type":"boolean","defines":[]},{"name":"USE_ALPHA_TEST","type":"boolean","defines":[]},{"name":"CC_USE_ALPHA_ATLAS_texture","type":"boolean","defines":["USE_TEXTURE"]},{"name":"INPUT_IS_GAMMA","type":"boolean","defines":["USE_TEXTURE"]}],"blocks":[{"name":"MaskCoords","binding":0,"members":[{"name":"maskTilingOffset","type":16,"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":["USE_TEXTURE"]},{"name":"maskTexture","type":29,"count":1,"binding":31,"defines":["USE_TEXTURE"]}]}],[{"passes":[{"program":"StencilSprite|vs|fs","blendState":{"targets":[{"blend":true}]},"rasterizerState":{"cullMode":0},"properties":{"texture":{"value":"white","type":29},"alphaThreshold":{"type":13,"value":[0.5]},"maskTexture":{"value":"white","type":29},"maskTilingOffset":{"type":16,"value":[1,1,0,0]}}}]}]]],0,0,[],[],[]]