{
    "Name": "environmentMaskDefinition",
    "OverrideMaterial": "engine:engineDefaults.rematerialdefinition",
    "Parameters": {
        "Constants": {
            "immersionCurve0" : "0",
            "immersionCurve1" : "0",
            "immersionCurve2" : "0",
            "immersionCurve3" : "0"
        },
        "Textures": {
            "textureDepth" : "fallback.black"
        }
    },
    "Techniques": [
    {
        "Name": "MaskTechniqueRadial",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironment"
        },
        "PixelShader": {
            "Entry": "portal::fsMaskRadial",
            "Library" : "default.metallib"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        },
        "FunctionConstants" : {
            "UseFullscreenQuadForImmersionMask" : "false"
        },
        "Variations" : {
          "UseFullscreenQuadForImmersionMask"  : ["false", "true"]
        },
        "SupportsRuntimeFunctionConstants": "true",
        "RuntimeFunctionConstantDefaults": {
            "UseFullscreenQuadForImmersionMask": "false"
        }
    },
    {
        "Name": "MaskTechniqueDepth",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironment"
        },
        "PixelShader": {
            "Entry": "portal::fsMaskDepth",
            "Library" : "default.metallib"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        },
        "FunctionConstants" : {
            "UseFullscreenQuadForImmersionMask" : "false"
        },
        "Variations" : {
          "UseFullscreenQuadForImmersionMask"  : ["false", "true"]
        },
        "SupportsRuntimeFunctionConstants": "true",
        "RuntimeFunctionConstantDefaults": {
            "UseFullscreenQuadForImmersionMask": "false"
        }
    },
    {
        "Name": "MaskTechniqueBox",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironment"
        },
        "PixelShader": {
            "Entry": "portal::fsMaskBox",
            "Library" : "default.metallib"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        },
        "FunctionConstants" : {
            "UseFullscreenQuadForImmersionMask" : "false"
        },
        "Variations" : {
          "UseFullscreenQuadForImmersionMask"  : ["false", "true"]
        },
        "SupportsRuntimeFunctionConstants": "true",
        "RuntimeFunctionConstantDefaults": {
            "UseFullscreenQuadForImmersionMask": "false"
        }
    },
    {
        "Name": "MaskTechniqueDistance",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironment"
        },
        "PixelShader": {
            "Entry": "portal::fsMaskByDistance",
            "Library" : "default.metallib"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        },
        "FunctionConstants" : {
            "UseFullscreenQuadForImmersionMask" : "false"
        },
        "Variations" : {
          "UseFullscreenQuadForImmersionMask"  : ["false", "true"]
        },
        "SupportsRuntimeFunctionConstants": "true",
        "RuntimeFunctionConstantDefaults": {
            "UseFullscreenQuadForImmersionMask": "false"
        }
    },
    {
        "Name": "MaskTechniqueCheckered",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironment"
        },
        "PixelShader": {
            "Entry": "portal::fsMaskCheckered",
            "Library" : "default.metallib"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        }
    }
    ],
    "TechniqueMapping": {
        "GenerateImmersionMaskDepth": "MaskTechniqueDepth",
        "GenerateImmersionMaskRadial": "MaskTechniqueRadial",
        "GenerateImmersionMaskBox": "MaskTechniqueBox",
        "GenerateImmersionMaskDistance": "MaskTechniqueDistance",
        "GenerateImmersionMaskCheckered": "MaskTechniqueCheckered"
    }
}
