{
    "Name": "SurfaceShader",
    "OverrideMaterial": "engine:pbrCommon.rematerialdefinition",
    "Parameters": {
        "Constants": {
            "userParameter"  : "[0,0,0,0]"
        },
        "Buffers": {
            "userConstants"  : "fallback.zeros"
        },
        "Textures": {
            "textureCustom"  : "fallback.black"
        }
    },
    "Techniques": [
    {
        "Name": "SurfaceShaderOpaque",
        "VertexShader": {
            "Entry": "realitykit::vsGeometryModifier",
        },
        "PixelShader": {
            "Entry": "realitykit::fsSurfacePbr",
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        },
        "FunctionConstants" : {
            "EnableBaseColorMap"        : "true",
            "EnableNormalMap"           : "true",
            "EnableEmissiveMap"         : "true",
            "EnableSeparateRMAS"        : "true",
            "EnableSingleRMAS"          : "false",
            "EnableRoughnessMap"        : "true",
            "EnableMetallicMap"         : "true",
            "EnableAOMap"               : "true",
            "EnableSpecularMap"         : "true",
            "EnableOpacityMap"          : "true",
            
            "VertexColorOption"         : "0",
            "EnableVertexColor"         : "true",
            "EnableMultiUVs"            : "true",
            
            "EnableIBL"                 : "false",
            "EnableAREnvProbe"          : "false",
            "EnableDynamicLighting"     : "false",
            "EnableLightmap"            : "false",
        },
    },
    {
        "Name": "SurfaceShaderTransparent",
        "VertexShader": {
            "Entry": "realitykit::vsGeometryModifier",
        },
        "PixelShader": {
            "Entry": "realitykit::fsSurfacePbr",
        },
        "State" : {
            "AlphaBlend"                : true,
            "WriteDepth"                : true,
            "DepthCompareFunction"      : "GreaterEqual",
            "AlphaBlendOperation"       : "Add",
            "AlphaSourceFactor"         : "One",
            "AlphaDestinationFactor"    : "OneMinusSourceAlpha",
            "RgbBlendOperation"         : "Add",
            "RgbSourceFactor"           : "One",
            "RgbDestinationFactor"      : "OneMinusSourceAlpha"
        },
        "FunctionConstants" : {
            "EnableBaseColorMap"    : "true",
            "EnableNormalMap"       : "true",
            "EnableEmissiveMap"     : "true",
            "EnableSeparateRMAS"    : "true",
            "EnableSingleRMAS"      : "false",
            "EnableRoughnessMap"    : "true",
            "EnableMetallicMap"     : "true",
            "EnableAOMap"           : "true",
            "EnableSpecularMap"     : "true",
            "EnableOpacityMap"      : "true",
            
            "EnableTransparency"    : "true",
            "VertexColorOption"     : "0",
            "EnableVertexColor"     : "true",
            "EnableMultiUVs"        : "true",
            
            "EnableIBL"             : "false",
            "EnableAREnvProbe"      : "false",
            "EnableDynamicLighting" : "false",
            "EnableLightmap"        : "false",
        },
    }],
    "TechniqueMapping": {
        "Opaque": "SurfaceShaderOpaque"
    }
}
