{
  "__type__": "cc.EffectAsset",
  "_name": "builtin-2d-sprite",
  "_objFlags": 0,
  "_native": "",
  "properties": {
    "texture": {
      "type": 13,
      "value": null
    },
    "alphaThreshold": {
      "value": 0.5
    }
  },
  "techniques": [
    {
      "passes": [
        {
          "cullMode": 0,
          "blend": true,
          "program": "cea1abc1cddcfe17654f435ec4a977f72769819d4d7c0460b90eedb5"
        }
      ],
      "layer": 0,
      "stages": [
        "opaque"
      ],
      "queue": 0,
      "priority": 0
    }
  ],
  "shaders": [
    {
      "vert": "\n#define _IS_VERT_SHADER 1\n\nprecision highp float;\n\nuniform mat4 cc_matViewProj;\n\n#if _USE_MODEL\n  uniform mat4 cc_matWorld;\n#endif\n\nattribute vec3 a_position;\nattribute lowp vec4 a_color;\n\n#if USE_TEXTURE\n  attribute mediump vec2 a_uv0;\n  varying mediump vec2 v_uv0;\n#endif\n\nvarying lowp vec4 v_color;\n\nvoid main () {\n  mat4 mvp;\n  \n  #if _USE_MODEL\n    mvp = cc_matViewProj * cc_matWorld;\n  #else\n    mvp = cc_matViewProj;\n  #endif\n\n  #if USE_TEXTURE\n    v_uv0 = a_uv0;\n  #endif\n\n  v_color = a_color;\n\n  gl_Position = mvp * vec4(a_position, 1);\n}\n\n\n",
      "frag": "\n#define _IS_FRAG_SHADER 1\n\nprecision highp float;\n\n#if USE_TEXTURE\n  uniform sampler2D texture;\n  varying mediump vec2 v_uv0;\n#endif\n\n#if USE_ALPHA_TEST\n  uniform float alphaThreshold;\n#endif\n\nvoid ALPHA_TEST (in vec4 color) {\n  #if USE_ALPHA_TEST\n      if (color.a < alphaThreshold) discard;\n  #endif\n}\n\nvoid ALPHA_TEST (in float alpha) {\n  #if USE_ALPHA_TEST\n      if (alpha < alphaThreshold) discard;\n  #endif\n}\n\nvarying lowp vec4 v_color;\n\nvoid main () {\n  vec4 color = v_color;\n\n  #if USE_TEXTURE\n    color *= texture2D(texture, v_uv0);\n    #if _USE_ETC1_TEXTURE\n      color.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n    #endif\n  #endif\n\n  ALPHA_TEST(color);\n\n  gl_FragColor = color;\n}\n\n\n",
      "defines": [
        {
          "name": "_USE_MODEL",
          "type": "boolean",
          "defines": []
        },
        {
          "name": "USE_TEXTURE",
          "type": "boolean",
          "defines": []
        },
        {
          "name": "USE_ALPHA_TEST",
          "type": "boolean",
          "defines": []
        },
        {
          "name": "_USE_ETC1_TEXTURE",
          "type": "boolean",
          "defines": [
            "USE_TEXTURE"
          ]
        }
      ],
      "uniforms": [
        {
          "name": "texture",
          "type": 13,
          "defines": [
            "USE_TEXTURE"
          ]
        },
        {
          "name": "alphaThreshold",
          "type": 4,
          "property": true,
          "defines": [
            "USE_ALPHA_TEST"
          ]
        }
      ],
      "attributes": [
        {
          "name": "a_position",
          "type": 6,
          "defines": []
        },
        {
          "name": "a_color",
          "type": 7,
          "defines": []
        },
        {
          "name": "a_uv0",
          "type": 5,
          "defines": [
            "USE_TEXTURE"
          ]
        }
      ],
      "extensions": [],
      "name": "cea1abc1cddcfe17654f435ec4a977f72769819d4d7c0460b90eedb5"
    }
  ]
}