(function (global, factory) {
  if (typeof define === "function" && define.amd) {
    define(["exports", "./core/ArrayInputNode.js", "./core/AttributeNode.js", "./core/BypassNode.js", "./core/CodeNode.js", "./core/ContextNode.js", "./core/ExpressionNode.js", "./core/FunctionCallNode.js", "./core/FunctionNode.js", "./core/InputNode.js", "./core/Node.js", "./core/NodeAttribute.js", "./core/NodeBuilder.js", "./core/NodeCode.js", "./core/NodeFrame.js", "./core/NodeFunctionInput.js", "./core/NodeKeywords.js", "./core/NodeUniform.js", "./core/NodeVar.js", "./core/NodeVary.js", "./core/PropertyNode.js", "./core/TempNode.js", "./core/VarNode.js", "./core/VaryNode.js", "./accessors/CameraNode.js", "./accessors/MaterialNode.js", "./accessors/MaterialReferenceNode.js", "./accessors/ModelNode.js", "./accessors/ModelViewProjectionNode.js", "./accessors/NormalNode.js", "./accessors/Object3DNode.js", "./accessors/PointUVNode.js", "./accessors/PositionNode.js", "./accessors/ReferenceNode.js", "./accessors/SkinningNode.js", "./accessors/UVNode.js", "./inputs/ColorNode.js", "./inputs/FloatNode.js", "./inputs/IntNode.js", "./inputs/Matrix3Node.js", "./inputs/TextureNode.js", "./inputs/Vector2Node.js", "./inputs/Vector3Node.js", "./inputs/Vector4Node.js", "./display/ColorSpaceNode.js", "./display/NormalMapNode.js", "./math/MathNode.js", "./math/OperatorNode.js", "./lights/LightContextNode.js", "./lights/LightNode.js", "./lights/LightsNode.js", "./utils/ArrayElementNode.js", "./utils/ConvertNode.js", "./utils/JoinNode.js", "./utils/SplitNode.js", "./utils/SpriteSheetUVNode.js", "./utils/OscNode.js", "./utils/TimerNode.js", "./procedural/CheckerNode.js", "./core/constants.js", "./functions/BSDFs.js", "./materials/Materials.js", "./ShaderNode.js"], factory);
  } else if (typeof exports !== "undefined") {
    factory(exports, require("./core/ArrayInputNode.js"), require("./core/AttributeNode.js"), require("./core/BypassNode.js"), require("./core/CodeNode.js"), require("./core/ContextNode.js"), require("./core/ExpressionNode.js"), require("./core/FunctionCallNode.js"), require("./core/FunctionNode.js"), require("./core/InputNode.js"), require("./core/Node.js"), require("./core/NodeAttribute.js"), require("./core/NodeBuilder.js"), require("./core/NodeCode.js"), require("./core/NodeFrame.js"), require("./core/NodeFunctionInput.js"), require("./core/NodeKeywords.js"), require("./core/NodeUniform.js"), require("./core/NodeVar.js"), require("./core/NodeVary.js"), require("./core/PropertyNode.js"), require("./core/TempNode.js"), require("./core/VarNode.js"), require("./core/VaryNode.js"), require("./accessors/CameraNode.js"), require("./accessors/MaterialNode.js"), require("./accessors/MaterialReferenceNode.js"), require("./accessors/ModelNode.js"), require("./accessors/ModelViewProjectionNode.js"), require("./accessors/NormalNode.js"), require("./accessors/Object3DNode.js"), require("./accessors/PointUVNode.js"), require("./accessors/PositionNode.js"), require("./accessors/ReferenceNode.js"), require("./accessors/SkinningNode.js"), require("./accessors/UVNode.js"), require("./inputs/ColorNode.js"), require("./inputs/FloatNode.js"), require("./inputs/IntNode.js"), require("./inputs/Matrix3Node.js"), require("./inputs/TextureNode.js"), require("./inputs/Vector2Node.js"), require("./inputs/Vector3Node.js"), require("./inputs/Vector4Node.js"), require("./display/ColorSpaceNode.js"), require("./display/NormalMapNode.js"), require("./math/MathNode.js"), require("./math/OperatorNode.js"), require("./lights/LightContextNode.js"), require("./lights/LightNode.js"), require("./lights/LightsNode.js"), require("./utils/ArrayElementNode.js"), require("./utils/ConvertNode.js"), require("./utils/JoinNode.js"), require("./utils/SplitNode.js"), require("./utils/SpriteSheetUVNode.js"), require("./utils/OscNode.js"), require("./utils/TimerNode.js"), require("./procedural/CheckerNode.js"), require("./core/constants.js"), require("./functions/BSDFs.js"), require("./materials/Materials.js"), require("./ShaderNode.js"));
  } else {
    var mod = {
      exports: {}
    };
    factory(mod.exports, global.ArrayInputNode, global.AttributeNode, global.BypassNode, global.CodeNode, global.ContextNode, global.ExpressionNode, global.FunctionCallNode, global.FunctionNode, global.InputNode, global.Node, global.NodeAttribute, global.NodeBuilder, global.NodeCode, global.NodeFrame, global.NodeFunctionInput, global.NodeKeywords, global.NodeUniform, global.NodeVar, global.NodeVary, global.PropertyNode, global.TempNode, global.VarNode, global.VaryNode, global.CameraNode, global.MaterialNode, global.MaterialReferenceNode, global.ModelNode, global.ModelViewProjectionNode, global.NormalNode, global.Object3DNode, global.PointUVNode, global.PositionNode, global.ReferenceNode, global.SkinningNode, global.UVNode, global.ColorNode, global.FloatNode, global.IntNode, global.Matrix3Node, global.TextureNode, global.Vector2Node, global.Vector3Node, global.Vector4Node, global.ColorSpaceNode, global.NormalMapNode, global.MathNode, global.OperatorNode, global.LightContextNode, global.LightNode, global.LightsNode, global.ArrayElementNode, global.ConvertNode, global.JoinNode, global.SplitNode, global.SpriteSheetUVNode, global.OscNode, global.TimerNode, global.CheckerNode, global.constants, global.BSDFs, global.Materials, global.ShaderNode);
    global.Nodes = mod.exports;
  }
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _ArrayInputNode, _AttributeNode, _BypassNode, _CodeNode, _ContextNode, _ExpressionNode, _FunctionCallNode, _FunctionNode, _InputNode, _Node, _NodeAttribute, _NodeBuilder, _NodeCode, _NodeFrame, _NodeFunctionInput, _NodeKeywords, _NodeUniform, _NodeVar, _NodeVary, _PropertyNode, _TempNode, _VarNode, _VaryNode, _CameraNode, _MaterialNode, _MaterialReferenceNode, _ModelNode, _ModelViewProjectionNode, _NormalNode, _Object3DNode, _PointUVNode, _PositionNode, _ReferenceNode, _SkinningNode, _UVNode, _ColorNode, _FloatNode, _IntNode, _Matrix3Node, _TextureNode, _Vector2Node, _Vector3Node, _Vector4Node, _ColorSpaceNode, _NormalMapNode, _MathNode, _OperatorNode, _LightContextNode, _LightNode, _LightsNode, _ArrayElementNode, _ConvertNode, _JoinNode, _SplitNode, _SpriteSheetUVNode, _OscNode, _TimerNode, _CheckerNode, _constants, _BSDFs, _Materials, _ShaderNode) {
  "use strict";

  Object.defineProperty(_exports, "__esModule", {
    value: true
  });
  var _exportNames = {
    ArrayInputNode: true,
    AttributeNode: true,
    BypassNode: true,
    CodeNode: true,
    ContextNode: true,
    ExpressionNode: true,
    FunctionCallNode: true,
    FunctionNode: true,
    InputNode: true,
    Node: true,
    NodeAttribute: true,
    NodeBuilder: true,
    NodeCode: true,
    NodeFrame: true,
    NodeFunctionInput: true,
    NodeKeywords: true,
    NodeUniform: true,
    NodeVar: true,
    NodeVary: true,
    PropertyNode: true,
    TempNode: true,
    VarNode: true,
    VaryNode: true,
    CameraNode: true,
    MaterialNode: true,
    MaterialReferenceNode: true,
    ModelNode: true,
    ModelViewProjectionNode: true,
    NormalNode: true,
    Object3DNode: true,
    PointUVNode: true,
    PositionNode: true,
    ReferenceNode: true,
    SkinningNode: true,
    UVNode: true,
    ColorNode: true,
    FloatNode: true,
    IntNode: true,
    Matrix3Node: true,
    Matrix4Node: true,
    TextureNode: true,
    Vector2Node: true,
    Vector3Node: true,
    Vector4Node: true,
    ColorSpaceNode: true,
    NormalMapNode: true,
    MathNode: true,
    OperatorNode: true,
    LightContextNode: true,
    LightNode: true,
    LightsNode: true,
    ArrayElementNode: true,
    JoinNode: true,
    SplitNode: true,
    SpriteSheetUVNode: true,
    OscNode: true,
    TimerNode: true,
    CheckerNode: true
  };
  Object.defineProperty(_exports, "ArrayElementNode", {
    enumerable: true,
    get: function get() {
      return _ArrayElementNode.default;
    }
  });
  Object.defineProperty(_exports, "ArrayInputNode", {
    enumerable: true,
    get: function get() {
      return _ArrayInputNode.default;
    }
  });
  Object.defineProperty(_exports, "AttributeNode", {
    enumerable: true,
    get: function get() {
      return _AttributeNode.default;
    }
  });
  Object.defineProperty(_exports, "BypassNode", {
    enumerable: true,
    get: function get() {
      return _BypassNode.default;
    }
  });
  Object.defineProperty(_exports, "CameraNode", {
    enumerable: true,
    get: function get() {
      return _CameraNode.default;
    }
  });
  Object.defineProperty(_exports, "CheckerNode", {
    enumerable: true,
    get: function get() {
      return _CheckerNode.default;
    }
  });
  Object.defineProperty(_exports, "CodeNode", {
    enumerable: true,
    get: function get() {
      return _CodeNode.default;
    }
  });
  Object.defineProperty(_exports, "ColorNode", {
    enumerable: true,
    get: function get() {
      return _ColorNode.default;
    }
  });
  Object.defineProperty(_exports, "ColorSpaceNode", {
    enumerable: true,
    get: function get() {
      return _ColorSpaceNode.default;
    }
  });
  Object.defineProperty(_exports, "ContextNode", {
    enumerable: true,
    get: function get() {
      return _ContextNode.default;
    }
  });
  Object.defineProperty(_exports, "ExpressionNode", {
    enumerable: true,
    get: function get() {
      return _ExpressionNode.default;
    }
  });
  Object.defineProperty(_exports, "FloatNode", {
    enumerable: true,
    get: function get() {
      return _FloatNode.default;
    }
  });
  Object.defineProperty(_exports, "FunctionCallNode", {
    enumerable: true,
    get: function get() {
      return _FunctionCallNode.default;
    }
  });
  Object.defineProperty(_exports, "FunctionNode", {
    enumerable: true,
    get: function get() {
      return _FunctionNode.default;
    }
  });
  Object.defineProperty(_exports, "InputNode", {
    enumerable: true,
    get: function get() {
      return _InputNode.default;
    }
  });
  Object.defineProperty(_exports, "IntNode", {
    enumerable: true,
    get: function get() {
      return _IntNode.default;
    }
  });
  Object.defineProperty(_exports, "JoinNode", {
    enumerable: true,
    get: function get() {
      return _JoinNode.default;
    }
  });
  Object.defineProperty(_exports, "LightContextNode", {
    enumerable: true,
    get: function get() {
      return _LightContextNode.default;
    }
  });
  Object.defineProperty(_exports, "LightNode", {
    enumerable: true,
    get: function get() {
      return _LightNode.default;
    }
  });
  Object.defineProperty(_exports, "LightsNode", {
    enumerable: true,
    get: function get() {
      return _LightsNode.default;
    }
  });
  Object.defineProperty(_exports, "MaterialNode", {
    enumerable: true,
    get: function get() {
      return _MaterialNode.default;
    }
  });
  Object.defineProperty(_exports, "MaterialReferenceNode", {
    enumerable: true,
    get: function get() {
      return _MaterialReferenceNode.default;
    }
  });
  Object.defineProperty(_exports, "MathNode", {
    enumerable: true,
    get: function get() {
      return _MathNode.default;
    }
  });
  Object.defineProperty(_exports, "Matrix3Node", {
    enumerable: true,
    get: function get() {
      return _Matrix3Node.default;
    }
  });
  Object.defineProperty(_exports, "Matrix4Node", {
    enumerable: true,
    get: function get() {
      return _Matrix3Node.default;
    }
  });
  Object.defineProperty(_exports, "ModelNode", {
    enumerable: true,
    get: function get() {
      return _ModelNode.default;
    }
  });
  Object.defineProperty(_exports, "ModelViewProjectionNode", {
    enumerable: true,
    get: function get() {
      return _ModelViewProjectionNode.default;
    }
  });
  Object.defineProperty(_exports, "Node", {
    enumerable: true,
    get: function get() {
      return _Node.default;
    }
  });
  Object.defineProperty(_exports, "NodeAttribute", {
    enumerable: true,
    get: function get() {
      return _NodeAttribute.default;
    }
  });
  Object.defineProperty(_exports, "NodeBuilder", {
    enumerable: true,
    get: function get() {
      return _NodeBuilder.default;
    }
  });
  Object.defineProperty(_exports, "NodeCode", {
    enumerable: true,
    get: function get() {
      return _NodeCode.default;
    }
  });
  Object.defineProperty(_exports, "NodeFrame", {
    enumerable: true,
    get: function get() {
      return _NodeFrame.default;
    }
  });
  Object.defineProperty(_exports, "NodeFunctionInput", {
    enumerable: true,
    get: function get() {
      return _NodeFunctionInput.default;
    }
  });
  Object.defineProperty(_exports, "NodeKeywords", {
    enumerable: true,
    get: function get() {
      return _NodeKeywords.default;
    }
  });
  Object.defineProperty(_exports, "NodeUniform", {
    enumerable: true,
    get: function get() {
      return _NodeUniform.default;
    }
  });
  Object.defineProperty(_exports, "NodeVar", {
    enumerable: true,
    get: function get() {
      return _NodeVar.default;
    }
  });
  Object.defineProperty(_exports, "NodeVary", {
    enumerable: true,
    get: function get() {
      return _NodeVary.default;
    }
  });
  Object.defineProperty(_exports, "NormalMapNode", {
    enumerable: true,
    get: function get() {
      return _NormalMapNode.default;
    }
  });
  Object.defineProperty(_exports, "NormalNode", {
    enumerable: true,
    get: function get() {
      return _NormalNode.default;
    }
  });
  Object.defineProperty(_exports, "Object3DNode", {
    enumerable: true,
    get: function get() {
      return _Object3DNode.default;
    }
  });
  Object.defineProperty(_exports, "OperatorNode", {
    enumerable: true,
    get: function get() {
      return _OperatorNode.default;
    }
  });
  Object.defineProperty(_exports, "OscNode", {
    enumerable: true,
    get: function get() {
      return _OscNode.default;
    }
  });
  Object.defineProperty(_exports, "PointUVNode", {
    enumerable: true,
    get: function get() {
      return _PointUVNode.default;
    }
  });
  Object.defineProperty(_exports, "PositionNode", {
    enumerable: true,
    get: function get() {
      return _PositionNode.default;
    }
  });
  Object.defineProperty(_exports, "PropertyNode", {
    enumerable: true,
    get: function get() {
      return _PropertyNode.default;
    }
  });
  Object.defineProperty(_exports, "ReferenceNode", {
    enumerable: true,
    get: function get() {
      return _ReferenceNode.default;
    }
  });
  Object.defineProperty(_exports, "SkinningNode", {
    enumerable: true,
    get: function get() {
      return _SkinningNode.default;
    }
  });
  Object.defineProperty(_exports, "SplitNode", {
    enumerable: true,
    get: function get() {
      return _SplitNode.default;
    }
  });
  Object.defineProperty(_exports, "SpriteSheetUVNode", {
    enumerable: true,
    get: function get() {
      return _SpriteSheetUVNode.default;
    }
  });
  Object.defineProperty(_exports, "TempNode", {
    enumerable: true,
    get: function get() {
      return _TempNode.default;
    }
  });
  Object.defineProperty(_exports, "TextureNode", {
    enumerable: true,
    get: function get() {
      return _TextureNode.default;
    }
  });
  Object.defineProperty(_exports, "TimerNode", {
    enumerable: true,
    get: function get() {
      return _TimerNode.default;
    }
  });
  Object.defineProperty(_exports, "UVNode", {
    enumerable: true,
    get: function get() {
      return _UVNode.default;
    }
  });
  Object.defineProperty(_exports, "VarNode", {
    enumerable: true,
    get: function get() {
      return _VarNode.default;
    }
  });
  Object.defineProperty(_exports, "VaryNode", {
    enumerable: true,
    get: function get() {
      return _VaryNode.default;
    }
  });
  Object.defineProperty(_exports, "Vector2Node", {
    enumerable: true,
    get: function get() {
      return _Vector2Node.default;
    }
  });
  Object.defineProperty(_exports, "Vector3Node", {
    enumerable: true,
    get: function get() {
      return _Vector3Node.default;
    }
  });
  Object.defineProperty(_exports, "Vector4Node", {
    enumerable: true,
    get: function get() {
      return _Vector4Node.default;
    }
  });
  _ArrayInputNode = _interopRequireDefault(_ArrayInputNode);
  _AttributeNode = _interopRequireDefault(_AttributeNode);
  _BypassNode = _interopRequireDefault(_BypassNode);
  _CodeNode = _interopRequireDefault(_CodeNode);
  _ContextNode = _interopRequireDefault(_ContextNode);
  _ExpressionNode = _interopRequireDefault(_ExpressionNode);
  _FunctionCallNode = _interopRequireDefault(_FunctionCallNode);
  _FunctionNode = _interopRequireDefault(_FunctionNode);
  _InputNode = _interopRequireDefault(_InputNode);
  _Node = _interopRequireDefault(_Node);
  _NodeAttribute = _interopRequireDefault(_NodeAttribute);
  _NodeBuilder = _interopRequireDefault(_NodeBuilder);
  _NodeCode = _interopRequireDefault(_NodeCode);
  _NodeFrame = _interopRequireDefault(_NodeFrame);
  _NodeFunctionInput = _interopRequireDefault(_NodeFunctionInput);
  _NodeKeywords = _interopRequireDefault(_NodeKeywords);
  _NodeUniform = _interopRequireDefault(_NodeUniform);
  _NodeVar = _interopRequireDefault(_NodeVar);
  _NodeVary = _interopRequireDefault(_NodeVary);
  _PropertyNode = _interopRequireDefault(_PropertyNode);
  _TempNode = _interopRequireDefault(_TempNode);
  _VarNode = _interopRequireDefault(_VarNode);
  _VaryNode = _interopRequireDefault(_VaryNode);
  _CameraNode = _interopRequireDefault(_CameraNode);
  _MaterialNode = _interopRequireDefault(_MaterialNode);
  _MaterialReferenceNode = _interopRequireDefault(_MaterialReferenceNode);
  _ModelNode = _interopRequireDefault(_ModelNode);
  _ModelViewProjectionNode = _interopRequireDefault(_ModelViewProjectionNode);
  _NormalNode = _interopRequireDefault(_NormalNode);
  _Object3DNode = _interopRequireDefault(_Object3DNode);
  _PointUVNode = _interopRequireDefault(_PointUVNode);
  _PositionNode = _interopRequireDefault(_PositionNode);
  _ReferenceNode = _interopRequireDefault(_ReferenceNode);
  _SkinningNode = _interopRequireDefault(_SkinningNode);
  _UVNode = _interopRequireDefault(_UVNode);
  _ColorNode = _interopRequireDefault(_ColorNode);
  _FloatNode = _interopRequireDefault(_FloatNode);
  _IntNode = _interopRequireDefault(_IntNode);
  _Matrix3Node = _interopRequireDefault(_Matrix3Node);
  _TextureNode = _interopRequireDefault(_TextureNode);
  _Vector2Node = _interopRequireDefault(_Vector2Node);
  _Vector3Node = _interopRequireDefault(_Vector3Node);
  _Vector4Node = _interopRequireDefault(_Vector4Node);
  _ColorSpaceNode = _interopRequireDefault(_ColorSpaceNode);
  _NormalMapNode = _interopRequireDefault(_NormalMapNode);
  _MathNode = _interopRequireDefault(_MathNode);
  _OperatorNode = _interopRequireDefault(_OperatorNode);
  _LightContextNode = _interopRequireDefault(_LightContextNode);
  _LightNode = _interopRequireDefault(_LightNode);
  _LightsNode = _interopRequireDefault(_LightsNode);
  _ArrayElementNode = _interopRequireDefault(_ArrayElementNode);
  _ConvertNode = _interopRequireDefault(_ConvertNode);
  _JoinNode = _interopRequireDefault(_JoinNode);
  _SplitNode = _interopRequireDefault(_SplitNode);
  _SpriteSheetUVNode = _interopRequireDefault(_SpriteSheetUVNode);
  _OscNode = _interopRequireDefault(_OscNode);
  _TimerNode = _interopRequireDefault(_TimerNode);
  _CheckerNode = _interopRequireDefault(_CheckerNode);
  Object.keys(_constants).forEach(function (key) {
    if (key === "default" || key === "__esModule") return;
    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
    if (key in _exports && _exports[key] === _constants[key]) return;
    Object.defineProperty(_exports, key, {
      enumerable: true,
      get: function get() {
        return _constants[key];
      }
    });
  });
  Object.keys(_BSDFs).forEach(function (key) {
    if (key === "default" || key === "__esModule") return;
    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
    if (key in _exports && _exports[key] === _BSDFs[key]) return;
    Object.defineProperty(_exports, key, {
      enumerable: true,
      get: function get() {
        return _BSDFs[key];
      }
    });
  });
  Object.keys(_Materials).forEach(function (key) {
    if (key === "default" || key === "__esModule") return;
    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
    if (key in _exports && _exports[key] === _Materials[key]) return;
    Object.defineProperty(_exports, key, {
      enumerable: true,
      get: function get() {
        return _Materials[key];
      }
    });
  });
  Object.keys(_ShaderNode).forEach(function (key) {
    if (key === "default" || key === "__esModule") return;
    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
    if (key in _exports && _exports[key] === _ShaderNode[key]) return;
    Object.defineProperty(_exports, key, {
      enumerable: true,
      get: function get() {
        return _ShaderNode[key];
      }
    });
  });

  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
});