{ "graphId": "phase-4-example", "catalogVersion": 4, "nodes": [ { "id": "frame", "typeId": "fxnode.common.frame", "typeVersion": 1, "position": { "x": -550, "y": 250 }, "size": { "x": 190, "y": 270 }, "label": "Surface Controls", "parameters": {}, "sockets": [], "muted": false, "collapsed": false, "extensions": {}, "known": true }, { "id": "math", "typeId": "fxnode.shader.math", "typeVersion": 1, "position": { "x": -300, "y": 170 }, "size": { "x": 160, "y": 110 }, "label": "Math", "parameters": { "operation": { "kind": "string", "value": "add" }, "clamp": { "kind": "boolean", "value": false } }, "sockets": [ { "id": "math:a", "key": "a", "label": "A", "direction": "input", "dataType": "float", "accepts": [ "float", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "number", "value": 0 } }, { "id": "math:b", "key": "b", "label": "B", "direction": "input", "dataType": "float", "accepts": [ "float", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "number", "value": 0 } }, { "id": "math:value", "key": "value", "label": "Value", "direction": "output", "dataType": "float", "accepts": [], "maxIncomingLinks": 0, "visible": true } ], "muted": false, "collapsed": false, "extensions": {}, "known": true }, { "id": "noise", "typeId": "fxnode.shader.noise-texture", "typeVersion": 2, "position": { "x": -100, "y": 190 }, "size": { "x": 165, "y": 130 }, "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": {}, "known": true }, { "id": "output", "typeId": "fxnode.shader.material-output", "typeVersion": 1, "position": { "x": 405, "y": 115 }, "size": { "x": 155, "y": 100 }, "label": "Material Output", "parameters": {}, "sockets": [ { "id": "output:surface", "key": "surface", "label": "Surface", "direction": "input", "dataType": "shader", "accepts": [ "shader", "any" ], "maxIncomingLinks": 1, "visible": true }, { "id": "output:volume", "key": "volume", "label": "Volume", "direction": "input", "dataType": "shader", "accepts": [ "shader", "any" ], "maxIncomingLinks": 1, "visible": true }, { "id": "output:displacement", "key": "displacement", "label": "Displacement", "direction": "input", "dataType": "vector", "accepts": [ "vector", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "vector", "value": [ 0, 0, 0 ] } } ], "muted": false, "collapsed": false, "extensions": {}, "known": true }, { "id": "principled", "typeId": "fxnode.shader.principled-bsdf", "typeVersion": 1, "position": { "x": 165, "y": 175 }, "size": { "x": 185, "y": 125 }, "label": "Principled BSDF", "parameters": {}, "sockets": [ { "id": "principled:base-color", "key": "base-color", "label": "Base Color", "direction": "input", "dataType": "color", "accepts": [ "color", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "color", "value": [ 0.8, 0.8, 0.8, 1 ] } }, { "id": "principled:metallic", "key": "metallic", "label": "Metallic", "direction": "input", "dataType": "float", "accepts": [ "float", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "number", "value": 0 } }, { "id": "principled:roughness", "key": "roughness", "label": "Roughness", "direction": "input", "dataType": "float", "accepts": [ "float", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "number", "value": 0.5 } }, { "id": "principled:ior", "key": "ior", "label": "IOR", "direction": "input", "dataType": "float", "accepts": [ "float", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "number", "value": 1.5 } }, { "id": "principled:alpha", "key": "alpha", "label": "Alpha", "direction": "input", "dataType": "float", "accepts": [ "float", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "number", "value": 1 } }, { "id": "principled:normal", "key": "normal", "label": "Normal", "direction": "input", "dataType": "vector", "accepts": [ "vector", "any" ], "maxIncomingLinks": 1, "visible": true, "defaultValue": { "kind": "vector", "value": [ 0, 0, 0 ] } }, { "id": "principled:bsdf", "key": "bsdf", "label": "BSDF", "direction": "output", "dataType": "shader", "accepts": [], "maxIncomingLinks": 0, "visible": true } ], "muted": false, "collapsed": false, "extensions": {}, "known": true }, { "id": "reroute", "typeId": "fxnode.common.reroute", "typeVersion": 1, "position": { "x": 105, "y": 55 }, "size": { "x": 140, "y": 100 }, "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": {}, "known": true }, { "id": "value-collapsed", "typeId": "fxnode.shader.value", "typeVersion": 1, "position": { "x": 30, "y": -175 }, "size": { "x": 140, "y": 100 }, "label": "Value", "parameters": { "value": { "kind": "number", "value": 0 } }, "sockets": [ { "id": "value-collapsed:value", "key": "value", "label": "Value", "direction": "output", "dataType": "float", "accepts": [], "maxIncomingLinks": 0, "visible": true } ], "muted": false, "collapsed": true, "extensions": {}, "parentId": "frame", "known": true }, { "id": "value-expanded", "typeId": "fxnode.shader.value", "typeVersion": 1, "position": { "x": 30, "y": -55 }, "size": { "x": 140, "y": 100 }, "label": "Value", "parameters": { "value": { "kind": "number", "value": 0 } }, "sockets": [ { "id": "value-expanded:value", "key": "value", "label": "Value", "direction": "output", "dataType": "float", "accepts": [], "maxIncomingLinks": 0, "visible": true } ], "muted": false, "collapsed": false, "extensions": {}, "parentId": "frame", "known": true } ], "links": [ { "id": "link-1", "fromNodeId": "value-expanded", "fromSocketId": "value-expanded:value", "toNodeId": "math", "toSocketId": "math:a", "muted": false, "extensions": {} }, { "id": "link-2", "fromNodeId": "value-collapsed", "fromSocketId": "value-collapsed:value", "toNodeId": "math", "toSocketId": "math:b", "muted": false, "extensions": {} }, { "id": "link-3", "fromNodeId": "math", "fromSocketId": "math:value", "toNodeId": "noise", "toSocketId": "noise:scale", "muted": false, "extensions": {} }, { "id": "link-4", "fromNodeId": "noise", "fromSocketId": "noise:factor", "toNodeId": "reroute", "toSocketId": "reroute:input", "muted": false, "extensions": {} }, { "id": "link-5", "fromNodeId": "reroute", "fromSocketId": "reroute:output", "toNodeId": "principled", "toSocketId": "principled:roughness", "muted": false, "extensions": {} }, { "id": "link-6", "fromNodeId": "principled", "fromSocketId": "principled:bsdf", "toNodeId": "output", "toSocketId": "output:surface", "muted": false, "extensions": {} } ], "metadata": { "description": "Deterministic fxnode browser baseline" } }