{
  "Node_Cache_Array":{
    "tooltip":"Store current animation as array.  Cache persisted between save.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Frame index to start caching, set to -1 to start at the first frame.",
        "name":"Start frame"
      },
      {
        "tooltip":"Frame index to stop caching (inclusive), set to -1 to stop at the last frame.",
        "name":"Stop frame"
      },
      {
        "tooltip":"Cache every N frames, set to 1 to cache every frame.",
        "name":"Step"
      }
    ],
    "name":"Cache Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Cache array"
      }
    ]
  },
  "Node_Mesh_Warp":{
    "tooltip":"Wrap image by converting it to mesh, and using control points.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Amount of grid subdivision. Higher number means more grid, detail.",
        "name":"Sample"
      },
      {
        "tooltip":"",
        "name":"Spring Force"
      },
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"Include diagonal link to prevent drastic grid deformation.",
        "name":"Diagonal Link"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"Link length preservation, setting it to 1 will prevent any stretching, contraction.",
        "name":"Link Strength"
      },
      {
        "tooltip":"",
        "name":"Full Mesh"
      },
      {
        "tooltip":"",
        "name":"Mesh Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mesh_type)",
            "data":"Grid",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Grid"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mesh_type)",
            "data":"Custom",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Custom"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Mesh Warp",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Mesh data"
      }
    ]
  },
  "Node_2D_light":{
    "tooltip":"Apply different shaped light on the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Light shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_2d_light_shape)",
            "data":"Point",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Point"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_2d_light_shape)",
            "data":"Line",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Line"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_2d_light_shape)",
            "data":"Line asymmetric",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Line asymmetric"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_2d_light_shape)",
            "data":"Spot",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Spot"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Intensity"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Start"
      },
      {
        "tooltip":"",
        "name":"Finish"
      },
      {
        "tooltip":"",
        "name":"Sweep"
      },
      {
        "tooltip":"",
        "name":"Sweep end"
      },
      {
        "tooltip":"",
        "name":"Banding"
      },
      {
        "tooltip":"Control how light fade out over distance.",
        "name":"Attenuation",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Quadratic",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Quadratic"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Invert quadratic",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Invert quadratic"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Linear",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Linear"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Radial banding"
      },
      {
        "tooltip":"",
        "name":"Radial start"
      },
      {
        "tooltip":"",
        "name":"Radial band ratio"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"2D Light",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Light only"
      }
    ]
  },
  "Node_Cache":{
    "tooltip":"Store current animation. Cache persisted between save.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      }
    ],
    "name":"Cache",
    "outputs":[
      {
        "tooltip":"",
        "name":"Cache surface"
      }
    ]
  },
  "Node_3D_Camera_Set":{
    "tooltip":"3D camera with built-in key and fill directional lights.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"Clipping Distance"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Projection",
        "display_data":[
          "Perspective",
          "Orthographic"
        ]
      },
      {
        "tooltip":"",
        "name":"Scene"
      },
      {
        "tooltip":"",
        "name":"Ambient Light"
      },
      {
        "tooltip":"",
        "name":"Show Background"
      },
      {
        "tooltip":"",
        "name":"Backface Culling",
        "display_data":[
          "None",
          "CW",
          "CCW"
        ]
      },
      {
        "tooltip":"",
        "name":"Orthographic Scale"
      },
      {
        "tooltip":"",
        "name":"Postioning Mode",
        "display_data":[
          "Position + Rotation",
          "Position + Lookat",
          "Lookat + Rotation"
        ]
      },
      {
        "tooltip":"",
        "name":"Lookat Position"
      },
      {
        "tooltip":"",
        "name":"Roll"
      },
      {
        "tooltip":"",
        "name":"Horizontal Angle"
      },
      {
        "tooltip":"",
        "name":"Vertical Angle"
      },
      {
        "tooltip":"",
        "name":"Distance"
      },
      {
        "tooltip":"",
        "name":"Gamma Adjust"
      },
      {
        "tooltip":"",
        "name":"Environment Texture"
      },
      {
        "tooltip":"",
        "name":"Ambient Occlusion"
      },
      {
        "tooltip":"",
        "name":"AO Radius"
      },
      {
        "tooltip":"",
        "name":"AO Bias"
      },
      {
        "tooltip":"",
        "name":"AO Strength"
      },
      {
        "tooltip":"",
        "name":"Round Normal"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Normal",
          "Additive"
        ]
      },
      {
        "tooltip":"",
        "name":"L1 H angle"
      },
      {
        "tooltip":"",
        "name":"L1 V angle"
      },
      {
        "tooltip":"",
        "name":"L1 Color"
      },
      {
        "tooltip":"",
        "name":"L1 Intensity"
      },
      {
        "tooltip":"",
        "name":"L2 H angle"
      },
      {
        "tooltip":"",
        "name":"L2 V angle"
      },
      {
        "tooltip":"",
        "name":"L2 Color"
      },
      {
        "tooltip":"",
        "name":"L2 Intensity"
      }
    ],
    "name":"3D Camera Set",
    "outputs":[
      {
        "tooltip":"",
        "name":"Rendered"
      },
      {
        "tooltip":"",
        "name":"Normal"
      },
      {
        "tooltip":"",
        "name":"Depth"
      }
    ]
  },
  "Node_MIDI_In":{
    "tooltip":"Receive MIDI message.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Input",
        "display_data":[
        ]
      }
    ],
    "name":"MIDI In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Raw Message"
      },
      {
        "tooltip":"",
        "name":"Pressing notes"
      },
      {
        "tooltip":"",
        "name":"Direct values"
      }
    ]
  },
  "Node_Mirror":{
    "tooltip":"Reflect the image along a reflection line.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Mirror",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Mirror mask"
      }
    ]
  },
  "Node_Camera":{
    "tooltip":"Create camera that crop image to fix dimension with control of position, zoom. Also can be use to create parallax effect.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Focus area"
      },
      {
        "tooltip":"",
        "name":"Zoom"
      },
      {
        "tooltip":"",
        "name":"Depth of Field"
      },
      {
        "tooltip":"",
        "name":"Focal distance"
      },
      {
        "tooltip":"",
        "name":"Defocus"
      },
      {
        "tooltip":"",
        "name":"Focal range"
      }
    ],
    "name":"Camera",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_MK_Blinker":{
    "tooltip":"Flicker regions of the selected colors randomly.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Target Colors"
      },
      {
        "tooltip":"",
        "name":"Light Colors"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Tolerance"
      },
      {
        "tooltip":"",
        "name":"Glow"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Strength"
      }
    ],
    "name":"MK Blinker",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Light only"
      }
    ]
  },
  "Node_MK_Brownian":{
    "tooltip":"Generate random particle.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Sprite"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Speed"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Angular speed"
      },
      {
        "tooltip":"",
        "name":"Angular acceleration"
      },
      {
        "tooltip":"",
        "name":"Turn"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Size"
      }
    ],
    "name":"MK Brownian",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Export":{
    "tooltip":"Export image, image array to file, image sequence, animation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Paths"
      },
      {
        "tooltip":"",
        "name":"Template"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Single image",
          "Image sequence",
          "Animation"
        ]
      },
      {
        "tooltip":"",
        "name":"Template guides"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"",
        "name":"Frame optimization"
      },
      {
        "tooltip":"",
        "name":"Color merge"
      },
      {
        "tooltip":"",
        "name":"Framerate"
      },
      {
        "tooltip":"",
        "name":"Format",
        "display_data":[
          ".png",
          ".jpg",
          ".webp"
        ]
      },
      {
        "tooltip":"",
        "name":"Quality"
      },
      {
        "tooltip":"",
        "name":"Sequence begin"
      },
      {
        "tooltip":"",
        "name":"Frame range"
      },
      {
        "tooltip":"",
        "name":"Subformat",
        "display_data":[
          "INDEX4",
          "INDEX8",
          "Default (PNG32)"
        ]
      },
      {
        "tooltip":"",
        "name":"Frame step"
      },
      {
        "tooltip":"",
        "name":"Custom Range"
      },
      {
        "tooltip":"",
        "name":"Export on Save"
      }
    ],
    "name":"Export",
    "outputs":[
      {
        "tooltip":"",
        "name":"Preview"
      }
    ]
  },
  "Node_3D_Camera":{
    "tooltip":"Create 3D camera that render scene to surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"Clipping Distance"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Projection",
        "display_data":[
          "Perspective",
          "Orthographic"
        ]
      },
      {
        "tooltip":"",
        "name":"Scene"
      },
      {
        "tooltip":"",
        "name":"Ambient Light"
      },
      {
        "tooltip":"",
        "name":"Show Background"
      },
      {
        "tooltip":"",
        "name":"Backface Culling",
        "display_data":[
          "None",
          "CW",
          "CCW"
        ]
      },
      {
        "tooltip":"",
        "name":"Orthographic Scale"
      },
      {
        "tooltip":"",
        "name":"Postioning Mode",
        "display_data":[
          "Position + Rotation",
          "Position + Lookat",
          "Lookat + Rotation"
        ]
      },
      {
        "tooltip":"",
        "name":"Lookat Position"
      },
      {
        "tooltip":"",
        "name":"Roll"
      },
      {
        "tooltip":"",
        "name":"Horizontal Angle"
      },
      {
        "tooltip":"",
        "name":"Vertical Angle"
      },
      {
        "tooltip":"",
        "name":"Distance"
      },
      {
        "tooltip":"",
        "name":"Gamma Adjust"
      },
      {
        "tooltip":"",
        "name":"Environment Texture"
      },
      {
        "tooltip":"",
        "name":"Ambient Occlusion"
      },
      {
        "tooltip":"",
        "name":"AO Radius"
      },
      {
        "tooltip":"",
        "name":"AO Bias"
      },
      {
        "tooltip":"",
        "name":"AO Strength"
      },
      {
        "tooltip":"",
        "name":"Round Normal"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Normal",
          "Additive"
        ]
      }
    ],
    "name":"3D Camera",
    "outputs":[
      {
        "tooltip":"",
        "name":"Rendered"
      },
      {
        "tooltip":"",
        "name":"Normal"
      },
      {
        "tooltip":"",
        "name":"Depth"
      }
    ]
  },
  "Node_Render_Sprite_Sheet":{
    "tooltip":"Create spritesheet from image array or animation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Sprites"
      },
      {
        "tooltip":"",
        "name":"Sprite set",
        "display_data":[
          "Animation",
          "Sprite array"
        ]
      },
      {
        "tooltip":"Number of frames until next sprite. Can be seen as (Step - 1) frame skip.",
        "name":"Frame step"
      },
      {
        "tooltip":"",
        "name":"Packing type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Horizontal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Horizontal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Vertical",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Vertical"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Grid",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Grid"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Grid column"
      },
      {
        "tooltip":"",
        "name":"Alignment",
        "display_data":[
          "First",
          "Middle",
          "Last"
        ]
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"Starting\/ending frames, set end to 0 to default to last frame.",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Overlappable"
      },
      {
        "tooltip":"",
        "name":"Custom Range"
      }
    ],
    "name":"Render Spritesheet",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas Data"
      }
    ]
  },
  "Node_Repeat_Texture":{
    "tooltip":"Repeat texture over larger surface without repeating patterns.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Target dimension"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Tile",
          "Scatter",
          "Cell"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Repeat Texture",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Feedback_Inline":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Feedback",
    "outputs":[
    ]
  },
  "Node_3D_Light_Directional":{
    "tooltip":"Create directional light directed at the origin point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Intensity"
      },
      {
        "tooltip":"",
        "name":"Cast Shadow"
      },
      {
        "tooltip":"",
        "name":"Shadow Map Size"
      },
      {
        "tooltip":"",
        "name":"Shadow Map Scale"
      },
      {
        "tooltip":"",
        "name":"Shadow Bias"
      }
    ],
    "name":"Directional Light",
    "outputs":[
      {
        "tooltip":"",
        "name":"Light"
      }
    ]
  },
  "Node_3D_Light_Point":{
    "tooltip":"Create point light to illuminate surrounding area.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Intensity"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Cast Shadow"
      },
      {
        "tooltip":"",
        "name":"Shadow Map Size"
      },
      {
        "tooltip":"",
        "name":"Shadow Bias"
      }
    ],
    "name":"Point Light",
    "outputs":[
      {
        "tooltip":"",
        "name":"Light"
      }
    ]
  },
  "Node_Feedback_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display type",
        "display_data":0.0
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Input type",
        "display_data":[
          "Integer",
          "Float",
          "Boolean",
          "Color",
          "Surface",
          "File Path",
          "Curve",
          "Text",
          "Object",
          "Node",
          -1.0,
          "Any",
          "Path",
          "Particle",
          "Rigidbody Object",
          "Domain",
          "Struct",
          "Strands",
          "Mesh",
          "Trigger",
          -1.0,
          "3D Mesh",
          "3D Light",
          "3D Camera",
          "3D Scene",
          "3D Material",
          -1.0,
          "PCX",
          "Audio",
          "Fluid Domain",
          "SDF"
        ]
      },
      {
        "tooltip":"",
        "name":"Enum label"
      },
      {
        "tooltip":"",
        "name":"Vector size",
        "display_data":[
          "2",
          "3",
          "4"
        ]
      },
      {
        "tooltip":"",
        "name":"Order"
      },
      {
        "tooltip":"",
        "name":"Display preview gizmo"
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"",
        "name":"Button Label"
      },
      {
        "tooltip":"",
        "name":"Visible Condition",
        "display_data":[
          "Show",
          "Hide",
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Equal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Not equal",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Not equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater ",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Greater "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater or equal",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Greater or equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Lesser"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser or equal",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Lesser or equal"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Visible Check"
      },
      {
        "tooltip":"",
        "name":"Visible Check To"
      }
    ],
    "name":"Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Feedback loop"
      }
    ]
  },
  "Node_Canvas_Group":{
    "tooltip":"Create a group that combines multiple canvas nodes a layers.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      }
    ],
    "name":"Canvas Group",
    "outputs":[
    ]
  },
  "Node_Feedback_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Feedback loop"
      }
    ],
    "name":"Output",
    "outputs":[
    ]
  },
  "Node_Feedback":{
    "tooltip":"Create a group that reuse output from last frame to the current one.",
    "inputs":[
    ],
    "name":"Feedback",
    "outputs":[
    ]
  },
  "Node_FFT":{
    "tooltip":"Perform fourier transform on number array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Data"
      },
      {
        "tooltip":"",
        "name":"Preprocess Function",
        "display_data":[
          "None",
          "Hann"
        ]
      }
    ],
    "name":"FFT",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_3D_Material":{
    "tooltip":"Create 3D material with adjustable parameters.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Diffuse"
      },
      {
        "tooltip":"",
        "name":"Specular"
      },
      {
        "tooltip":"",
        "name":"Shininess"
      },
      {
        "tooltip":"",
        "name":"Metalic"
      },
      {
        "tooltip":"",
        "name":"Normal Map"
      },
      {
        "tooltip":"",
        "name":"Normal Strength"
      },
      {
        "tooltip":"",
        "name":"Roughness"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      }
    ],
    "name":"3D Material",
    "outputs":[
      {
        "tooltip":"",
        "name":"Material"
      }
    ]
  },
  "Node_Find_Pixel":{
    "tooltip":"Get the position of the first pixel with a given color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Search color"
      },
      {
        "tooltip":"",
        "name":"Tolerance"
      },
      {
        "tooltip":"",
        "name":"Find all"
      },
      {
        "tooltip":"",
        "name":"Include alpha"
      },
      {
        "tooltip":"",
        "name":"Alpha tolerance"
      }
    ],
    "name":"Find pixel",
    "outputs":[
      {
        "tooltip":"",
        "name":"Position"
      }
    ]
  },
  "Node_Repeat":{
    "tooltip":"Repeat image multiple times linearly, or in grid pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Pattern",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_repeat_axis)",
            "data":"Linear",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Linear"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_repeat_axis)",
            "data":"Grid",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Grid"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_repeat_axis)",
            "data":"Circular",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Circular"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Shift position"
      },
      {
        "tooltip":"",
        "name":"Repeat rotation"
      },
      {
        "tooltip":"",
        "name":"Scale multiply"
      },
      {
        "tooltip":"",
        "name":"Angle range"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Start position"
      },
      {
        "tooltip":"",
        "name":"Scale over copy"
      },
      {
        "tooltip":"Make each copy follow along path.",
        "name":"Path"
      },
      {
        "tooltip":"Range of the path to follow.",
        "name":"Path range"
      },
      {
        "tooltip":"",
        "name":"Path shift"
      },
      {
        "tooltip":"",
        "name":"Color over copy"
      },
      {
        "tooltip":"",
        "name":"Alpha over copy"
      },
      {
        "tooltip":"Whether to select image from an array in order, at random, or spread or each image to one output.",
        "name":"Array select",
        "display_data":[
          "Order",
          "Random",
          "Spread"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Column"
      },
      {
        "tooltip":"",
        "name":"Column shift"
      },
      {
        "tooltip":"",
        "name":"Animator midpoint"
      },
      {
        "tooltip":"",
        "name":"Animator range"
      },
      {
        "tooltip":"",
        "name":"Animator position"
      },
      {
        "tooltip":"",
        "name":"Animator rotation"
      },
      {
        "tooltip":"",
        "name":"Animator scale"
      },
      {
        "tooltip":"",
        "name":"Animator falloff"
      },
      {
        "tooltip":"Place each copy next to each other, taking surface dimension into account.",
        "name":"Stack",
        "display_data":[
          "None",
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Animator blend"
      },
      {
        "tooltip":"",
        "name":"Animator alpha"
      },
      {
        "tooltip":"",
        "name":"Animator"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Start rotation"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Blend Mode",
        "display_data":[
          "Normal",
          "Additive",
          "Maximum"
        ]
      }
    ],
    "name":"Repeat",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_RGB_Channel":{
    "tooltip":"Extract RGBA channel on an image, each channel becomes its own image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface In"
      },
      {
        "tooltip":"",
        "name":"Output Type",
        "display_data":[
          "Channel value",
          "Greyscale"
        ]
      },
      {
        "tooltip":"",
        "name":"Keep Alpha"
      },
      {
        "tooltip":"",
        "name":"Output Array"
      }
    ],
    "name":"RGBA Extract",
    "outputs":[
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ]
  },
  "Node_3D_Mesh_Cone":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Side"
      },
      {
        "tooltip":"",
        "name":"Material Bottom"
      },
      {
        "tooltip":"",
        "name":"Material Side"
      },
      {
        "tooltip":"",
        "name":"Smooth Side"
      }
    ],
    "name":"3D Cone",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Rigid_Activate":{
    "tooltip":"Enable or disable rigidbody object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Object"
      },
      {
        "tooltip":"",
        "name":"Physics activated"
      }
    ],
    "name":"Activate Physics",
    "outputs":[
      {
        "tooltip":"",
        "name":"Object"
      }
    ]
  },
  "Node_MK_Fall":{
    "tooltip":"Generate leaves falling effects.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Gravity"
      },
      {
        "tooltip":"",
        "name":"X Swing"
      },
      {
        "tooltip":"",
        "name":"Y Swing"
      },
      {
        "tooltip":"",
        "name":"Swing frequency"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Speed"
      },
      {
        "tooltip":"",
        "name":"X Momentum"
      },
      {
        "tooltip":"",
        "name":"Wind"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Ground"
      },
      {
        "tooltip":"",
        "name":"Ground levels"
      },
      {
        "tooltip":"",
        "name":"Y Momentum"
      },
      {
        "tooltip":"",
        "name":"Twist"
      },
      {
        "tooltip":"",
        "name":"Twist Rate"
      },
      {
        "tooltip":"",
        "name":"Twist Speed"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Render Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_leaf)",
            "data":"Leaf",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Leaf"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Twist Radius"
      }
    ],
    "name":"MK Fall",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Rigid_Force_Apply":{
    "tooltip":"Apply force to objects.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Object"
      },
      {
        "tooltip":"",
        "name":"Force type",
        "display_data":[
          "Constant",
          "Impulse",
          "Torque",
          "Explode"
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Torque"
      },
      {
        "tooltip":"Frame index to apply force.",
        "name":"Apply frame"
      },
      {
        "tooltip":"",
        "name":"Force"
      },
      {
        "tooltip":"",
        "name":"Scope",
        "display_data":[
          "Global",
          "Local"
        ]
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Range"
      }
    ],
    "name":"Apply Force",
    "outputs":[
      {
        "tooltip":"",
        "name":"Object"
      }
    ]
  },
  "Node_FLIP_Apply_Force":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Texture"
      }
    ],
    "name":"Add Collider",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Rigid_Global":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Gravity"
      }
    ],
    "name":"RigidSim Global",
    "outputs":[
    ]
  },
  "Node_3D_Mesh_Cube":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Material per side"
      },
      {
        "tooltip":"",
        "name":"Material"
      },
      {
        "tooltip":"",
        "name":"Material Bottom"
      },
      {
        "tooltip":"",
        "name":"Material Left"
      },
      {
        "tooltip":"",
        "name":"Material Right"
      },
      {
        "tooltip":"",
        "name":"Material Back"
      },
      {
        "tooltip":"",
        "name":"Material Front"
      }
    ],
    "name":"3D Cube",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Rigid_Group_Inline":{
    "tooltip":"Create group for rigidbody simulation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Gravity"
      }
    ],
    "name":"RigidSim",
    "outputs":[
    ]
  },
  "Node_FLIP_Apply_Velocity":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Size"
      }
    ],
    "name":"Apply Velocity",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Rigid_Group":{
    "tooltip":"Create group for rigidbody simulation.",
    "inputs":[
    ],
    "name":"RigidSim",
    "outputs":[
    ]
  },
  "Node_3D_Mesh_Cylinder":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Side"
      },
      {
        "tooltip":"",
        "name":"Material Top"
      },
      {
        "tooltip":"",
        "name":"Material Bottom"
      },
      {
        "tooltip":"",
        "name":"Material Side"
      },
      {
        "tooltip":"",
        "name":"Smooth Side"
      },
      {
        "tooltip":"",
        "name":"End caps"
      }
    ],
    "name":"3D Cylinder",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_FLIP_Destroy":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Ratio"
      }
    ],
    "name":"Destroy",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Rigid_Object_Spawner":{
    "tooltip":"Spawn multiple rigidbody objects.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Object"
      },
      {
        "tooltip":"",
        "name":"Spawn area"
      },
      {
        "tooltip":"",
        "name":"Spawn type",
        "display_data":[
          "Stream",
          "Burst"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn delay"
      },
      {
        "tooltip":"",
        "name":"Spawn amount"
      },
      {
        "tooltip":"",
        "name":"Spawn frame"
      },
      {
        "tooltip":"",
        "name":"Spawn"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Object Spawner",
    "outputs":[
      {
        "tooltip":"",
        "name":"Object"
      }
    ]
  },
  "Node_MK_Flag":{
    "tooltip":"Generate waving flag.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Pin side",
        "display_data":[
          "Left",
          "Right",
          "Up",
          "Down"
        ]
      },
      {
        "tooltip":"",
        "name":"Subdivision"
      },
      {
        "tooltip":"",
        "name":"Wind speed"
      },
      {
        "tooltip":"",
        "name":"Wave width"
      },
      {
        "tooltip":"",
        "name":"Wave size"
      },
      {
        "tooltip":"",
        "name":"Phase"
      },
      {
        "tooltip":"",
        "name":"Clip"
      },
      {
        "tooltip":"",
        "name":"Shadow"
      },
      {
        "tooltip":"",
        "name":"Shadow threshold"
      },
      {
        "tooltip":"",
        "name":"Invert shadow"
      }
    ],
    "name":"MK Flag",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Mesh_Export":{
    "tooltip":"Export 3D mesh as .obj file",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Paths"
      },
      {
        "tooltip":"",
        "name":"Export Texture"
      },
      {
        "tooltip":"",
        "name":"Invert UV"
      }
    ],
    "name":"Mesh Export",
    "outputs":[
    ]
  },
  "Node_FLIP_Domain":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Particle Size"
      },
      {
        "tooltip":"",
        "name":"Particle Density"
      },
      {
        "tooltip":"",
        "name":"FLIP Ratio"
      },
      {
        "tooltip":"",
        "name":"Resolve accelerator"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Damping"
      },
      {
        "tooltip":"",
        "name":"Gravity"
      },
      {
        "tooltip":"",
        "name":"Time Step"
      },
      {
        "tooltip":"",
        "name":"Wall"
      },
      {
        "tooltip":"",
        "name":"Viscosity"
      },
      {
        "tooltip":"",
        "name":"Friction"
      },
      {
        "tooltip":"",
        "name":"Wall Elasticity"
      },
      {
        "tooltip":"",
        "name":"Gravity Direction"
      }
    ],
    "name":"Domain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_FLIP_Group_Inline":{
    "tooltip":"Create group for fluid simulation.",
    "inputs":[
    ],
    "name":"FLIP Fluid",
    "outputs":[
    ]
  },
  "Node_Rigid_Object":{
    "tooltip":"Spawn a rigidbody object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Affect by force"
      },
      {
        "tooltip":"",
        "name":"Weight"
      },
      {
        "tooltip":"",
        "name":"Contact friction"
      },
      {
        "tooltip":"",
        "name":"Air resistance"
      },
      {
        "tooltip":"",
        "name":"Rotation resistance"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Box",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Box"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_misc)",
            "data":"Custom",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Custom"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Start position"
      },
      {
        "tooltip":"Make object spawn when start.",
        "name":"Spawn"
      },
      {
        "tooltip":"",
        "name":"Generate mesh"
      },
      {
        "tooltip":"",
        "name":"Mesh expansion"
      },
      {
        "tooltip":"",
        "name":"Add pixel collider"
      },
      {
        "tooltip":"",
        "name":"Collision group"
      }
    ],
    "name":"Object",
    "outputs":[
      {
        "tooltip":"",
        "name":"Object"
      }
    ]
  },
  "Node_Rigid_Override":{
    "tooltip":"Replace rigidbody object variable with a new one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Object"
      },
      {
        "tooltip":"",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Scales"
      },
      {
        "tooltip":"",
        "name":"Rotations"
      },
      {
        "tooltip":"",
        "name":"Blends"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      }
    ],
    "name":"Rigidbody Override",
    "outputs":[
      {
        "tooltip":"",
        "name":"Object"
      }
    ]
  },
  "Node_Rigid_Render_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Render dimension"
      },
      {
        "tooltip":"",
        "name":"Round position"
      }
    ],
    "name":"Render",
    "outputs":[
    ]
  },
  "Node_3D_Mesh_Extrude":{
    "tooltip":"Extrude 2D image into 3D object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Front Surface"
      },
      {
        "tooltip":"",
        "name":"Front Height"
      },
      {
        "tooltip":"",
        "name":"Smooth"
      },
      {
        "tooltip":"",
        "name":"Always update"
      },
      {
        "tooltip":"",
        "name":"Double Side"
      },
      {
        "tooltip":"",
        "name":"Back Surface"
      },
      {
        "tooltip":"",
        "name":"Back Height"
      },
      {
        "tooltip":"",
        "name":"Front Height Level"
      },
      {
        "tooltip":"",
        "name":"Back Height Level"
      }
    ],
    "name":"Surface Extrude",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Rigid_Render":{
    "tooltip":"Render rigidbody object to surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Render dimension"
      },
      {
        "tooltip":"",
        "name":"Round position"
      }
    ],
    "name":"Render",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_MK_Flare":{
    "tooltip":"Generate lens flare.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Origin"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Flares"
      },
      {
        "tooltip":"",
        "name":"Focus"
      }
    ],
    "name":"MK Lens Flare",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Light only"
      }
    ]
  },
  "Node_Rigid_Variable":{
    "tooltip":"Extract veriable from rigidbody object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Object"
      }
    ],
    "name":"Rigidbody Variable",
    "outputs":[
      {
        "tooltip":"",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Scales"
      },
      {
        "tooltip":"",
        "name":"Rotations"
      },
      {
        "tooltip":"",
        "name":"Blends"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      },
      {
        "tooltip":"",
        "name":"Center of mass"
      },
      {
        "tooltip":"",
        "name":"Velocity magnitude"
      }
    ]
  },
  "Node_MK_Fracture":{
    "tooltip":"Deterministically fracture and image and apply basic physics.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Subdivision"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Progress map"
      },
      {
        "tooltip":"",
        "name":"Movement"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Gravity"
      },
      {
        "tooltip":"",
        "name":"Movement map"
      },
      {
        "tooltip":"",
        "name":"Rotation map"
      },
      {
        "tooltip":"",
        "name":"Brick Shift"
      },
      {
        "tooltip":"",
        "name":"Skew"
      },
      {
        "tooltip":"",
        "name":"Brick Axis",
        "display_data":[
          "X",
          "Y"
        ]
      }
    ],
    "name":"MK Fracture",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Rigid_Wall":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Sides"
      },
      {
        "tooltip":"",
        "name":"Contact Friction"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Collision Group"
      }
    ],
    "name":"Wall",
    "outputs":[
    ]
  },
  "Node_FLIP_Render":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Merge threshold"
      },
      {
        "tooltip":"",
        "name":"Lifespan"
      },
      {
        "tooltip":"",
        "name":"Particle expansion"
      },
      {
        "tooltip":"",
        "name":"Draw obstracles"
      },
      {
        "tooltip":"",
        "name":"Fluid particle"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_flip_render)",
            "data":"Particle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Particle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_flip_render)",
            "data":"Line",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Line"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Additive"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Segments"
      },
      {
        "tooltip":"",
        "name":"Color Over Velocity"
      },
      {
        "tooltip":"",
        "name":"Velocity Map"
      }
    ],
    "name":"Render",
    "outputs":[
      {
        "tooltip":"",
        "name":"Rendered"
      }
    ]
  },
  "Node_FLIP_Repel":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Strength"
      }
    ],
    "name":"Repel",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_RM_Cloud":{
    "tooltip":"Generate distance field cloud.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"View Range"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Detail"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Detail Scaling"
      },
      {
        "tooltip":"",
        "name":"Detail Attenuation"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          "Volume",
          "Plane"
        ]
      },
      {
        "tooltip":"",
        "name":"Use Fog"
      },
      {
        "tooltip":"",
        "name":"Colors"
      }
    ],
    "name":"RM Cloud",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      }
    ]
  },
  "Node_3D_Mesh_Obj":{
    "tooltip":"Load .obj file from your computer as a 3D object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"File Path"
      },
      {
        "tooltip":"Flip UV axis, can be use to fix some texture mapping error.",
        "name":"Flip UV"
      },
      {
        "tooltip":"",
        "name":"Import Scale"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "XYZ",
          "XZ-Y",
          "X-ZY"
        ]
      }
    ],
    "name":"3D Object",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Vector_Cross_2D":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Point 1"
      },
      {
        "tooltip":"",
        "name":"Point 2"
      }
    ],
    "name":"Cross product 2D",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_FLIP_Spawner":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Spawn Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          },
          "Surface"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn Position"
      },
      {
        "tooltip":"",
        "name":"Spawn Type",
        "display_data":[
          "Stream",
          "Splash"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn Frame"
      },
      {
        "tooltip":"",
        "name":"Spawn Amount"
      },
      {
        "tooltip":"",
        "name":"Spawn Velocity"
      },
      {
        "tooltip":"",
        "name":"Spawn Surface"
      },
      {
        "tooltip":"",
        "name":"Spawn Radius"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Spawn Direction"
      },
      {
        "tooltip":"",
        "name":"Inherit Velocity"
      },
      {
        "tooltip":"",
        "name":"Spawn Duration"
      },
      {
        "tooltip":"",
        "name":"Spawn Szie"
      }
    ],
    "name":"Spawner",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_FLIP_to_VFX":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ],
    "name":"FLIP to VFX",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_Vector_Cross_3D":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Point 1"
      },
      {
        "tooltip":"",
        "name":"Point 2"
      }
    ],
    "name":"Cross product 3D",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Vector_Dot":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Point 1"
      },
      {
        "tooltip":"",
        "name":"Point 2"
      }
    ],
    "name":"Dot product",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Vector_Magnitude":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Vector"
      }
    ],
    "name":"Magnitude",
    "outputs":[
      {
        "tooltip":"",
        "name":"Magnitude"
      }
    ]
  },
  "Node_Vector_Split":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Vector"
      }
    ],
    "name":"Vector Split",
    "outputs":[
      {
        "tooltip":"",
        "name":"x"
      },
      {
        "tooltip":"",
        "name":"y"
      },
      {
        "tooltip":"",
        "name":"z"
      },
      {
        "tooltip":"",
        "name":"w"
      }
    ]
  },
  "Node_FLIP_Update":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Update"
      },
      {
        "tooltip":"",
        "name":"Override timestep"
      },
      {
        "tooltip":"",
        "name":"Timestep"
      }
    ],
    "name":"Update",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_RM_Combine":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Projection",
        "display_data":[
          "Perspective",
          "Orthographic"
        ]
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"Ortho Scale"
      },
      {
        "tooltip":"",
        "name":"View Range"
      },
      {
        "tooltip":"",
        "name":"Depth"
      },
      {
        "tooltip":"",
        "name":"Draw BG"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Ambient Level"
      },
      {
        "tooltip":"",
        "name":"Light Position"
      },
      {
        "tooltip":"",
        "name":"Environment"
      },
      {
        "tooltip":"",
        "name":"Camera Rotation"
      },
      {
        "tooltip":"",
        "name":"Camera Scale"
      },
      {
        "tooltip":"",
        "name":"Shape 1"
      },
      {
        "tooltip":"",
        "name":"Shape 2"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Place",
          "Union",
          "Subtract",
          "Intersect"
        ]
      },
      {
        "tooltip":"",
        "name":"Merge"
      },
      {
        "tooltip":"",
        "name":"Render"
      },
      {
        "tooltip":"",
        "name":"Env Interpolation"
      }
    ],
    "name":"RM Combine",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      },
      {
        "tooltip":"",
        "name":"Shape Data"
      }
    ]
  },
  "Node_Vector_Swizzle":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Vector"
      },
      {
        "tooltip":"",
        "name":"Swizzle"
      }
    ],
    "name":"Swizzle",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_FLIP_Vortex":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Attraction"
      }
    ],
    "name":"Vortex",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_MK_GridBalls":{
    "tooltip":"Generate controllable grid of spheres.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Light"
      },
      {
        "tooltip":"",
        "name":"Scatter"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Shading"
      },
      {
        "tooltip":"",
        "name":"Scatter direction"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Stretch"
      },
      {
        "tooltip":"",
        "name":"Stretch direction"
      },
      {
        "tooltip":"",
        "name":"Stretch shift"
      },
      {
        "tooltip":"",
        "name":"Roundness"
      },
      {
        "tooltip":"",
        "name":"Twist"
      },
      {
        "tooltip":"",
        "name":"Twist axis"
      },
      {
        "tooltip":"",
        "name":"Twist shift"
      }
    ],
    "name":"MK GridBalls",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Mesh_Path_Extrude":{
    "tooltip":"Extrude path into 3D object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Side"
      },
      {
        "tooltip":"",
        "name":"Material Side"
      },
      {
        "tooltip":"",
        "name":"Material Cap"
      },
      {
        "tooltip":"",
        "name":"Smooth"
      },
      {
        "tooltip":"",
        "name":"End caps"
      },
      {
        "tooltip":"",
        "name":"Subdivision"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Radius Over Path"
      },
      {
        "tooltip":"",
        "name":"Texture Scale"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"",
        "name":"Inverted"
      }
    ],
    "name":"Path Extrude",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Flip":{
    "tooltip":"Flip image horizontally or vertically.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "x",
          "y"
        ]
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Flip",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Mesh_Plane":{
    "tooltip":"Put 2D image on a plane in 3D space.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Material"
      },
      {
        "tooltip":"",
        "name":"Normal",
        "display_data":[
          "X",
          "Y",
          "Z"
        ]
      },
      {
        "tooltip":"",
        "name":"Both side"
      },
      {
        "tooltip":"",
        "name":"Back Material"
      }
    ],
    "name":"3D Plane",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Flood_Fill":{
    "tooltip":"Filled connected pixel given position and color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Colors"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Diagonal"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Blend",
        "display_data":[
          "Override",
          "Multiply"
        ]
      }
    ],
    "name":"Flood Fill",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Mesh_Sphere_Ico":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Subdivision"
      },
      {
        "tooltip":"",
        "name":"Material"
      },
      {
        "tooltip":"",
        "name":"Smooth Normal"
      }
    ],
    "name":"3D Icosphere",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Flow_Noise":{
    "tooltip":"Generate fluid flow noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Detail"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Flow Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Mesh_Sphere_UV":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Horizontal Slices"
      },
      {
        "tooltip":"",
        "name":"Vertical Slices"
      },
      {
        "tooltip":"",
        "name":"Material"
      },
      {
        "tooltip":"",
        "name":"Smooth Normal"
      }
    ],
    "name":"3D UV Sphere",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Fn_Ease":{
    "tooltip":"Create easing function.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Graph"
        ]
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Smooth",
        "display_data":[
          "Cubic poly",
          "Quadratic rat",
          "Cubic rat",
          "Cosine"
        ]
      }
    ],
    "name":"Ease",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_MK_GridFlip":{
    "tooltip":"Generate controllable grid of planes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface front"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Surface back"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Sweep"
      },
      {
        "tooltip":"",
        "name":"Sweep direction"
      },
      {
        "tooltip":"",
        "name":"Sweep shift"
      },
      {
        "tooltip":"",
        "name":"Flip limit",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mk_grid_flip)",
            "data":"None",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"None"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mk_grid_flip)",
            "data":"90",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"90"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mk_grid_flip)",
            "data":"180",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"180"
          }
        ]
      }
    ],
    "name":"MK GridFlip",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Fn_Math":{
    "tooltip":"Apply mathematic operation of wave value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Graph"
        ]
      },
      {
        "tooltip":"",
        "name":"Operation",
        "display_data":[
          "Add",
          "Minus",
          "Multiply"
        ]
      },
      {
        "tooltip":"",
        "name":"Value 1"
      },
      {
        "tooltip":"",
        "name":"Value 2"
      }
    ],
    "name":"Math",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Fn_SmoothStep":{
    "tooltip":"Apply smoothstop function to a value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Graph"
        ]
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Cubic poly",
          "Quadratic rat",
          "Cubic rat",
          "Cosine"
        ]
      }
    ],
    "name":"SmoothStep",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Vector2":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"x"
      },
      {
        "tooltip":"",
        "name":"y"
      },
      {
        "tooltip":"",
        "name":"Integer"
      },
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Coordinate"
        ]
      }
    ],
    "name":"Vector2",
    "outputs":[
      {
        "tooltip":"",
        "name":"Vector"
      }
    ]
  },
  "Node_Vector3":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"x"
      },
      {
        "tooltip":"",
        "name":"y"
      },
      {
        "tooltip":"",
        "name":"z"
      },
      {
        "tooltip":"",
        "name":"Integer"
      }
    ],
    "name":"Vector3",
    "outputs":[
      {
        "tooltip":"",
        "name":"Vector"
      }
    ]
  },
  "Node_Vector4":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"x"
      },
      {
        "tooltip":"",
        "name":"y"
      },
      {
        "tooltip":"",
        "name":"z"
      },
      {
        "tooltip":"",
        "name":"w"
      },
      {
        "tooltip":"",
        "name":"Integer"
      }
    ],
    "name":"Vector4",
    "outputs":[
      {
        "tooltip":"",
        "name":"Vector"
      }
    ]
  },
  "Node_Fn_WaveTable":{
    "tooltip":"Create value changing overtime in wave pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Graph"
        ]
      },
      {
        "tooltip":"",
        "name":"Pattern"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Frequency"
      }
    ],
    "name":"WaveTable",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_VFX_Accelerate":{
    "tooltip":"Change the speed of particle in range.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Accelerate",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_VFX_Attract":{
    "tooltip":"Attract particle in range to one point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Destroy when reach middle"
      }
    ],
    "name":"Attract",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_VFX_Destroy":{
    "tooltip":"Destroy particle in range.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Destroy",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_VFX_Group_Inline":{
    "tooltip":"Create VFX group, which generate particles that can be manipulated using different force nodes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Loop"
      }
    ],
    "name":"VFX",
    "outputs":[
    ]
  },
  "Node_RM_Primitive":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Plane",
            "spr_ind":0.0,
            "spr_blend":15259350.0,
            "name":"Plane"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Box",
            "spr_ind":1.0,
            "spr_blend":15259350.0,
            "name":"Box"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Box Frame",
            "spr_ind":2.0,
            "spr_blend":15259350.0,
            "name":"Box Frame"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Box Round",
            "spr_ind":3.0,
            "spr_blend":15259350.0,
            "name":"Box Round"
          },
          -1.0,
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Sphere",
            "spr_ind":4.0,
            "spr_blend":15259350.0,
            "name":"Sphere"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Ellipse",
            "spr_ind":5.0,
            "spr_blend":15259350.0,
            "name":"Ellipse"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Cut Sphere",
            "spr_ind":6.0,
            "spr_blend":15259350.0,
            "name":"Cut Sphere"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Cut Hollow Sphere",
            "spr_ind":7.0,
            "spr_blend":15259350.0,
            "name":"Cut Hollow Sphere"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Torus",
            "spr_ind":8.0,
            "spr_blend":15259350.0,
            "name":"Torus"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Capped Torus",
            "spr_ind":9.0,
            "spr_blend":15259350.0,
            "name":"Capped Torus"
          },
          -1.0,
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Cylinder",
            "spr_ind":10.0,
            "spr_blend":15259350.0,
            "name":"Cylinder"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Prism",
            "spr_ind":11.0,
            "spr_blend":15259350.0,
            "name":"Prism"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Capsule",
            "spr_ind":12.0,
            "spr_blend":15259350.0,
            "name":"Capsule"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Cone",
            "spr_ind":13.0,
            "spr_blend":15259350.0,
            "name":"Cone"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Capped Cone",
            "spr_ind":14.0,
            "spr_blend":15259350.0,
            "name":"Capped Cone"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Round Cone",
            "spr_ind":15.0,
            "spr_blend":15259350.0,
            "name":"Round Cone"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"3D Arc",
            "spr_ind":16.0,
            "spr_blend":15259350.0,
            "name":"3D Arc"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Pie",
            "spr_ind":17.0,
            "spr_blend":15259350.0,
            "name":"Pie"
          },
          -1.0,
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Octahedron",
            "spr_ind":18.0,
            "spr_blend":15259350.0,
            "name":"Octahedron"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_3d)",
            "data":"Pyramid",
            "spr_ind":19.0,
            "spr_blend":15259350.0,
            "name":"Pyramid"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"View Range"
      },
      {
        "tooltip":"",
        "name":"Depth"
      },
      {
        "tooltip":"",
        "name":"Light Position"
      },
      {
        "tooltip":"",
        "name":"Base Color"
      },
      {
        "tooltip":"",
        "name":"Ambient Level"
      },
      {
        "tooltip":"",
        "name":"Elongate"
      },
      {
        "tooltip":"",
        "name":"Rounded"
      },
      {
        "tooltip":"",
        "name":"Projection",
        "display_data":[
          "Perspective",
          "Orthographic"
        ]
      },
      {
        "tooltip":"",
        "name":"Ortho Scale"
      },
      {
        "tooltip":"",
        "name":"Wave Amplitude"
      },
      {
        "tooltip":"",
        "name":"Wave Intensity"
      },
      {
        "tooltip":"",
        "name":"Wave Phase"
      },
      {
        "tooltip":"",
        "name":"Twist Axis",
        "display_data":[
          "X",
          "Y",
          "Z"
        ]
      },
      {
        "tooltip":"",
        "name":"Twist Amount"
      },
      {
        "tooltip":"",
        "name":"Tile Distance"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Crop"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Height"
      },
      {
        "tooltip":"",
        "name":"Radius Range"
      },
      {
        "tooltip":"",
        "name":"Uniform Size"
      },
      {
        "tooltip":"",
        "name":"Tile Amount"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Draw BG"
      },
      {
        "tooltip":"",
        "name":"Volumetric"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Environment"
      },
      {
        "tooltip":"",
        "name":"Reflective"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Triplanar Smoothing"
      },
      {
        "tooltip":"",
        "name":"Texture Scale"
      },
      {
        "tooltip":"",
        "name":"Corner"
      },
      {
        "tooltip":"",
        "name":"2D Size"
      },
      {
        "tooltip":"",
        "name":"Side"
      },
      {
        "tooltip":"",
        "name":"Camera Rotation"
      },
      {
        "tooltip":"",
        "name":"Camera Scale"
      },
      {
        "tooltip":"",
        "name":"Render"
      },
      {
        "tooltip":"",
        "name":"Tile"
      },
      {
        "tooltip":"",
        "name":"Tiled Shift"
      },
      {
        "tooltip":"",
        "name":"Tiled Rotation"
      },
      {
        "tooltip":"",
        "name":"Tiled Scale"
      },
      {
        "tooltip":"",
        "name":"Env Interpolation"
      },
      {
        "tooltip":"",
        "name":"Texture Interpolation"
      }
    ],
    "name":"RM Primitive",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      },
      {
        "tooltip":"",
        "name":"Shape Data"
      }
    ]
  },
  "Node_VFX_Group":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Loop"
      }
    ],
    "name":"VFX",
    "outputs":[
    ]
  },
  "Node_RM_Render":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Projection",
        "display_data":[
          "Perspective",
          "Orthographic"
        ]
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"Ortho Scale"
      },
      {
        "tooltip":"",
        "name":"View Range"
      },
      {
        "tooltip":"",
        "name":"Depth"
      },
      {
        "tooltip":"",
        "name":"Draw BG"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Ambient Level"
      },
      {
        "tooltip":"",
        "name":"Light Position"
      },
      {
        "tooltip":"",
        "name":"Environment"
      },
      {
        "tooltip":"",
        "name":"Camera Rotation"
      },
      {
        "tooltip":"",
        "name":"Camera Scale"
      },
      {
        "tooltip":"",
        "name":"SDF Object"
      },
      {
        "tooltip":"",
        "name":"Env Interpolation"
      }
    ],
    "name":"RM Render",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      }
    ]
  },
  "Node_Wiggler":{
    "tooltip":"Create random value smoothly changing over time.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Graph"
        ]
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Frequency"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Clip"
      }
    ],
    "name":"Wiggler",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_VFX_Oscillate":{
    "tooltip":"Swing particle around its original trajectory.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Amplitude"
      },
      {
        "tooltip":"",
        "name":"Frequency"
      },
      {
        "tooltip":"",
        "name":"Multiply by speed"
      }
    ],
    "name":"Oscillate",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_Canvas":{
    "tooltip":"Draw on surface using brush, eraser, etc.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Brush size"
      },
      {
        "tooltip":"",
        "name":"Fill threshold"
      },
      {
        "tooltip":"",
        "name":"Fill type",
        "display_data":[
          "4 connect",
          "8 connect",
          "Entire canvas"
        ]
      },
      {
        "tooltip":"",
        "name":"Draw preview overlay"
      },
      {
        "tooltip":"",
        "name":"Brush"
      },
      {
        "tooltip":"",
        "name":"Surface amount"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Background alpha"
      },
      {
        "tooltip":"",
        "name":"Render background"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Frames animation"
      },
      {
        "tooltip":"",
        "name":"Animation speed"
      },
      {
        "tooltip":"",
        "name":"Use background dimension"
      },
      {
        "tooltip":"",
        "name":"Brush distance"
      },
      {
        "tooltip":"",
        "name":"Rotate brush by direction"
      },
      {
        "tooltip":"",
        "name":"Random direction"
      },
      {
        "tooltip":"",
        "name":"Animation Type",
        "display_data":[
          "Loop",
          "Hold",
          "Clear"
        ]
      }
    ],
    "name":"Canvas",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_RM_Terrain":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"FOV"
      },
      {
        "tooltip":"",
        "name":"View Range"
      },
      {
        "tooltip":"",
        "name":"BG Bleed"
      },
      {
        "tooltip":"",
        "name":"Ambient"
      },
      {
        "tooltip":"",
        "name":"Height"
      },
      {
        "tooltip":"",
        "name":"Tile"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Reflection"
      },
      {
        "tooltip":"",
        "name":"Sun Position"
      },
      {
        "tooltip":"",
        "name":"Shadow"
      }
    ],
    "name":"RM Terrain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      }
    ]
  },
  "Node_MK_Rain":{
    "tooltip":"Generate deterministic rain.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Raindrop width"
      },
      {
        "tooltip":"",
        "name":"Raindrop length"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mk_rain_type)",
            "data":"Rain",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rain"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mk_rain_type)",
            "data":"Snow",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Snow"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_mk_rain_type)",
            "data":"Texture",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Texture"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Snow size"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Track extension"
      },
      {
        "tooltip":"",
        "name":"Size over lifetime"
      },
      {
        "tooltip":"",
        "name":"Limited lifespan"
      },
      {
        "tooltip":"Lifespan of a droplet as a ratio of the entire animation.",
        "name":"Lifespan"
      },
      {
        "tooltip":"",
        "name":"Alpha over lifetime"
      },
      {
        "tooltip":"",
        "name":"Fade alpha"
      }
    ],
    "name":"MK Rain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Sampler":{
    "tooltip":"Sample color from an image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"Size of square around the position to sample and average pixel color.",
        "name":"Sampling size"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ],
    "name":"Sampler",
    "outputs":[
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_Fold_Noise":{
    "tooltip":"Generate cloth fold noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Stretch"
      },
      {
        "tooltip":"",
        "name":"Amplitude"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Greyscale",
          "Map"
        ]
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Fold Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Caustic":{
    "tooltip":"Generate caustic noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Detail"
      }
    ],
    "name":"Caustic",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Scale_Algo":{
    "tooltip":"Scale image using scale2x, scale3x algorithm.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Algorithm",
        "display_data":[
          "Scale2x",
          "Scale3x",
          "CleanEdge"
        ]
      },
      {
        "tooltip":"",
        "name":"Tolerance"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Scale atlas position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      }
    ],
    "name":"Scale Algorithm",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Scale":{
    "tooltip":"Simple node for scaling image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Upscale",
          "Scale to fit"
        ]
      },
      {
        "tooltip":"",
        "name":"Target dimension"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Scale atlas position"
      }
    ],
    "name":"Scale",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_VFX_Override":{
    "tooltip":"Replace particle variable with a new one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Rotations"
      },
      {
        "tooltip":"",
        "name":"Scales"
      },
      {
        "tooltip":"",
        "name":"Blend"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"VFX Override",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_VFX_Renderer_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Output dimension"
      },
      {
        "tooltip":"Round position to the closest integer value to avoid jittering.",
        "name":"Round position"
      },
      {
        "tooltip":"",
        "name":"Render Type",
        "display_data":[
          "Surface",
          "Line"
        ]
      },
      {
        "tooltip":"",
        "name":"Line life"
      }
    ],
    "name":"Renderer",
    "outputs":[
    ]
  },
  "Node_VFX_Renderer":{
    "tooltip":"Render particle objects to surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Output dimension"
      },
      {
        "tooltip":"Round position to the closest integer value to avoid jittering.",
        "name":"Round position"
      },
      {
        "tooltip":"",
        "name":"Render Type",
        "display_data":[
          "Surface",
          "Line"
        ]
      },
      {
        "tooltip":"",
        "name":"Line life"
      }
    ],
    "name":"Renderer",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_VFX_Repel":{
    "tooltip":"Move particle away from point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Repel",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_Cellular":{
    "tooltip":"Generate voronoi pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Point",
          "Edge",
          "Cell",
          "Crystal"
        ]
      },
      {
        "tooltip":"",
        "name":"Contrast"
      },
      {
        "tooltip":"",
        "name":"Pattern",
        "display_data":[
          "Tiled",
          "Uniform",
          "Radial"
        ]
      },
      {
        "tooltip":"",
        "name":"Middle"
      },
      {
        "tooltip":"",
        "name":"Radial scale"
      },
      {
        "tooltip":"",
        "name":"Radial shatter"
      },
      {
        "tooltip":"",
        "name":"Colored"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Cellular Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_VFX_Spawner":{
    "tooltip":"Spawn new particles.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particle sprite"
      },
      {
        "tooltip":"Frames delay between each particle spawn.",
        "name":"Spawn delay"
      },
      {
        "tooltip":"Amount of particle spawn in that frame.",
        "name":"Spawn amount"
      },
      {
        "tooltip":"",
        "name":"Spawn area"
      },
      {
        "tooltip":"",
        "name":"Spawn distribution",
        "display_data":[
          "Area",
          "Border",
          "Map"
        ]
      },
      {
        "tooltip":"",
        "name":"Lifespan"
      },
      {
        "tooltip":"",
        "name":"Spawn direction"
      },
      {
        "tooltip":"",
        "name":"Acceleration"
      },
      {
        "tooltip":"",
        "name":"Orientation"
      },
      {
        "tooltip":"",
        "name":"Rotational speed"
      },
      {
        "tooltip":"",
        "name":"Spawn scale"
      },
      {
        "tooltip":"",
        "name":"Scale over time"
      },
      {
        "tooltip":"",
        "name":"Color over lifetime"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Alpha over time"
      },
      {
        "tooltip":"Make the particle rotates to follow its movement.",
        "name":"Rotate by direction"
      },
      {
        "tooltip":"",
        "name":"Spawn type",
        "display_data":[
          "Stream",
          "Burst",
          "Trigger"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn size"
      },
      {
        "tooltip":"",
        "name":"Spawn velocity"
      },
      {
        "tooltip":"",
        "name":"Gravity"
      },
      {
        "tooltip":"",
        "name":"Direction wiggle"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"Whether to select image from an array in order, at random, or treat array as animation.",
        "name":"Surface array",
        "display_data":[
          "Random",
          "Order",
          "Animation",
          "Scale"
        ]
      },
      {
        "tooltip":"",
        "name":"Animation speed"
      },
      {
        "tooltip":"",
        "name":"Scatter",
        "display_data":[
          "Uniform",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Boundary data"
      },
      {
        "tooltip":"",
        "name":"On animation end",
        "display_data":[
          "Loop",
          "Ping pong",
          "Destroy"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn"
      },
      {
        "tooltip":"",
        "name":"Random blend"
      },
      {
        "tooltip":"Make particle move away from the spawn center.",
        "name":"Directed from center"
      },
      {
        "tooltip":"",
        "name":"Distribution map"
      },
      {
        "tooltip":"",
        "name":"Atlas"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Gravity direction"
      },
      {
        "tooltip":"",
        "name":"Turning"
      },
      {
        "tooltip":"Apply randomized 1, -1 multiplier to the turning speed.",
        "name":"Turn both directions"
      },
      {
        "tooltip":"",
        "name":"Turn scale with speed"
      },
      {
        "tooltip":"",
        "name":"Collide ground"
      },
      {
        "tooltip":"",
        "name":"Ground offset"
      },
      {
        "tooltip":"",
        "name":"Bounce amount"
      },
      {
        "tooltip":"Apply horizontal friction once particle stop bouncing.",
        "name":"Bounce friction"
      },
      {
        "tooltip":"",
        "name":"Position wiggle"
      },
      {
        "tooltip":"",
        "name":"Rotation wiggle"
      },
      {
        "tooltip":"",
        "name":"Scale wiggle"
      },
      {
        "tooltip":"",
        "name":"Spawn"
      },
      {
        "tooltip":"",
        "name":"Follow Path"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Path Deviation"
      },
      {
        "tooltip":"",
        "name":"Reset Seed"
      },
      {
        "tooltip":"",
        "name":"Stretch Animation"
      },
      {
        "tooltip":"",
        "name":"Spawn trigger"
      },
      {
        "tooltip":"How often the 'on step' event is triggered.\nWith 1 being trigger every frame, 2 means triggered once every 2 frames.",
        "name":"Step interval"
      }
    ],
    "name":"Spawner",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"On create"
      },
      {
        "tooltip":"",
        "name":"On step"
      },
      {
        "tooltip":"",
        "name":"On destroy"
      }
    ]
  },
  "Node_Scatter_Points":{
    "tooltip":"Generate array of vector 2 points for scattering.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Point area"
      },
      {
        "tooltip":"",
        "name":"Point distribution",
        "display_data":[
          "Area",
          "Border",
          "Map"
        ]
      },
      {
        "tooltip":"",
        "name":"Scatter",
        "display_data":[
          "Uniform",
          "Random"
        ]
      },
      {
        "tooltip":"Amount of particle spawn in that frame.",
        "name":"Point amount"
      },
      {
        "tooltip":"",
        "name":"Distribution map"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"Fix point position, and only select point in the area.",
        "name":"Fixed position"
      },
      {
        "tooltip":"",
        "name":"Reference dimension"
      },
      {
        "tooltip":"",
        "name":"Reference value"
      },
      {
        "tooltip":"",
        "name":"Output 3D"
      },
      {
        "tooltip":"",
        "name":"Normal",
        "display_data":[
          "X",
          "Y",
          "Z"
        ]
      },
      {
        "tooltip":"",
        "name":"Plane position"
      }
    ],
    "name":"Scatter Points",
    "outputs":[
      {
        "tooltip":"",
        "name":"Points"
      }
    ]
  },
  "Node_Frame":{
    "tooltip":"Create frame surrounding nodes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Label size"
      },
      {
        "tooltip":"",
        "name":"Blend label"
      }
    ],
    "name":"Frame",
    "outputs":[
    ]
  },
  "Node_Checker":{
    "tooltip":"Generate checkerboard pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Color 1"
      },
      {
        "tooltip":"",
        "name":"Color 2"
      },
      {
        "tooltip":"",
        "name":"Amount map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Solid",
          "Smooth",
          "AA"
        ]
      }
    ],
    "name":"Checker",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Chromatic_Aberration":{
    "tooltip":"Apply chromatic aberration effect to the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      }
    ],
    "name":"Chromatic Aberration",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_VFX_Trail":{
    "tooltip":"Generate path from particle movement.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Life"
      },
      {
        "tooltip":"",
        "name":"Color"
      }
    ],
    "name":"VFX Trail",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_VFX_Triangulate":{
    "tooltip":"Render line between particles.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Output dimension"
      },
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Inherit Thickness"
      },
      {
        "tooltip":"",
        "name":"Inherit Color"
      }
    ],
    "name":"VFX Triangulate",
    "outputs":[
      {
        "tooltip":"",
        "name":"Triangles"
      }
    ]
  },
  "Node_VFX_Turbulence":{
    "tooltip":"Move particle in range randomly.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Turbulence scale"
      },
      {
        "tooltip":"",
        "name":"Constant seed"
      }
    ],
    "name":"Turbulence",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_3D_Mesh_Stack_Slice":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Output Dimension"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Slices"
      },
      {
        "tooltip":"",
        "name":"BBOX Padding"
      }
    ],
    "name":"Slice Stack",
    "outputs":[
      {
        "tooltip":"",
        "name":"Outputs"
      }
    ]
  },
  "Node_VFX_Variable":{
    "tooltip":"Extract variable from particle objects.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ],
    "name":"VFX Variable",
    "outputs":[
      {
        "tooltip":"",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Scales"
      },
      {
        "tooltip":"",
        "name":"Rotations"
      },
      {
        "tooltip":"",
        "name":"Blending"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Life"
      },
      {
        "tooltip":"",
        "name":"Max life"
      },
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ]
  },
  "Node_VFX_Vortex":{
    "tooltip":"Rotate particle around a point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Attraction force"
      },
      {
        "tooltip":"",
        "name":"Clockwise"
      },
      {
        "tooltip":"",
        "name":"Destroy when reach middle"
      }
    ],
    "name":"Vortex",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_VFX_Wind":{
    "tooltip":"Move particle in range.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particles"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Effect Vector"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Rotate particle"
      },
      {
        "tooltip":"",
        "name":"Scale particle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Wind",
    "outputs":[
      {
        "tooltip":"",
        "name":"Particles"
      }
    ]
  },
  "Node_Vignette":{
    "tooltip":"Apply vignette effect to the border.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Exposure"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Exponent"
      },
      {
        "tooltip":"",
        "name":"Roundness"
      }
    ],
    "name":"Vignette",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Voronoi_Extra":{
    "tooltip":"Random voronoi noise made with different algorithms.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Block",
          "Triangle"
        ]
      },
      {
        "tooltip":"",
        "name":"Parameter A"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Extra Voronoi",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_MK_Saber":{
    "tooltip":"Generate glowing saber from 2 points.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Point 1"
      },
      {
        "tooltip":"",
        "name":"Point 2"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Trace"
      },
      {
        "tooltip":"",
        "name":"Fix length"
      },
      {
        "tooltip":"",
        "name":"Gradient step"
      },
      {
        "tooltip":"",
        "name":"Glow intensity"
      },
      {
        "tooltip":"",
        "name":"Glow radius"
      },
      {
        "tooltip":"",
        "name":"Trace texture"
      }
    ],
    "name":"MK Saber",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Mesh_Terrain":{
    "tooltip":"Create 3D terrain from height map.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Material"
      },
      {
        "tooltip":"",
        "name":"Input type",
        "display_data":[
          "Surface",
          "Array"
        ]
      },
      {
        "tooltip":"",
        "name":"Height map"
      },
      {
        "tooltip":"",
        "name":"Subdivision"
      },
      {
        "tooltip":"",
        "name":"Height array"
      },
      {
        "tooltip":"",
        "name":"Smooth"
      },
      {
        "tooltip":"",
        "name":"Front Height Level"
      }
    ],
    "name":"3D Terrain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_FXAA":{
    "tooltip":"Apply fast approximate anti-aliasing to te image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Distance"
      },
      {
        "tooltip":"",
        "name":"Mix"
      }
    ],
    "name":"FXAA",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Gabor_Noise":{
    "tooltip":"Generate Gabor noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Sharpness"
      },
      {
        "tooltip":"",
        "name":"Augment"
      },
      {
        "tooltip":"",
        "name":"Phase"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Density map"
      },
      {
        "tooltip":"",
        "name":"Sharpness map"
      },
      {
        "tooltip":"",
        "name":"Phase map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Gabor Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Gamma_Map":{
    "tooltip":"Apply gamma approximation (pow(2.2)) to an image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Invert"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Gamma Map",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_MK_Sparkle":{
    "tooltip":"Generate random star animation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Speed"
      },
      {
        "tooltip":"",
        "name":"Shade"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Scatter"
      },
      {
        "tooltip":"",
        "name":"Colors"
      },
      {
        "tooltip":"",
        "name":"Additive"
      },
      {
        "tooltip":"",
        "name":"Diagonal"
      }
    ],
    "name":"MK Sparkle",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Warp":{
    "tooltip":"Warp image by freely moving the corners.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Top left"
      },
      {
        "tooltip":"",
        "name":"Top right"
      },
      {
        "tooltip":"",
        "name":"Bottom left"
      },
      {
        "tooltip":"",
        "name":"Bottom right"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Use custom dimension"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      }
    ],
    "name":"Warp",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Point_Affector":{
    "tooltip":"Generate array of 3D points interpolating between two values based on the distance.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Points"
      },
      {
        "tooltip":"",
        "name":"Initial value"
      },
      {
        "tooltip":"",
        "name":"Final value"
      },
      {
        "tooltip":"",
        "name":"Falloff distance"
      },
      {
        "tooltip":"",
        "name":"Falloff curve"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_3d_affector_shape)",
            "data":"Sphere",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Sphere"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_3d_affector_shape)",
            "data":"Plane",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Plane"
          }
        ]
      }
    ],
    "name":"Point Affector",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_WAV_File_Read":{
    "tooltip":"Load wav audio file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Sync length"
      },
      {
        "tooltip":"",
        "name":"Mono"
      }
    ],
    "name":"WAV File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Data"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Sample rate"
      },
      {
        "tooltip":"",
        "name":"Channels"
      },
      {
        "tooltip":"",
        "name":"Duration (s)"
      }
    ]
  },
  "Node_Scatter":{
    "tooltip":"Scatter image randomly multiple times.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Distribution",
        "display_data":[
          "Area",
          "Border",
          "Map",
          "Direct Data",
          "Path",
          "Full image + Tile"
        ]
      },
      {
        "tooltip":"Rotate each copy to face the spawn center.",
        "name":"Point at center"
      },
      {
        "tooltip":"",
        "name":"Uniform scaling"
      },
      {
        "tooltip":"",
        "name":"Scatter",
        "display_data":[
          "Uniform",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Random blend"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Distribution map"
      },
      {
        "tooltip":"",
        "name":"Distribution data"
      },
      {
        "tooltip":"What to do when input array of surface.\r\n- Spread: Create Array of output each scattering single surface.\r\n- Mixed: Create single output scattering multiple images.",
        "name":"Array",
        "display_data":[
          "Spread output",
          "Index",
          "Random",
          "Data",
          "Texture"
        ]
      },
      {
        "tooltip":"",
        "name":"Multiply alpha"
      },
      {
        "tooltip":"Apply the third value in each data point (if exist) on given properties.",
        "name":"Use value"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Normal",
          "Add",
          "Max"
        ]
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Rotate along path"
      },
      {
        "tooltip":"",
        "name":"Path Shift"
      },
      {
        "tooltip":"",
        "name":"Scatter Distance"
      },
      {
        "tooltip":"",
        "name":"Sort Y"
      },
      {
        "tooltip":"",
        "name":"Array indices"
      },
      {
        "tooltip":"",
        "name":"Array texture"
      },
      {
        "tooltip":"",
        "name":"Animated array"
      },
      {
        "tooltip":"",
        "name":"Animated array end",
        "display_data":[
          "Loop",
          "Ping Pong"
        ]
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Uniform amount"
      },
      {
        "tooltip":"",
        "name":"Auto amount"
      },
      {
        "tooltip":"",
        "name":"Rotate per radius"
      },
      {
        "tooltip":"",
        "name":"Random position"
      },
      {
        "tooltip":"",
        "name":"Scale per radius"
      },
      {
        "tooltip":"",
        "name":"Angle range"
      },
      {
        "tooltip":"",
        "name":"Shift position"
      },
      {
        "tooltip":"",
        "name":"Exact"
      },
      {
        "tooltip":"",
        "name":"Spacing",
        "display_data":[
          "After",
          "Between",
          "Around"
        ]
      }
    ],
    "name":"Scatter",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas data"
      }
    ]
  },
  "Node_Glow":{
    "tooltip":"Apply glow to the border of the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Border"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Greyscale",
          "Alpha"
        ]
      },
      {
        "tooltip":"",
        "name":"Draw original"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "Outer",
          "Inner"
        ]
      }
    ],
    "name":"Glow",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Gradient_Extract":{
    "tooltip":"Get palatte and array of key positions from gradient.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      }
    ],
    "name":"Gradient Data",
    "outputs":[
      {
        "tooltip":"",
        "name":"Colors"
      },
      {
        "tooltip":"",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Type"
      }
    ]
  },
  "Node_Gradient_Out":{
    "tooltip":"Create gradient object",
    "inputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"Position to sample a color from the gradient.",
        "name":"Sample"
      }
    ],
    "name":"Gradient",
    "outputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_WAV_File_Write":{
    "tooltip":"Save wav audio file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Audio Data"
      },
      {
        "tooltip":"",
        "name":"Sample"
      },
      {
        "tooltip":"",
        "name":"Bit Depth",
        "display_data":[
          "8 bit positive",
          "16 bit integer"
        ]
      },
      {
        "tooltip":"",
        "name":"Remap Data"
      },
      {
        "tooltip":"",
        "name":"Data Range"
      }
    ],
    "name":"WAV File Out",
    "outputs":[
    ]
  },
  "Node_Gradient_Palette":{
    "tooltip":"Create gradient from palette.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Palette"
      },
      {
        "tooltip":"",
        "name":"Custom positions"
      },
      {
        "tooltip":"Array of number indicating color position (0 - 1).",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Interpolation",
        "display_data":[
          "None",
          "RGB",
          "HSV",
          "OKLAB",
          "sRGB"
        ]
      }
    ],
    "name":"Palette to Gradient",
    "outputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      }
    ]
  },
  "Node_SDF":{
    "tooltip":"Create signed distance field using jump flooding algorithm.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "Inside",
          "Outside",
          "Both"
        ]
      },
      {
        "tooltip":"",
        "name":"Max distance"
      }
    ],
    "name":"SDF",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Repeat":{
    "tooltip":"Repeat the same 3D mesh multiple times.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Objects"
      },
      {
        "tooltip":"",
        "name":"Object Mode",
        "display_data":[
          "Duplicate",
          "Array"
        ]
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Starting Position"
      },
      {
        "tooltip":"",
        "name":"Starting Rotation"
      },
      {
        "tooltip":"",
        "name":"Starting Scale"
      },
      {
        "tooltip":"",
        "name":"Shift Position"
      },
      {
        "tooltip":"",
        "name":"Shift Rotation"
      },
      {
        "tooltip":"",
        "name":"Shift Scale"
      },
      {
        "tooltip":"",
        "name":"Positions"
      },
      {
        "tooltip":"",
        "name":"Rotations"
      },
      {
        "tooltip":"",
        "name":"Scales"
      },
      {
        "tooltip":"",
        "name":"Use Instance"
      }
    ],
    "name":"3D Repeat",
    "outputs":[
      {
        "tooltip":"",
        "name":"Scene"
      }
    ]
  },
  "Node_3D_Round_Vertex":{
    "tooltip":"Round out vertex position to a specified step.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Step"
      }
    ],
    "name":"Discretize vertex",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Wavelet_Noise":{
    "tooltip":"Generate wavelet noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Detail"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Progress map"
      },
      {
        "tooltip":"",
        "name":"Detail map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Wavelet Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Scene":{
    "tooltip":"Combine multiple 3D objects into a single junction.",
    "inputs":[
    ],
    "name":"3D Scene",
    "outputs":[
      {
        "tooltip":"",
        "name":"Scene"
      }
    ]
  },
  "Node_3D_Set_Material":{
    "tooltip":"Replace mesh material with a new one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Materials"
      },
      {
        "tooltip":"",
        "name":"Single material"
      }
    ],
    "name":"Set Material",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Segment_Filter":{
    "tooltip":"Filter segment (vec2 array) based on a conditions.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Segments"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Spread"
      },
      {
        "tooltip":"",
        "name":"Both side"
      }
    ],
    "name":"Filter Segments",
    "outputs":[
      {
        "tooltip":"",
        "name":"Segments"
      }
    ]
  },
  "Node_MK_Tile":{
    "tooltip":"Generate game engines-ready tileset.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Background texture"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "GMS Corner (18 sprites)",
          "GMS Corner + Side (55 sprites)",
          "Godot Blob (48 sprites)"
        ]
      },
      {
        "tooltip":"",
        "name":"Output type",
        "display_data":[
          "Sheet",
          "Array"
        ]
      },
      {
        "tooltip":"",
        "name":"Crop"
      },
      {
        "tooltip":"",
        "name":"Edge type",
        "display_data":[
          "Uniform",
          "Individual"
        ]
      },
      {
        "tooltip":"",
        "name":"Edge"
      },
      {
        "tooltip":"",
        "name":"Edge bottom"
      },
      {
        "tooltip":"",
        "name":"Edge left"
      },
      {
        "tooltip":"",
        "name":"Edge right"
      },
      {
        "tooltip":"",
        "name":"Edge shift"
      },
      {
        "tooltip":"",
        "name":"Full edge"
      },
      {
        "tooltip":"",
        "name":"Edge sprite",
        "display_data":[
          "Single",
          "Side + Center",
          "Side + Center + Side"
        ]
      },
      {
        "tooltip":"",
        "name":"Edge transform",
        "display_data":[
          "Flip",
          "Rotate"
        ]
      },
      {
        "tooltip":"",
        "name":"Sort array by bit"
      }
    ],
    "name":"MK Tile",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_3D_Transform_Image":{
    "tooltip":"Transform image in 3D space",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Transform 3D",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Rendered"
      }
    ]
  },
  "Node_3D_Transform_Scene":{
    "tooltip":"Transform 3D scene, accepts array of transformations for each objects.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Scene"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Positioning type",
        "display_data":[
          "Additive",
          "Override"
        ]
      },
      {
        "tooltip":"",
        "name":"Rotating type",
        "display_data":[
          "Additive",
          "Override"
        ]
      },
      {
        "tooltip":"",
        "name":"Scaling type",
        "display_data":[
          "Additive",
          "Multiplicative",
          "Override"
        ]
      }
    ],
    "name":"Transform Scene",
    "outputs":[
      {
        "tooltip":"",
        "name":"Scene"
      }
    ]
  },
  "Node_Monitor_Capture":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Monitor",
          "Region"
        ]
      },
      {
        "tooltip":"",
        "name":"Monitor",
        "display_data":[
          "\\\\.\\DISPLAY1",
          "\\\\.\\DISPLAY5",
          "\\\\.\\DISPLAY2"
        ]
      },
      {
        "tooltip":"",
        "name":"Region"
      }
    ],
    "name":"Monitor Capture",
    "outputs":[
      {
        "tooltip":"",
        "name":"GUI"
      }
    ]
  },
  "Node_3D_Transform":{
    "tooltip":"Transform 3D object.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ],
    "name":"Transform",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Websocket_Receiver":{
    "tooltip":"Create websocket server to receive data from the network.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Port"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Client",
          "Server"
        ]
      },
      {
        "tooltip":"",
        "name":"Url"
      }
    ],
    "name":"Websocket Receiver",
    "outputs":[
      {
        "tooltip":"",
        "name":"Data"
      },
      {
        "tooltip":"",
        "name":"Receive data"
      }
    ]
  },
  "Node_Morph_Surface":{
    "tooltip":"Morph pixel between two surfaces.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface from"
      },
      {
        "tooltip":"",
        "name":"Surface to"
      },
      {
        "tooltip":"",
        "name":"Morph amount"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      }
    ],
    "name":"Morph Surface",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Seperate_Shape":{
    "tooltip":"Separate disconnected pixel each into an image in an image array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Tolerance"
      },
      {
        "tooltip":"",
        "name":"Override color"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"Skip empty and black shape.",
        "name":"Ignore blank"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Greyscale",
          "Alpha"
        ]
      }
    ],
    "name":"Separate Shape",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas"
      }
    ]
  },
  "Node_Move_Point":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Point"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "XY Shift",
          "Direction + Distance"
        ]
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Distance"
      }
    ],
    "name":"Translate Point",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Noise_Aniso":{
    "tooltip":"Generate anisotropic noise.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"X Amount"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Y Amount"
      },
      {
        "tooltip":"",
        "name":"X Amount map"
      },
      {
        "tooltip":"",
        "name":"Y Amount map"
      },
      {
        "tooltip":"",
        "name":"Rotation map"
      },
      {
        "tooltip":"",
        "name":"Render mode",
        "display_data":[
          "Blend",
          "Waterfall"
        ]
      }
    ],
    "name":"Anisotropic Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Gradient_Points":{
    "tooltip":"Create image from 4 color points.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Center 1"
      },
      {
        "tooltip":"",
        "name":"Color 1"
      },
      {
        "tooltip":"",
        "name":"Center 2"
      },
      {
        "tooltip":"",
        "name":"Color 2"
      },
      {
        "tooltip":"",
        "name":"Center 3"
      },
      {
        "tooltip":"",
        "name":"Color 3"
      },
      {
        "tooltip":"",
        "name":"Center 4"
      },
      {
        "tooltip":"",
        "name":"Color 4"
      },
      {
        "tooltip":"",
        "name":"Use palette"
      },
      {
        "tooltip":"",
        "name":"Palette"
      },
      {
        "tooltip":"",
        "name":"Falloff 1"
      },
      {
        "tooltip":"",
        "name":"Falloff 2"
      },
      {
        "tooltip":"",
        "name":"Falloff 3"
      },
      {
        "tooltip":"",
        "name":"Falloff 4"
      },
      {
        "tooltip":"",
        "name":"Normalize weight"
      }
    ],
    "name":"Draw 4 Points Gradient",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Noise_Bubble":{
    "tooltip":"Generate bubble noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Line",
          "Fill"
        ]
      },
      {
        "tooltip":"",
        "name":"Opacity"
      },
      {
        "tooltip":"",
        "name":"Blending",
        "display_data":[
          "Max",
          "Add"
        ]
      }
    ],
    "name":"Bubble Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Sequence_Anim":{
    "tooltip":"Convert array of images into animation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Speed"
      },
      {
        "tooltip":"",
        "name":"Sequence"
      },
      {
        "tooltip":"",
        "name":"Overflow",
        "display_data":[
          "Hold",
          "Loop",
          "Ping Pong",
          "Empty"
        ]
      }
    ],
    "name":"Array to Anim",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Noise_Cristal":{
    "tooltip":"Generate Cristal noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Gamma"
      },
      {
        "tooltip":"",
        "name":"Phase"
      }
    ],
    "name":"Cristal Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Gradient_Replace_Color":{
    "tooltip":"Replace color inside a gradient.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Color from"
      },
      {
        "tooltip":"",
        "name":"Color to"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      }
    ],
    "name":"Gradient Replace",
    "outputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      }
    ]
  },
  "Node_3D_UV_Remap":{
    "tooltip":"Remap UV map using plane.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Target subobject"
      },
      {
        "tooltip":"",
        "name":"Bake UV"
      }
    ],
    "name":"UV Remap",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Gradient_Shift":{
    "tooltip":"Move gradients keys.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Wrap"
      },
      {
        "tooltip":"",
        "name":"Scale"
      }
    ],
    "name":"Gradient Shift",
    "outputs":[
      {
        "tooltip":"",
        "name":"Gradient"
      }
    ]
  },
  "Node_Websocket_Sender":{
    "tooltip":"Create websocket server to send data to the network.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Port"
      },
      {
        "tooltip":"",
        "name":"Data type",
        "display_data":[
          "Struct",
          "Surface",
          "File",
          "Buffer"
        ]
      },
      {
        "tooltip":"",
        "name":"Struct"
      },
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Target"
      },
      {
        "tooltip":"",
        "name":"Buffer"
      }
    ],
    "name":"Websocket Sender",
    "outputs":[
    ]
  },
  "Node_Widget_Test":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"textBox"
      },
      {
        "tooltip":"",
        "name":"rangeBox"
      },
      {
        "tooltip":"",
        "name":"vectorBox"
      },
      {
        "tooltip":"",
        "name":"vectorRangeBox"
      },
      {
        "tooltip":"",
        "name":"rotator"
      },
      {
        "tooltip":"",
        "name":"rotatorRange"
      },
      {
        "tooltip":"",
        "name":"rotatorRandom"
      },
      {
        "tooltip":"",
        "name":"slider"
      },
      {
        "tooltip":"",
        "name":"sliderRange"
      },
      {
        "tooltip":"",
        "name":"areaBox"
      },
      {
        "tooltip":"",
        "name":"paddingBox"
      },
      {
        "tooltip":"",
        "name":"cornerBox"
      },
      {
        "tooltip":"",
        "name":"controlPointBox"
      },
      {
        "tooltip":"",
        "name":"scrollBox",
        "display_data":[
          "Choice 1",
          "Choice 2"
        ]
      },
      {
        "tooltip":"",
        "name":"buttonGroup",
        "display_data":[
          "Choice 1",
          "Choice 2"
        ]
      },
      {
        "tooltip":"",
        "name":"matrixGrid"
      },
      {
        "tooltip":"",
        "name":"transformBox"
      },
      {
        "tooltip":"",
        "name":"transformBox"
      },
      {
        "tooltip":"",
        "name":"quarternionBox"
      },
      {
        "tooltip":"",
        "name":"checkBox"
      },
      {
        "tooltip":"",
        "name":"buttonColor"
      },
      {
        "tooltip":"",
        "name":"buttonPalette"
      },
      {
        "tooltip":"",
        "name":"buttonGradient"
      },
      {
        "tooltip":"",
        "name":"pathArrayBox"
      },
      {
        "tooltip":"",
        "name":"pathLoad"
      },
      {
        "tooltip":"",
        "name":"pathSave"
      },
      {
        "tooltip":"",
        "name":"fontScrollBox"
      },
      {
        "tooltip":"",
        "name":"curveBox"
      },
      {
        "tooltip":"",
        "name":"textArea"
      },
      {
        "tooltip":"",
        "name":"textBox"
      },
      {
        "tooltip":"",
        "name":"textArea"
      },
      {
        "tooltip":"",
        "name":"textArea"
      },
      {
        "tooltip":"",
        "name":"textArrayBox"
      },
      {
        "tooltip":"",
        "name":"surfaceBox"
      }
    ],
    "name":"Widget Test",
    "outputs":[
    ]
  },
  "Node_Noise_Hex":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Texture sample"
      },
      {
        "tooltip":"",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      }
    ],
    "name":"Hexagonal Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Gradient":{
    "tooltip":"Create image from gradient.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_gradient_type)",
            "data":"Linear",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Linear"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_gradient_type)",
            "data":"Circular",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Circular"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_gradient_type)",
            "data":"Radial",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Radial"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Loop",
        "display_data":[
          "None",
          "Loop",
          "Pingpong"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Radius map"
      },
      {
        "tooltip":"",
        "name":"Shift map"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Uniform ratio"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      }
    ],
    "name":"Draw Gradient",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Wrap_Area":{
    "tooltip":"Wrap image to fit area value (x, y, w, h).",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Area Warp",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Noise_Simplex":{
    "tooltip":"Generate simplex noise, similiar to perlin noise with better fidelity but non-tilable.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Color mode",
        "display_data":[
          "Greyscale",
          "RGB",
          "HSV"
        ]
      },
      {
        "tooltip":"",
        "name":"Color R range"
      },
      {
        "tooltip":"",
        "name":"Color G range"
      },
      {
        "tooltip":"",
        "name":"Color B range"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Iteration map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Simplex Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Shadow_Cast":{
    "tooltip":"Apply light that create shadow using shadow mask.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Solid"
      },
      {
        "tooltip":"",
        "name":"Light Position"
      },
      {
        "tooltip":"",
        "name":"Soft light radius"
      },
      {
        "tooltip":"",
        "name":"Light density"
      },
      {
        "tooltip":"",
        "name":"Light type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shadow_type)",
            "data":"Point",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Point"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shadow_type)",
            "data":"Sun",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Sun"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Ambient color"
      },
      {
        "tooltip":"",
        "name":"Light color"
      },
      {
        "tooltip":"",
        "name":"Light radius"
      },
      {
        "tooltip":"",
        "name":"Render solid"
      },
      {
        "tooltip":"If checked, background color will be used as shadow caster.",
        "name":"Use BG color"
      },
      {
        "tooltip":"",
        "name":"BG threshold"
      },
      {
        "tooltip":"",
        "name":"Light intensity"
      },
      {
        "tooltip":"",
        "name":"Banding"
      },
      {
        "tooltip":"Control how light fade out over distance.",
        "name":"Attenuation",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Quadratic",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Quadratic"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Invert quadratic",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Invert quadratic"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Linear",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Linear"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Ambient occlusion"
      },
      {
        "tooltip":"",
        "name":"Ambient occlusion strength"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Cast Shadow",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Light mask"
      }
    ]
  },
  "Node_Grain":{
    "tooltip":"Add noise pattern to the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Brightness map"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Red map"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Green map"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Blue map"
      },
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Hue map"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Saturation map"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Value map"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Additive",
          "Multiply",
          "Screen",
          "Overlay"
        ]
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Additive",
          "Multiply",
          "Screen"
        ]
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Additive",
          "Multiply",
          "Screen"
        ]
      }
    ],
    "name":"Grain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Noise_Strand":{
    "tooltip":"Generate random srtands noise.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Slope"
      },
      {
        "tooltip":"",
        "name":"Curve"
      },
      {
        "tooltip":"",
        "name":"Curve scale"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Curve shift"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "x",
          "y"
        ]
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Line",
          "Area"
        ]
      },
      {
        "tooltip":"",
        "name":"Opacity"
      }
    ],
    "name":"Strand Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Noise_Tri":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Texture sample"
      },
      {
        "tooltip":"",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      }
    ],
    "name":"Triangular Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_9Slice":{
    "tooltip":"Cut image into 3x3 parts, and scale\/repeat only the middle part.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Splice"
      },
      {
        "tooltip":"",
        "name":"Filling modes",
        "display_data":[
          "Scale",
          "Repeat"
        ]
      }
    ],
    "name":"Nine Slice",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Noise":{
    "tooltip":"Generate white noise.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Color mode",
        "display_data":[
          "Greyscale",
          "RGB",
          "HSV"
        ]
      },
      {
        "tooltip":"",
        "name":"Color R range"
      },
      {
        "tooltip":"",
        "name":"Color G range"
      },
      {
        "tooltip":"",
        "name":"Color B range"
      }
    ],
    "name":"Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Graph_Preview":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Sticky"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ],
    "name":"Graph Preview",
    "outputs":[
    ]
  },
  "Node_Grey_Alpha":{
    "tooltip":"Convert greyscale to alpha value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Replace output with solid color.",
        "name":"Replace color"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Grey to Alpha",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Shadow":{
    "tooltip":"Apply shadow behind the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Grow"
      },
      {
        "tooltip":"",
        "name":"Blur"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Positioning",
        "display_data":[
          "Shift",
          "Light"
        ]
      },
      {
        "tooltip":"",
        "name":"Light Position"
      }
    ],
    "name":"Shadow",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Shape_Map":{
    "tooltip":"Map image into shapes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_misc)",
            "data":"Polygon",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Polygon"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Map Scale"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Sides"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      }
    ],
    "name":"Shape Map",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Greyscale":{
    "tooltip":"Convert color image to greyscale.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Contrast"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Brightness map"
      },
      {
        "tooltip":"",
        "name":"Contrast map"
      }
    ],
    "name":"Greyscale",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Normal_Light":{
    "tooltip":"Light up the image using normal mapping.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Normal map"
      },
      {
        "tooltip":"",
        "name":"Normal intensity"
      },
      {
        "tooltip":"",
        "name":"Ambient"
      },
      {
        "tooltip":"",
        "name":"Light position"
      },
      {
        "tooltip":"",
        "name":"Light range"
      },
      {
        "tooltip":"",
        "name":"Light intensity"
      },
      {
        "tooltip":"",
        "name":"Light color"
      },
      {
        "tooltip":"",
        "name":"Light type",
        "display_data":[
          "Point",
          "Sun"
        ]
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Light height"
      }
    ],
    "name":"Normal Light",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_XML_File_Read":{
    "tooltip":"Load xml file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ],
    "name":"XML File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Content"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Normal":{
    "tooltip":"Create normal map using greyscale value as height.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Height"
      },
      {
        "tooltip":"Include diagonal pixel in normal calculation, which leads to smoother output.",
        "name":"Smooth"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Normal",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_XML_File_Write":{
    "tooltip":"Write struct to xml file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Struct"
      }
    ],
    "name":"XML File Out",
    "outputs":[
    ]
  },
  "Node_Grid_Hex":{
    "tooltip":"Generate hexagonal grid pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Height map",
          "Texture grid",
          "Texture sample"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Truchet"
      },
      {
        "tooltip":"",
        "name":"Truchet seed"
      },
      {
        "tooltip":"",
        "name":"Truchet threshold"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Texture angle"
      },
      {
        "tooltip":"",
        "name":"Level"
      },
      {
        "tooltip":"",
        "name":"Use Texture Dimension"
      }
    ],
    "name":"Hexagonal Grid",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Zigzag":{
    "tooltip":"Generate zigzag pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Color 1"
      },
      {
        "tooltip":"",
        "name":"Color 2"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Solid",
          "Smooth",
          "AA"
        ]
      },
      {
        "tooltip":"",
        "name":"Amount map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Angle"
      }
    ],
    "name":"Zigzag",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Grid_Noise":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Texture sample"
      },
      {
        "tooltip":"",
        "name":"Shift axis",
        "display_data":[
          "x",
          "y"
        ]
      },
      {
        "tooltip":"",
        "name":"Color mode",
        "display_data":[
          "Greyscale",
          "RGB",
          "HSV"
        ]
      },
      {
        "tooltip":"",
        "name":"Color R range"
      },
      {
        "tooltip":"",
        "name":"Color G range"
      },
      {
        "tooltip":"",
        "name":"Color B range"
      }
    ],
    "name":"Grid Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Normalize":{
    "tooltip":"Normalize image ranges (brightness, RGB channels) in to [0, 1] range.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "BW",
          "RGB"
        ]
      }
    ],
    "name":"Normalize",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Shape_Polygon":{
    "tooltip":"Draw polygonal shapes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Background color"
      },
      {
        "tooltip":"",
        "name":"Shape color"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Ellipse",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Ellipse"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Star",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Star"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Capsule",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Capsule"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Ring",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Ring"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Arc",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Arc"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Gear",
            "spr_ind":6.0,
            "spr_blend":9404030.0,
            "name":"Gear"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_poly_type)",
            "data":"Cross",
            "spr_ind":7.0,
            "spr_blend":9404030.0,
            "name":"Cross"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Sides"
      },
      {
        "tooltip":"",
        "name":"Inner radius"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Teeth"
      },
      {
        "tooltip":"",
        "name":"Teeth height"
      },
      {
        "tooltip":"",
        "name":"Teeth taper"
      },
      {
        "tooltip":"",
        "name":"Angle range"
      },
      {
        "tooltip":"",
        "name":"Round cap"
      },
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ],
    "name":"Draw Shape Polygon",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Grid_Pentagonal":{
    "tooltip":"Generate Pentagonal grid pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Height map",
          "Texture grid"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Level"
      },
      {
        "tooltip":"",
        "name":"Use Texture Dimension"
      }
    ],
    "name":"Pentagonal Grid",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Grid_Tri":{
    "tooltip":"Generate triangular grid pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Height map",
          "Texture grid",
          "Texture sample"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Truchet"
      },
      {
        "tooltip":"",
        "name":"Truchet seed"
      },
      {
        "tooltip":"",
        "name":"Truchet threshold"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Texture angle"
      },
      {
        "tooltip":"",
        "name":"Level"
      },
      {
        "tooltip":"",
        "name":"Use Texture Dimension"
      }
    ],
    "name":"Triangular Grid",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Grid":{
    "tooltip":"Generate grid pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Grid Size"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Shift axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Colored tile (Accurate)",
          "Height map",
          "Texture grid",
          "Texture sample"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Shift map"
      },
      {
        "tooltip":"",
        "name":"Truchet"
      },
      {
        "tooltip":"",
        "name":"Truchet seed"
      },
      {
        "tooltip":"",
        "name":"Flip horizontal"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Flip vertical"
      },
      {
        "tooltip":"",
        "name":"Texture angle"
      },
      {
        "tooltip":"",
        "name":"Level"
      },
      {
        "tooltip":"",
        "name":"Use Texture Dimension"
      },
      {
        "tooltip":"",
        "name":"Gap Width"
      },
      {
        "tooltip":"",
        "name":"Diagonal"
      },
      {
        "tooltip":"",
        "name":"Uniform height"
      }
    ],
    "name":"Grid",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Color_adjust":{
    "tooltip":"Adjust brightness, contrast, hue, saturation, value, alpha, and blend image with color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Contrast"
      },
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Blend"
      },
      {
        "tooltip":"",
        "name":"Blend amount"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Exposure"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Input Type",
        "display_data":[
          "Surface",
          "Color"
        ]
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Normal",
          "Add",
          "Subtract",
          "Multiply",
          "Screen",
          "Overlay",
          "Hue",
          "Saturation",
          "Luminosity",
          "Maximum",
          "Minimum",
          "Replace",
          "Difference"
        ]
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Brightness map"
      },
      {
        "tooltip":"",
        "name":"Contrast map"
      },
      {
        "tooltip":"",
        "name":"Hue map"
      },
      {
        "tooltip":"",
        "name":"Saturation map"
      },
      {
        "tooltip":"",
        "name":"Value map"
      },
      {
        "tooltip":"",
        "name":"Blend map"
      },
      {
        "tooltip":"",
        "name":"Alpha map"
      },
      {
        "tooltip":"",
        "name":"Exposure map"
      }
    ],
    "name":"Color Adjust",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Color out"
      }
    ]
  },
  "Node_Color_Data":{
    "tooltip":"Get data (rgb, hsv, brightness) from color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Normalize"
      }
    ],
    "name":"Color Data",
    "outputs":[
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ]
  },
  "Node_Shape":{
    "tooltip":"Draw simple shapes using signed distance field.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Diamond",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Diamond"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Trapezoid",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Trapezoid"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Parallelogram",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Parallelogram"
          },
          -1.0,
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Ellipse",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Ellipse"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Arc",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Arc"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Donut",
            "spr_ind":6.0,
            "spr_blend":9404030.0,
            "name":"Donut"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Crescent",
            "spr_ind":7.0,
            "spr_blend":9404030.0,
            "name":"Crescent"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Disk Segment",
            "spr_ind":8.0,
            "spr_blend":9404030.0,
            "name":"Disk Segment"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Pie",
            "spr_ind":9.0,
            "spr_blend":9404030.0,
            "name":"Pie"
          },
          -1.0,
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Regular polygon",
            "spr_ind":10.0,
            "spr_blend":9404030.0,
            "name":"Regular polygon"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Star",
            "spr_ind":11.0,
            "spr_blend":9404030.0,
            "name":"Star"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Cross",
            "spr_ind":12.0,
            "spr_blend":9404030.0,
            "name":"Cross"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Rounded Cross",
            "spr_ind":13.0,
            "spr_blend":9404030.0,
            "name":"Rounded Cross"
          },
          -1.0,
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Teardrop",
            "spr_ind":14.0,
            "spr_blend":9404030.0,
            "name":"Teardrop"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Leaf",
            "spr_ind":15.0,
            "spr_blend":9404030.0,
            "name":"Leaf"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Heart",
            "spr_ind":16.0,
            "spr_blend":9404030.0,
            "name":"Heart"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Arrow",
            "spr_ind":17.0,
            "spr_blend":9404030.0,
            "name":"Arrow"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_type)",
            "data":"Gear",
            "spr_ind":18.0,
            "spr_blend":9404030.0,
            "name":"Gear"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Sides"
      },
      {
        "tooltip":"",
        "name":"Inner radius"
      },
      {
        "tooltip":"",
        "name":"Anti-aliasing"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Angle range"
      },
      {
        "tooltip":"",
        "name":"Corner radius"
      },
      {
        "tooltip":"",
        "name":"Shape color"
      },
      {
        "tooltip":"",
        "name":"Background color"
      },
      {
        "tooltip":"",
        "name":"Height"
      },
      {
        "tooltip":"",
        "name":"Start radius"
      },
      {
        "tooltip":"",
        "name":"Shape path"
      },
      {
        "tooltip":"",
        "name":"Positioning Mode",
        "display_data":[
          "Area",
          "Center + Scale",
          "Full Image"
        ]
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Half Size"
      },
      {
        "tooltip":"",
        "name":"Tile"
      },
      {
        "tooltip":"",
        "name":"Shape rotation"
      },
      {
        "tooltip":"",
        "name":"Level"
      },
      {
        "tooltip":"",
        "name":"Angles"
      },
      {
        "tooltip":"",
        "name":"Skew"
      },
      {
        "tooltip":"",
        "name":"Arrow Sizes"
      },
      {
        "tooltip":"",
        "name":"Arrow Head"
      },
      {
        "tooltip":"",
        "name":"Teeth Amount"
      },
      {
        "tooltip":"",
        "name":"Teeth Size"
      },
      {
        "tooltip":"",
        "name":"Teeth Rotation"
      }
    ],
    "name":"Draw Shape",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Color_HSV":{
    "tooltip":"Create color from HSV value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Normalized"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ],
    "name":"HSV Color",
    "outputs":[
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_Color_Mix":{
    "tooltip":"Combine two colors.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Color from"
      },
      {
        "tooltip":"",
        "name":"Color to"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Color space",
        "display_data":[
          "RGB",
          "HSV",
          "OKLAB"
        ]
      }
    ],
    "name":"Mix Color",
    "outputs":[
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_Shard_Noise":{
    "tooltip":"Generate glass shard-looking noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Sharpness"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Sharpness map"
      },
      {
        "tooltip":"",
        "name":"Progress map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Shard Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Active_Canvas":{
    "tooltip":"Draw using parameterized brush.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Distance"
      }
    ],
    "name":"Active Canvas",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Color_Remove":{
    "tooltip":"Remove color that match a palette.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Colors"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"Keep the selected colors and remove the rest.",
        "name":"Invert"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Threshold map"
      }
    ],
    "name":"Remove Color",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Number":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Integer"
      },
      {
        "tooltip":"",
        "name":"Display",
        "display_data":[
          "Number",
          "Slider",
          "Rotator"
        ]
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"",
        "name":"Clamp to range"
      }
    ],
    "name":"Number",
    "outputs":[
      {
        "tooltip":"",
        "name":"Number"
      }
    ]
  },
  "Node_Shell":{
    "tooltip":"Execute shell script.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Script"
      }
    ],
    "name":"Execute Shell",
    "outputs":[
    ]
  },
  "Node_Offset":{
    "tooltip":"Shift image with tiling.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"X Offset"
      },
      {
        "tooltip":"",
        "name":"Y Offset"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Offset",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Onion_Skin":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Color pre"
      },
      {
        "tooltip":"",
        "name":"Color post"
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"Render current frame on top of all frames.",
        "name":"On top"
      }
    ],
    "name":"Onion Skin",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Skew":{
    "tooltip":"Skew image horizontally, or vertically.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "x",
          "y"
        ]
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Wrap"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      }
    ],
    "name":"Skew",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Color_replace":{
    "tooltip":"Match image to a palette then remap it to another palette.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Color to be replaced.",
        "name":"Palette from"
      },
      {
        "tooltip":"Palette to be replaced to.",
        "name":"Palette to"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"Set pixel that doesn't match any color in 'palette from' to black.",
        "name":"Set others to black"
      },
      {
        "tooltip":"",
        "name":"Multiply alpha"
      },
      {
        "tooltip":"Completely override pixel with new color instead of blending between it.",
        "name":"Hard replace"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Closet",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Replace Palette",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Group_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display type",
        "display_data":0.0
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Input type",
        "display_data":[
          "Integer",
          "Float",
          "Boolean",
          "Color",
          "Surface",
          "File Path",
          "Curve",
          "Text",
          "Object",
          "Node",
          -1.0,
          "Any",
          "Path",
          "Particle",
          "Rigidbody Object",
          "Domain",
          "Struct",
          "Strands",
          "Mesh",
          "Trigger",
          -1.0,
          "3D Mesh",
          "3D Light",
          "3D Camera",
          "3D Scene",
          "3D Material",
          -1.0,
          "PCX",
          "Audio",
          "Fluid Domain",
          "SDF"
        ]
      },
      {
        "tooltip":"",
        "name":"Enum label"
      },
      {
        "tooltip":"",
        "name":"Vector size",
        "display_data":[
          "2",
          "3",
          "4"
        ]
      },
      {
        "tooltip":"",
        "name":"Order"
      },
      {
        "tooltip":"",
        "name":"Display preview gizmo"
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"",
        "name":"Button Label"
      },
      {
        "tooltip":"",
        "name":"Visible Condition",
        "display_data":[
          "Show",
          "Hide",
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Equal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Not equal",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Not equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater ",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Greater "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater or equal",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Greater or equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Lesser"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser or equal",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Lesser or equal"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Visible Check"
      },
      {
        "tooltip":"",
        "name":"Visible Check To"
      }
    ],
    "name":"Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ]
  },
  "Node_Outline":{
    "tooltip":"Add border to the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"Blend outline color with the original color.",
        "name":"Blend"
      },
      {
        "tooltip":"",
        "name":"Blend alpha"
      },
      {
        "tooltip":"",
        "name":"Position",
        "display_data":[
          "Inside",
          "Outside"
        ]
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"Shift outline inside, outside the shape.",
        "name":"Start"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Crop border"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Width map"
      },
      {
        "tooltip":"",
        "name":"Blend alpha map"
      },
      {
        "tooltip":"",
        "name":"Start map"
      }
    ],
    "name":"Outline",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Outline"
      }
    ]
  },
  "Node_Override_Channel":{
    "tooltip":"Replace RGBA value of one surface with another.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Sampling type",
        "display_data":[
          "Brightness",
          "Channel value"
        ]
      }
    ],
    "name":"Override Channel",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Slideshow":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Order"
      },
      {
        "tooltip":"",
        "name":"Title"
      },
      {
        "tooltip":"",
        "name":"Anchor",
        "display_data":[
          "Center",
          "Top left"
        ]
      },
      {
        "tooltip":"",
        "name":"Arrival Speed"
      }
    ],
    "name":"Slideshow",
    "outputs":[
    ]
  },
  "Node_Color_RGB":{
    "tooltip":"Create color from RGB value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Normalized"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ],
    "name":"RGB Color",
    "outputs":[
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_Group_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ],
    "name":"Output",
    "outputs":[
    ]
  },
  "Node_Color":{
    "tooltip":"Create color value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Color"
      }
    ],
    "name":"Color",
    "outputs":[
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_Group_Thumbnail":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Input"
      }
    ],
    "name":"Thumbnail",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Alpha_Cutoff":{
    "tooltip":"Remove pixel with low alpha value.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Any pixel with less alpha (more transparent) than this will be removed.",
        "name":"Minimum"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Alpha Cutoff",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Smear":{
    "tooltip":"Stretch out brighter pixel in one direction.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Direction map"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Greyscale",
          "Alpha"
        ]
      },
      {
        "tooltip":"",
        "name":"Modulate strength",
        "display_data":[
          "Distance",
          "Color",
          "None"
        ]
      },
      {
        "tooltip":"",
        "name":"Spread"
      },
      {
        "tooltip":"",
        "name":"Invert"
      }
    ],
    "name":"Smear",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Alpha_Grey":{
    "tooltip":"Convert alpha value into solid greyscale.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Alpha to Grey",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Group":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Group",
    "outputs":[
    ]
  },
  "Node_Colorize":{
    "tooltip":"Map brightness of a pixel to a color from a gradient.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Gradient shift"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Multiply alpha"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Gradient shift map"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      }
    ],
    "name":"Colorize",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Smoke_Add_Collider":{
    "tooltip":"Add solid object that smoke can collides to.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Collider"
      },
      {
        "tooltip":"",
        "name":"Area"
      }
    ],
    "name":"Add Collider",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Pack_Sprites":{
    "tooltip":"Combine array of images with different dimension using different algorithms.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Sprites"
      },
      {
        "tooltip":"",
        "name":"Algorithm",
        "display_data":[
          "Skyline",
          "Shelf",
          "Top left",
          "Best fit"
        ]
      },
      {
        "tooltip":"",
        "name":"Max width"
      },
      {
        "tooltip":"",
        "name":"Max height"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      }
    ],
    "name":"Pack Sprites",
    "outputs":[
      {
        "tooltip":"",
        "name":"Packed image"
      },
      {
        "tooltip":"",
        "name":"Atlas data"
      }
    ]
  },
  "Node_Padding":{
    "tooltip":"Make image bigger by adding space in 4 directions.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"",
        "name":"Fill method",
        "display_data":[
          "Empty",
          "Solid"
        ]
      },
      {
        "tooltip":"",
        "name":"Fill color"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Pad mode",
        "display_data":[
          "Pad out",
          "Pad to size"
        ]
      },
      {
        "tooltip":"",
        "name":"Target dimension"
      },
      {
        "tooltip":"",
        "name":"Horizontal alignment",
        "display_data":[
          "@ref sprite(s_inspector_surface_halign)",
          "@ref sprite(s_inspector_surface_halign)",
          "@ref sprite(s_inspector_surface_halign)"
        ]
      },
      {
        "tooltip":"",
        "name":"Vertical alignment",
        "display_data":[
          "@ref sprite(s_inspector_surface_valign)",
          "@ref sprite(s_inspector_surface_valign)",
          "@ref sprite(s_inspector_surface_valign)"
        ]
      }
    ],
    "name":"Padding",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Anim_Curve":{
    "tooltip":"Evaluate value from an animation curve.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Curve"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Minimum"
      },
      {
        "tooltip":"",
        "name":"Maximum"
      },
      {
        "tooltip":"",
        "name":"Animated"
      }
    ],
    "name":"Evaluate Curve",
    "outputs":[
      {
        "tooltip":"",
        "name":"Curve"
      }
    ]
  },
  "Node_Smoke_Add":{
    "tooltip":"Add smoke emitter.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Fluid brush"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Inherit velocity"
      },
      {
        "tooltip":"",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Expand velocity mask"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      }
    ],
    "name":"Add Emitter",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Smoke_Apply_Velocity":{
    "tooltip":"Apply velocity to smoke.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Brush"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Velocity"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Apply Velocity",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Animation_Control":{
    "tooltip":"Control animation state with triggers.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Toggle Play \/ Pause"
      },
      {
        "tooltip":"",
        "name":"Pause"
      },
      {
        "tooltip":"",
        "name":"Resume"
      },
      {
        "tooltip":"",
        "name":"Play From Beginning"
      },
      {
        "tooltip":"",
        "name":"Play once"
      },
      {
        "tooltip":"",
        "name":"Skip Frames"
      },
      {
        "tooltip":"",
        "name":"Skip Frames Count"
      }
    ],
    "name":"Animation Control",
    "outputs":[
    ]
  },
  "Node_Smoke_Domain_Queue":{
    "tooltip":"Sync multiple domains to be render at the same time.",
    "inputs":[
    ],
    "name":"Queue Domain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Application_In":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"GUI"
      }
    ],
    "name":"GUI In",
    "outputs":[
    ]
  },
  "Node_Application_Out":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"GUI Out",
    "outputs":[
      {
        "tooltip":"",
        "name":"GUI"
      }
    ]
  },
  "Node_Colors_Replace":{
    "tooltip":"Replace selected colors with a new one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Palette from"
      },
      {
        "tooltip":"",
        "name":"Palette to"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Replace Colors",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Palette_Extract":{
    "tooltip":"Extract palette from an image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Amount of color in a palette.",
        "name":"Max colors"
      },
      {
        "tooltip":"Random seed to be used to initialize K-mean algorithm.",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Algorithm",
        "display_data":[
          "K-mean",
          "Frequency",
          "All colors"
        ]
      },
      {
        "tooltip":"",
        "name":"Color Space",
        "display_data":[
          "RGB",
          "HSV"
        ]
      }
    ],
    "name":"Palette Extract",
    "outputs":[
      {
        "tooltip":"",
        "name":"Palette"
      }
    ]
  },
  "Node_Area":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Span"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Rectangle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Rectangle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Elipse",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Elipse"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Center Span",
          "Two Point"
        ]
      }
    ],
    "name":"Area",
    "outputs":[
      {
        "tooltip":"",
        "name":"Area"
      }
    ]
  },
  "Node_Combine_HSV":{
    "tooltip":"Combine 4 image in to one. Each image use to control HSVA channel.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Array Input"
      },
      {
        "tooltip":"",
        "name":"HSV Array"
      }
    ],
    "name":"HSV Combine",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Palette_Replace":{
    "tooltip":"Replace colors in a palette with new one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Palette in"
      },
      {
        "tooltip":"",
        "name":"Palette from"
      },
      {
        "tooltip":"",
        "name":"Palette to"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      }
    ],
    "name":"Palette Replace",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Combine_RGB":{
    "tooltip":"Combine 4 image in to one. Each image use to control RGBA channel.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Sampling type",
        "display_data":[
          "Channel value",
          "Greyscale"
        ]
      },
      {
        "tooltip":"Set value to the unconnected color channels.",
        "name":"Base value"
      },
      {
        "tooltip":"",
        "name":"Base value"
      },
      {
        "tooltip":"",
        "name":"Array Input"
      },
      {
        "tooltip":"",
        "name":"RGBA Array"
      }
    ],
    "name":"RGBA Combine",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Smoke_Domain":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Collision"
      },
      {
        "tooltip":"",
        "name":"Material dissipation type",
        "display_data":[
          "Multiply",
          "Subtract"
        ]
      },
      {
        "tooltip":"",
        "name":"Material dissipation"
      },
      {
        "tooltip":"",
        "name":"Velocity dissipation type",
        "display_data":[
          "Multiply",
          "Subtract"
        ]
      },
      {
        "tooltip":"",
        "name":"Velocity dissipation"
      },
      {
        "tooltip":"",
        "name":"Acceleration"
      },
      {
        "tooltip":"",
        "name":"Material intertia"
      },
      {
        "tooltip":"",
        "name":"Initial pressure"
      },
      {
        "tooltip":"",
        "name":"Material Maccormack weight"
      },
      {
        "tooltip":"",
        "name":"Velocity Maccormack weight"
      },
      {
        "tooltip":"",
        "name":"Wrap"
      }
    ],
    "name":"Domain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Smoke_Group_Inline":{
    "tooltip":"Create group for smoke simulation.",
    "inputs":[
    ],
    "name":"SmokeSim",
    "outputs":[
    ]
  },
  "Node_Argument":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Tag"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "String",
          "Number"
        ]
      },
      {
        "tooltip":"",
        "name":"Default value"
      }
    ],
    "name":"Argument",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ]
  },
  "Node_Palette_Shift":{
    "tooltip":"Shift the order of color in palette.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Palette"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Palette Shift",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Smoke_Group":{
    "tooltip":"Create group for fluid simulation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Collision"
      },
      {
        "tooltip":"",
        "name":"Material dissipation type",
        "display_data":[
          "Multiply",
          "Subtract"
        ]
      },
      {
        "tooltip":"",
        "name":"Material dissipation"
      },
      {
        "tooltip":"",
        "name":"Velocity dissipation type",
        "display_data":[
          "Multiply",
          "Subtract"
        ]
      },
      {
        "tooltip":"",
        "name":"Velocity dissipation"
      },
      {
        "tooltip":"",
        "name":"Acceleration"
      },
      {
        "tooltip":"",
        "name":"Material intertia"
      },
      {
        "tooltip":"",
        "name":"Initial pressure"
      },
      {
        "tooltip":"",
        "name":"Material Maccormack weight"
      },
      {
        "tooltip":"",
        "name":"Velocity Maccormack weight"
      },
      {
        "tooltip":"",
        "name":"Wrap"
      }
    ],
    "name":"SmokeSim",
    "outputs":[
    ]
  },
  "Node_Smoke_Render_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Interpolate"
      },
      {
        "tooltip":"",
        "name":"Draw Domain"
      },
      {
        "tooltip":"",
        "name":"Auto Update"
      }
    ],
    "name":"Render Domain",
    "outputs":[
    ]
  },
  "Node_Palette_Sort":{
    "tooltip":"Sort palette with specified order.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Palette in"
      },
      {
        "tooltip":"",
        "name":"Order",
        "display_data":[
          "Brightness",
          -1.0,
          "Hue (HSV)",
          "Saturation (SHV)",
          "Value (VHS)",
          -1.0,
          "Red (RGB)",
          "Green (GBR)",
          "Blue (BRG)",
          -1.0,
          "Custom"
        ]
      },
      {
        "tooltip":"",
        "name":"Reverse"
      },
      {
        "tooltip":"Compose sorting algorithm using string.\r\n    - RGB: Red\/Green\/Blur channel\r\n    - HSV: Hue\/Saturation\/Value\r\n    - L:   Brightness\r\n    - Use small letter for ascending, capital letter for descending order.",
        "name":"Sort Order"
      }
    ],
    "name":"Sort Palette",
    "outputs":[
      {
        "tooltip":"",
        "name":"Sorted palette"
      }
    ]
  },
  "Node_Compare":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Equal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Not equal",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Not equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater ",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Greater "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater or equal",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Greater or equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Lesser"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser or equal",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Lesser or equal"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"a"
      },
      {
        "tooltip":"",
        "name":"b"
      }
    ],
    "name":"Compare",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Smoke_Render":{
    "tooltip":"Render smoke to surface. This node also have update function build in.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Interpolate"
      },
      {
        "tooltip":"",
        "name":"Draw Domain"
      },
      {
        "tooltip":"",
        "name":"Auto Update"
      }
    ],
    "name":"Render Domain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Smoke"
      },
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Palette":{
    "tooltip":"Create palette value. Note that palette is simple an array of colors.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Palette"
      },
      {
        "tooltip":"",
        "name":"Trim range"
      }
    ],
    "name":"Palette",
    "outputs":[
      {
        "tooltip":"",
        "name":"Palette"
      }
    ]
  },
  "Node_Smoke_Repulse":{
    "tooltip":"Spread smoke away from a point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Override",
          "Add"
        ]
      }
    ],
    "name":"Repulse",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Herringbone_Tile":{
    "tooltip":"Generate Herringbone tile pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Height map",
          "Texture grid"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Truchet"
      },
      {
        "tooltip":"",
        "name":"Truchet seed"
      },
      {
        "tooltip":"",
        "name":"Truchet threshold"
      },
      {
        "tooltip":"",
        "name":"Tile length"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Texture angle"
      },
      {
        "tooltip":"",
        "name":"Level"
      }
    ],
    "name":"Herringbone Tile",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Smoke_Turbulence":{
    "tooltip":"Apply random velocity map to the smoke.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Effect area"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Override",
          "Add"
        ]
      }
    ],
    "name":"Turbulence",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Particle":{
    "tooltip":"Generate particle effect.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Particle sprite"
      },
      {
        "tooltip":"Frames delay between each particle spawn.",
        "name":"Spawn delay"
      },
      {
        "tooltip":"Amount of particle spawn in that frame.",
        "name":"Spawn amount"
      },
      {
        "tooltip":"",
        "name":"Spawn area"
      },
      {
        "tooltip":"",
        "name":"Spawn distribution",
        "display_data":[
          "Area",
          "Border",
          "Map"
        ]
      },
      {
        "tooltip":"",
        "name":"Lifespan"
      },
      {
        "tooltip":"",
        "name":"Spawn direction"
      },
      {
        "tooltip":"",
        "name":"Acceleration"
      },
      {
        "tooltip":"",
        "name":"Orientation"
      },
      {
        "tooltip":"",
        "name":"Rotational speed"
      },
      {
        "tooltip":"",
        "name":"Spawn scale"
      },
      {
        "tooltip":"",
        "name":"Scale over time"
      },
      {
        "tooltip":"",
        "name":"Color over lifetime"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Alpha over time"
      },
      {
        "tooltip":"Make the particle rotates to follow its movement.",
        "name":"Rotate by direction"
      },
      {
        "tooltip":"",
        "name":"Spawn type",
        "display_data":[
          "Stream",
          "Burst",
          "Trigger"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn size"
      },
      {
        "tooltip":"",
        "name":"Spawn velocity"
      },
      {
        "tooltip":"",
        "name":"Gravity"
      },
      {
        "tooltip":"",
        "name":"Direction wiggle"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"Whether to select image from an array in order, at random, or treat array as animation.",
        "name":"Surface array",
        "display_data":[
          "Random",
          "Order",
          "Animation",
          "Scale"
        ]
      },
      {
        "tooltip":"",
        "name":"Animation speed"
      },
      {
        "tooltip":"",
        "name":"Scatter",
        "display_data":[
          "Uniform",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Boundary data"
      },
      {
        "tooltip":"",
        "name":"On animation end",
        "display_data":[
          "Loop",
          "Ping pong",
          "Destroy"
        ]
      },
      {
        "tooltip":"",
        "name":"Spawn"
      },
      {
        "tooltip":"",
        "name":"Random blend"
      },
      {
        "tooltip":"Make particle move away from the spawn center.",
        "name":"Directed from center"
      },
      {
        "tooltip":"",
        "name":"Distribution map"
      },
      {
        "tooltip":"",
        "name":"Atlas"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Gravity direction"
      },
      {
        "tooltip":"",
        "name":"Turning"
      },
      {
        "tooltip":"Apply randomized 1, -1 multiplier to the turning speed.",
        "name":"Turn both directions"
      },
      {
        "tooltip":"",
        "name":"Turn scale with speed"
      },
      {
        "tooltip":"",
        "name":"Collide ground"
      },
      {
        "tooltip":"",
        "name":"Ground offset"
      },
      {
        "tooltip":"",
        "name":"Bounce amount"
      },
      {
        "tooltip":"Apply horizontal friction once particle stop bouncing.",
        "name":"Bounce friction"
      },
      {
        "tooltip":"",
        "name":"Position wiggle"
      },
      {
        "tooltip":"",
        "name":"Rotation wiggle"
      },
      {
        "tooltip":"",
        "name":"Scale wiggle"
      },
      {
        "tooltip":"",
        "name":"Spawn"
      },
      {
        "tooltip":"",
        "name":"Follow Path"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Path Deviation"
      },
      {
        "tooltip":"",
        "name":"Reset Seed"
      },
      {
        "tooltip":"",
        "name":"Stretch Animation"
      },
      {
        "tooltip":"",
        "name":"Output dimension"
      },
      {
        "tooltip":"Round position to the closest integer value to avoid jittering.",
        "name":"Round position"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Normal",
          "Alpha",
          "Additive"
        ]
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Render Type",
        "display_data":[
          "Surface",
          "Line"
        ]
      },
      {
        "tooltip":"",
        "name":"Line life"
      }
    ],
    "name":"Particle",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Smoke_Update":{
    "tooltip":"Run smoke by one step.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Update Domain",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Smoke_Vortex":{
    "tooltip":"Apply rotational force around a point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Attraction"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Override",
          "Add"
        ]
      }
    ],
    "name":"Vortex",
    "outputs":[
      {
        "tooltip":"",
        "name":"Domain"
      },
      {
        "tooltip":"",
        "name":"Domain"
      }
    ]
  },
  "Node_Solid":{
    "tooltip":"Create image of a single color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Empty"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Use mask dimension"
      }
    ],
    "name":"Solid",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Spherize":{
    "tooltip":"Wrap a texture on to sphere.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Radius map"
      },
      {
        "tooltip":"",
        "name":"Trim edge"
      }
    ],
    "name":"Spherize",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Spout_Send":{
    "tooltip":"Send surface through Spout.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Sender name"
      },
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Spout Sender",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_HLSL":{
    "tooltip":"Execute HLSL shader on a surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Vertex"
      },
      {
        "tooltip":"",
        "name":"Fragment"
      },
      {
        "tooltip":"",
        "name":"Base Texture"
      }
    ],
    "name":"HLSL",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_Honeycomb_Noise":{
    "tooltip":"Generate honeycomb noise",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Hexagon",
          "Star"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      }
    ],
    "name":"Honeycomb Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_HSV_Channel":{
    "tooltip":"Extract HSVA channel on an image, each channel becomes its own image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Output Array"
      }
    ],
    "name":"HSV Extract",
    "outputs":[
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ]
  },
  "Node_Composite":{
    "tooltip":"Combine multiple images with controllable position, rotation, scale.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"",
        "name":"Output dimension",
        "display_data":[
          "First surface",
          "Largest surface",
          "Constant"
        ]
      },
      {
        "tooltip":"",
        "name":"Dimension"
      }
    ],
    "name":"Composite",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas data"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      }
    ]
  },
  "Node_HTTP_request":{
    "tooltip":"Request data from the internet.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Address"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Get",
          "Post"
        ]
      },
      {
        "tooltip":"",
        "name":"Content"
      }
    ],
    "name":"HTTP",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Sprite_Stack":{
    "tooltip":"Create sprite stack either from repeating a single image or stacking different images using array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Base shape"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Stack amount"
      },
      {
        "tooltip":"",
        "name":"Stack shift"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Stack blend"
      },
      {
        "tooltip":"Alpha value for the last copy.",
        "name":"Alpha end"
      },
      {
        "tooltip":"Make each copy move the original image.",
        "name":"Move base"
      },
      {
        "tooltip":"",
        "name":"Highlight",
        "display_data":[
          "None",
          "Color",
          "Inner pixel"
        ]
      },
      {
        "tooltip":"",
        "name":"Highlight color"
      },
      {
        "tooltip":"",
        "name":"Highlight alpha"
      },
      {
        "tooltip":"",
        "name":"Array process",
        "display_data":[
          "Individual",
          "Combined"
        ]
      }
    ],
    "name":"Sprite Stack",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Condition":{
    "tooltip":"Given a condition, output one value if true, another value is false.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Check value"
      },
      {
        "tooltip":"",
        "name":"Condition",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Equal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Not equal",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Not equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Less ",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Less "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Less or equal ",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Less or equal "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater ",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Greater "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater or equal",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Greater or equal"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Compare to"
      },
      {
        "tooltip":"",
        "name":"True"
      },
      {
        "tooltip":"",
        "name":"False"
      },
      {
        "tooltip":"",
        "name":"Eval mode",
        "display_data":[
          "Boolean",
          "Number compare",
          "Text compare"
        ]
      },
      {
        "tooltip":"",
        "name":"Boolean"
      },
      {
        "tooltip":"",
        "name":"Text 1"
      },
      {
        "tooltip":"",
        "name":"Text 2"
      }
    ],
    "name":"Condition",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      },
      {
        "tooltip":"",
        "name":"Bool"
      }
    ]
  },
  "Node_Stack":{
    "tooltip":"Place image next to each other linearly, or on top of each other.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Horizontal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Horizontal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Vertical",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Vertical"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"On top",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"On top"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Align",
        "display_data":[
          "Start",
          "Middle",
          "End"
        ]
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Padding"
      }
    ],
    "name":"Stack",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas data"
      }
    ]
  },
  "Node_Convolution":{
    "tooltip":"Apply convolution operation on each pixel using a custom 3x3 kernel.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Kernel"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Convolution",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Stagger":{
    "tooltip":"Delay the animation based on array index.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Delay Step"
      },
      {
        "tooltip":"",
        "name":"Delay Amount"
      },
      {
        "tooltip":"",
        "name":"Stagger Curve"
      },
      {
        "tooltip":"",
        "name":"Overflow",
        "display_data":[
          "Hide",
          "Clamp"
        ]
      }
    ],
    "name":"Stagger",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_Image_Animated":{
    "tooltip":"Load multiple images from your computer as animation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"Stretch animation speed to match project length.",
        "name":"Stretch frame"
      },
      {
        "tooltip":"",
        "name":"Animation speed"
      },
      {
        "tooltip":"",
        "name":"Loop modes",
        "display_data":[
          "Loop",
          "Ping pong",
          "Hold last frame",
          "Hide"
        ]
      },
      {
        "tooltip":"",
        "name":"Set animation length to match"
      },
      {
        "tooltip":"",
        "name":"Custom frame order"
      },
      {
        "tooltip":"",
        "name":"Frame"
      },
      {
        "tooltip":"",
        "name":"Canvas size",
        "display_data":[
          "First",
          "Minimum",
          "Maximum"
        ]
      }
    ],
    "name":"Animation",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Statistic":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Sum",
          "Mean",
          "Median",
          "Max",
          "Min"
        ]
      }
    ],
    "name":"Statistic",
    "outputs":[
      {
        "tooltip":"",
        "name":"Statistic"
      }
    ]
  },
  "Node_Corner":{
    "tooltip":"Round out sharp corner of the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Corner",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Counter":{
    "tooltip":"Output current frame as frame index, or animation progress (0 - 1).",
    "inputs":[
      {
        "tooltip":"",
        "name":"Start"
      },
      {
        "tooltip":"",
        "name":"Speed"
      },
      {
        "tooltip":"Counting mode\r\n    - Frame count: Count value up\/down per frame.\r\n    - Animation progress: Count from 0 (first frame) to 1 (last frame). ",
        "name":"Mode",
        "display_data":[
          "Frame count",
          "Animation progress"
        ]
      }
    ],
    "name":"Frame Index",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ]
  },
  "Node_Strand_Break":{
    "tooltip":"Detach strands from its origin.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          "Point",
          "Band"
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Chance"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Strand Break",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_Strand_Collision":{
    "tooltip":"Create solid object for strands to collides to.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Collision mesh"
      }
    ],
    "name":"Strand Collision",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_Crop_Content":{
    "tooltip":"Crop out empty pixel from the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"Cropping mode for dealing with image array.",
        "name":"Array Sizing",
        "display_data":[
          "Largest, same size",
          "Independent"
        ]
      },
      {
        "tooltip":"Add padding back after crop.",
        "name":"Padding"
      }
    ],
    "name":"Crop Content",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Image_gif":{
    "tooltip":"Load animated .gif from your computer.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Set animation length to gif"
      },
      {
        "tooltip":"",
        "name":"Output as array"
      },
      {
        "tooltip":"",
        "name":"Loop modes",
        "display_data":[
          "Loop",
          "Ping pong",
          "Hold last frame",
          "Hide"
        ]
      },
      {
        "tooltip":"",
        "name":"Start frame"
      },
      {
        "tooltip":"",
        "name":"Custom frame order"
      },
      {
        "tooltip":"",
        "name":"Frame"
      },
      {
        "tooltip":"",
        "name":"Animation speed"
      }
    ],
    "name":"Image GIF",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Path_3D":{
    "tooltip":"Create path in 3D space.",
    "inputs":[
      {
        "tooltip":"Sample position from path.",
        "name":"Path progress"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"",
        "name":"Progress mode",
        "display_data":[
          "Entire line",
          "Segment"
        ]
      },
      {
        "tooltip":"",
        "name":"Round anchor"
      }
    ],
    "name":"3D Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Position out"
      },
      {
        "tooltip":"",
        "name":"Path data"
      },
      {
        "tooltip":"",
        "name":"Anchors"
      }
    ]
  },
  "Node_Image_Grid":{
    "tooltip":"Place image next to each other in grid pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Main Axis",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Horizontal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Horizontal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Vertical",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Vertical"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Column"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Padding"
      }
    ],
    "name":"Image Grid",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas data"
      }
    ]
  },
  "Node_Path_Anchor":{
    "tooltip":"Create path anchor data.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Postion"
      },
      {
        "tooltip":"",
        "name":"Control point 1"
      },
      {
        "tooltip":"",
        "name":"Control point 2"
      },
      {
        "tooltip":"",
        "name":"Mirror control point"
      }
    ],
    "name":"Path Anchor",
    "outputs":[
      {
        "tooltip":"",
        "name":"Anchor"
      }
    ]
  },
  "Node_Image_Sequence":{
    "tooltip":"Load multiple images from your computer as array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Paths"
      },
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"",
        "name":"Canvas size",
        "display_data":[
          "Individual",
          "Minimum",
          "Maximum"
        ]
      },
      {
        "tooltip":"",
        "name":"Sizing method",
        "display_data":[
          "Padding \/ Crop",
          "Scale"
        ]
      }
    ],
    "name":"Image Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Paths"
      }
    ]
  },
  "Node_Path_Array":{
    "tooltip":"Combine multiple path into one.",
    "inputs":[
    ],
    "name":"Path Combine",
    "outputs":[
      {
        "tooltip":"",
        "name":"Combined Path"
      }
    ]
  },
  "Node_Crop":{
    "tooltip":"Crop out image to create smaller ones.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Crop"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Aspect Ratio",
        "display_data":[
          "None",
          "Manual",
          "1:1",
          "3:2",
          "4:3",
          "16:9"
        ]
      },
      {
        "tooltip":"",
        "name":"Ratio"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Fit Mode",
        "display_data":[
          "Manual",
          "Width",
          "Height",
          "Minimum"
        ]
      }
    ],
    "name":"Crop",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Path_Bake":{
    "tooltip":"Bake path data into array of vec2 points.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Segment length"
      },
      {
        "tooltip":"",
        "name":"Spread single path"
      }
    ],
    "name":"Bake Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Segments"
      }
    ]
  },
  "Node_Cross_Section":{
    "tooltip":"Map the brightness of pixels on a linear axis into a surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Anti Aliasing"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "BW",
          "Colored"
        ]
      }
    ],
    "name":"Draw Cross Section",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Path_Blend":{
    "tooltip":"Blend between 2 paths.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path 1"
      },
      {
        "tooltip":"",
        "name":"Path 2"
      },
      {
        "tooltip":"",
        "name":"Ratio"
      }
    ],
    "name":"Blend Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_CSV_File_Read":{
    "tooltip":"Load .csv as text, number array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Convert to number"
      }
    ],
    "name":"CSV File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Content"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_CSV_File_Write":{
    "tooltip":"Save array as .csv file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Content"
      }
    ],
    "name":"CSV File Out",
    "outputs":[
    ]
  },
  "Node_Curve_HSV":{
    "tooltip":"Adjust hsv values of an image using curves.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Hue"
      },
      {
        "tooltip":"",
        "name":"Saturation"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"HSV Curve",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Path_Bridge":{
    "tooltip":"Create new paths that connect multiple paths at the same sample positions.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Smooth"
      }
    ],
    "name":"Bridge Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Strand_Create":{
    "tooltip":"Create strands from point, path, or mesh.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Point",
          "Path",
          "Mesh"
        ]
      },
      {
        "tooltip":"How many strands to generate.",
        "name":"Density"
      },
      {
        "tooltip":"",
        "name":"Length"
      },
      {
        "tooltip":"",
        "name":"Segment"
      },
      {
        "tooltip":"Length preservation, the higher the value the easier it is to stretch each segment.",
        "name":"Elasticity"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "Inner",
          "Outer",
          "Both"
        ]
      },
      {
        "tooltip":"Angular stiffness, the higher the value the easier it is to bend each segment.",
        "name":"Spring"
      },
      {
        "tooltip":"The ability to keep its original shape.",
        "name":"Structure"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Curl frequency"
      },
      {
        "tooltip":"",
        "name":"Curliness"
      },
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Distribution",
        "display_data":[
          "Uniform",
          "Random"
        ]
      },
      {
        "tooltip":"Prevent strand reseting to apply manual modification. Unbaking will remove all changes.",
        "name":"Bake hair"
      },
      {
        "tooltip":"",
        "name":"View fix hair"
      },
      {
        "tooltip":"The force required to break strand from its root. Set to -1 to make strand infinitely strong.",
        "name":"Root strength"
      }
    ],
    "name":"Strand Create",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_Armature_Bind":{
    "tooltip":"Bind and render image to an armature system.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Armature"
      },
      {
        "tooltip":"",
        "name":"Bind data"
      },
      {
        "tooltip":"",
        "name":"Bone transform"
      },
      {
        "tooltip":"",
        "name":"Bone scale"
      }
    ],
    "name":"Armature Bind",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas data"
      },
      {
        "tooltip":"",
        "name":"Bind data"
      }
    ]
  },
  "Node_Curve":{
    "tooltip":"Adjust brightness of an image using curves.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Red"
      },
      {
        "tooltip":"",
        "name":"Green"
      },
      {
        "tooltip":"",
        "name":"Blue"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ],
    "name":"Curve",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Path_Builder":{
    "tooltip":"Create path from array of vec2 points.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Point array"
      },
      {
        "tooltip":"",
        "name":"Loop"
      }
    ],
    "name":"Path Builder",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Armature_Path":{
    "tooltip":"Generate path from armature system.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Armature"
      }
    ],
    "name":"Armature Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Path_From_Mask":{
    "tooltip":"Create path that wrap around a mask.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Smooth angle"
      }
    ],
    "name":"Path from Mask",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Strand_Force_Apply":{
    "tooltip":"Apply general force to strands.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          "Point",
          "Band"
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Turbulence"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Turbulence frequency"
      },
      {
        "tooltip":"",
        "name":"Turbulence detail"
      }
    ],
    "name":"Strand Force Apply",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_Strand_Gravity":{
    "tooltip":"Apply downward acceleration to strands.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Gravity"
      },
      {
        "tooltip":"",
        "name":"Direction"
      }
    ],
    "name":"Strand Gravity",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_Strand_Group_Inline":{
    "tooltip":"Create group for hair simulation.",
    "inputs":[
    ],
    "name":"StrandSim",
    "outputs":[
    ]
  },
  "Node_Strand_Group":{
    "tooltip":"Create group for hair simulation.",
    "inputs":[
    ],
    "name":"StrandSim",
    "outputs":[
    ]
  },
  "Node_Strand_Length_Adjust":{
    "tooltip":"Adjust length of strands in area.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          "Point",
          "Band"
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Falloff"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Increase",
          "Decrease"
        ]
      },
      {
        "tooltip":"",
        "name":"Strength"
      }
    ],
    "name":"Strand Length Adjust",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_Armature_Pose":{
    "tooltip":"Pose armature system.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Armature"
      }
    ],
    "name":"Armature Pose",
    "outputs":[
      {
        "tooltip":"",
        "name":"Armature"
      }
    ]
  },
  "Node_Strand_Render_Texture":{
    "tooltip":"Render strands to surface as a textured path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Random color"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Strand Render Texture",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Armature_Sample":{
    "tooltip":"Sample point from armature system.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Armature"
      },
      {
        "tooltip":"",
        "name":"Bone name"
      },
      {
        "tooltip":"",
        "name":"Sample point"
      }
    ],
    "name":"Armature Sample",
    "outputs":[
      {
        "tooltip":"",
        "name":"Position"
      }
    ]
  },
  "Node_Image_Sheet":{
    "tooltip":"Cut up spritesheet into animation or image array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Sprite size"
      },
      {
        "tooltip":"",
        "name":"Row"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Offset"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"",
        "name":"Output",
        "display_data":[
          "Animation",
          "Array"
        ]
      },
      {
        "tooltip":"",
        "name":"Animation speed"
      },
      {
        "tooltip":"",
        "name":"Main Axis",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Horizontal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Horizontal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Vertical",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Vertical"
          }
        ]
      },
      {
        "tooltip":"Automatically set amount based on sprite size.",
        "name":"Auto fill"
      },
      {
        "tooltip":"",
        "name":"Sync animation"
      },
      {
        "tooltip":"",
        "name":"Filter empty output"
      },
      {
        "tooltip":"",
        "name":"Filtered Pixel",
        "display_data":[
          "Transparent",
          "Color"
        ]
      },
      {
        "tooltip":"",
        "name":"Filtered Color"
      }
    ],
    "name":"Splice Spritesheet",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Atlas Data"
      }
    ]
  },
  "Node_Path_L_System":{
    "tooltip":"Generate path using Lindenmayer system.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Length"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Starting position"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"@ref object(o_dialog_l_system)",
        "name":"Starting rule"
      },
      {
        "tooltip":"Replace symbol of the last generated rule, for example a=F to replace all a with F. Use comma to separate different replacements.",
        "name":"End replacement"
      },
      {
        "tooltip":"",
        "name":"Starting Angle"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"L system",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Path_Map_Area":{
    "tooltip":"Scale path to fit a given area.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Area"
      }
    ],
    "name":"Remap Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Strand_Render":{
    "tooltip":"Render strands to surface as a single path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Thickness"
      },
      {
        "tooltip":"",
        "name":"Thickness over length"
      },
      {
        "tooltip":"",
        "name":"Random color"
      },
      {
        "tooltip":"",
        "name":"Color over length"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"Render extra strands between the real strands.",
        "name":"Child"
      },
      {
        "tooltip":"",
        "name":"Update quality"
      }
    ],
    "name":"Strand Render",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Image":{
    "tooltip":"Load a single image from your computer.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Padding"
      }
    ],
    "name":"Image",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Strand_Update":{
    "tooltip":"Update strands by one step.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Strand"
      },
      {
        "tooltip":"",
        "name":"Step"
      }
    ],
    "name":"Strand Update",
    "outputs":[
      {
        "tooltip":"",
        "name":"Strand"
      }
    ]
  },
  "Node_String_Get_Char":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Amount"
      }
    ],
    "name":"Get Character",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_String_Join":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text array"
      },
      {
        "tooltip":"",
        "name":"Divider"
      }
    ],
    "name":"Join Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_Interlaced":{
    "tooltip":"Apply interlace effect to an image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Invert"
      }
    ],
    "name":"Interlace",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_String_Length":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Character",
          "Word"
        ]
      }
    ],
    "name":"Text Length",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_String_Merge":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Combine Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_String_Regex_Match":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Regex"
      }
    ],
    "name":"RegEx Match",
    "outputs":[
      {
        "tooltip":"",
        "name":"Results"
      }
    ]
  },
  "Node_Interpret_Number":{
    "tooltip":"Convert array of number into surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Number"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Greyscale",
          "Gradient"
        ]
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      }
    ],
    "name":"Interpret Number",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_String_Regex_Replace":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Regex"
      },
      {
        "tooltip":"",
        "name":"Replacement"
      }
    ],
    "name":"RegEx Replace",
    "outputs":[
      {
        "tooltip":"",
        "name":"Results"
      }
    ]
  },
  "Node_Path_Map":{
    "tooltip":"Map a texture between multiple paths.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Subdivision"
      }
    ],
    "name":"Map Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Rendered"
      }
    ]
  },
  "Node_String_Regex_Search":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Regex"
      }
    ],
    "name":"RegEx Search",
    "outputs":[
      {
        "tooltip":"",
        "name":"Results"
      }
    ]
  },
  "Node_Invert":{
    "tooltip":"Invert color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Include Alpha"
      }
    ],
    "name":"Invert",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_String_Split":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"Character that used to split text,\nleave blank to create character array.",
        "name":"Delimiter"
      }
    ],
    "name":"Split Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_String_Trim":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Head"
      },
      {
        "tooltip":"",
        "name":"Tail"
      },
      {
        "tooltip":"",
        "name":"Trim",
        "display_data":[
          "Character",
          "Word"
        ]
      },
      {
        "tooltip":"Set to progress to use ratio, where 0 means no change and 1 means the entire length of the text.",
        "name":"Mode",
        "display_data":[
          "Counter",
          "Progress"
        ]
      }
    ],
    "name":"Trim Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_String":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ],
    "name":"Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_Stripe":{
    "tooltip":"Generate stripe pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Solid",
          "Smooth",
          "AA"
        ]
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Random"
      },
      {
        "tooltip":"",
        "name":"Coloring",
        "display_data":[
          "Alternate",
          "Palette",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Colors"
      },
      {
        "tooltip":"",
        "name":"Color 1"
      },
      {
        "tooltip":"",
        "name":"Color 2"
      },
      {
        "tooltip":"",
        "name":"Strip ratio"
      },
      {
        "tooltip":"",
        "name":"Amount map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Random map"
      },
      {
        "tooltip":"",
        "name":"Ratio map"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Progress"
      },
      {
        "tooltip":"",
        "name":"Colors"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Stripe",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Struct_Get":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Struct"
      },
      {
        "tooltip":"",
        "name":"Key"
      }
    ],
    "name":"Struct Get",
    "outputs":[
      {
        "tooltip":"",
        "name":"Struct"
      }
    ]
  },
  "Node_Struct_JSON_Parse":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"JSON string"
      }
    ],
    "name":"Parse JSON",
    "outputs":[
      {
        "tooltip":"",
        "name":"Struct"
      }
    ]
  },
  "Node_Path_Plot":{
    "tooltip":"Create path from parametric equations.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Output scale"
      },
      {
        "tooltip":"",
        "name":"Coordinate",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_axis_type)",
            "data":"Cartesian",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Cartesian"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_axis_type)",
            "data":"Polar",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Polar"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Equation type",
        "display_data":[
          "x function",
          "y function",
          "parametric"
        ]
      },
      {
        "tooltip":"",
        "name":"0 function"
      },
      {
        "tooltip":"",
        "name":"1 function"
      },
      {
        "tooltip":"",
        "name":"Origin"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Input scale"
      },
      {
        "tooltip":"",
        "name":"Input shift"
      }
    ],
    "name":"Path plot",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Armature":{
    "tooltip":"Create new armature system.",
    "inputs":[
    ],
    "name":"Armature Create",
    "outputs":[
      {
        "tooltip":"",
        "name":"Armature"
      }
    ]
  },
  "Node_IsoSurf":{
    "tooltip":"Create a dynamic surface that changes its texture based on rotation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Surfaces"
      },
      {
        "tooltip":"",
        "name":"Angle Shift"
      },
      {
        "tooltip":"",
        "name":"Angle Split"
      },
      {
        "tooltip":"",
        "name":"Offsets"
      }
    ],
    "name":"IsoSurf",
    "outputs":[
      {
        "tooltip":"",
        "name":"IsoSurf"
      }
    ]
  },
  "Node_Array_Add":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Spread array"
      }
    ],
    "name":"Array Add",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Path_Profile":{
    "tooltip":"Fill-in an area on one side of a path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Resolution"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "L",
          "R",
          "T",
          "D"
        ]
      },
      {
        "tooltip":"",
        "name":"Mirror"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Anti Aliasing"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"BG Color"
      }
    ],
    "name":"Draw Path Profile",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Path_Reverse":{
    "tooltip":"Reverse path direction.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ],
    "name":"Reverse Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Iterate_Each_Inline":{
    "tooltip":"Create group that iterate to each member in an array.",
    "inputs":[
    ],
    "name":"Loop Array",
    "outputs":[
    ]
  },
  "Node_Path_Sample":{
    "tooltip":"Sample a 2D position from a path",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Ratio"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Loop",
          "Ping pong"
        ]
      }
    ],
    "name":"Sample Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Direction"
      }
    ]
  },
  "Node_Iterate_Each":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Loop Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Iterate_Filter_Inline":{
    "tooltip":"Filter array using condition.",
    "inputs":[
    ],
    "name":"Filter Array",
    "outputs":[
    ]
  },
  "Node_Array_Composite":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Compose"
      }
    ],
    "name":"Array Composite",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Struct":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Struct",
    "outputs":[
      {
        "tooltip":"",
        "name":"Struct"
      }
    ]
  },
  "Node_Surface_From_Buffer":{
    "tooltip":"Create surface from buffer.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Buffer"
      }
    ],
    "name":"Surface from Buffer",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_Iterate_Filter":{
    "tooltip":"Filter array using condition.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Filter Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Convolute":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Kernel"
      }
    ],
    "name":"Array Convolute",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Copy":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Starting Index"
      },
      {
        "tooltip":"",
        "name":"Size"
      }
    ],
    "name":"Array Copy",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Iterate_Inline":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Repeat"
      }
    ],
    "name":"Loop",
    "outputs":[
    ]
  },
  "Node_Array_CSV_Parse":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"CSV string"
      },
      {
        "tooltip":"",
        "name":"Skip line"
      }
    ],
    "name":"Parse CSV",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Find":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Value"
      }
    ],
    "name":"Array Find",
    "outputs":[
      {
        "tooltip":"",
        "name":"Index"
      }
    ]
  },
  "Node_Array_Get":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Overflow",
        "display_data":[
          "Clamp",
          "Loop",
          "Ping Pong"
        ]
      }
    ],
    "name":"Array Get",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ]
  },
  "Node_Array_Insert":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Spread array"
      }
    ],
    "name":"Array Insert",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Iterate_Sort_Inline":{
    "tooltip":"Sort array using node graph.",
    "inputs":[
    ],
    "name":"Sort Array (inline)",
    "outputs":[
    ]
  },
  "Node_Array_Length":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Array Length",
    "outputs":[
      {
        "tooltip":"",
        "name":"Size"
      }
    ]
  },
  "Node_Surface_Replace":{
    "tooltip":"Replace instances of an image with a new one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Base Image"
      },
      {
        "tooltip":"",
        "name":"Target Image"
      },
      {
        "tooltip":"",
        "name":"Replacement Image"
      },
      {
        "tooltip":"How similiar the color need to be in order to be count as matched.",
        "name":"Color Threshold"
      },
      {
        "tooltip":"",
        "name":"Draw Base Image"
      },
      {
        "tooltip":"",
        "name":"Fast Mode"
      },
      {
        "tooltip":"How many pixel need to me matched to replace with replacement image.",
        "name":"Pixel Threshold"
      },
      {
        "tooltip":"",
        "name":"Array mode",
        "display_data":[
          "Match index",
          "Randomized"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Replace Empty"
      }
    ],
    "name":"Replace Image",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      }
    ]
  },
  "Node_Surface_To_Buffer":{
    "tooltip":"Create buffer from surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Buffer from Surface",
    "outputs":[
      {
        "tooltip":"",
        "name":"Buffer"
      }
    ]
  },
  "Node_Iterate_Sort":{
    "tooltip":"Sort array using node graph.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Sort Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Path_Scatter":{
    "tooltip":"Scatter paths along another path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Base Path"
      },
      {
        "tooltip":"",
        "name":"Scatter Path"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Scale over Length"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Distribution",
        "display_data":[
          "Uniform",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Trim over Length"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Flip if Negative"
      },
      {
        "tooltip":"",
        "name":"Origin",
        "display_data":[
          "Individual",
          "First",
          "Zero"
        ]
      }
    ],
    "name":"Scatter Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Iterate":{
    "tooltip":"Create group that reuse output as input repeatedly in one frame.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Repeat"
      }
    ],
    "name":"Loop",
    "outputs":[
    ]
  },
  "Node_Path_Separate_Folder":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Keep extension"
      }
    ],
    "name":"Separate File Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Directory"
      },
      {
        "tooltip":"",
        "name":"File Name"
      }
    ]
  },
  "Node_Iterator_Each_Inline_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array in"
      }
    ],
    "name":"Loop Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value in"
      }
    ]
  },
  "Node_Iterator_Each_Inline_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value out"
      }
    ],
    "name":"Loop Output",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array out"
      }
    ]
  },
  "Node_Path_Shift":{
    "tooltip":"Move path along its normal.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Distance"
      }
    ],
    "name":"Shift Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_SVG":{
    "tooltip":"Load a SVG file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Scale"
      }
    ],
    "name":"SVG",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"SVG Struct"
      }
    ]
  },
  "Node_Iterator_Each_Input":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value in"
      }
    ]
  },
  "Node_Iterator_Each_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value out"
      }
    ],
    "name":"Output",
    "outputs":[
      {
        "tooltip":"",
        "name":"Preview"
      }
    ]
  },
  "Node_Iterator_Each_Length":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Array Length",
    "outputs":[
      {
        "tooltip":"",
        "name":"Length"
      }
    ]
  },
  "Node_Iterator_Filter_Inline_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array in"
      }
    ],
    "name":"Filter Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value in"
      }
    ]
  },
  "Node_Switch":{
    "tooltip":"Given an index, output a value labeled by the same index.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Default value"
      }
    ],
    "name":"Switch",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Path_Smooth":{
    "tooltip":"Create path with automatic smoothness.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"",
        "name":"Round anchor"
      },
      {
        "tooltip":"",
        "name":"Smoothness"
      }
    ],
    "name":"Smooth Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path data"
      }
    ]
  },
  "Node_Iterator_Filter_Inline_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value out"
      },
      {
        "tooltip":"",
        "name":"Filter result"
      }
    ],
    "name":"Filter Output",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array out"
      }
    ]
  },
  "Node_Terminal_Trigger":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Terminal trigger",
    "outputs":[
      {
        "tooltip":"",
        "name":"Terminal"
      }
    ]
  },
  "Node_Iterator_Filter_Input":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value in"
      }
    ]
  },
  "Node_Path_Transform":{
    "tooltip":"Move rotate and scale a path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      }
    ],
    "name":"Transform Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Iterator_Filter_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Result"
      }
    ],
    "name":"Output",
    "outputs":[
    ]
  },
  "Node_Array_Pin":{
    "tooltip":"Create a pin that can receive multiple values and return an array.",
    "inputs":[
    ],
    "name":"Array Pin",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Path_Trim":{
    "tooltip":"Trim path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Range"
      }
    ],
    "name":"Trim Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Array_Range":{
    "tooltip":"Create array of numbers by setting start, end and step length.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Start"
      },
      {
        "tooltip":"",
        "name":"End"
      },
      {
        "tooltip":"",
        "name":"Step"
      }
    ],
    "name":"Array Range",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Text_File_Read":{
    "tooltip":"Load .txt in as text.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ],
    "name":"Text File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Content"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Iterator_Index":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Index",
    "outputs":[
      {
        "tooltip":"",
        "name":"Loop index"
      }
    ]
  },
  "Node_Text_File_Write":{
    "tooltip":"Save text as a .txt file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Content"
      }
    ],
    "name":"Text File Out",
    "outputs":[
    ]
  },
  "Node_Iterator_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Display type",
        "display_data":0.0
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Input type",
        "display_data":[
          "Integer",
          "Float",
          "Boolean",
          "Color",
          "Surface",
          "File Path",
          "Curve",
          "Text",
          "Object",
          "Node",
          -1.0,
          "Any",
          "Path",
          "Particle",
          "Rigidbody Object",
          "Domain",
          "Struct",
          "Strands",
          "Mesh",
          "Trigger",
          -1.0,
          "3D Mesh",
          "3D Light",
          "3D Camera",
          "3D Scene",
          "3D Material",
          -1.0,
          "PCX",
          "Audio",
          "Fluid Domain",
          "SDF"
        ]
      },
      {
        "tooltip":"",
        "name":"Enum label"
      },
      {
        "tooltip":"",
        "name":"Vector size",
        "display_data":[
          "2",
          "3",
          "4"
        ]
      },
      {
        "tooltip":"",
        "name":"Order"
      },
      {
        "tooltip":"",
        "name":"Display preview gizmo"
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"",
        "name":"Button Label"
      },
      {
        "tooltip":"",
        "name":"Visible Condition",
        "display_data":[
          "Show",
          "Hide",
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Equal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Not equal",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Not equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater ",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Greater "
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Greater or equal",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Greater or equal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Lesser"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_condition_type)",
            "data":"Lesser or equal",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Lesser or equal"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Visible Check"
      },
      {
        "tooltip":"",
        "name":"Visible Check To"
      }
    ],
    "name":"Loop Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Loop entrance"
      }
    ]
  },
  "Node_Iterator_Length":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Loop amount",
    "outputs":[
      {
        "tooltip":"",
        "name":"Length"
      }
    ]
  },
  "Node_Iterator_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Loop exit"
      }
    ],
    "name":"Loop Output",
    "outputs":[
    ]
  },
  "Node_Iterator_Sort_Inline_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array in"
      }
    ],
    "name":"Sort Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value 1"
      },
      {
        "tooltip":"",
        "name":"Value 2"
      }
    ]
  },
  "Node_Iterator_Sort_Inline_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Swap"
      }
    ],
    "name":"Sort Output",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array out"
      }
    ]
  },
  "Node_Iterator_Sort_Input":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value in"
      }
    ],
    "name":"Sort Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value in"
      }
    ]
  },
  "Node_Iterator_Sort_Output":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ],
    "name":"Sort Output",
    "outputs":[
    ]
  },
  "Node_Array_Rearrange":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Orders"
      }
    ],
    "name":"Array Rearrange",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Remove":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Index",
          "Value"
        ]
      },
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Spread array"
      }
    ],
    "name":"Array Remove",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Reverse":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Array Reverse",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_JPEG":{
    "tooltip":"Apply JPEG compression to the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Patch Size"
      },
      {
        "tooltip":"",
        "name":"Compression"
      },
      {
        "tooltip":"",
        "name":"Reconstruction"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Transformation",
        "display_data":[
          "Cosine",
          "Zigzag",
          "Smooth Zigzag",
          "Step"
        ]
      },
      {
        "tooltip":"",
        "name":"Phase"
      },
      {
        "tooltip":"",
        "name":"Deconstruct Only"
      },
      {
        "tooltip":"",
        "name":"Reconstruct All"
      }
    ],
    "name":"JPEG",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Path_Wave":{
    "tooltip":"Apply wave effect along the path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Frequency"
      },
      {
        "tooltip":"",
        "name":"Amplitude"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Smooth"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Wiggle"
      },
      {
        "tooltip":"",
        "name":"Wiggle Amplitude"
      },
      {
        "tooltip":"",
        "name":"Wiggle Frequency"
      },
      {
        "tooltip":"",
        "name":"Amplitude over length"
      }
    ],
    "name":"Wave Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Array_Sample":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Step"
      }
    ],
    "name":"Array Sample",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Set":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Value"
      }
    ],
    "name":"Array Set",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Shift":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Shift"
      }
    ],
    "name":"Array Shift",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Array_Shuffle":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array in"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Shuffle Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Shuffled array"
      }
    ]
  },
  "Node_Json_File_Read":{
    "tooltip":"Load .json file using keys.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ],
    "name":"JSON File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Struct"
      }
    ]
  },
  "Node_Json_File_Write":{
    "tooltip":"Save data to .json file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Struct"
      }
    ],
    "name":"JSON File Out",
    "outputs":[
    ]
  },
  "Node_Array_Sort":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array in"
      },
      {
        "tooltip":"",
        "name":"Order",
        "display_data":[
          "Ascending",
          "Descending"
        ]
      }
    ],
    "name":"Sort Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Sorted array"
      },
      {
        "tooltip":"",
        "name":"Sorted index"
      }
    ]
  },
  "Node_Array_Split":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Array Split",
    "outputs":[
      {
        "tooltip":"",
        "name":"val 0"
      }
    ]
  },
  "Node_Array_Zip":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ],
    "name":"Array Zip",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      }
    ]
  },
  "Node_Array":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Any",
          "Surface",
          "Number",
          "Color",
          "Text"
        ]
      },
      {
        "tooltip":"Unpack array and push the contents into the output one by one.",
        "name":"Spread array"
      }
    ],
    "name":"Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Array"
      }
    ]
  },
  "Node_Path":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"Sample position from path.",
        "name":"Path progress"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"",
        "name":"Progress mode",
        "display_data":[
          "Entire line",
          "Segment"
        ]
      },
      {
        "tooltip":"",
        "name":"Round anchor"
      }
    ],
    "name":"Path",
    "outputs":[
      {
        "tooltip":"",
        "name":"Position out"
      },
      {
        "tooltip":"",
        "name":"Path data"
      },
      {
        "tooltip":"",
        "name":"Anchors"
      }
    ]
  },
  "Node_Text":{
    "tooltip":"Draw text on an image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Font"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"",
        "name":"Anti-Aliasing "
      },
      {
        "tooltip":"",
        "name":"Character range"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Fixed dimension"
      },
      {
        "tooltip":"",
        "name":"Horizontal alignment",
        "display_data":[
          "@ref sprite(s_inspector_text_halign)",
          "@ref sprite(s_inspector_text_halign)",
          "@ref sprite(s_inspector_text_halign)"
        ]
      },
      {
        "tooltip":"",
        "name":"Vertical alignment",
        "display_data":[
          "@ref sprite(s_inspector_text_valign)",
          "@ref sprite(s_inspector_text_valign)",
          "@ref sprite(s_inspector_text_valign)"
        ]
      },
      {
        "tooltip":"",
        "name":"Output dimension",
        "display_data":[
          "Fixed",
          "Dynamic"
        ]
      },
      {
        "tooltip":"",
        "name":"Padding"
      },
      {
        "tooltip":"",
        "name":"Letter spacing"
      },
      {
        "tooltip":"",
        "name":"Line height"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Path shift"
      },
      {
        "tooltip":"",
        "name":"Scale to fit"
      },
      {
        "tooltip":"",
        "name":"Render background"
      },
      {
        "tooltip":"",
        "name":"BG Color"
      },
      {
        "tooltip":"",
        "name":"Wave"
      },
      {
        "tooltip":"",
        "name":"Wave amplitude"
      },
      {
        "tooltip":"",
        "name":"Wave scale"
      },
      {
        "tooltip":"",
        "name":"Wave phase"
      },
      {
        "tooltip":"",
        "name":"Wave shape"
      },
      {
        "tooltip":"",
        "name":"Typewriter"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Trim type",
        "display_data":[
          "Character",
          "Word",
          "Line"
        ]
      },
      {
        "tooltip":"",
        "name":"Use full text size"
      },
      {
        "tooltip":"",
        "name":"Max line width"
      }
    ],
    "name":"Draw Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Texture_Remap":{
    "tooltip":"Remap image using texture map. Where red channel control x position and green channel control y position.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"RG Map"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Dimension Source",
        "display_data":[
          "Surface",
          "RG Map"
        ]
      }
    ],
    "name":"Texture Remap",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PB_Box_Contract":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Ratio",
          "Fix"
        ]
      },
      {
        "tooltip":"",
        "name":"Ratio"
      },
      {
        "tooltip":"",
        "name":"Fix Width"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      }
    ],
    "name":"Contract",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox Center"
      },
      {
        "tooltip":"",
        "name":"pBox Side"
      }
    ]
  },
  "Node_PB_Box_Divide_Grid":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Mirror"
      }
    ],
    "name":"Divide Grid",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Threshold":{
    "tooltip":"Set a threshold where pixel darker will becomes black, and brighter to white. Also works with alpha.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Brightness Threshold"
      },
      {
        "tooltip":"",
        "name":"Brightness Smoothness"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Alpha Threshold"
      },
      {
        "tooltip":"",
        "name":"Alpha Smoothness"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Brightness map"
      },
      {
        "tooltip":"",
        "name":"Alpha map"
      }
    ],
    "name":"Threshold",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PB_Box_Divide":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Mirror"
      },
      {
        "tooltip":"",
        "name":"Spacing",
        "display_data":[
          "Space Between",
          "Space Around",
          "Begin",
          "End"
        ]
      }
    ],
    "name":"Divide",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox Content"
      },
      {
        "tooltip":"",
        "name":"pBox Space"
      }
    ]
  },
  "Node_Tile_Random":{
    "tooltip":"Repeat images on a larger surface randomly.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Randomness"
      }
    ],
    "name":"Tile Random",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Time_Remap":{
    "tooltip":"Remap image using texture as time map. Where brighter pixel means using pixel from an older frame.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Map"
      },
      {
        "tooltip":"",
        "name":"Max life"
      },
      {
        "tooltip":"",
        "name":"Loop"
      }
    ],
    "name":"Time Remap",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PB_Box_Inset":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Inset"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Padding",
          "Ratio"
        ]
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Height"
      },
      {
        "tooltip":"",
        "name":"Horizontal alignment"
      },
      {
        "tooltip":"",
        "name":"Vertical alignment"
      }
    ],
    "name":"Inset",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox Inset"
      },
      {
        "tooltip":"",
        "name":"pBox Frame"
      }
    ]
  },
  "Node_PB_Box_Mirror":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Horizontal"
      },
      {
        "tooltip":"",
        "name":"Vertical"
      }
    ],
    "name":"Mirror",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_To_Number":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ],
    "name":"To Number",
    "outputs":[
      {
        "tooltip":"",
        "name":"Number"
      }
    ]
  },
  "Node_PB_Box_Split":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Ratio",
          "Fix Left",
          "Fix Right"
        ]
      },
      {
        "tooltip":"",
        "name":"Ratio"
      },
      {
        "tooltip":"",
        "name":"Fix width"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Mirror"
      }
    ],
    "name":"Split",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox Left"
      },
      {
        "tooltip":"",
        "name":"pBox Right"
      }
    ]
  },
  "Node_To_Text":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ],
    "name":"To Text",
    "outputs":[
      {
        "tooltip":"",
        "name":"Text"
      }
    ]
  },
  "Node_PB_Box_Transform":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer Shift"
      },
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Translate"
      }
    ],
    "name":"Transform",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Tonemap_ACE":{
    "tooltip":"Apply ACE tonemapping.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"ACE",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PB_Draw_Angle":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "@ref sprite(s_inspector_obj_angle)",
          "@ref sprite(s_inspector_obj_angle)",
          "@ref sprite(s_inspector_obj_angle)",
          "@ref sprite(s_inspector_obj_angle)"
        ]
      },
      {
        "tooltip":"",
        "name":"Round"
      }
    ],
    "name":"Angle",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Draw_Blob":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      },
      {
        "tooltip":"",
        "name":"Top"
      },
      {
        "tooltip":"",
        "name":"Bottom"
      }
    ],
    "name":"Blob",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Draw_Diamond":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      }
    ],
    "name":"Diamond",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Draw_Ellipse":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      }
    ],
    "name":"Ellipse",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Draw_Fill":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      }
    ],
    "name":"Fill",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Draw_Line":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      },
      {
        "tooltip":"",
        "name":"Direction",
        "display_data":[
          "@ref sprite(s_inspector_draw_line)",
          "@ref sprite(s_inspector_draw_line)",
          "@ref sprite(s_inspector_draw_line)",
          "@ref sprite(s_inspector_draw_line)"
        ]
      },
      {
        "tooltip":"",
        "name":"Thickness"
      }
    ],
    "name":"Line",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Draw_Rectangle":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      }
    ],
    "name":"Rectangle",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_ASE_File_Read":{
    "tooltip":"Load Aseprite file with support for layers, tags.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Generate layers"
      },
      {
        "tooltip":"",
        "name":"Current tag"
      },
      {
        "tooltip":"",
        "name":"Use cel dimension"
      }
    ],
    "name":"ASE File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Output"
      },
      {
        "tooltip":"",
        "name":"Content"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Palette"
      }
    ]
  },
  "Node_Kuwahara":{
    "tooltip":"Apply Kuwahara filter. Creating a watercolor-like effect.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Kuwahara",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Trail":{
    "tooltip":"Blend animation by filling in the pixel 'in-between' two or more frames.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Max life"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"Maximum distance to search for movement, set to -1 to search the entire image.",
        "name":"Max distance"
      },
      {
        "tooltip":"Make trail track pixels of the same color, instead of the closet pixels.",
        "name":"Match color"
      },
      {
        "tooltip":"Blend color between two pixel smoothly.",
        "name":"Blend color"
      },
      {
        "tooltip":"",
        "name":"Alpha over life"
      }
    ],
    "name":"Trail",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Trail UV"
      }
    ]
  },
  "Node_PB_Draw_Round_Rectangle":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Uniform",
          "Per Corner"
        ]
      },
      {
        "tooltip":"",
        "name":"Corner Radius"
      },
      {
        "tooltip":"",
        "name":"Corner Radius"
      },
      {
        "tooltip":"",
        "name":"Relative"
      },
      {
        "tooltip":"",
        "name":"Cut Corner"
      }
    ],
    "name":"Round Rectangle",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Transform_Array":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Postion"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      }
    ],
    "name":"Transform Array",
    "outputs":[
      {
        "tooltip":"",
        "name":"Transform"
      }
    ]
  },
  "Node_PB_Draw_Semi_Ellipse":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "@ref sprite(s_inspector_obj_hemicircle)",
          "@ref sprite(s_inspector_obj_hemicircle)",
          "@ref sprite(s_inspector_obj_hemicircle)",
          "@ref sprite(s_inspector_obj_hemicircle)"
        ]
      }
    ],
    "name":"Semi-Ellipse",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_ASE_layer":{
    "tooltip":"Load Aseprite project file",
    "inputs":[
      {
        "tooltip":"",
        "name":"ASE data"
      },
      {
        "tooltip":"",
        "name":"Crop Output"
      }
    ],
    "name":"ASE Layer",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Atlas_Draw":{
    "tooltip":"Render image atlas to a surface.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Atlas"
      }
    ],
    "name":"Draw Atlas",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_Level_Selector":{
    "tooltip":"Isolate part of the image that falls in the selected brightness range.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Midpoint"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Midpoint map"
      },
      {
        "tooltip":"",
        "name":"Range map"
      },
      {
        "tooltip":"",
        "name":"Keep Original"
      }
    ],
    "name":"Level Selector",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PB_Draw_Trapezoid":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Apply Mask"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Horizontal",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Horizontal"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_alignment)",
            "data":"Vertical",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Vertical"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Symmetric",
          "Independent"
        ]
      },
      {
        "tooltip":"",
        "name":"Bevel"
      },
      {
        "tooltip":"",
        "name":"Bevel 1"
      },
      {
        "tooltip":"",
        "name":"Bevel 2"
      },
      {
        "tooltip":"",
        "name":"Invert"
      }
    ],
    "name":"Trapezoid",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Atlas_Get":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Atlas"
      }
    ],
    "name":"Atlas Get",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Blend"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ]
  },
  "Node_PB_Fx_Add":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"pbox"
      }
    ],
    "name":"Add",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Brick":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Dissolve"
      },
      {
        "tooltip":"",
        "name":"Detail"
      },
      {
        "tooltip":"",
        "name":"Dissolve Scale"
      }
    ],
    "name":"Brick",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Atlas_Set":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Atlas"
      },
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Blend"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Recalculate Position"
      }
    ],
    "name":"Atlas Set",
    "outputs":[
      {
        "tooltip":"",
        "name":"Atlas"
      }
    ]
  },
  "Node_PB_Fx_Hash":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Hash"
      },
      {
        "tooltip":"",
        "name":"Invert"
      },
      {
        "tooltip":"",
        "name":"Dissolve"
      },
      {
        "tooltip":"",
        "name":"Detail"
      },
      {
        "tooltip":"",
        "name":"Dissolve Scale"
      }
    ],
    "name":"Hashing",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Atlas_Struct":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Atlas"
      }
    ],
    "name":"Atlas to Struct",
    "outputs":[
      {
        "tooltip":"",
        "name":"Struct"
      }
    ]
  },
  "Node_Level":{
    "tooltip":"Adjust brightness of an image by changing its brightness range.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"White in"
      },
      {
        "tooltip":"",
        "name":"Red in"
      },
      {
        "tooltip":"",
        "name":"Green in"
      },
      {
        "tooltip":"",
        "name":"Blue in"
      },
      {
        "tooltip":"",
        "name":"Alpha in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"White out"
      },
      {
        "tooltip":"",
        "name":"Red out"
      },
      {
        "tooltip":"",
        "name":"Green out"
      },
      {
        "tooltip":"",
        "name":"Blue out"
      },
      {
        "tooltip":"",
        "name":"Alpha out"
      }
    ],
    "name":"Level",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Atlas":{
    "tooltip":"Replace transparent pixel with the closest non-transparent pixel.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Method",
        "display_data":[
          "Radial",
          "Scan"
        ]
      }
    ],
    "name":"Pixel Expand",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PB_Fx_Highlight":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Highlight Area"
      },
      {
        "tooltip":"",
        "name":"Light Color"
      },
      {
        "tooltip":"",
        "name":"Shadow Color"
      },
      {
        "tooltip":"",
        "name":"Roughness"
      },
      {
        "tooltip":"",
        "name":"Roughness Scale"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Highlight",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Intersect":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Intersect",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Outline":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Corner"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Side",
        "display_data":[
          "Inside",
          "Outside"
        ]
      }
    ],
    "name":"Outline",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Radial":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Amount"
      }
    ],
    "name":"Radial",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Shading":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Color"
      }
    ],
    "name":"Shading",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Stack":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Direction",
        "display_data":[
          "@ref sprite(s_inspector_direction)",
          "@ref sprite(s_inspector_direction)",
          "@ref sprite(s_inspector_direction)",
          "@ref sprite(s_inspector_direction)"
        ]
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Highlight"
      },
      {
        "tooltip":"",
        "name":"Highlight Color"
      },
      {
        "tooltip":"",
        "name":"Invert"
      }
    ],
    "name":"Stack",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Strip":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "X",
          "Y"
        ]
      }
    ],
    "name":"Strip",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PB_Fx_Subtract":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"pBox"
      },
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Subtract",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_Audio_Loudness":{
    "tooltip":"Calculate volume of an audio bit array.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Audio Data"
      }
    ],
    "name":"Audio Volume",
    "outputs":[
      {
        "tooltip":"",
        "name":"Loudness"
      }
    ]
  },
  "Node_PB_Layer":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Layer"
      }
    ],
    "name":"Layer",
    "outputs":[
      {
        "tooltip":"",
        "name":"pBox"
      }
    ]
  },
  "Node_PCX_Array_Get":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Index"
      }
    ],
    "name":"Array Get",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_PCX_Array_Set":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Array"
      },
      {
        "tooltip":"",
        "name":"Index"
      },
      {
        "tooltip":"",
        "name":"Value"
      }
    ],
    "name":"Array Set",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_PCX_Condition":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Condition"
      },
      {
        "tooltip":"",
        "name":"True"
      },
      {
        "tooltip":"",
        "name":"False"
      }
    ],
    "name":"Condition",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_PCX_Equation":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Equation"
      }
    ],
    "name":"Equation",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_PCX_fn_Math":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Operator",
        "display_data":[
          "Add",
          "Subtract",
          "Multiply",
          "Divide",
          "Power",
          "Modulo",
          "Absolute",
          -1.0,
          "Round",
          "Floor",
          "Ceil",
          -1.0,
          "Sin",
          "Cos",
          "Tan",
          "Arcsin",
          "Arccos",
          "Arctan",
          -1.0,
          "Min",
          "Max",
          "Clamp",
          -1.0,
          "Lerp"
        ]
      },
      {
        "tooltip":"",
        "name":"x"
      },
      {
        "tooltip":"",
        "name":"y"
      },
      {
        "tooltip":"",
        "name":"z"
      }
    ],
    "name":"Math",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_Audio_Window":{
    "tooltip":"Take a slice of an audio array based on the current frame.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Audio data"
      },
      {
        "tooltip":"Amount of bits to extract.",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Location"
      },
      {
        "tooltip":"",
        "name":"Cursor location",
        "display_data":[
          "Start",
          "Middle",
          "End"
        ]
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"Set window cursor to match animation timeline.",
        "name":"Match timeline"
      }
    ],
    "name":"Audio Window",
    "outputs":[
      {
        "tooltip":"",
        "name":"Bit Array"
      }
    ]
  },
  "Node_PCX_fn_Random":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Min"
      },
      {
        "tooltip":"",
        "name":"Max"
      },
      {
        "tooltip":"",
        "name":"Integer"
      }
    ],
    "name":"Random",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_PCX_fn_Surface_Height":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Surface Height",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_De_Corner":{
    "tooltip":"Attempt to remove single pixel corner from the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Tolerance"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Double",
          "Diagonal"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Include"
      }
    ],
    "name":"De-Corner",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_De_Stray":{
    "tooltip":"Attempt to remove orphan pixel.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Tolerance"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Strictness",
        "display_data":[
          "Low",
          "High",
          "Stray-only"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Fill Empty"
      }
    ],
    "name":"De-Stray",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_PCX_fn_Surface_Width":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ],
    "name":"Surface Width",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_PCX_fn_var":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Default Value"
      }
    ],
    "name":"Fn Variable",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_Transform":{
    "tooltip":"Move, rotate, and scale image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Output dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      },
      {
        "tooltip":"",
        "name":"Relative anchor"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Render Mode",
        "display_data":[
          "Normal",
          "Tile",
          "Wrap"
        ]
      },
      {
        "tooltip":"Make the surface rotates to follow its movement.",
        "name":"Rotate by velocity"
      },
      {
        "tooltip":"",
        "name":"Output dimension type",
        "display_data":[
          "Same as input",
          "Constant",
          "Relative to input",
          "Transformed"
        ]
      },
      {
        "tooltip":"Round position to the nearest integer value to avoid jittering.",
        "name":"Round position"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Echo"
      },
      {
        "tooltip":"",
        "name":"Echo amount"
      },
      {
        "tooltip":"",
        "name":"Alpha"
      }
    ],
    "name":"Transform",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Dimension"
      }
    ]
  },
  "Node_PCX_var":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Name"
      },
      {
        "tooltip":"",
        "name":"Value"
      }
    ],
    "name":"Variable",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_Average":{
    "tooltip":"Average color of every pixels in the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Average",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Color"
      }
    ]
  },
  "Node_Perlin_Extra":{
    "tooltip":"Random perlin noise made with different algorithms.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"Tiling only works with integer scale, and some effect type doesn't support tiling.",
        "name":"Tile"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Color mode",
        "display_data":[
          "Greyscale",
          "RGB",
          "HSV"
        ]
      },
      {
        "tooltip":"",
        "name":"Color R range"
      },
      {
        "tooltip":"",
        "name":"Color G range"
      },
      {
        "tooltip":"",
        "name":"Color B range"
      },
      {
        "tooltip":"",
        "name":"Noise type",
        "display_data":[
          "Absolute worley",
          "Fluid",
          "Noisy",
          "Camo",
          "Blocky",
          "Max",
          "Vine"
        ]
      },
      {
        "tooltip":"",
        "name":"Parameter A"
      },
      {
        "tooltip":"",
        "name":"Parameter B"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Parameter A map"
      },
      {
        "tooltip":"",
        "name":"Parameter B map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Extra Perlins",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Delay":{
    "tooltip":"Delay the animation by fix amount of frames.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Frames"
      }
    ],
    "name":"Delay",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_Trigger_Bool":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Boolean"
      },
      {
        "tooltip":"",
        "name":"Trigger condition",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_trigger_cond)",
            "data":"True frame",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"True frame"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_trigger_cond)",
            "data":"False to True",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"False to True"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_trigger_cond)",
            "data":"True to False",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"True to False"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_trigger_cond)",
            "data":"Value changed",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Value changed"
          }
        ]
      }
    ],
    "name":"Boolean Trigger",
    "outputs":[
      {
        "tooltip":"",
        "name":"Trigger"
      }
    ]
  },
  "Node_Trigger":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Trigger"
      }
    ],
    "name":"Trigger",
    "outputs":[
      {
        "tooltip":"",
        "name":"Trigger"
      }
    ]
  },
  "Node_Base_Convert":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Base from"
      },
      {
        "tooltip":"",
        "name":"Base to"
      }
    ],
    "name":"Convert Base",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Perlin":{
    "tooltip":"Generate perlin noise.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Tile"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Color mode",
        "display_data":[
          "Greyscale",
          "RGB",
          "HSV"
        ]
      },
      {
        "tooltip":"",
        "name":"Color R range"
      },
      {
        "tooltip":"",
        "name":"Color G range"
      },
      {
        "tooltip":"",
        "name":"Color B range"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      }
    ],
    "name":"Perlin Noise",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Pin":{
    "tooltip":"Create a pin to organize your connection. Can be create by double clicking on a connection line.",
    "inputs":[
      {
        "tooltip":"",
        "name":"In"
      }
    ],
    "name":"Pin",
    "outputs":[
      {
        "tooltip":"",
        "name":"Out"
      }
    ]
  },
  "Node_Pixel_Builder":{
    "tooltip":"Will break, do not create. please. Why is it here??",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      }
    ],
    "name":"Pixel Builder",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface Out"
      }
    ]
  },
  "Node_Pixel_Cloud":{
    "tooltip":"Displace each pixel of the image randomly.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Color over lifetime"
      },
      {
        "tooltip":"",
        "name":"Distance"
      },
      {
        "tooltip":"",
        "name":"Alpha over lifetime"
      },
      {
        "tooltip":"",
        "name":"Random blending"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      }
    ],
    "name":"Pixel Cloud",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Diffuse":{
    "tooltip":"Simulate diffusion like simulation.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Density field"
      },
      {
        "tooltip":"",
        "name":"Dissipation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Randomness"
      },
      {
        "tooltip":"",
        "name":"Flow rate"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"External"
      },
      {
        "tooltip":"",
        "name":"External Strength"
      },
      {
        "tooltip":"",
        "name":"Detail"
      },
      {
        "tooltip":"",
        "name":"External Type",
        "display_data":[
          "Point",
          "Vector"
        ]
      },
      {
        "tooltip":"",
        "name":"External Direction"
      }
    ],
    "name":"Diffuse",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Dilate":{
    "tooltip":"Expand the image around a mid point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Radius map"
      }
    ],
    "name":"Dilate",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Tunnel_In":{
    "tooltip":"Create tunnel for sending value based on key matching.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Name"
      },
      {
        "tooltip":"",
        "name":"Value in"
      }
    ],
    "name":"Tunnel In",
    "outputs":[
    ]
  },
  "Node_Pixel_Sampler":{
    "tooltip":"Map image on to each individual pixels of another image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Base Texture"
      },
      {
        "tooltip":"",
        "name":"Sample Mode",
        "display_data":[
          "Keep Size",
          "Expand"
        ]
      },
      {
        "tooltip":"",
        "name":"Match Mode",
        "display_data":[
          "Brightness",
          "RGB",
          "Hue"
        ]
      },
      {
        "tooltip":"",
        "name":"Surfaces"
      },
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Color Blending",
        "display_data":[
          "None",
          "Multiply"
        ]
      },
      {
        "tooltip":"",
        "name":"Blending Intensity"
      }
    ],
    "name":"Pixel Sampler",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Tunnel_Out":{
    "tooltip":"Receive value from tunnel in of the same key.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Name"
      }
    ],
    "name":"Tunnel Out",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value out"
      }
    ]
  },
  "Node_Twirl":{
    "tooltip":"Twist the image around a mid point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Radius map"
      }
    ],
    "name":"Twirl",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Bend":{
    "tooltip":"Warp an image into a predefined shape.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_bend_type)",
            "data":"Arc",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Arc"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_bend_type)",
            "data":"Wave",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Wave"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Axis",
        "display_data":[
          "x",
          "y"
        ]
      },
      {
        "tooltip":"",
        "name":"Amount"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Shift"
      }
    ],
    "name":"Bend",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Unicode":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Unicode"
      }
    ],
    "name":"Unicode",
    "outputs":[
      {
        "tooltip":"",
        "name":"Character"
      }
    ]
  },
  "Node_Pixel_Sort":{
    "tooltip":"Sort pixel by brightness in horizontal, or vertial axis.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Pixel Sort",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Bevel":{
    "tooltip":"Apply 2D bevel on the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Height"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Slope",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Linear",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Linear"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Smooth",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Smooth"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Circular",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Circular"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Height map"
      }
    ],
    "name":"Bevel",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Directory_Search":{
    "tooltip":"Search for files in directory.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Extensions"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Surface",
          "Text"
        ]
      },
      {
        "tooltip":"",
        "name":"Recursive"
      }
    ],
    "name":"Directory Search",
    "outputs":[
      {
        "tooltip":"",
        "name":"Outputs"
      },
      {
        "tooltip":"",
        "name":"Paths"
      }
    ]
  },
  "Node_Blend_Edge":{
    "tooltip":"Blend the edges of an image to create tilable patterns.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Types",
        "display_data":[
          "Both",
          "Horizontal",
          "Vertical"
        ]
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Width map"
      },
      {
        "tooltip":"",
        "name":"Blending"
      },
      {
        "tooltip":"",
        "name":"Smoothness"
      }
    ],
    "name":"Blend Edge",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Displace":{
    "tooltip":"Distort image using another image as a map.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Displace map"
      },
      {
        "tooltip":"Vector to displace pixel by.",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"Brightness value to be use as a basis for 'no displacement'.",
        "name":"Mid value"
      },
      {
        "tooltip":"Use color data for extra information.\r\n    - Linear: Displace along a single line (defined by the position value).\r\n    - Vector: Use red as X displacement, green as Y displacement.\r\n    - Angle: Use red as angle, green as distance.\r\n    - Gradient: Displace down the brightness value defined by the Displace map.",
        "name":"Mode",
        "display_data":[
          "Linear",
          "Vector",
          "Angle",
          "Gradient"
        ]
      },
      {
        "tooltip":"If not set, then strength value is multiplied directly to the displacement.\r\nIf set, then strength value control how many times the effect applies on itself.",
        "name":"Iterate"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Overwrite",
          "Min",
          "Max"
        ]
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Separate axis"
      },
      {
        "tooltip":"",
        "name":"Displace map 2"
      }
    ],
    "name":"Displace",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Line":{
    "tooltip":"Draw line on an image. Connect path data to it to draw line from path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Segment"
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Wiggle"
      },
      {
        "tooltip":"",
        "name":"Random seed"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"Draw line along path.",
        "name":"Path"
      },
      {
        "tooltip":"Range of the path to draw.",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Shift"
      },
      {
        "tooltip":"",
        "name":"Color over length"
      },
      {
        "tooltip":"",
        "name":"Width over length"
      },
      {
        "tooltip":"Apply the full 'width over length' to the trimmed path.",
        "name":"Span width over path"
      },
      {
        "tooltip":"",
        "name":"Round cap"
      },
      {
        "tooltip":"",
        "name":"Round segment"
      },
      {
        "tooltip":"Apply the full 'color over length' to the trimmed path.",
        "name":"Span color over path"
      },
      {
        "tooltip":"",
        "name":"Width pass"
      },
      {
        "tooltip":"Render pixel perfect 1px line.",
        "name":"1px mode"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"Fix length of each segment instead of segment count.",
        "name":"Fix length"
      },
      {
        "tooltip":"",
        "name":"Segment length"
      },
      {
        "tooltip":"",
        "name":"Texture position"
      },
      {
        "tooltip":"",
        "name":"Texture Rotation"
      },
      {
        "tooltip":"",
        "name":"Texture scale"
      },
      {
        "tooltip":"",
        "name":"Random Blend"
      },
      {
        "tooltip":"",
        "name":"Invert"
      },
      {
        "tooltip":"",
        "name":"Clamp range"
      },
      {
        "tooltip":"",
        "name":"Data Type",
        "display_data":[
          "None",
          "Path",
          "Segments"
        ]
      },
      {
        "tooltip":"",
        "name":"Segments"
      },
      {
        "tooltip":"",
        "name":"Scale texture to length"
      },
      {
        "tooltip":"",
        "name":"Use Path Bounding box"
      },
      {
        "tooltip":"",
        "name":"Padding"
      }
    ],
    "name":"Draw Line",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      },
      {
        "tooltip":"",
        "name":"Width Pass"
      }
    ]
  },
  "Node_Local_Analyze":{
    "tooltip":"Apply non-linear operation (minimum, maximum) on each pixel locally.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Algorithm",
        "display_data":[
          "Average (Blur)",
          "Maximum",
          "Minimum"
        ]
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Shape",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_rectangle)",
            "data":"Square",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Square"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_circle)",
            "data":"Circle",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Circle"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_shape_misc)",
            "data":"Diamond",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Diamond"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Local Analyze",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Display_Image":{
    "tooltip":"Display image on the graph.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Smooth transform"
      }
    ],
    "name":"Display Image",
    "outputs":[
    ]
  },
  "Node_Logic":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_logic)",
            "data":"And",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"And"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_logic)",
            "data":"Or",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Or"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_logic)",
            "data":"Not",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Not"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_logic)",
            "data":"Nand",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Nand"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_logic)",
            "data":"Nor",
            "spr_ind":4.0,
            "spr_blend":9404030.0,
            "name":"Nor"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_logic)",
            "data":"Xor",
            "spr_ind":5.0,
            "spr_blend":9404030.0,
            "name":"Xor"
          }
        ]
      }
    ],
    "name":"Logic Opr",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Blend":{
    "tooltip":"Blend 2 images using different blend modes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Foreground"
      },
      {
        "tooltip":"",
        "name":"Blend mode",
        "display_data":[
          "Normal",
          "Add",
          "Subtract",
          "Multiply",
          "Screen",
          "Overlay",
          "Hue",
          "Saturation",
          "Luminosity",
          "Maximum",
          "Minimum",
          "Replace",
          "Difference"
        ]
      },
      {
        "tooltip":"",
        "name":"Opacity"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Fill mode",
        "display_data":[
          "None",
          "Stretch",
          "Tile"
        ]
      },
      {
        "tooltip":"",
        "name":"Output dimension",
        "display_data":[
          "Background",
          "Forground",
          "Mask",
          "Maximum",
          "Constant"
        ]
      },
      {
        "tooltip":"",
        "name":"Constant dimension"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Preserve alpha"
      },
      {
        "tooltip":"",
        "name":"Horizontal Align",
        "display_data":[
          "@ref sprite(s_inspector_surface_halign)",
          "@ref sprite(s_inspector_surface_halign)",
          "@ref sprite(s_inspector_surface_halign)"
        ]
      },
      {
        "tooltip":"",
        "name":"Vertical Align",
        "display_data":[
          "@ref sprite(s_inspector_surface_valign)",
          "@ref sprite(s_inspector_surface_valign)",
          "@ref sprite(s_inspector_surface_valign)"
        ]
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Position"
      }
    ],
    "name":"Blend",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blobify":{
    "tooltip":"Round off sharp corner in BW image by bluring and thresholding.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Radius"
      },
      {
        "tooltip":"",
        "name":"Threshold"
      }
    ],
    "name":"Blobify",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Plot_Linear":{
    "tooltip":"Plot graph or bar chart from array of number.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Data"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Sample frequency"
      },
      {
        "tooltip":"",
        "name":"Origin"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Base Color"
      },
      {
        "tooltip":"",
        "name":"Graph Thickness"
      },
      {
        "tooltip":"",
        "name":"Background"
      },
      {
        "tooltip":"",
        "name":"Background color"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_plot_linear_type)",
            "data":"Bar chart",
            "spr_ind":0.0,
            "spr_blend":9404030.0,
            "name":"Bar chart"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_plot_linear_type)",
            "data":"Graph",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Graph"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Value Offset"
      },
      {
        "tooltip":"",
        "name":"Color Over Sample"
      },
      {
        "tooltip":"",
        "name":"Trim mode",
        "display_data":[
          "Range",
          "Window"
        ]
      },
      {
        "tooltip":"",
        "name":"Window Size"
      },
      {
        "tooltip":"",
        "name":"Window Offset"
      },
      {
        "tooltip":"",
        "name":"Spacing"
      },
      {
        "tooltip":"",
        "name":"Bar Width"
      },
      {
        "tooltip":"",
        "name":"Rounded Bar"
      },
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Flip Value"
      },
      {
        "tooltip":"",
        "name":"Loop"
      },
      {
        "tooltip":"",
        "name":"Smooth"
      },
      {
        "tooltip":"",
        "name":"Color Over Value"
      },
      {
        "tooltip":"",
        "name":"Value range"
      },
      {
        "tooltip":"",
        "name":"Absolute"
      },
      {
        "tooltip":"",
        "name":"Sample Gradient map"
      },
      {
        "tooltip":"",
        "name":"Sample Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Value Gradient map"
      },
      {
        "tooltip":"",
        "name":"Value Gradient map range"
      }
    ],
    "name":"Draw Bar \/ Graph",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Point_In_Area":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Area"
      },
      {
        "tooltip":"",
        "name":"Point"
      },
      {
        "tooltip":"",
        "name":"Include Boundary"
      }
    ],
    "name":"Point in Area",
    "outputs":[
      {
        "tooltip":"",
        "name":"Is in"
      }
    ]
  },
  "Node_Bloom":{
    "tooltip":"Apply bloom effect, blurring and brighten the bright part of the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"Bloom blur radius.",
        "name":"Size"
      },
      {
        "tooltip":"How bright a pixel should be to start blooming.",
        "name":"Tolerance"
      },
      {
        "tooltip":"Blend intensity.",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Bloom mask"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Aspect Ratio"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Types",
        "display_data":[
          "Gaussian",
          "Zoom"
        ]
      },
      {
        "tooltip":"",
        "name":"Zoom Origin"
      }
    ],
    "name":"Bloom",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Polar":{
    "tooltip":"Convert image to polar coordinate.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert"
      },
      {
        "tooltip":"",
        "name":"Blend"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Radius mode",
        "display_data":[
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Linear",
            "spr_ind":2.0,
            "spr_blend":9404030.0,
            "name":"Linear"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Inverse Square",
            "spr_ind":1.0,
            "spr_blend":9404030.0,
            "name":"Inverse Square"
          },
          {
            "tooltip":"",
            "spr":"@ref sprite(s_node_curve)",
            "data":"Logarithm",
            "spr_ind":3.0,
            "spr_blend":9404030.0,
            "name":"Logarithm"
          }
        ]
      },
      {
        "tooltip":"",
        "name":"Swap"
      },
      {
        "tooltip":"",
        "name":"Blend map"
      },
      {
        "tooltip":"",
        "name":"Tile"
      }
    ],
    "name":"Polar",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Bokeh":{
    "tooltip":"Create bokeh effect. Blur lighter color in a lens-like manner.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      }
    ],
    "name":"Lens Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Lua_Compute":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Function name"
      },
      {
        "tooltip":"",
        "name":"Return type",
        "display_data":[
          "Number",
          "String",
          "Struct"
        ]
      },
      {
        "tooltip":"@ref object(o_dialog_lua_reference)",
        "name":"Lua code"
      },
      {
        "tooltip":"",
        "name":"Execution thread"
      },
      {
        "tooltip":"",
        "name":"Execute on frame"
      }
    ],
    "name":"Lua Compute",
    "outputs":[
      {
        "tooltip":"",
        "name":"Execution thread"
      },
      {
        "tooltip":"",
        "name":"Return value"
      }
    ]
  },
  "Node_Posterize":{
    "tooltip":"Reduce and remap color to match a palette.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Palette"
      },
      {
        "tooltip":"",
        "name":"Use palette"
      },
      {
        "tooltip":"",
        "name":"Steps"
      },
      {
        "tooltip":"",
        "name":"Gamma"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Posterize alpha"
      },
      {
        "tooltip":"",
        "name":"Gamma map"
      },
      {
        "tooltip":"",
        "name":"Space",
        "display_data":[
          "RGB",
          "LAB"
        ]
      }
    ],
    "name":"Posterize",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Print":{
    "tooltip":"Display text to notification.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Text"
      }
    ],
    "name":"Print",
    "outputs":[
    ]
  },
  "Node_Lua_Global":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"@ref object(o_dialog_lua_reference)",
        "name":"Lua code"
      },
      {
        "tooltip":"",
        "name":"Run order",
        "display_data":[
          "On start",
          "Every frame"
        ]
      },
      {
        "tooltip":"",
        "name":"Execution thread"
      }
    ],
    "name":"Lua Global",
    "outputs":[
      {
        "tooltip":"",
        "name":"Execution thread"
      }
    ]
  },
  "Node_Lua_Surface":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Function name"
      },
      {
        "tooltip":"",
        "name":"Output dimension"
      },
      {
        "tooltip":"@ref object(o_dialog_lua_reference)",
        "name":"Lua code"
      },
      {
        "tooltip":"",
        "name":"Execution thread"
      },
      {
        "tooltip":"",
        "name":"Execute on frame"
      }
    ],
    "name":"Lua Surface",
    "outputs":[
      {
        "tooltip":"",
        "name":"Execution thread"
      },
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Contrast":{
    "tooltip":"Blur only pixel of a similiar color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"Brightness different to be blur together.",
        "name":"Threshold"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Contrast Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Directional":{
    "tooltip":"Blur image given a direction.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Direction"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Direction map"
      },
      {
        "tooltip":"",
        "name":"Single direction"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Directional Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Math":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Add",
          "Subtract",
          "Multiply",
          "Divide",
          "Power",
          "Root",
          "Sin",
          "Cos",
          "Tan",
          "Modulo",
          "Floor",
          "Ceil",
          "Round",
          "Lerp",
          "Abs",
          "Clamp",
          "Snap"
        ]
      },
      {
        "tooltip":"",
        "name":"a"
      },
      {
        "tooltip":"",
        "name":"b"
      },
      {
        "tooltip":"",
        "name":"Degree angle"
      },
      {
        "tooltip":"",
        "name":"To integer"
      },
      {
        "tooltip":"",
        "name":"Amount"
      }
    ],
    "name":"Math",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Display_Text":{
    "tooltip":"Display text on the graph.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Text"
      },
      {
        "tooltip":"",
        "name":"Style",
        "display_data":[
          "Header",
          "Sub header",
          "Normal"
        ]
      },
      {
        "tooltip":"",
        "name":"Alpha"
      },
      {
        "tooltip":"",
        "name":"Line width"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Line height"
      }
    ],
    "name":"Display Text",
    "outputs":[
    ]
  },
  "Node_Mesh_Create_Path":{
    "tooltip":"Create mesh from path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Sample"
      },
      {
        "tooltip":"",
        "name":"Algorithm",
        "display_data":[
          "Ear Clipping",
          "Convex Fan",
          "Delaunay"
        ]
      }
    ],
    "name":"Path to Mesh",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Dither":{
    "tooltip":"Reduce color and use dithering to preserve original color.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Palette"
      },
      {
        "tooltip":"",
        "name":"Pattern",
        "display_data":[
          "2 x 2 Bayer",
          "4 x 4 Bayer",
          "8 x 8 Bayer",
          "White Noise",
          "Custom"
        ]
      },
      {
        "tooltip":"",
        "name":"Dither map"
      },
      {
        "tooltip":"",
        "name":"Contrast"
      },
      {
        "tooltip":"",
        "name":"Contrast map"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Color",
          "Alpha"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Use palette"
      },
      {
        "tooltip":"",
        "name":"Steps"
      }
    ],
    "name":"Dither",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Mesh_Transform":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Anchor"
      }
    ],
    "name":"Mesh Transform",
    "outputs":[
      {
        "tooltip":"",
        "name":"Mesh"
      }
    ]
  },
  "Node_Blur_Path":{
    "tooltip":"Blur pixel along path.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Blur Path"
      },
      {
        "tooltip":"",
        "name":"Resolution"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Intensity"
      },
      {
        "tooltip":"",
        "name":"Intensity Along Path"
      },
      {
        "tooltip":"",
        "name":"Range"
      },
      {
        "tooltip":"",
        "name":"Path Origin"
      }
    ],
    "name":"Path Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Radial":{
    "tooltip":"Blur image by rotating around a mid point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Radial Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Project_Data":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Project Data",
    "outputs":[
      {
        "tooltip":"",
        "name":"Name"
      },
      {
        "tooltip":"",
        "name":"Description"
      },
      {
        "tooltip":"",
        "name":"Author"
      },
      {
        "tooltip":"",
        "name":"Contact"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Blur_Shape":{
    "tooltip":"Blur image using another image as blur map.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Blur Shape"
      },
      {
        "tooltip":"",
        "name":"Blur mask"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Mode",
        "display_data":[
          "Blur",
          "Max"
        ]
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Shape Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Pytagorean_Tile":{
    "tooltip":"Generate Pytagorean tile pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Rotation"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Height map",
          "Texture grid"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Truchet"
      },
      {
        "tooltip":"",
        "name":"Truchet seed"
      },
      {
        "tooltip":"",
        "name":"Truchet threshold"
      },
      {
        "tooltip":"",
        "name":"Phase"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Texture angle"
      },
      {
        "tooltip":"",
        "name":"Level"
      }
    ],
    "name":"Pytagorean Tile",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Simple":{
    "tooltip":"Blur image using simpler algorithm. Allowing for variable blur strength.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Blur mask"
      },
      {
        "tooltip":"Replace all color while keeping the alpha. Used to\nfix grey outline when bluring transparent pixel.",
        "name":"Override color"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Gradient"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Use Gradient"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Non-Uniform Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Quasicrystal":{
    "tooltip":"Generate Quasicrystal pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Color 1"
      },
      {
        "tooltip":"",
        "name":"Color 2"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Phase"
      },
      {
        "tooltip":"",
        "name":"Phasemap"
      },
      {
        "tooltip":"",
        "name":"Angle Range"
      }
    ],
    "name":"Quasicrystal",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Slope":{
    "tooltip":"Blur along a gradient of a slope map.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Slope Map"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Step"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Slope Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Blur_Zoom":{
    "tooltip":"Blur image by zooming in\/out from a mid point.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Strength"
      },
      {
        "tooltip":"",
        "name":"Center"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Zoom mode",
        "display_data":[
          "Start",
          "Middle",
          "End"
        ]
      },
      {
        "tooltip":"",
        "name":"Blur mask"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Strength map"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      }
    ],
    "name":"Zoom Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Random_Shape":{
    "tooltip":"Generate random shape, use for testing purposes.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"Draw Random Shape",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_DynaSurf_In":{
    "tooltip":"",
    "inputs":[
    ],
    "name":"Input",
    "outputs":[
      {
        "tooltip":"",
        "name":"Value"
      }
    ]
  },
  "Node_Random_Tile":{
    "tooltip":"Generate Random tile pattern.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Gap"
      },
      {
        "tooltip":"",
        "name":"Tile color"
      },
      {
        "tooltip":"",
        "name":"Gap color"
      },
      {
        "tooltip":"",
        "name":"Render type",
        "display_data":[
          "Colored tile",
          "Height map",
          "Texture grid"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Texture"
      },
      {
        "tooltip":"",
        "name":"Anti aliasing"
      },
      {
        "tooltip":"",
        "name":"Scale map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Gap map"
      },
      {
        "tooltip":"",
        "name":"Truchet"
      },
      {
        "tooltip":"",
        "name":"Truchet seed"
      },
      {
        "tooltip":"",
        "name":"Truchet threshold"
      },
      {
        "tooltip":"",
        "name":"Gradient map"
      },
      {
        "tooltip":"",
        "name":"Gradient map range"
      },
      {
        "tooltip":"",
        "name":"Texture angle"
      },
      {
        "tooltip":"",
        "name":"Level"
      }
    ],
    "name":"Random Tile",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Random":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"seed"
      },
      {
        "tooltip":"",
        "name":"from"
      },
      {
        "tooltip":"",
        "name":"to"
      }
    ],
    "name":"Random",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_DynaSurf_Out_Height":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Height"
      }
    ],
    "name":"getHeight",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_Blur":{
    "tooltip":"Blur image smoothly.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Size"
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"Replace all color while keeping the alpha. Used to\nfix grey outline when bluring transparent pixel.",
        "name":"Override color"
      },
      {
        "tooltip":"",
        "name":"Color"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Gamma Correction"
      },
      {
        "tooltip":"",
        "name":"Aspect Ratio"
      },
      {
        "tooltip":"",
        "name":"Direction"
      }
    ],
    "name":"Blur",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_DynaSurf_Out_Width":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Width"
      }
    ],
    "name":"getWidth",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_DynaSurf_Out":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"x"
      },
      {
        "tooltip":"",
        "name":"y"
      },
      {
        "tooltip":"",
        "name":"sx"
      },
      {
        "tooltip":"",
        "name":"sy"
      },
      {
        "tooltip":"",
        "name":"angle"
      },
      {
        "tooltip":"",
        "name":"color"
      },
      {
        "tooltip":"",
        "name":"alpha"
      }
    ],
    "name":"Output",
    "outputs":[
      {
        "tooltip":"",
        "name":"PCX"
      }
    ]
  },
  "Node_Rate_Remap":{
    "tooltip":"Remap animation to a new framerate.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Framerate"
      },
      {
        "tooltip":"",
        "name":"Active"
      }
    ],
    "name":"Rate Remap",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_RD":{
    "tooltip":"Simulate reaction diffusion effect.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Kill rate"
      },
      {
        "tooltip":"",
        "name":"Feed rate"
      },
      {
        "tooltip":"",
        "name":"Timestep"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Diffusion A"
      },
      {
        "tooltip":"",
        "name":"Diffusion B"
      },
      {
        "tooltip":"",
        "name":"Add B"
      },
      {
        "tooltip":"",
        "name":"Kill map"
      },
      {
        "tooltip":"",
        "name":"Feed map"
      },
      {
        "tooltip":"",
        "name":"Time map"
      },
      {
        "tooltip":"",
        "name":"DfA map"
      },
      {
        "tooltip":"",
        "name":"DfB map"
      },
      {
        "tooltip":"",
        "name":"Diffusion"
      }
    ],
    "name":"Reaction Diffusion",
    "outputs":[
      {
        "tooltip":"",
        "name":"Reacted"
      },
      {
        "tooltip":"",
        "name":"Rendered"
      }
    ]
  },
  "Node_Boolean":{
    "tooltip":"",
    "inputs":[
      {
        "tooltip":"",
        "name":"Value"
      },
      {
        "tooltip":"",
        "name":"Hide Background"
      },
      {
        "tooltip":"",
        "name":"Name location",
        "display_data":[
          "Top",
          "Bottom"
        ]
      }
    ],
    "name":"Boolean",
    "outputs":[
      {
        "tooltip":"",
        "name":"Boolean"
      }
    ]
  },
  "Node_Box_Pattern":{
    "tooltip":"Generate square-based patterns..",
    "inputs":[
      {
        "tooltip":"",
        "name":"Dimension"
      },
      {
        "tooltip":"",
        "name":"Scale"
      },
      {
        "tooltip":"",
        "name":"Angle"
      },
      {
        "tooltip":"",
        "name":"Position"
      },
      {
        "tooltip":"",
        "name":"Color 1"
      },
      {
        "tooltip":"",
        "name":"Color 2"
      },
      {
        "tooltip":"",
        "name":"Amount map"
      },
      {
        "tooltip":"",
        "name":"Angle map"
      },
      {
        "tooltip":"",
        "name":"Type",
        "display_data":[
          "Solid",
          "Smooth",
          "AA"
        ]
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Width map"
      },
      {
        "tooltip":"",
        "name":"Pattern",
        "display_data":[
          "Cross",
          "Xor"
        ]
      },
      {
        "tooltip":"",
        "name":"Iteration"
      }
    ],
    "name":"Box Pattern",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Region_Fill":{
    "tooltip":"Fill connected pixel with colors.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Fill Colors"
      },
      {
        "tooltip":"",
        "name":"Fill"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Target Color"
      },
      {
        "tooltip":"Only fill regions with surrounding pixels.",
        "name":"Inner only"
      },
      {
        "tooltip":"",
        "name":"Draw original",
        "display_data":[
          "None",
          "Above",
          "Behind"
        ]
      },
      {
        "tooltip":"",
        "name":"Fill type",
        "display_data":[
          "Random",
          "Color map",
          "Texture map"
        ]
      },
      {
        "tooltip":"",
        "name":"Color map"
      },
      {
        "tooltip":"",
        "name":"Texture map"
      },
      {
        "tooltip":"",
        "name":"Color Filter"
      }
    ],
    "name":"Region Fill",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Edge_Detect":{
    "tooltip":"Edge detect by applying Sobel, Prewitt, or Laplacian kernel.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in self"
      },
      {
        "tooltip":"",
        "name":"Algorithm",
        "display_data":[
          "Sobel",
          "Prewitt",
          "Laplacian",
          "Neighbor max diff"
        ]
      },
      {
        "tooltip":"How to deal with pixel outside the surface.\n    - Empty: Use empty pixel\n    - Clamp: Repeat edge pixel\n    - Repeat: Repeat texture.",
        "name":"Oversample mode",
        "display_data":[
          "Empty",
          "Clamp",
          "Repeat"
        ]
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Edge Detect",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_Brush_Linear":{
    "tooltip":"Apply brush effect.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Iteration"
      },
      {
        "tooltip":"",
        "name":"Seed"
      },
      {
        "tooltip":"",
        "name":"Length"
      },
      {
        "tooltip":"",
        "name":"Attenuation"
      },
      {
        "tooltip":"",
        "name":"Circulation"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      }
    ],
    "name":"Brush",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_BW":{
    "tooltip":"Convert color image to black and white.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Brightness"
      },
      {
        "tooltip":"",
        "name":"Contrast"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Brightness map"
      },
      {
        "tooltip":"",
        "name":"Contrast map"
      }
    ],
    "name":"BW",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  },
  "Node_MK_Delay_Machine":{
    "tooltip":"Combines multiple frames of animation into one.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface"
      },
      {
        "tooltip":"",
        "name":"Delay Amounts"
      },
      {
        "tooltip":"",
        "name":"Delay Frames"
      },
      {
        "tooltip":"",
        "name":"Blend over Delay"
      },
      {
        "tooltip":"",
        "name":"Alpha over Delay"
      },
      {
        "tooltip":"",
        "name":"Palette Select",
        "display_data":[
          "Loop",
          "Pingpong",
          "Random"
        ]
      },
      {
        "tooltip":"",
        "name":"Seed"
      }
    ],
    "name":"MK Delay Machine",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface"
      }
    ]
  },
  "Node_Byte_File_Read":{
    "tooltip":"Load any file to buffer.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      }
    ],
    "name":"Byte File In",
    "outputs":[
      {
        "tooltip":"",
        "name":"Content"
      },
      {
        "tooltip":"",
        "name":"Path"
      }
    ]
  },
  "Node_Byte_File_Write":{
    "tooltip":"Save buffer content to a file.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Path"
      },
      {
        "tooltip":"",
        "name":"Content"
      }
    ],
    "name":"Byte File Out",
    "outputs":[
    ]
  },
  "Node_Equation":{
    "tooltip":"Evaluate string of equation. With an option for setting variables.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Equation"
      }
    ],
    "name":"Equation",
    "outputs":[
      {
        "tooltip":"",
        "name":"Result"
      }
    ]
  },
  "Node_Erode":{
    "tooltip":"Remove pixel that are close to the border of the image.",
    "inputs":[
      {
        "tooltip":"",
        "name":"Surface in"
      },
      {
        "tooltip":"",
        "name":"Width"
      },
      {
        "tooltip":"",
        "name":"Preserve border"
      },
      {
        "tooltip":"",
        "name":"Use alpha"
      },
      {
        "tooltip":"",
        "name":"Mask"
      },
      {
        "tooltip":"",
        "name":"Mix"
      },
      {
        "tooltip":"",
        "name":"Active"
      },
      {
        "tooltip":"",
        "name":"Channel"
      },
      {
        "tooltip":"",
        "name":"Invert mask"
      },
      {
        "tooltip":"",
        "name":"Mask feather"
      },
      {
        "tooltip":"",
        "name":"Width map"
      }
    ],
    "name":"Erode",
    "outputs":[
      {
        "tooltip":"",
        "name":"Surface out"
      }
    ]
  }
}