{
  "graphId": "link-tools-test",
  "catalogVersion": 4,
  "nodes": [
    {
      "id": "chain-math",
      "typeId": "fxnode.shader.math",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": 260,
        "y": -100
      },
      "size": {
        "x": 192,
        "y": 148
      },
      "label": "Math",
      "parameters": {
        "operation": {
          "kind": "string",
          "value": "add"
        },
        "clamp": {
          "kind": "boolean",
          "value": false
        }
      },
      "sockets": [
        {
          "id": "chain-math:a",
          "key": "a",
          "label": "A",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "chain-math:b",
          "key": "b",
          "label": "B",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "chain-math:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "chain-source",
      "typeId": "fxnode.shader.value",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": -560,
        "y": -100
      },
      "size": {
        "x": 151,
        "y": 100
      },
      "label": "Value",
      "parameters": {
        "value": {
          "kind": "number",
          "value": 0
        }
      },
      "sockets": [
        {
          "id": "chain-source:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "math-a",
      "typeId": "fxnode.shader.math",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": 180,
        "y": 240
      },
      "size": {
        "x": 192,
        "y": 148
      },
      "label": "Math",
      "parameters": {
        "operation": {
          "kind": "string",
          "value": "add"
        },
        "clamp": {
          "kind": "boolean",
          "value": false
        }
      },
      "sockets": [
        {
          "id": "math-a:a",
          "key": "a",
          "label": "A",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "math-a:b",
          "key": "b",
          "label": "B",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "math-a:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "math-b",
      "typeId": "fxnode.shader.math",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": 180,
        "y": 120
      },
      "size": {
        "x": 192,
        "y": 148
      },
      "label": "Math",
      "parameters": {
        "operation": {
          "kind": "string",
          "value": "add"
        },
        "clamp": {
          "kind": "boolean",
          "value": false
        }
      },
      "sockets": [
        {
          "id": "math-b:a",
          "key": "a",
          "label": "A",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "math-b:b",
          "key": "b",
          "label": "B",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "math-b:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "math-c",
      "typeId": "fxnode.shader.math",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": 180,
        "y": 0
      },
      "size": {
        "x": 192,
        "y": 148
      },
      "label": "Math",
      "parameters": {
        "operation": {
          "kind": "string",
          "value": "add"
        },
        "clamp": {
          "kind": "boolean",
          "value": false
        }
      },
      "sockets": [
        {
          "id": "math-c:a",
          "key": "a",
          "label": "A",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "math-c:b",
          "key": "b",
          "label": "B",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "math-c:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "noise",
      "typeId": "fxnode.shader.noise-texture",
      "typeVersion": 2,
      "known": true,
      "position": {
        "x": 180,
        "y": -230
      },
      "size": {
        "x": 286,
        "y": 292
      },
      "label": "Noise Texture",
      "parameters": {
        "dimensions": {
          "kind": "string",
          "value": "3d"
        },
        "noiseType": {
          "kind": "string",
          "value": "fbm"
        },
        "normalize": {
          "kind": "boolean",
          "value": false
        }
      },
      "sockets": [
        {
          "id": "noise:vector",
          "key": "vector",
          "label": "Vector",
          "direction": "input",
          "dataType": "vector",
          "accepts": [
            "vector",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "vector",
            "value": [
              0,
              0,
              0
            ]
          }
        },
        {
          "id": "noise:w",
          "key": "w",
          "label": "W",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "noise:scale",
          "key": "scale",
          "label": "Scale",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 5
          }
        },
        {
          "id": "noise:detail",
          "key": "detail",
          "label": "Detail",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 2
          }
        },
        {
          "id": "noise:roughness",
          "key": "roughness",
          "label": "Roughness",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0.5
          }
        },
        {
          "id": "noise:lacunarity",
          "key": "lacunarity",
          "label": "Lacunarity",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 2
          }
        },
        {
          "id": "noise:offset",
          "key": "offset",
          "label": "Offset",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "noise:gain",
          "key": "gain",
          "label": "Gain",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 1
          }
        },
        {
          "id": "noise:distortion",
          "key": "distortion",
          "label": "Distortion",
          "direction": "input",
          "dataType": "float",
          "accepts": [
            "float",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "number",
            "value": 0
          }
        },
        {
          "id": "noise:factor",
          "key": "factor",
          "label": "Factor",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        },
        {
          "id": "noise:color",
          "key": "color",
          "label": "Color",
          "direction": "output",
          "dataType": "color",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "reroute",
      "typeId": "fxnode.common.reroute",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": 0,
        "y": -100
      },
      "size": {
        "x": 10,
        "y": 10
      },
      "label": "Reroute",
      "parameters": {},
      "sockets": [
        {
          "id": "reroute:input",
          "key": "input",
          "label": "Input",
          "direction": "input",
          "dataType": "any",
          "accepts": [
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true
        },
        {
          "id": "reroute:output",
          "key": "output",
          "label": "Output",
          "direction": "output",
          "dataType": "any",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "source-a",
      "typeId": "fxnode.shader.value",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": -560,
        "y": 240
      },
      "size": {
        "x": 151,
        "y": 100
      },
      "label": "Value",
      "parameters": {
        "value": {
          "kind": "number",
          "value": 0
        }
      },
      "sockets": [
        {
          "id": "source-a:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "source-b",
      "typeId": "fxnode.shader.value",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": -560,
        "y": 120
      },
      "size": {
        "x": 151,
        "y": 100
      },
      "label": "Value",
      "parameters": {
        "value": {
          "kind": "number",
          "value": 0
        }
      },
      "sockets": [
        {
          "id": "source-b:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "source-c",
      "typeId": "fxnode.shader.value",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": -560,
        "y": 0
      },
      "size": {
        "x": 151,
        "y": 100
      },
      "label": "Value",
      "parameters": {
        "value": {
          "kind": "number",
          "value": 0
        }
      },
      "sockets": [
        {
          "id": "source-c:value",
          "key": "value",
          "label": "Value",
          "direction": "output",
          "dataType": "float",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    },
    {
      "id": "transform",
      "typeId": "fxnode.geometry.transform-geometry",
      "typeVersion": 1,
      "known": true,
      "position": {
        "x": -300,
        "y": -230
      },
      "size": {
        "x": 340,
        "y": 148
      },
      "label": "Transform Geometry",
      "parameters": {},
      "sockets": [
        {
          "id": "transform:geometry",
          "key": "geometry",
          "label": "Geometry",
          "direction": "input",
          "dataType": "geometry",
          "accepts": [
            "geometry",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true
        },
        {
          "id": "transform:translation",
          "key": "translation",
          "label": "Translation",
          "direction": "input",
          "dataType": "vector",
          "accepts": [
            "vector",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "vector",
            "value": [
              0,
              0,
              0
            ]
          }
        },
        {
          "id": "transform:rotation",
          "key": "rotation",
          "label": "Rotation",
          "direction": "input",
          "dataType": "vector",
          "accepts": [
            "vector",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "vector",
            "value": [
              0,
              0,
              0
            ]
          }
        },
        {
          "id": "transform:scale",
          "key": "scale",
          "label": "Scale",
          "direction": "input",
          "dataType": "vector",
          "accepts": [
            "vector",
            "any"
          ],
          "maxIncomingLinks": 1,
          "visible": true,
          "defaultValue": {
            "kind": "vector",
            "value": [
              1,
              1,
              1
            ]
          }
        },
        {
          "id": "transform:result",
          "key": "result",
          "label": "Geometry",
          "direction": "output",
          "dataType": "geometry",
          "accepts": [],
          "maxIncomingLinks": 0,
          "visible": true
        }
      ],
      "muted": false,
      "collapsed": false,
      "extensions": {}
    }
  ],
  "links": [
    {
      "id": "chain-in",
      "fromNodeId": "chain-source",
      "fromSocketId": "chain-source:value",
      "toNodeId": "reroute",
      "toSocketId": "reroute:input",
      "muted": false,
      "extensions": {}
    },
    {
      "id": "chain-out",
      "fromNodeId": "reroute",
      "fromSocketId": "reroute:output",
      "toNodeId": "chain-math",
      "toSocketId": "chain-math:a",
      "muted": false,
      "extensions": {}
    },
    {
      "id": "parallel-a",
      "fromNodeId": "source-a",
      "fromSocketId": "source-a:value",
      "toNodeId": "math-a",
      "toSocketId": "math-a:a",
      "muted": false,
      "extensions": {}
    },
    {
      "id": "parallel-b",
      "fromNodeId": "source-b",
      "fromSocketId": "source-b:value",
      "toNodeId": "math-b",
      "toSocketId": "math-b:a",
      "muted": false,
      "extensions": {}
    },
    {
      "id": "parallel-c",
      "fromNodeId": "source-c",
      "fromSocketId": "source-c:value",
      "toNodeId": "math-c",
      "toSocketId": "math-c:a",
      "muted": false,
      "extensions": {}
    }
  ],
  "metadata": {}
}
