{
  "materials": {
    "version": "1.0.0",

    "ui_base": {
      "vertexShader": "shaders/color_uv.vertex",
      "vrGeometryShader": "shaders/color_uv.geometry",
      "fragmentShader": "shaders/color_texture.fragment",

      "+states": [
        "EnableStencilTest",
        "DisableDepthTest",
        "Blending"
      ],

      "frontFace": {
        "stencilFunc": "Equal",
        "stencilFailOp": "Keep",
        "stencilDepthFailOp": "Keep",
        "stencilPassOp": "Keep"
      },

      "backFace": {
        "stencilFunc": "Equal",
        "stencilFailOp": "Keep",
        "stencilDepthFailOp": "Keep",
        "stencilPassOp": "Keep"
      },

      "stencilReadMask": 240,
      "stencilWriteMask": 240,

      "msaaSupport": "Both",

      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Point"
        },
        {
          "samplerIndex": 1,
          "textureFilter": "Point"
        }
      ],

      "vertexFields": [
        { "field": "Position" },
        { "field": "Color" },
        { "field": "UV0" }
      ]

    },

    "ui_texture_and_color:ui_base": {
      "vertexShader": "shaders/color_uv.vertex",
      "vrGeometryShader": "shaders/color_uv.geometry",
      "fragmentShader": "shaders/color_texture.fragment"

    },

    "im_gui:ui_texture_and_color": {
      "-states": [
        "EnableStencilTest"
      ],
      "+states": [
        "DisableCulling"
      ]
    },

    "ui_texture_and_color_blur:ui_texture_and_color": {
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Bilinear"
        }
      ]
    },

    "ui_texture_and_color_tint:ui_texture_and_color": {
      "+defines": [
        "ENABLE_VERTEX_TINT_MASK",
        "COLOR_MULTIPLIER",
        "MULTI_COLOR_TINT"
      ]
    },

    "ui_text:ui_texture_and_color": {
      "fragmentShader": "shaders/text.fragment"

    },

    "ui_text_msdf:ui_text": {
      "+defines": [ "MSDF" ],
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Bilinear"
        }
      ]
    },

    "ui_text_smooth:ui_text": {
      "+defines": [ "SMOOTH" ],
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Bilinear"
        }
      ]
    },

    "ui_fill_color:ui_base": {
      "vertexShader": "shaders/position.vertex",
      "vrGeometryShader": "shaders/position.geometry",
      "fragmentShader": "shaders/current_color.fragment",
      "vertexFields": [
        { "field": "Position" }
      ]

    },

    "ui_fill_stencil:ui_base": {
      "vertexShader": "shaders/position.vertex",
      "vrGeometryShader": "shaders/position.geometry",
      "fragmentShader": "shaders/current_color.fragment",

      "+states": [
        "StencilWrite",
        "EnableStencilTest",
        "DisableColorWrite",
        "DisableDepthWrite"
      ],

      "frontFace": {
        "stencilFunc": "Always",
        "stencilFailOp": "Replace",
        "stencilDepthFailOp": "Replace",
        "stencilPassOp": "Replace"
      },

      "backFace": {
        "stencilFunc": "Always",
        "stencilFailOp": "Replace",
        "stencilDepthFailOp": "Replace",
        "stencilPassOp": "Replace"
      },

      "stencilRefOverride": 0,

      "vertexFields": [
        { "field": "Position" }
      ]

    },

    "ui_fill_gradient:ui_base": {
      "+states": [
        "DisableDepthWrite"
      ],

      "vertexShader": "shaders/color.vertex",
      "vrGeometryShader": "shaders/color.geometry",
      "fragmentShader": "shaders/color.fragment",

      "vertexFields": [
        { "field": "Position" },
        { "field": "Color" }
      ]

    },

    "ui_grayscale:ui_base": {
      "vertexShader": "shaders/uv.vertex",
      "vrGeometryShader": "shaders/uv.geometry",
      "fragmentShader": "shaders/color_grayscale.fragment",

      "alphaDst": "DestColor",
      "vertexFields": [
        { "field": "Position" },
        { "field": "UV0" }
      ]
    },

    "ui_grayscale_bilinear:ui_grayscale": {
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Bilinear"
        }
      ]
    },

    "ui_textured:ui_base": {
      "vertexShader": "shaders/uv.vertex",
      "vrGeometryShader": "shaders/uv.geometry",
      "fragmentShader": "shaders/texture.fragment",
      "vertexFields": [
        { "field": "Position" },
        { "field": "UV0" }
      ]
    },

    "ui_textured_and_glcolor:ui_base": {
      "+states": [
        "DisableDepthWrite"
      ],
      "vertexShader": "shaders/uv.vertex",
      "vrGeometryShader": "shaders/uv.geometry",
      "fragmentShader": "shaders/texture_ccolor.fragment",

      "alphaDst": "DestColor",
      "vertexFields": [
        { "field": "Position" },
        { "field": "UV0" }
      ]
    },

    "ui_textured_and_glcolor_bilinear_sprite:ui_textured_and_glcolor": {
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Bilinear"
        }
      ]
    },

    "ui_textured_and_glcolor_sprite:ui_textured_and_glcolor": {
      "alphaDst": "OneMinusSrcAlpha"
    },

    "ui_item:ui_base": {
      "vertexShader": "shaders/color_uv.vertex",
      "vrGeometryShader": "shaders/color_uv.geometry",
      "fragmentShader": "shaders/color_texture.fragment",

      "+defines": [ "ALPHA_TEST", "ENABLE_VERTEX_TINT_MASK", "ENABLE_CURRENT_ALPHA_MULTIPLY" ]
    },

    "ui_item_multicolor_tint:ui_item": {
      "vertexShader": "shaders/color_uv.vertex",
      "vrGeometryShader": "shaders/color_uv.geometry",
      "fragmentShader": "shaders/color_texture.fragment",

      "+defines": [ "MULTI_COLOR_TINT" ]
    },

    "ui_item_glint_stencil:ui_item": {
      "vertexShader": "shaders/color_uv.vertex",
      "vrGeometryShader": "shaders/color_uv.geometry",
      "fragmentShader": "shaders/color_texture.fragment",

      "+states": [
        "StencilWrite",
        "EnableStencilTest"
      ],

      "frontFace": {
        "stencilFunc": "Equal",
        "stencilPassOp": "Replace"
      },

      "backFace": {
        "stencilFunc": "Equal",
        "stencilPassOp": "Replace"
      },

      "stencilRef": 1,
      "stencilReadMask": 240,
      "stencilWriteMask": 15,

      "+defines": [ "ALPHA_TEST", "ENABLE_VERTEX_TINT_MASK" ]
    },

    "ui_item_unglint_stencil:ui_item_glint_stencil": {

      "+states": [
        "StencilWrite",
        "EnableStencilTest",
        "DisableColorWrite",
        "DisableDepthWrite"
      ],

      "stencilRef": 0
    },

    "ui_item_glint:ui_base": {
      "vertexShader": "shaders/color_uv.vertex",
      "vrGeometryShader": "shaders/color_uv.geometry",
      "fragmentShader": "shaders/color_texture.fragment",

      "+defines": [ "GLINT", "ENABLE_VERTEX_TINT_MASK", "ENABLE_CURRENT_ALPHA_MULTIPLY" ],
      "+samplerStates": [
        {
          "samplerIndex": 1,
          "textureWrap": "Repeat",
          "textureFilter": "Bilinear"
        }
      ],

      "stencilReadMask": 240,
      "stencilWriteMask": 255
    },

    "ui_inventory_item_glint:ui_item_glint": {
      "blendSrc": "SourceColor",
      "blendDst": "One",

      "+states": [ "EnableStencilTest" ],

      "frontFace": {
        "stencilFunc": "Equal"
      },

      "backFace": {
        "stencilFunc": "Equal"
      },

      "stencilRef": 1,
      "stencilReadMask": 255,
      "stencilWriteMask": 255,

      "+defines": [ "INVENTORY" ]
    },

    "ui_invert_overlay:ui_base": {

      "blendSrc": "OneMinusDestColor",
      "blendDst": "OneMinusSrcColor",

      "vertexShader": "shaders/position.vertex",
      "vrGeometryShader": "shaders/position.geometry",
      "fragmentShader": "shaders/flat_white.fragment",
      "vertexFields": [
        { "field": "Position" }
      ]
    },

    "ui_cubemap:ui_base": {

      "vertexShader": "shaders/uv_time_rotate.vertex",
      "vrGeometryShader": "shaders/uv.geometry",
      "fragmentShader": "shaders/texture.fragment",
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Bilinear"
        }
      ],
      "vertexFields": [
        { "field": "Position" },
        { "field": "UV0" }
      ]
    },

    "ui_crosshair:ui_invert_overlay": {
      "vertexShader": "shaders/uv.vertex",
      "vrGeometryShader": "shaders/uv.geometry",
      "fragmentShader": "shaders/texture.fragment",
      "vertexFields": [
        { "field": "Position" },
        { "field": "UV0" }
      ]
    },

    "animated_texture_blit": {
      "+states": [
        "DisableDepthTest",
        "DisableCulling"
      ],

      "frontFace": {
        "stencilFunc": "Equal",
        "stencilFailOp": "Keep",
        "stencilDepthFailOp": "Keep",
        "stencilPassOp": "Keep"
      },

      "backFace": {
        "stencilFunc": "Equal",
        "stencilFailOp": "Keep",
        "stencilDepthFailOp": "Keep",
        "stencilPassOp": "Keep"
      },

      "stencilReadMask": 240,
      "stencilWriteMask": 240,

      "vertexShader": "shaders/uv_blend_flipbook.vertex",
      "vrGeometryShader": "shaders/uv_blend.geometry",
      "fragmentShader": "shaders/texture_blend.fragment",
      "vertexFields": [
        { "field": "Position" },
        { "field": "UV0" }
      ],

      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Point"
        }
      ],

      "isAnimatedTexture": 1
    },

    "debug_texture:ui_base": {

      "vertexShader": "shaders/uv.vertex",
      "vrGeometryShader": "shaders/uv.geometry",
      "fragmentShader": "shaders/texture.fragment",
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Point"
        }
      ]
    },
    "debug_array_texture:debug_texture": {
      "defines": [ "ARRAY_TEXTURE_0" ]
    },
    "ui_skinning_item:ui_item": {
      "vertexShader": "shaders/entity.vertex",
      "vrGeometryShader": "shaders/entity.geometry",
      "fragmentShader": "shaders/entity.fragment",
      "+states": [ "Blending" ],
      "+defines": [ "UI_ENTITY" ],
      "vertexFields": [
        { "field": "Position" },
        { "field": "Normal" },
        { "field": "UV0" }
      ],
      "variants": [
        {
          "skinning": {
            "+defines": [ "USE_SKINNING" ],
            "vertexFields": [
              { "field": "Position" },
              { "field": "BoneId0" },
              { "field": "Normal" },
              { "field": "UV0" }
            ]
          }
        },
        {
          "skinning_alphatest": {
            "+defines": [ "USE_SKINNING", "ALPHA_TEST" ],
            "vertexFields": [
              { "field": "Position" },
              { "field": "BoneId0" },
              { "field": "Normal" },
              { "field": "UV0" }
            ]
          }
        }
      ],
      "msaaSupport": "Both",
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Point"
        }
      ]
    },
    "ui_mob_head:ui_skinning_item": {},
    "ui_mob_head_glint:ui_mob_head": {
      "+defines": [ "GLINT" ]
    },
    "ui_dragon_head:ui_mob_head": {},
    "ui_dragon_head_glint:ui_mob_head": {
      "+defines": [ "GLINT" ]
    },

    "ui_conduit:ui_skinning_item": {},

    "ui_shield:ui_skinning_item": {},
    "ui_shield_glint:ui_shield": {
      "+defines": [ "GLINT" ]
    },

    "ui_banner:ui_item": {
      "vertexShader": "shaders/banner.vertex",
      "vrGeometryShader": "shaders/banner.geometry",
      "fragmentShader": "shaders/banner.fragment",
      "+states": [ "Blending" ],
      "+defines": [ "ENABLE_LIGHT", "UI_ENTITY" ],

      "vertexFields": [
        { "field": "Position" },
        { "field": "Color" },
        { "field": "Normal" },
        { "field": "UV0" }
      ],
      "variants": [
        {
          "skinning": {
            "+defines": [ "USE_SKINNING" ],
            "vertexFields": [
              { "field": "Position" },
              { "field": "BoneId0" },
              { "field": "Color" },
              { "field": "Normal" },
              { "field": "UV0" }
            ]
          }
        }
      ],
      "msaaSupport": "Both",
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureFilter": "Point"
        }
      ]
    },
    "ui_banner_pole:ui_banner": {
      "+defines": [ "DISABLE_TINTING", "ENABLE_LIGHT" ],
      "+states": []
    },

    "ui_banner_shield:ui_item": {
      "vertexShader": "shaders/pattern.vertex",
      "vrGeometryShader": "shaders/banner.geometry",
      "fragmentShader": "shaders/pattern.fragment",
      "+states": [ "Blending" ],
      "+defines": [ "UI_ENTITY" ],
      "vertexFields": [
        { "field": "Position" },
        { "field": "Normal" },
        { "field": "UV0" }
      ],
      "variants": [
        {
          "skinning": {
            "+defines": [ "USE_SKINNING" ],
            "vertexFields": [
              { "field": "Position" },
              { "field": "BoneId0" },
              { "field": "Normal" },
              { "field": "UV0" }
            ]
          }
        }
      ],
      "msaaSupport": "Both",
      "+samplerStates": [
        {
          "samplerIndex": 0,
          "textureWrap": "Clamp"
        },
        {
          "samplerIndex": 2,
          "textureWrap": "Clamp"
        }
      ]
    },

    "ui_banner_shield_glint:ui_banner_shield": {
      "+defines": [ "GLINT" ],
      "+samplerStates": [
        {
          "samplerIndex": 1,
          "textureWrap": "Repeat"
        }
      ]
    }
  }
}
