{
    "Name": "MXIMaterialDefinitionBase",
    "OverrideMaterial": "engine:engineDefaults.rematerialdefinition",
    "Parameters": {
        "Buffers": {
            "mxiReprojection": "fallback.identityMatrix",
            "mxiProxyWidths" : "fallback.ones",
            "mxiVertexMotionData" : "fallback.ones",
            "mxiAlphaBuff" : "fallback.ones"
        },
        "Constants" : {
            "performSRGBConversion" : false
        },
        "Textures": {
            "mxiColor" : "rendergraph.MXIOffscreenColor_0",
            "mxiDepth" : "rendergraph.mxiDepth_0"
        }
    },
    "Techniques": [
        {
            "Name": "MXI",
            "VertexShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "vsMXIProxyReproject"
            },
            "PixelShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "fsMXIProxyFullAlpha"
            },
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : true,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "WriteDepth"                    : true,
                "DepthCompareFunction"          : "GreaterEqual"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIOpaque",
            "InheritFromTechnique": "MXI",
            "InheritState": false,
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : false,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "WriteDepth"                    : true,
                "DepthCompareFunction"          : "Always"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIStencilInterior",
            "VertexShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "vsMXIProxyReprojectInteriorRegion"
            },
            "State" : {
                "AlphaBlend" : false,
                "WriteDepth" : false,
                "DepthCompareFunction" : "Always"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIStencilCracks",
            "VertexShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "vsMXIProxyReprojectAlphaBlendRegion"
            },
            "PixelShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "fsMXIStencilAlpha"
            },
            "State" : {
                "AlphaBlend" : false,
                "WriteDepth" : false,
                "DepthCompareFunction" : "Always"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIReprojectAndBlend",
            "VertexShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "vsMXIProxyReprojectWithAlpha"
            },
            "PixelShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "fsMXIProxyBlend"
            },
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : true,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "WriteDepth"                    : true,
                "DepthCompareFunction"          : "Always"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXICopyNoReproject",
            "VertexShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "vsMXIProxyNoReproject"
            },
            "PixelShader": {
                "Library" : "engine:mxi.metallib",
                "Entry": "fsMXIProxyFullAlpha"
            },
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : true,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "WriteDepth"                    : true,
                "DepthCompareFunction"          : "Always"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIDepthOnly",
            "InheritFromTechnique": "MXIOpaque",
            "InheritState": false,
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : true,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "ColorWriteMask"                : "None",
                "WriteDepth"                    : true,
                "DepthCompareFunction"          : "Greater"
            },
            "FunctionConstants": {
                "EnableMultiUVs"        : "true"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIFadeOpaque",
            "InheritFromTechnique": "MXI",
            "InheritState": false,
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : true,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "WriteDepth"                    : false,
                "DepthCompareFunction"          : "GreaterEqual"
            },
            "FunctionConstants" : {
                "EnableMultiUVs"        : "true",
                "EnableTransparency"    : "false"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true
        },
        {
            "Name": "MXIFadeOpaque_BackCompat",
            "InheritFromTechnique": "MXIFadeOpaque",
            "InheritState": false,
            "State" : {
                "PreferProgrammableBlending"    : false,
                "AlphaBlend"                    : true,
                "AlphaBlendOperation"           : "Add",
                "AlphaSourceFactor"             : "One",
                "AlphaDestinationFactor"        : "OneMinusSourceAlpha",
                "RgbBlendOperation"             : "Add",
                "RgbSourceFactor"               : "One",
                "RgbDestinationFactor"          : "OneMinusSourceAlpha",
                "WriteDepth"                    : true,
                "DepthCompareFunction"          : "GreaterEqual"
            },
            "FunctionConstants" : {
                "EnableMultiUVs"        : "true",
                "EnableTransparency"    : "false"
            },
            "SupportsRuntimeFunctionConstants"      : true,
            "AllowRuntimeTechniqueStateOverride"    : true,
            "Tags" : {
                "Transparent_BackCompat" : "True"
            }
        }
    ],
    "TechniqueMapping": {
        "Opaque": "MXIOpaque",
        "StencilInterior": "MXIStencilInterior",
        "StencilTransition": "MXIStencilCracks",
        "ReprojectGoodRegion": "MXIReprojectAndBlend",
        "FullscreenCopy": "MXICopyNoReproject"
    },
    "TechniqueMappingOverrides": {
        "Fade": {
            "FadeDepthPrepass": "MXIDepthOnly",
            "FadeOpaque": "MXIFadeOpaque",
            "Transparent": "MXIFadeOpaque_BackCompat"
        }
    }
}

