{
    "Name": "Reality Fusion Debug Mesh Visualization",
    "OverrideMaterial": "engine:engineDefaults.rematerialdefinition",
    "Parameters": {
        "Constants": {
            "meshPosition"    : "[0.0, 0.0, 0.0, 1.0]",
            "meshOrientation" : "[0.0, 0.0, 0.0, 1.0]",
            "meshScale"       : "[1.0, 1.0, 1.0, 1.0]",
            "solidColor"      : "[1.0, 1.0, 1.0, 1.0, displayp3]",
            "wireColor"       : "[1.0, 1.0, 1.0, 1.0, displayp3]",
            "meshWarmth"      : "0.0",
            "barycentricWireframeSmoothing" : "1.0",
            "barycentricWireframeThickness" : "1.0"
        },
        "Buffers": {
            "position"       : "geometry.vertexPosition",
            "color"          : "geometry.vertexColor",
            "normal"         : "geometry.vertexNormal",
            "classification" : "geometry.vertexClassification",
            "material"       : "geometry.vertexMaterial"
        }
    },
    "Techniques": [
    {
        "Name": "RFMeshDebugVisConstantColor",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisConstantColor"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater"
        },
        "FunctionConstants" : {
            "MeshHasNormalAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisConstantColorWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisConstantColorWireframe"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        }
    },
    {
        "Name": "RFMeshDebugVisDistance",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsMeshDepth"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater"
        }
    },
    {
        "Name": "RFMeshDebugVisDistanceWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsMeshDepth"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        }
    },
    {
        "Name": "RFMeshDebugVisColor",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisColor"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater"
        },
        "FunctionConstants" : {
            "MeshHasColorAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisColorWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisColor"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        },
        "FunctionConstants" : {
            "MeshHasColorAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisClassification",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisClassification"
        },
        "State" : {
            "AlphaBlend" : true,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater",
            "RgbSourceFactor" : "SourceAlpha"
        },
        "FunctionConstants" : {
            "MeshHasClassificationAttribute" : "true",
            "MeshHasNormalAttribute" : "false"
        }
    },
    {
        "Name": "RFMeshDebugVisClassificationWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisClassification"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        },
        "FunctionConstants" : {
            "MeshHasClassificationAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisMaterial",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisMaterial"
        },
        "State" : {
            "AlphaBlend" : true,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater",
            "RgbSourceFactor" : "SourceAlpha"
        },
        "FunctionConstants" : {
            "MeshHasMaterialAttribute" : "true",
            "MeshHasNormalAttribute" : "false"
        }
    },
    {
        "Name": "RFMeshDebugVisMaterialWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisMaterial"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        },
        "FunctionConstants" : {
            "MeshHasMaterialAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisNormal",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisNormal"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater"
        },
        "FunctionConstants" : {
            "MeshHasNormalAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisNormalWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisNormal"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        },
        "FunctionConstants" : {
            "MeshHasNormalAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisGeneration",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisWarmth"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "Greater"
        },
        "FunctionConstants" : {
            "MeshHasNormalAttribute" : "true"
        }
    },
    {
        "Name": "RFMeshDebugVisGenerationWireframe",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisWarmth"
        },
        "State" : {
            "AlphaBlend" : false,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        }
    },
    {
        "Name": "RFMeshDebugVisWireframeBarycentric",
        "VertexShader": {
            "Entry": "vsRFMeshDebugVis"
        },
        "PixelShader": {
            "Entry": "fsRFMeshDebugVisWireframeBarycentric"
        },
        "State" : {
            "CullMode" : "CullModeNone",
            "AlphaBlend" : true,
            "WriteDepth" : true,
            "DepthCompareFunction" : "GreaterEqual"
        }
    },
    {
        "Name": "RFMeshDebugVisWireframeBarycentricClassification",
        "InheritFromTechnique": "RFMeshDebugVisWireframeBarycentric",
        "InheritState": true,
        "FunctionConstants" : {
            "MeshHasClassificationAttribute" : "true"
        }
    }]
}
