{
    "Name": "environmentMaskExampleDefinition",
    "OverrideMaterial": "engine:engineDefaults.rematerialdefinition",
    "Parameters": {
        "Constants": {
            "immersionCurve0" : "0",
            "immersionCurve1" : "0",
            "immersionCurve2" : "0",
            "immersionCurve3" : "0",
            "openSkyFeather"  : "0",
            "openSkyGlobalAlpha"     : "1"
        },
        "Buffers": {
            "immersionConstants" : "fallback.zeros256bytes"
        },
        "Textures": {
            "texturePrecomputed"    : "fallback.black",
            "openSkyMask"           : "fallback.texture2dArray",
            "openSkyMaskCopyOutput" : "fallback.texture2dArray",
            "openSkyFadeMask"       : "openSkyFadeMask_gradientBox.png",
            "skyVertexBuffer"       : "fallback.white"
        }
    },
    "Techniques": [
    {
        "Name": "MaskTechniquePrecomputed",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironmentPrecomputed"
        },
        "PixelShader": {
            "Entry": "immersivemask::fsMaskPrecomputed"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        },
        "SupportsRuntimeFunctionConstants" : true,
        "PreloadOptions" : {
            "PositionFormatOverride" : [0, 1]
        }
    },
    {
        "Name": "MaskTechniquePrecomputedYUp",
        "VertexShader": {
            "Entry": "vsImmersiveEnvironmentPrecomputed"
        },
        "PixelShader": {
            "Entry": "immersivemask::fsMaskPrecomputedYUp"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        },
        "SupportsRuntimeFunctionConstants" : true
    },
    {
        "Name": "MaskTechniqueOpenSky",
        "VertexShader": {
            "Entry": "opensky::vsImmersiveEnvironmentOpenSky"
        },
        "PixelShader": {
            "Entry": "opensky::fsGenerateMaskOpenSky"
        },
        "State" : {
            "AlphaBlend"             : false,
            "WriteDepth"             : false,
            "DepthCompareFunction"   : "Always"
        }
    },
    {
        "Name": "MaskTechniqueOpenSkyCrossfade",
        "VertexShader": {
            "Entry": "opensky::vsImmersiveEnvironmentOpenSky"
        },
        "PixelShader": {
            "Entry": "opensky::fsGenerateMaskOpenSky"
        },
        "State" : {
            "AlphaBlend" : true,
            "WriteDepth" : false,
            "DepthCompareFunction" : "Always",
            "RgbBlendOperation": "Add",
            "RgbSourceFactor": "One",
            "RgbDestinationFactor": "One",
            "AlphaSourceFactor": "Zero",
            "AlphaDestinationFactor": "One"
        }
    },
    {
        "Name": "MaskTechniqueOpenSkyEdgeLoop",
        "VertexShader": {
            "Entry": "opensky::vsOpenSkyEdgeLoop"
        },
        "PixelShader": {
            "Entry": "opensky::fsGenerateMaskOpenSkyEdgeLoop"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : false,
            "DepthCompareFunction" : "Always"
        }
    }

    ],
    "TechniqueMapping": {
        "GenerateImmersionMaskPrecomputed": "MaskTechniquePrecomputed",
        "GenerateImmersionMaskPrecomputedYUp": "MaskTechniquePrecomputedYUp",
        "GenerateImmersionMaskOpenSky": "MaskTechniqueOpenSky",
        "GenerateImmersionMaskOpenSkyCrossfade": "MaskTechniqueOpenSkyCrossfade",
        "GenerateImmersionMaskOpenSkyEdgeLoop": "MaskTechniqueOpenSkyEdgeLoop"
    }
}
