{
    "RoleData" : {
        "version": 1,
        "categories": "tutorials",
        "scheduling": ["threadsafe"],
        "description": [
            "This is a tutorial node. It creates both an input and output attribute of every supported ",
            "role-based data type. The values are modified in a simple way so that the compute modifies values. "
        ],
        "metadata":
        {
            "uiName": "Tutorial Node: Role-Based Attributes"
        },
        "inputs": {
            "a_color3d": {
                "type": "colord[3]",
                "description": ["This is an attribute interpreted as a double-precision 3d color"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_color3f": {
                "type": "colorf[3]",
                "description": ["This is an attribute interpreted as a single-precision 3d color"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_color3h": {
                "type": "colorh[3]",
                "description": ["This is an attribute interpreted as a half-precision 3d color"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_color4d": {
                "type": "colord[4]",
                "description": ["This is an attribute interpreted as a double-precision 4d color"],
                "default": [0.0, 0.0, 0.0, 0.0]
            },
            "a_color4f": {
                "type": "colorf[4]",
                "description": ["This is an attribute interpreted as a single-precision 4d color"],
                "default": [0.0, 0.0, 0.0, 0.0]
            },
            "a_color4h": {
                "type": "colorh[4]",
                "description": ["This is an attribute interpreted as a half-precision 4d color"],
                "default": [0.0, 0.0, 0.0, 0.0]
            },
            "a_frame": {
                "type": "frame[4]",
                "description": ["This is an attribute interpreted as a coordinate frame"],
                "default": [[1.0,0.0,0.0,0.0], [0.0,1.0,0.0,0.0], [0.0,0.0,1.0,0.0], [0.0,0.0,0.0,1.0]]
            },
            "a_matrix2d": {
                "type": "matrixd[2]",
                "description": ["This is an attribute interpreted as a double-precision 2d matrix"],
                "default": [[1.0, 0.0], [0.0, 1.0]]
            },
            "a_matrix3d": {
                "type": "matrixd[3]",
                "description": ["This is an attribute interpreted as a double-precision 3d matrix"],
                "default": [[1.0,0.0,0.0], [0.0,1.0,0.0], [0.0,0.0,1.0]]
            },
            "a_matrix4d": {
                "type": "matrixd[4]",
                "description": ["This is an attribute interpreted as a double-precision 4d matrix"],
                "default": [[1.0,0.0,0.0,0.0], [0.0,1.0,0.0,0.0], [0.0,0.0,1.0,0.0], [0.0,0.0,0.0,1.0]]
            },
            "a_normal3d": {
                "type": "normald[3]",
                "description": ["This is an attribute interpreted as a double-precision 3d normal"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_normal3f": {
                "type": "normalf[3]",
                "description": ["This is an attribute interpreted as a single-precision 3d normal"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_normal3h": {
                "type": "normalh[3]",
                "description": ["This is an attribute interpreted as a half-precision 3d normal"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_point3d": {
                "type": "pointd[3]",
                "description": ["This is an attribute interpreted as a double-precision 3d point"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_point3f": {
                "type": "pointf[3]",
                "description": ["This is an attribute interpreted as a single-precision 3d point"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_point3h": {
                "type": "pointh[3]",
                "description": ["This is an attribute interpreted as a half-precision 3d point"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_quatd": {
                "type": "quatd[4]",
                "description": ["This is an attribute interpreted as a double-precision 4d quaternion"],
                "default": [0.0, 0.0, 0.0, 0.0]
            },
            "a_quatf": {
                "type": "quatf[4]",
                "description": ["This is an attribute interpreted as a single-precision 4d quaternion"],
                "default": [0.0, 0.0, 0.0, 0.0]
            },
            "a_quath": {
                "type": "quath[4]",
                "description": ["This is an attribute interpreted as a half-precision 4d quaternion"],
                "default": [0.0, 0.0, 0.0, 0.0]
            },
            "a_texcoord2d": {
                "type": "texcoordd[2]",
                "description": ["This is an attribute interpreted as a double-precision 2d texcoord"],
                "default": [0.0, 0.0]
            },
            "a_texcoord2f": {
                "type": "texcoordf[2]",
                "description": ["This is an attribute interpreted as a single-precision 2d texcoord"],
                "default": [0.0, 0.0]
            },
            "a_texcoord2h": {
                "type": "texcoordh[2]",
                "description": ["This is an attribute interpreted as a half-precision 2d texcoord"],
                "default": [0.0, 0.0]
            },
            "a_texcoord3d": {
                "type": "texcoordd[3]",
                "description": ["This is an attribute interpreted as a double-precision 3d texcoord"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_texcoord3f": {
                "type": "texcoordf[3]",
                "description": ["This is an attribute interpreted as a single-precision 3d texcoord"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_texcoord3h": {
                "type": "texcoordh[3]",
                "description": ["This is an attribute interpreted as a half-precision 3d texcoord"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_timecode": {
                "type": "timecode",
                "description": ["This is a computed attribute interpreted as a timecode"],
                "default": 1.0
            },
            "a_vector3d": {
                "type": "vectord[3]",
                "description": ["This is an attribute interpreted as a double-precision 3d vector"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_vector3f": {
                "type": "vectorf[3]",
                "description": ["This is an attribute interpreted as a single-precision 3d vector"],
                "default": [0.0, 0.0, 0.0]
            },
            "a_vector3h": {
                "type": "vectorh[3]",
                "description": ["This is an attribute interpreted as a half-precision 3d vector"],
                "default": [0.0, 0.0, 0.0]
            }
        },
        "outputs": {
            "a_color3d": {
                "type": "colord[3]",
                "description": ["This is a computed attribute interpreted as a double-precision 3d color"]
            },
            "a_color3f": {
                "type": "colorf[3]",
                "description": ["This is a computed attribute interpreted as a single-precision 3d color"]
            },
            "a_color3h": {
                "type": "colorh[3]",
                "description": ["This is a computed attribute interpreted as a half-precision 3d color"]
            },
            "a_color4d": {
                "type": "colord[4]",
                "description": ["This is a computed attribute interpreted as a double-precision 4d color"]
            },
            "a_color4f": {
                "type": "colorf[4]",
                "description": ["This is a computed attribute interpreted as a single-precision 4d color"]
            },
            "a_color4h": {
                "type": "colorh[4]",
                "description": ["This is a computed attribute interpreted as a half-precision 4d color"]
            },
            "a_frame": {
                "type": "frame[4]",
                "description": ["This is a computed attribute interpreted as a coordinate frame"]
            },
            "a_matrix2d": {
                "type": "matrixd[2]",
                "description": ["This is a computed attribute interpreted as a double-precision 2d matrix"]
            },
            "a_matrix3d": {
                "type": "matrixd[3]",
                "description": ["This is a computed attribute interpreted as a double-precision 3d matrix"]
            },
            "a_matrix4d": {
                "type": "matrixd[4]",
                "description": ["This is a computed attribute interpreted as a double-precision 4d matrix"]
            },
            "a_normal3d": {
                "type": "normald[3]",
                "description": ["This is a computed attribute interpreted as a double-precision 3d normal"]
            },
            "a_normal3f": {
                "type": "normalf[3]",
                "description": ["This is a computed attribute interpreted as a single-precision 3d normal"]
            },
            "a_normal3h": {
                "type": "normalh[3]",
                "description": ["This is a computed attribute interpreted as a half-precision 3d normal"]
            },
            "a_point3d": {
                "type": "pointd[3]",
                "description": ["This is a computed attribute interpreted as a double-precision 3d point"]
            },
            "a_point3f": {
                "type": "pointf[3]",
                "description": ["This is a computed attribute interpreted as a single-precision 3d point"]
            },
            "a_point3h": {
                "type": "pointh[3]",
                "description": ["This is a computed attribute interpreted as a half-precision 3d point"]
            },
            "a_quatd": {
                "type": "quatd[4]",
                "description": ["This is a computed attribute interpreted as a double-precision 4d quaternion"]
            },
            "a_quatf": {
                "type": "quatf[4]",
                "description": ["This is a computed attribute interpreted as a single-precision 4d quaternion"]
            },
            "a_quath": {
                "type": "quath[4]",
                "description": ["This is a computed attribute interpreted as a half-precision 4d quaternion"]
            },
            "a_texcoord2d": {
                "type": "texcoordd[2]",
                "description": ["This is a computed attribute interpreted as a double-precision 2d texcoord"]
            },
            "a_texcoord2f": {
                "type": "texcoordf[2]",
                "description": ["This is a computed attribute interpreted as a single-precision 2d texcoord"]
            },
            "a_texcoord2h": {
                "type": "texcoordh[2]",
                "description": ["This is a computed attribute interpreted as a half-precision 2d texcoord"]
            },
            "a_texcoord3d": {
                "type": "texcoordd[3]",
                "description": ["This is a computed attribute interpreted as a double-precision 3d texcoord"]
            },
            "a_texcoord3f": {
                "type": "texcoordf[3]",
                "description": ["This is a computed attribute interpreted as a single-precision 3d texcoord"]
            },
            "a_texcoord3h": {
                "type": "texcoordh[3]",
                "description": ["This is a computed attribute interpreted as a half-precision 3d texcoord"]
            },
            "a_timecode": {
                "type": "timecode",
                "description": ["This is a computed attribute interpreted as a timecode"]
            },
            "a_vector3d": {
                "type": "vectord[3]",
                "description": ["This is a computed attribute interpreted as a double-precision 3d vector"]
            },
            "a_vector3f": {
                "type": "vectorf[3]",
                "description": ["This is a computed attribute interpreted as a single-precision 3d vector"]
            },
            "a_vector3h": {
                "type": "vectorh[3]",
                "description": ["This is a computed attribute interpreted as a half-precision 3d vector"]
            }
        },
        "tests": [
            {
                "description": "Compute method just increments the component values",
                "inputs:a_color3d": [1.0, 2.0, 3.0], "outputs:a_color3d": [2.0, 3.0, 4.0],
                "inputs:a_color3f": [11.0, 12.0, 13.0], "outputs:a_color3f": [12.0, 13.0, 14.0],
                "inputs:a_color3h": [21.0, 22.0, 23.0], "outputs:a_color3h": [22.0, 23.0, 24.0],
                "inputs:a_color4d": [1.0, 2.0, 3.0, 4.0], "outputs:a_color4d": [2.0, 3.0, 4.0, 5.0],
                "inputs:a_color4f": [11.0, 12.0, 13.0, 14.0], "outputs:a_color4f": [12.0, 13.0, 14.0, 15.0],
                "inputs:a_color4h": [21.0, 22.0, 23.0, 24.0], "outputs:a_color4h": [22.0, 23.0, 24.0, 25.0],
                "inputs:a_frame": [[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0], [13.0, 14.0, 15.0, 16.0]],
                "outputs:a_frame": [[2.0, 3.0, 4.0, 5.0], [6.0, 7.0, 8.0, 9.0], [10.0, 11.0, 12.0, 13.0], [14.0, 15.0, 16.0, 17.0]],
                "inputs:a_matrix2d": [[1.0, 2.0], [3.0, 4.0]], "outputs:a_matrix2d": [[2.0, 3.0], [4.0, 5.0]],
                "inputs:a_matrix3d": [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]],
                "outputs:a_matrix3d": [[2.0, 3.0, 4.0], [5.0, 6.0, 7.0], [8.0, 9.0, 10.0]],
                "inputs:a_matrix4d": [[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0], [13.0, 14.0, 15.0, 16.0]],
                "outputs:a_matrix4d": [[2.0, 3.0, 4.0, 5.0], [6.0, 7.0, 8.0, 9.0], [10.0, 11.0, 12.0, 13.0], [14.0, 15.0, 16.0, 17.0]],
                "inputs:a_normal3d": [1.0, 2.0, 3.0], "outputs:a_normal3d": [2.0, 3.0, 4.0],
                "inputs:a_normal3f": [11.0, 12.0, 13.0], "outputs:a_normal3f": [12.0, 13.0, 14.0],
                "inputs:a_normal3h": [21.0, 22.0, 23.0], "outputs:a_normal3h": [22.0, 23.0, 24.0],
                "inputs:a_point3d": [1.0, 2.0, 3.0], "outputs:a_point3d": [2.0, 3.0, 4.0],
                "inputs:a_point3f": [11.0, 12.0, 13.0], "outputs:a_point3f": [12.0, 13.0, 14.0],
                "inputs:a_point3h": [21.0, 22.0, 23.0], "outputs:a_point3h": [22.0, 23.0, 24.0],
                "inputs:a_quatd": [1.0, 2.0, 3.0, 4.0], "outputs:a_quatd": [2.0, 3.0, 4.0, 5.0],
                "inputs:a_quatf": [11.0, 12.0, 13.0, 14.0], "outputs:a_quatf": [12.0, 13.0, 14.0, 15.0],
                "inputs:a_quath": [21.0, 22.0, 23.0, 24.0], "outputs:a_quath": [22.0, 23.0, 24.0, 25.0],
                "inputs:a_texcoord2d": [1.0, 2.0], "outputs:a_texcoord2d": [2.0, 3.0],
                "inputs:a_texcoord2f": [11.0, 12.0], "outputs:a_texcoord2f": [12.0, 13.0],
                "inputs:a_texcoord2h": [21.0, 22.0], "outputs:a_texcoord2h": [22.0, 23.0],
                "inputs:a_texcoord3d": [1.0, 2.0, 3.0], "outputs:a_texcoord3d": [2.0, 3.0, 4.0],
                "inputs:a_texcoord3f": [11.0, 12.0, 13.0], "outputs:a_texcoord3f": [12.0, 13.0, 14.0],
                "inputs:a_texcoord3h": [21.0, 22.0, 23.0], "outputs:a_texcoord3h": [22.0, 23.0, 24.0],
                "inputs:a_timecode": 10.0, "outputs:a_timecode": 11.0,
                "inputs:a_vector3d": [1.0, 2.0, 3.0], "outputs:a_vector3d": [2.0, 3.0, 4.0],
                "inputs:a_vector3f": [11.0, 12.0, 13.0], "outputs:a_vector3f": [12.0, 13.0, 14.0],
                "inputs:a_vector3h": [21.0, 22.0, 23.0], "outputs:a_vector3h": [22.0, 23.0, 24.0]
            }
        ]
    }
}
