{
    "Name": "AlphaCutoutPbr",
    "OverrideMaterial": "engine:pbrCommon.rematerialdefinition",
    "Techniques": [
    {
        "Name": "AlphaCutoutOpaque",
        "VertexShader": {
            "Entry": "vsRealityPbr"
        },
        "PixelShader": {
            "Entry": "fsRealityPbr"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        },
        "FunctionConstants" : {
            "EnableBaseColorMap"     : "true",
            "EnableNormalMap"        : "true",
            "EnableEmissiveMap"      : "true",
            "EnableAreaLight"        : "true",
            "EnableSeparateRMAS"     : "true",
            "EnableRoughnessMap"     : "true",
            "EnableMetallicMap"      : "true",
            "EnableAOMap"            : "true",
            "EnableSpecularMap"      : "true",
            "EnableTransparency"     : "true",
            "EnableOpacityThreshold" : "true",
            "EnableOpacityMap"       : "true",
            "EnableIBL"              : "true",
            "EnableAREnvProbe"       : "false",
            "EnableVirtualEnvironmentProbes" : "false"
        },
        "DefaultVariations" : [ "OpaqueCommon", "TextureCommon" ],
        "DebugMapping": "PbrDebug",
        "AllowRuntimeTechniqueStateOverride" : true,
        "SupportsRuntimeFunctionConstants" : true
    },
    {
        "Name": "AlphaCutoutOpaqueLite",
        "InheritFromTechnique": "AlphaCutoutOpaque",
        "InheritState": true,
        "FunctionConstants" : {
            "EnableEmissiveMap"      : "false",
            "EnableAreaLight"        : "false",
            "EnableRoughnessMap"     : "false",
            "EnableMetallicMap"      : "false",
            "EnableAOMap"            : "false",
            "EnableSpecularMap"      : "false",
            "EnableNormalMap"           : "false",
            "EnableWorldSpaceNormalMap" : "false",
            "EnableMultiscatter"        : "true",
            "EnableNdfFiltering"        : "false",
            "EnableIBLRotation"         : "false",
            "EnableIBLDirectionsBend"   : "false"
        }
    },
    {
        "Name": "AlphaCutoutFade",
        "VertexShader": {
            "Entry": "vsRealityPbr"
        },
        "PixelShader": {
            "Entry": "fsRealityPbr"
        },
        "InheritState": false,
        "State" : {
            "PreferProgrammableBlending" : true,
            "AlphaBlend"             : true,
            "AlphaBlendOperation"    : "Add",
            "AlphaSourceFactor"      : "One",
            "AlphaDestinationFactor" : "OneMinusSourceAlpha",
            "RgbBlendOperation"      : "Add",
            "RgbSourceFactor"        : "One",
            "RgbDestinationFactor"   : "OneMinusSourceAlpha",
            "DepthCompareFunction"   : "GreaterEqual",
            "WriteDepth"             : true
        },
        "FunctionConstants" : {
            "EnableBaseColorMap"     : "true",
            "EnableNormalMap"        : "true",
            "EnableEmissiveMap"      : "true",
            "EnableAreaLight"        : "true",
            "EnableSeparateRMAS"     : "true",
            "EnableRoughnessMap"     : "true",
            "EnableMetallicMap"      : "true",
            "EnableAOMap"            : "true",
            "EnableSpecularMap"      : "true",
            "EnableTransparency"     : "true",
            "EnableOpacityThreshold" : "true",
            "EnableOpacityMap"       : "true",
            "EnableIBL"              : "true",
            "EnableAREnvProbe"       : "false",
            "EnableVirtualEnvironmentProbes" : "false"
        },
        "DefaultVariations" : [ "TransparentCommon", "TextureCommon" ],
        "DebugMapping": "PbrDebug",
        "AllowRuntimeTechniqueStateOverride" : true,
        "SupportsRuntimeFunctionConstants" : true
    },
    {
        "Name": "AlphaCutoutFadeLite",
        "InheritFromTechnique": "AlphaCutoutFade",
        "InheritState": true,
        "FunctionConstants" : {
            "EnableEmissiveMap"      : "false",
            "EnableAreaLight"        : "false",
            "EnableRoughnessMap"     : "false",
            "EnableMetallicMap"      : "false",
            "EnableAOMap"            : "false",
            "EnableSpecularMap"      : "false",
            "EnableNormalMap"           : "false",
            "EnableWorldSpaceNormalMap" : "false",
            "EnableMultiscatter"        : "true",
            "EnableNdfFiltering"        : "false",
            "EnableIBLRotation"         : "false",
            "EnableIBLDirectionsBend"   : "false"
        }
    },
    {
        "Name": "AlphaCutoutFadeAfterPrepass",
        "InheritFromTechnique": "AlphaCutoutFade",
        "InheritState": false,
        "State" : {
            "PreferProgrammableBlending" : true,
            "AlphaBlend"             : true,
            "AlphaBlendOperation"    : "Add",
            "AlphaSourceFactor"      : "One",
            "AlphaDestinationFactor" : "OneMinusSourceAlpha",
            "RgbBlendOperation"      : "Add",
            "RgbSourceFactor"        : "One",
            "RgbDestinationFactor"   : "OneMinusSourceAlpha",
            "DepthCompareFunction"   : "GreaterEqual",
            "WriteDepth"             : false
        }
    },
    {
        "Name": "AlphaCutoutFadeLiteAfterPrepass",
        "InheritFromTechnique": "AlphaCutoutFadeAfterPrepass",
        "InheritState": true,
        "FunctionConstants" : {
            "EnableEmissiveMap"      : "false",
            "EnableAreaLight"        : "false",
            "EnableRoughnessMap"     : "false",
            "EnableMetallicMap"      : "false",
            "EnableAOMap"            : "false",
            "EnableSpecularMap"      : "false",
            "EnableNormalMap"           : "false",
            "EnableWorldSpaceNormalMap" : "false",
            "EnableMultiscatter"        : "true",
            "EnableNdfFiltering"        : "false",
            "EnableIBLRotation"         : "false",
            "EnableIBLDirectionsBend"   : "false"
        }
    },
    {
        "Name": "AlphaCutoutDepthOnly",
        "InheritFromTechnique": "AlphaCutoutOpaque",
        "InheritState": false,
        "State" : {
            "ColorWriteMask" : "None",
            "WriteDepth": true,
            "DepthCompareFunction": "Greater"
        },
        "FunctionConstants" : {
            "DisableSystemTreatmentOpacity" : "true"
        }
    },
    {
        "Name": "AlphaCutoutFade_BackCompat",
        "InheritFromTechnique": "AlphaCutoutFade",
        "InheritState": true,
        "Tags" : {
            "Transparent_BackCompat" : "True"
        }
    },
    {
        "Name": "AlphaCutoutFadeLite_BackCompat",
        "InheritFromTechnique": "AlphaCutoutFadeLite",
        "InheritState": true,
        "Tags" : {
            "Transparent_BackCompat" : "True"
        }
    },
    {
        "Name": "Shadow",
        "VertexShader": {
            "Entry": "vsShadow"
        },
        "PixelShader": {
            "Entry": "fsShadow"
        },
        "State" : {
            "ColorWriteMask" : "None"
        },
        "FunctionConstants" : {
            "EnableAlphaCutoutShadows" : "true",
            "EnableOpacityMap" : "true"
        },
        "DefaultVariations" : [ "ShadowCommon" ],
        "SupportsRuntimeFunctionConstants" : true
    }],
    "TechniqueQualityLevelSet": [
        {
            "Name" : "OpaquePBRSet",
            "TechniqueSetBaseline" : "AlphaCutoutOpaque",
            "Techniques": ["AlphaCutoutOpaque", "AlphaCutoutOpaqueLite"]
        },
        {
            "Name" : "AfterPrepassFadePBRSet",
            "TechniqueSetBaseline" : "AlphaCutoutFade",
            "Techniques": ["AlphaCutoutFadeAfterPrepass", "AlphaCutoutFadeLiteAfterPrepass"]
        },
        {
            "Name" : "NoPrepassPBRSet",
            "TechniqueSetBaseline" : "AlphaCutoutFade",
            "Techniques": ["AlphaCutoutFade", "AlphaCutoutFadeLite"]
        },
        {
            "Name" : "FadePBRSet_BackCompat",
            "TechniqueSetBaseline" : "AlphaCutoutFade_BackCompat",
            "Techniques": ["AlphaCutoutFade_BackCompat", "AlphaCutoutFadeLite_BackCompat"]
        }
    ],
    "TechniqueMapping": {
        "Opaque": "OpaquePBRSet",
        "OpaqueOverdraw": "OpaqueOverdraw",
        "Shadow": "Shadow"
    },
    "TechniqueMappingOverrides": {
        "Fade": {
            "FadeDepthPrepass": "AlphaCutoutDepthOnly",
            "FadeOpaqueAfterPrepass": "AfterPrepassFadePBRSet",
            "FadeOpaqueNoPrepass": "NoPrepassPBRSet",
            "Transparent": "FadePBRSet_BackCompat"
        }
    }
}
