{
    "Name": "AlphaCutoutUnlitMaterialDefinition",
    "OverrideMaterial": "unlitCommon.rematerialdefinition",
    "Parameters": {
        "Constants": {
            "opacityThreshold" : "0.0"
        }
    },
    "Techniques": [
    {
        "Name": "AlphaCutoutUnlitOpaque",
        "VertexShader": {
            "Entry": "vsUnlit"
        },
        "PixelShader": {
            "Entry": "fsUnlit"
        },
        "State" : {
            "AlphaBlend" : false,
            "DepthCompareFunction" : "GreaterEqual",
            "WriteDepth" : true
        },
        "FunctionConstants" : {
            "EnableOpacityMap"              : "true",
            "EnableOpacityThreshold"        : "true",
            "EnableSRGBToLinearConversion"  : "true",
            "EnableTransparency"            : "true",
            "EnableUnlitTexture"            : "true",
            "VertexColorOption"             : "0",
            "EnableClipping"                : "false"
        },
        "DefaultVariations" : [ "UnlitCommon" ],
        "DebugMapping": "UnlitDebug",
        "SupportsRuntimeFunctionConstants" : true,
        "AllowRuntimeTechniqueStateOverride" : true
    },
    {
        "Name": "AlphaCutoutUnlitShadow",
        "VertexShader": {
            "Entry": "vsShadow"
        },
        "PixelShader": {
            "Entry": "fsShadow"
        },
        "State" : {
            "ColorWriteMask" : "None"
        },
        "FunctionConstants" : {
            "EnableAlphaCutoutShadows" : "true"
        },
        "DefaultVariations" : [ "ShadowCommon" ],
        "SupportsRuntimeFunctionConstants" : true
    },
    {
        "Name": "AlphaCutoutUnlitFade",
        "InheritFromTechnique": "AlphaCutoutUnlitOpaque",
        "InheritState": false,
        "State" : {
            "PreferProgrammableBlending" : true,
            "AlphaBlend"             : true,
            "AlphaBlendOperation"    : "Add",
            "AlphaSourceFactor"      : "One",
            "AlphaDestinationFactor" : "OneMinusSourceAlpha",
            "RgbBlendOperation"      : "Add",
            "RgbSourceFactor"        : "One",
            "RgbDestinationFactor"   : "OneMinusSourceAlpha",
            "DepthCompareFunction"   : "GreaterEqual",
            "WriteDepth"             : true
        }
    },
    {
        "Name": "AlphaCutoutUnlitFadeAfterPrepass",
        "InheritFromTechnique": "AlphaCutoutUnlitFade",
        "InheritState": false,
        "State" : {
            "PreferProgrammableBlending" : true,
            "AlphaBlend"             : true,
            "AlphaBlendOperation"    : "Add",
            "AlphaSourceFactor"      : "One",
            "AlphaDestinationFactor" : "OneMinusSourceAlpha",
            "RgbBlendOperation"      : "Add",
            "RgbSourceFactor"        : "One",
            "RgbDestinationFactor"   : "OneMinusSourceAlpha",
            "DepthCompareFunction"   : "GreaterEqual",
            "WriteDepth"             : false
        }
    },
    {
        "Name": "AlphaCutoutUnlitDepthOnly",
        "InheritFromTechnique": "AlphaCutoutUnlitOpaque",
        "InheritState": false,
        "State" : {
            "ColorWriteMask" : "None",
            "WriteDepth": true,
            "DepthCompareFunction": "Greater"
        },
        "FunctionConstants" : {
            "DisableSystemTreatmentOpacity" : "true"
        }
    },
    {
        "Name": "AlphaCutoutUnlitFade_BackCompat",
        "InheritFromTechnique": "AlphaCutoutUnlitFade",
        "InheritState": true,
        "Tags" : {
            "Transparent_BackCompat" : "True"
        }
    }],
    "TechniqueMapping": {
        "Opaque": "AlphaCutoutUnlitOpaque",
        "Shadow": "AlphaCutoutUnlitShadow"
    },
    "TechniqueMappingOverrides": {
        "Fade": {
            "FadeDepthPrepass": "AlphaCutoutUnlitDepthOnly",
            "FadeOpaqueAfterPrepass": "AlphaCutoutUnlitFadeAfterPrepass",
            "FadeOpaqueNoPrepass": "AlphaCutoutUnlitFade",
            "Transparent": "AlphaCutoutUnlitFade_BackCompat"
        }
    }
}
