@shaderfrog/core 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/engine.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -34,12 +35,17 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
35
  }
35
36
  return to.concat(ar || Array.prototype.slice.call(from));
36
37
  };
37
- import preprocess from '@shaderfrog/glsl-parser/preprocessor';
38
- import { generate, parser } from '@shaderfrog/glsl-parser';
39
- import { NodeType } from './graph/graph-types';
40
- import groupBy from 'lodash.groupby';
41
- import { collectNodeProperties } from './graph/graph';
42
- import { evaluateNode } from './graph/evaluate';
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.collectInitialEvaluatedGraphProperties = exports.convertToEngine = exports.convertNode = exports.EngineNodeType = void 0;
43
+ var preprocessor_1 = __importDefault(require("@shaderfrog/glsl-parser/preprocessor"));
44
+ var glsl_parser_1 = require("@shaderfrog/glsl-parser");
45
+ var graph_types_1 = require("./graph/graph-types");
46
+ var lodash_groupby_1 = __importDefault(require("lodash.groupby"));
47
+ var graph_1 = require("./graph/graph");
48
+ var evaluate_1 = require("./graph/evaluate");
43
49
  var log = function () {
44
50
  var _a;
45
51
  var args = [];
@@ -48,37 +54,38 @@ var log = function () {
48
54
  }
49
55
  return (_a = console.log).call.apply(_a, __spreadArray([console, '\x1b[32m(core)\x1b[0m'], __read(args), false));
50
56
  };
51
- export var EngineNodeType;
57
+ var EngineNodeType;
52
58
  (function (EngineNodeType) {
53
59
  EngineNodeType["toon"] = "toon";
54
60
  EngineNodeType["phong"] = "phong";
55
61
  EngineNodeType["physical"] = "physical";
56
62
  EngineNodeType["shader"] = "shader";
57
63
  EngineNodeType["binary"] = "binary";
58
- })(EngineNodeType || (EngineNodeType = {}));
64
+ })(EngineNodeType = exports.EngineNodeType || (exports.EngineNodeType = {}));
59
65
  // type EdgeUpdates = { [edgeId: string]: { oldInput: string; newInput: string } };
60
- export var convertNode = function (node, converter) {
66
+ var convertNode = function (node, converter) {
61
67
  log("Converting ".concat(node.name, " (").concat(node.id, ")"));
62
- var preprocessed = preprocess(node.source, {
68
+ var preprocessed = (0, preprocessor_1.default)(node.source, {
63
69
  preserveComments: true,
64
70
  preserve: {
65
71
  version: function () { return true; },
66
72
  define: function () { return true; },
67
73
  },
68
74
  });
69
- var ast = parser.parse(preprocessed);
75
+ var ast = glsl_parser_1.parser.parse(preprocessed);
70
76
  converter.convertAst(ast, node.stage);
71
- var source = generate(ast);
77
+ var source = (0, glsl_parser_1.generate)(ast);
72
78
  return __assign(__assign({}, node), { source: source });
73
79
  };
74
- export var convertToEngine = function (oldEngine, newEngine, graph) {
80
+ exports.convertNode = convertNode;
81
+ var convertToEngine = function (oldEngine, newEngine, graph) {
75
82
  var converter = newEngine.importers[oldEngine.name];
76
83
  if (!converter) {
77
84
  throw new Error("The engine ".concat(newEngine.name, " has no importer for ").concat(oldEngine.name));
78
85
  }
79
86
  log("Attempting to convert from ".concat(newEngine.name, " to ").concat(oldEngine.name));
80
87
  // const edgeUpdates: EdgeUpdates = {};
81
- var edgesByNodeId = groupBy(graph.edges, 'to');
88
+ var edgesByNodeId = (0, lodash_groupby_1.default)(graph.edges, 'to');
82
89
  var edgeUpdates = {};
83
90
  var nodeUpdates = {};
84
91
  graph.nodes.forEach(function (node) {
@@ -94,8 +101,8 @@ export var convertToEngine = function (oldEngine, newEngine, graph) {
94
101
  throw new Error("Can't convert ".concat(oldEngine.name, " to ").concat(newEngine.name, " because ").concat(newEngine.name, " does not have a \"").concat(node.type, "\" constructor"));
95
102
  }
96
103
  }
97
- else if (NodeType.SOURCE === node.type) {
98
- nodeUpdates[node.id] = convertNode(node, converter);
104
+ else if (graph_types_1.NodeType.SOURCE === node.type) {
105
+ nodeUpdates[node.id] = (0, exports.convertNode)(node, converter);
99
106
  }
100
107
  // Then update input edges. We only care about engine nodes
101
108
  if (node.type in converter.nodeInputMap) {
@@ -140,6 +147,7 @@ export var convertToEngine = function (oldEngine, newEngine, graph) {
140
147
  log('Created converted graph', graph);
141
148
  return graph;
142
149
  };
150
+ exports.convertToEngine = convertToEngine;
143
151
  /**
144
152
  * Create the initial engine node properties for a plugin to create its initial
145
153
  * material with. This finds all engine nodes in the graph, finds all their
@@ -152,11 +160,11 @@ export var convertToEngine = function (oldEngine, newEngine, graph) {
152
160
  * to be set to a pc.Texture() at runtime, otherwise there's an error about
153
161
  * vertex_texCoord0.
154
162
  */
155
- export var collectInitialEvaluatedGraphProperties = function (engine, graph, defaultPropertySetting) {
163
+ var collectInitialEvaluatedGraphProperties = function (engine, graph, defaultPropertySetting) {
156
164
  var graphProperties = {};
157
165
  // Get all the nodes with properties, meaning engine nodes, and the inputs
158
166
  // for each property (property is like "diffuseMap").
159
- var _a = collectNodeProperties(graph), nodes = _a.nodes, inputs = _a.inputs;
167
+ var _a = (0, graph_1.collectNodeProperties)(graph), nodes = _a.nodes, inputs = _a.inputs;
160
168
  Object.entries(inputs).forEach(function (_a) {
161
169
  var _b = __read(_a, 2), nodeId = _b[0], nodeInputs = _b[1];
162
170
  // For every node with properties... There might be mulitple if there are
@@ -194,7 +202,7 @@ export var collectInitialEvaluatedGraphProperties = function (engine, graph, def
194
202
  }
195
203
  else {
196
204
  try {
197
- graphProperties[input.property] = evaluateNode(engine, graph, fromNode);
205
+ graphProperties[input.property] = (0, evaluate_1.evaluateNode)(engine, graph, fromNode);
198
206
  }
199
207
  catch (err) {
200
208
  console.error('Tried to evaluate a non-data node!', {
@@ -207,3 +215,4 @@ export var collectInitialEvaluatedGraphProperties = function (engine, graph, def
207
215
  });
208
216
  return graphProperties;
209
217
  };
218
+ exports.collectInitialEvaluatedGraphProperties = collectInitialEvaluatedGraphProperties;
@@ -1,4 +1,7 @@
1
- export var nodeInput = function (displayName, id, type, dataType, accepts, bakeable, property) { return ({
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nodeInput = void 0;
4
+ var nodeInput = function (displayName, id, type, dataType, accepts, bakeable, property) { return ({
2
5
  displayName: displayName,
3
6
  id: id,
4
7
  type: type,
@@ -7,3 +10,4 @@ export var nodeInput = function (displayName, id, type, dataType, accepts, bakea
7
10
  bakeable: bakeable,
8
11
  property: property,
9
12
  }); };
13
+ exports.nodeInput = nodeInput;
@@ -1,18 +1,23 @@
1
- export var mapInputName = function (node, _a) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SourceType = exports.property = exports.mapInputName = void 0;
4
+ var mapInputName = function (node, _a) {
2
5
  var _b, _c;
3
6
  var id = _a.id, displayName = _a.displayName;
4
7
  return ((_c = (_b = node.config) === null || _b === void 0 ? void 0 : _b.inputMapping) === null || _c === void 0 ? void 0 : _c[id]) || displayName;
5
8
  };
6
- export var property = function (displayName, property, type, fillerName, defaultValue) { return ({
9
+ exports.mapInputName = mapInputName;
10
+ var property = function (displayName, property, type, fillerName, defaultValue) { return ({
7
11
  displayName: displayName,
8
12
  type: type,
9
13
  property: property,
10
14
  fillerName: fillerName,
11
15
  defaultValue: defaultValue,
12
16
  }); };
13
- export var SourceType;
17
+ exports.property = property;
18
+ var SourceType;
14
19
  (function (SourceType) {
15
20
  SourceType["SHADER_PROGRAM"] = "Shader Program";
16
21
  SourceType["EXPRESSION"] = "Expression";
17
22
  SourceType["FN_BODY_FRAGMENT"] = "Function Body Fragment";
18
- })(SourceType || (SourceType = {}));
23
+ })(SourceType = exports.SourceType || (exports.SourceType = {}));
package/graph/context.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -70,11 +71,16 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
70
71
  }
71
72
  return to.concat(ar || Array.prototype.slice.call(from));
72
73
  };
73
- import groupBy from 'lodash.groupby';
74
- import { mapInputName, SourceType } from './code-nodes';
75
- import { NodeType } from './graph-types';
76
- import { collectConnectedNodes, filterGraphFromNode, findLinkedNode, findLinkedVertexNodes, isSourceNode, mangleEntireProgram, } from './graph';
77
- import { coreParsers } from './parsers';
74
+ var __importDefault = (this && this.__importDefault) || function (mod) {
75
+ return (mod && mod.__esModule) ? mod : { "default": mod };
76
+ };
77
+ Object.defineProperty(exports, "__esModule", { value: true });
78
+ exports.computeGraphContext = exports.computeAllContexts = exports.computeContextForNodes = exports.isError = void 0;
79
+ var lodash_groupby_1 = __importDefault(require("lodash.groupby"));
80
+ var code_nodes_1 = require("./code-nodes");
81
+ var graph_types_1 = require("./graph-types");
82
+ var graph_1 = require("./graph");
83
+ var parsers_1 = require("./parsers");
78
84
  var makeError = function (nodeId) {
79
85
  var errors = [];
80
86
  for (var _i = 1; _i < arguments.length; _i++) {
@@ -86,23 +92,24 @@ var makeError = function (nodeId) {
86
92
  errors: errors,
87
93
  });
88
94
  };
89
- export var isError = function (test) {
95
+ var isError = function (test) {
90
96
  return (test === null || test === void 0 ? void 0 : test.type) === 'errors';
91
97
  };
98
+ exports.isError = isError;
92
99
  // Merge existing node inputs, and inputs based on properties, with new ones
93
100
  // found from the source code, using the *id* as the uniqueness key. Any filler input gets
94
101
  // merged into property inputs with the same id. This preserves the
95
102
  // "baked" property on node inputs which is toggle-able in the graph
96
103
  var collapseNodeInputs = function (node, updatedInputs) {
97
- return Object.values(groupBy(__spreadArray(__spreadArray([], __read(updatedInputs), false), __read(node.inputs), false), function (i) { return i.id; })).map(function (dupes) { return dupes.reduce(function (node, dupe) { return (__assign(__assign({}, node), dupe)); }); });
104
+ return Object.values((0, lodash_groupby_1.default)(__spreadArray(__spreadArray([], __read(updatedInputs), false), __read(node.inputs), false), function (i) { return i.id; })).map(function (dupes) { return dupes.reduce(function (node, dupe) { return (__assign(__assign({}, node), dupe)); }); });
98
105
  };
99
106
  var computeNodeContext = function (engineContext, engine, graph, node) { return __awaiter(void 0, void 0, void 0, function () {
100
107
  var parser, sibling, onBeforeCompile, manipulateAst, inputEdges, ast, dataInputs, computedInputs, nodeContext;
101
108
  return __generator(this, function (_a) {
102
109
  switch (_a.label) {
103
110
  case 0:
104
- parser = __assign(__assign({}, (coreParsers[node.type] || coreParsers[NodeType.SOURCE])), (engine.parsers[node.type] || {}));
105
- sibling = findLinkedNode(graph, node.id);
111
+ parser = __assign(__assign({}, (parsers_1.coreParsers[node.type] || parsers_1.coreParsers[graph_types_1.NodeType.SOURCE])), (engine.parsers[node.type] || {}));
112
+ sibling = (0, graph_1.findLinkedNode)(graph, node.id);
106
113
  onBeforeCompile = parser.onBeforeCompile, manipulateAst = parser.manipulateAst;
107
114
  if (!onBeforeCompile) return [3 /*break*/, 2];
108
115
  return [4 /*yield*/, onBeforeCompile(graph, engineContext, node, sibling)];
@@ -121,7 +128,7 @@ var computeNodeContext = function (engineContext, engine, graph, node) { return
121
128
  console.error('Error parsing source code!', { error: error, node: node });
122
129
  return [2 /*return*/, makeError(node.id, error)];
123
130
  }
124
- dataInputs = groupBy(filterGraphFromNode(graph, node, {
131
+ dataInputs = (0, lodash_groupby_1.default)((0, graph_1.filterGraphFromNode)(graph, node, {
125
132
  input: function (input, b, c, fromNode) {
126
133
  return input.bakeable && (fromNode === null || fromNode === void 0 ? void 0 : fromNode.type) === 'source';
127
134
  },
@@ -129,7 +136,7 @@ var computeNodeContext = function (engineContext, engine, graph, node) { return
129
136
  computedInputs = parser.findInputs(engineContext, ast, inputEdges, node, sibling);
130
137
  node.inputs = collapseNodeInputs(node, computedInputs.map(function (_a) {
131
138
  var _b = __read(_a, 1), i = _b[0];
132
- return (__assign(__assign({}, i), { displayName: mapInputName(node, i) }));
139
+ return (__assign(__assign({}, i), { displayName: (0, code_nodes_1.mapInputName)(node, i) }));
133
140
  })).map(function (input) { return (__assign(__assign({}, input), (input.id in dataInputs ? { baked: true } : {}))); });
134
141
  nodeContext = {
135
142
  ast: ast,
@@ -148,18 +155,18 @@ var computeNodeContext = function (engineContext, engine, graph, node) { return
148
155
  // an expression, where we want to be in the context of other variables
149
156
  // TODO: Use global undefined engine variables here?
150
157
  if (node.config.mangle !== false &&
151
- node.sourceType !== SourceType.EXPRESSION &&
152
- node.sourceType !== SourceType.FN_BODY_FRAGMENT) {
153
- mangleEntireProgram(engine, ast, node, findLinkedNode(graph, node.id));
158
+ node.sourceType !== code_nodes_1.SourceType.EXPRESSION &&
159
+ node.sourceType !== code_nodes_1.SourceType.FN_BODY_FRAGMENT) {
160
+ (0, graph_1.mangleEntireProgram)(engine, ast, node, (0, graph_1.findLinkedNode)(graph, node.id));
154
161
  }
155
162
  return [2 /*return*/, nodeContext];
156
163
  }
157
164
  });
158
165
  }); };
159
- export var computeContextForNodes = function (engineContext, engine, graph, nodes) { return __awaiter(void 0, void 0, void 0, function () {
166
+ var computeContextForNodes = function (engineContext, engine, graph, nodes) { return __awaiter(void 0, void 0, void 0, function () {
160
167
  return __generator(this, function (_a) {
161
168
  return [2 /*return*/, nodes
162
- .filter(isSourceNode)
169
+ .filter(graph_1.isSourceNode)
163
170
  .reduce(function (ctx, node) { return __awaiter(void 0, void 0, void 0, function () {
164
171
  var context, nodeContextOrError;
165
172
  return __generator(this, function (_a) {
@@ -167,13 +174,13 @@ export var computeContextForNodes = function (engineContext, engine, graph, node
167
174
  case 0: return [4 /*yield*/, ctx];
168
175
  case 1:
169
176
  context = _a.sent();
170
- if (isError(context)) {
177
+ if ((0, exports.isError)(context)) {
171
178
  return [2 /*return*/, context];
172
179
  }
173
180
  return [4 /*yield*/, computeNodeContext(engineContext, engine, graph, node)];
174
181
  case 2:
175
182
  nodeContextOrError = _a.sent();
176
- if (isError(nodeContextOrError)) {
183
+ if ((0, exports.isError)(nodeContextOrError)) {
177
184
  return [2 /*return*/, nodeContextOrError];
178
185
  }
179
186
  context[node.id] = __assign(__assign({}, (context[node.id] || {})), nodeContextOrError);
@@ -183,29 +190,31 @@ export var computeContextForNodes = function (engineContext, engine, graph, node
183
190
  }); }, Promise.resolve(engineContext.nodes))];
184
191
  });
185
192
  }); };
193
+ exports.computeContextForNodes = computeContextForNodes;
186
194
  /**
187
195
  * Compute the context for every node in the graph, done on initial graph load
188
196
  * to compute the inputs/outputs for every node
189
197
  */
190
- export var computeAllContexts = function (engineContext, engine, graph) { return __awaiter(void 0, void 0, void 0, function () {
198
+ var computeAllContexts = function (engineContext, engine, graph) { return __awaiter(void 0, void 0, void 0, function () {
191
199
  var result;
192
200
  return __generator(this, function (_a) {
193
201
  switch (_a.label) {
194
- case 0: return [4 /*yield*/, computeContextForNodes(engineContext, engine, graph, graph.nodes)];
202
+ case 0: return [4 /*yield*/, (0, exports.computeContextForNodes)(engineContext, engine, graph, graph.nodes)];
195
203
  case 1:
196
204
  result = _a.sent();
197
- if (isError(result)) {
205
+ if ((0, exports.isError)(result)) {
198
206
  return [2 /*return*/, result];
199
207
  }
200
208
  return [2 /*return*/];
201
209
  }
202
210
  });
203
211
  }); };
212
+ exports.computeAllContexts = computeAllContexts;
204
213
  /**
205
214
  * Compute the contexts for nodes starting from the outputs, working backwards.
206
215
  * Used to only (re)-compute context for any actively used nodes
207
216
  */
208
- export var computeGraphContext = function (engineContext, engine, graph) { return __awaiter(void 0, void 0, void 0, function () {
217
+ var computeGraphContext = function (engineContext, engine, graph) { return __awaiter(void 0, void 0, void 0, function () {
209
218
  var outputFrag, outputVert, vertexIds, fragmentIds, unlinkedNodes, vertNodesOrError, fragNodesOrError;
210
219
  return __generator(this, function (_a) {
211
220
  switch (_a.label) {
@@ -218,26 +227,27 @@ export var computeGraphContext = function (engineContext, engine, graph) { retur
218
227
  if (!outputVert) {
219
228
  throw new Error('No vertex output in graph');
220
229
  }
221
- vertexIds = collectConnectedNodes(graph, outputVert);
222
- fragmentIds = collectConnectedNodes(graph, outputFrag);
223
- unlinkedNodes = findLinkedVertexNodes(graph, vertexIds);
224
- return [4 /*yield*/, computeContextForNodes(engineContext, engine, graph, __spreadArray(__spreadArray([
230
+ vertexIds = (0, graph_1.collectConnectedNodes)(graph, outputVert);
231
+ fragmentIds = (0, graph_1.collectConnectedNodes)(graph, outputFrag);
232
+ unlinkedNodes = (0, graph_1.findLinkedVertexNodes)(graph, vertexIds);
233
+ return [4 /*yield*/, (0, exports.computeContextForNodes)(engineContext, engine, graph, __spreadArray(__spreadArray([
225
234
  outputVert
226
235
  ], __read(Object.values(vertexIds).filter(function (node) { return node.id !== outputVert.id; })), false), __read(unlinkedNodes), false))];
227
236
  case 1:
228
237
  vertNodesOrError = _a.sent();
229
- if (isError(vertNodesOrError)) {
238
+ if ((0, exports.isError)(vertNodesOrError)) {
230
239
  return [2 /*return*/, vertNodesOrError];
231
240
  }
232
- return [4 /*yield*/, computeContextForNodes(engineContext, engine, graph, __spreadArray([
241
+ return [4 /*yield*/, (0, exports.computeContextForNodes)(engineContext, engine, graph, __spreadArray([
233
242
  outputFrag
234
243
  ], __read(Object.values(fragmentIds).filter(function (node) { return node.id !== outputFrag.id; })), false))];
235
244
  case 2:
236
245
  fragNodesOrError = _a.sent();
237
- if (isError(fragNodesOrError)) {
246
+ if ((0, exports.isError)(fragNodesOrError)) {
238
247
  return [2 /*return*/, fragNodesOrError];
239
248
  }
240
249
  return [2 /*return*/];
241
250
  }
242
251
  });
243
252
  }); };
253
+ exports.computeGraphContext = computeGraphContext;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -9,7 +10,9 @@ var __assign = (this && this.__assign) || function () {
9
10
  };
10
11
  return __assign.apply(this, arguments);
11
12
  };
12
- export var numberNode = function (id, name, position, value, optionals) { return ({
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.colorUniformData = exports.colorNode = exports.vectorUniformData = exports.arrayUniformData = exports.vectorNode = exports.arrayNode = exports.samplerCubeUniformData = exports.samplerCubeNode = exports.textureUniformData = exports.textureNode = exports.numberUniformData = exports.numberNode = void 0;
15
+ var numberNode = function (id, name, position, value, optionals) { return ({
13
16
  type: 'number',
14
17
  id: id,
15
18
  name: name,
@@ -27,14 +30,16 @@ export var numberNode = function (id, name, position, value, optionals) { return
27
30
  range: optionals === null || optionals === void 0 ? void 0 : optionals.range,
28
31
  stepper: optionals === null || optionals === void 0 ? void 0 : optionals.stepper,
29
32
  }); };
30
- export var numberUniformData = function (name, value, range, stepper) { return ({
33
+ exports.numberNode = numberNode;
34
+ var numberUniformData = function (name, value, range, stepper) { return ({
31
35
  type: 'number',
32
36
  name: name,
33
37
  value: value,
34
38
  range: range,
35
39
  stepper: stepper,
36
40
  }); };
37
- export var textureNode = function (id, name, position, value) { return ({
41
+ exports.numberUniformData = numberUniformData;
42
+ var textureNode = function (id, name, position, value) { return ({
38
43
  type: 'texture',
39
44
  id: id,
40
45
  name: name,
@@ -50,8 +55,10 @@ export var textureNode = function (id, name, position, value) { return ({
50
55
  },
51
56
  ],
52
57
  }); };
53
- export var textureUniformData = function (name, value) { return ({ type: 'texture', name: name, value: value }); };
54
- export var samplerCubeNode = function (id, name, position, value) { return ({
58
+ exports.textureNode = textureNode;
59
+ var textureUniformData = function (name, value) { return ({ type: 'texture', name: name, value: value }); };
60
+ exports.textureUniformData = textureUniformData;
61
+ var samplerCubeNode = function (id, name, position, value) { return ({
55
62
  type: 'samplerCube',
56
63
  id: id,
57
64
  name: name,
@@ -67,8 +74,10 @@ export var samplerCubeNode = function (id, name, position, value) { return ({
67
74
  },
68
75
  ],
69
76
  }); };
70
- export var samplerCubeUniformData = function (name, value) { return ({ type: 'samplerCube', name: name, value: value }); };
71
- export function arrayNode(id, name, position, value) {
77
+ exports.samplerCubeNode = samplerCubeNode;
78
+ var samplerCubeUniformData = function (name, value) { return ({ type: 'samplerCube', name: name, value: value }); };
79
+ exports.samplerCubeUniformData = samplerCubeUniformData;
80
+ function arrayNode(id, name, position, value) {
72
81
  return {
73
82
  id: id,
74
83
  name: name,
@@ -87,7 +96,8 @@ export function arrayNode(id, name, position, value) {
87
96
  type: 'array',
88
97
  };
89
98
  }
90
- export function vectorNode(id, name, position, value) {
99
+ exports.arrayNode = arrayNode;
100
+ function vectorNode(id, name, position, value) {
91
101
  var dataType = value.length === 2 ? 'vector2' : value.length === 3 ? 'vector3' : 'vector4';
92
102
  return __assign({ id: id, name: name, position: position, inputs: [], outputs: [
93
103
  {
@@ -102,18 +112,21 @@ export function vectorNode(id, name, position, value) {
102
112
  ? { value: value, dimensions: 3, type: 'vector3' }
103
113
  : { value: value, dimensions: 4, type: 'vector4' }));
104
114
  }
105
- export var arrayUniformData = function (name, value) { return ({
115
+ exports.vectorNode = vectorNode;
116
+ var arrayUniformData = function (name, value) { return ({
106
117
  name: name,
107
118
  value: value,
108
119
  dimensions: value.length,
109
120
  type: 'array',
110
121
  }); };
111
- export var vectorUniformData = function (name, value) { return (__assign({ name: name }, (value.length === 2
122
+ exports.arrayUniformData = arrayUniformData;
123
+ var vectorUniformData = function (name, value) { return (__assign({ name: name }, (value.length === 2
112
124
  ? { value: value, dimensions: 2, type: 'vector2' }
113
125
  : value.length === 3
114
126
  ? { value: value, dimensions: 3, type: 'vector3' }
115
127
  : { value: value, dimensions: 4, type: 'vector4' }))); };
116
- export function colorNode(id, name, position, value) {
128
+ exports.vectorUniformData = vectorUniformData;
129
+ function colorNode(id, name, position, value) {
117
130
  var dataType = value.length === 3 ? 'rgb' : 'rgba';
118
131
  return __assign({ id: id, name: name, position: position, inputs: [], outputs: [
119
132
  {
@@ -126,6 +139,8 @@ export function colorNode(id, name, position, value) {
126
139
  ? { value: value, dimensions: 3, type: 'rgb' }
127
140
  : { value: value, dimensions: 4, type: 'rgba' }));
128
141
  }
129
- export var colorUniformData = function (name, value) { return (__assign({ name: name }, (value.length === 3
142
+ exports.colorNode = colorNode;
143
+ var colorUniformData = function (name, value) { return (__assign({ name: name }, (value.length === 3
130
144
  ? { value: value, dimensions: 3, type: 'rgb' }
131
145
  : { value: value, dimensions: 4, type: 'rgba' }))); };
146
+ exports.colorUniformData = colorUniformData;
package/graph/edge.js CHANGED
@@ -1,7 +1,12 @@
1
- import { EdgeLink, LinkHandle } from './graph-types';
2
- export var makeEdge = function (id, from, to, output, input, type) { return ({ id: id, from: from, to: to, output: output, input: input, type: type }); };
3
- export var linkFromVertToFrag = function (id, vertId, fragId) {
4
- return makeEdge(id, vertId, fragId, LinkHandle.NEXT_STAGE, // output from next_stage
5
- LinkHandle.PREVIOUS_STAGE, // input to previous_stage
6
- EdgeLink.NEXT_STAGE);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linkFromVertToFrag = exports.makeEdge = void 0;
4
+ var graph_types_1 = require("./graph-types");
5
+ var makeEdge = function (id, from, to, output, input, type) { return ({ id: id, from: from, to: to, output: output, input: input, type: type }); };
6
+ exports.makeEdge = makeEdge;
7
+ var linkFromVertToFrag = function (id, vertId, fragId) {
8
+ return (0, exports.makeEdge)(id, vertId, fragId, graph_types_1.LinkHandle.NEXT_STAGE, // output from next_stage
9
+ graph_types_1.LinkHandle.PREVIOUS_STAGE, // input to previous_stage
10
+ graph_types_1.EdgeLink.NEXT_STAGE);
7
11
  };
12
+ exports.linkFromVertToFrag = linkFromVertToFrag;
package/graph/evaluate.js CHANGED
@@ -1,5 +1,8 @@
1
- import { coreParsers } from './parsers';
2
- export var toGlsl = function (node) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateNode = exports.toGlsl = void 0;
4
+ var parsers_1 = require("./parsers");
5
+ var toGlsl = function (node) {
3
6
  var type = node.type, value = node.value;
4
7
  if (type === 'vector2') {
5
8
  return "vec2(".concat(value[0], ", ").concat(value[1], ")");
@@ -12,16 +15,18 @@ export var toGlsl = function (node) {
12
15
  }
13
16
  throw new Error("Unknown GLSL inline type: \"".concat(node.type, "\""));
14
17
  };
15
- export var evaluateNode = function (engine, graph, node) {
18
+ exports.toGlsl = toGlsl;
19
+ var evaluateNode = function (engine, graph, node) {
16
20
  // TODO: Data nodes themselves should have evaluators
17
21
  if ('value' in node) {
18
22
  return engine.evaluateNode(node);
19
23
  }
20
- var evaluate = coreParsers[node.type].evaluate;
24
+ var evaluate = parsers_1.coreParsers[node.type].evaluate;
21
25
  if (!evaluate) {
22
26
  throw new Error("No evaluator for node ".concat(node.name, " (type: ").concat(node.type, ", id: ").concat(node.id, ")"));
23
27
  }
24
28
  var inputEdges = graph.edges.filter(function (edge) { return edge.to === node.id; });
25
29
  var inputNodes = inputEdges.map(function (edge) { return graph.nodes.find(function (node) { return node.id === edge.from; }); });
26
- return evaluate(node, inputEdges, inputNodes, evaluateNode.bind(null, engine, graph));
30
+ return evaluate(node, inputEdges, inputNodes, exports.evaluateNode.bind(null, engine, graph));
27
31
  };
32
+ exports.evaluateNode = evaluateNode;
@@ -1,11 +1,14 @@
1
- import { NodeType } from './graph-types';
2
- import { assignemntToStrategy, variableStrategy } from '../strategy';
3
- import { SourceType } from './code-nodes';
4
- export var sourceNode = function (id, name, position, config, source, stage, originalEngine) { return ({
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.multiplyNode = exports.addNode = exports.expressionNode = exports.outputNode = exports.sourceNode = void 0;
4
+ var graph_types_1 = require("./graph-types");
5
+ var strategy_1 = require("../strategy");
6
+ var code_nodes_1 = require("./code-nodes");
7
+ var sourceNode = function (id, name, position, config, source, stage, originalEngine) { return ({
5
8
  id: id,
6
9
  name: name,
7
- type: NodeType.SOURCE,
8
- sourceType: SourceType.SHADER_PROGRAM,
10
+ type: graph_types_1.NodeType.SOURCE,
11
+ sourceType: code_nodes_1.SourceType.SHADER_PROGRAM,
9
12
  engine: false,
10
13
  config: config,
11
14
  position: position,
@@ -22,12 +25,13 @@ export var sourceNode = function (id, name, position, config, source, stage, ori
22
25
  stage: stage,
23
26
  originalEngine: originalEngine,
24
27
  }); };
25
- export var outputNode = function (id, name, position, stage) { return ({
28
+ exports.sourceNode = sourceNode;
29
+ var outputNode = function (id, name, position, stage) { return ({
26
30
  id: id,
27
31
  name: name,
28
32
  position: position,
29
- type: NodeType.OUTPUT,
30
- sourceType: SourceType.SHADER_PROGRAM,
33
+ type: graph_types_1.NodeType.OUTPUT,
34
+ sourceType: code_nodes_1.SourceType.SHADER_PROGRAM,
31
35
  engine: false,
32
36
  config: {
33
37
  version: 3,
@@ -42,7 +46,7 @@ export var outputNode = function (id, name, position, stage) { return ({
42
46
  filler_gl_Position: 'Position',
43
47
  },
44
48
  strategies: [
45
- assignemntToStrategy(stage === 'fragment' ? 'frogFragOut' : 'gl_Position'),
49
+ (0, strategy_1.assignemntToStrategy)(stage === 'fragment' ? 'frogFragOut' : 'gl_Position'),
46
50
  ],
47
51
  },
48
52
  inputs: [],
@@ -54,20 +58,21 @@ export var outputNode = function (id, name, position, stage) { return ({
54
58
  "\n#version 300 es\nprecision highp float;\n\nvoid main() {\n gl_Position = vec4(1.0);\n}\n",
55
59
  stage: stage,
56
60
  }); };
57
- export var expressionNode = function (id, name, position, source) { return ({
61
+ exports.outputNode = outputNode;
62
+ var expressionNode = function (id, name, position, source) { return ({
58
63
  id: id,
59
64
  name: name,
60
65
  position: position,
61
- type: NodeType.SOURCE,
66
+ type: graph_types_1.NodeType.SOURCE,
62
67
  engine: false,
63
- sourceType: SourceType.EXPRESSION,
68
+ sourceType: code_nodes_1.SourceType.EXPRESSION,
64
69
  stage: undefined,
65
70
  config: {
66
71
  uniforms: [],
67
72
  version: 3,
68
73
  preprocess: false,
69
74
  inputMapping: {},
70
- strategies: [variableStrategy()],
75
+ strategies: [(0, strategy_1.variableStrategy)()],
71
76
  },
72
77
  inputs: [],
73
78
  outputs: [
@@ -79,11 +84,12 @@ export var expressionNode = function (id, name, position, source) { return ({
79
84
  ],
80
85
  source: source,
81
86
  }); };
82
- export var addNode = function (id, position) { return ({
87
+ exports.expressionNode = expressionNode;
88
+ var addNode = function (id, position) { return ({
83
89
  id: id,
84
90
  name: 'add',
85
91
  position: position,
86
- type: NodeType.BINARY,
92
+ type: graph_types_1.NodeType.BINARY,
87
93
  engine: false,
88
94
  stage: undefined,
89
95
  config: {
@@ -103,13 +109,14 @@ export var addNode = function (id, position) { return ({
103
109
  ],
104
110
  source: "a + b",
105
111
  operator: '+',
106
- sourceType: SourceType.EXPRESSION,
112
+ sourceType: code_nodes_1.SourceType.EXPRESSION,
107
113
  biStage: true,
108
114
  }); };
109
- export var multiplyNode = function (id, position) { return ({
115
+ exports.addNode = addNode;
116
+ var multiplyNode = function (id, position) { return ({
110
117
  id: id,
111
118
  name: 'multiply',
112
- type: NodeType.BINARY,
119
+ type: graph_types_1.NodeType.BINARY,
113
120
  engine: false,
114
121
  stage: undefined,
115
122
  position: position,
@@ -130,6 +137,7 @@ export var multiplyNode = function (id, position) { return ({
130
137
  ],
131
138
  source: "a * b",
132
139
  operator: '*',
133
- sourceType: SourceType.EXPRESSION,
140
+ sourceType: code_nodes_1.SourceType.EXPRESSION,
134
141
  biStage: true,
135
142
  }); };
143
+ exports.multiplyNode = multiplyNode;