three-stdlib 2.8.7 → 2.8.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (322) hide show
  1. package/Nodes-607e9ed8.js +471 -0
  2. package/Nodes-627a8bdf.js +1 -0
  3. package/index.cjs.js +1 -1
  4. package/index.d.ts +0 -75
  5. package/index.js +70 -76
  6. package/loaders/NodeMaterialLoader.cjs.js +1 -1
  7. package/loaders/NodeMaterialLoader.js +2 -136
  8. package/loaders/RGBELoader.cjs.js +1 -1
  9. package/loaders/RGBELoader.js +3 -3
  10. package/loaders/RGBMLoader.cjs.js +1 -1
  11. package/loaders/RGBMLoader.js +190 -268
  12. package/nodes/Nodes.cjs.js +1 -1
  13. package/nodes/Nodes.js +203 -76
  14. package/nodes/ShaderNode.cjs.js +1 -0
  15. package/nodes/ShaderNode.js +308 -0
  16. package/nodes/accessors/BufferNode.cjs.js +1 -0
  17. package/nodes/accessors/BufferNode.js +18 -0
  18. package/nodes/accessors/CameraNode.cjs.js +1 -1
  19. package/nodes/accessors/CameraNode.js +32 -138
  20. package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
  21. package/nodes/accessors/CubeTextureNode.js +53 -0
  22. package/nodes/accessors/MaterialNode.cjs.js +1 -0
  23. package/nodes/accessors/MaterialNode.js +80 -0
  24. package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
  25. package/nodes/accessors/MaterialReferenceNode.js +16 -0
  26. package/nodes/accessors/ModelNode.cjs.js +1 -0
  27. package/nodes/accessors/ModelNode.js +10 -0
  28. package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
  29. package/nodes/accessors/ModelViewProjectionNode.js +22 -0
  30. package/nodes/accessors/NormalNode.cjs.js +1 -1
  31. package/nodes/accessors/NormalNode.js +48 -78
  32. package/nodes/accessors/Object3DNode.cjs.js +1 -0
  33. package/nodes/accessors/Object3DNode.js +85 -0
  34. package/nodes/accessors/PointUVNode.cjs.js +1 -0
  35. package/nodes/accessors/PointUVNode.js +16 -0
  36. package/nodes/accessors/PositionNode.cjs.js +1 -1
  37. package/nodes/accessors/PositionNode.js +49 -87
  38. package/nodes/accessors/ReferenceNode.cjs.js +1 -0
  39. package/nodes/accessors/ReferenceNode.js +43 -0
  40. package/nodes/accessors/ReflectNode.cjs.js +1 -1
  41. package/nodes/accessors/ReflectNode.js +35 -98
  42. package/nodes/accessors/SkinningNode.cjs.js +1 -0
  43. package/nodes/accessors/SkinningNode.js +59 -0
  44. package/nodes/accessors/TextureNode.cjs.js +1 -0
  45. package/nodes/accessors/TextureNode.js +68 -0
  46. package/nodes/accessors/UVNode.cjs.js +1 -1
  47. package/nodes/accessors/UVNode.js +20 -38
  48. package/nodes/core/ArrayUniformNode.cjs.js +1 -0
  49. package/nodes/core/ArrayUniformNode.js +17 -0
  50. package/nodes/core/AttributeNode.cjs.js +1 -1
  51. package/nodes/core/AttributeNode.js +31 -40
  52. package/nodes/core/BypassNode.cjs.js +1 -0
  53. package/nodes/core/BypassNode.js +28 -0
  54. package/nodes/core/CodeNode.cjs.js +1 -0
  55. package/nodes/core/CodeNode.js +35 -0
  56. package/nodes/core/ConstNode.cjs.js +1 -1
  57. package/nodes/core/ConstNode.js +10 -78
  58. package/nodes/core/ContextNode.cjs.js +1 -0
  59. package/nodes/core/ContextNode.js +26 -0
  60. package/nodes/core/ExpressionNode.cjs.js +1 -1
  61. package/nodes/core/ExpressionNode.js +19 -8
  62. package/nodes/core/FunctionCallNode.cjs.js +1 -1
  63. package/nodes/core/FunctionCallNode.js +31 -60
  64. package/nodes/core/FunctionNode.cjs.js +1 -1
  65. package/nodes/core/FunctionNode.js +45 -166
  66. package/nodes/core/InputNode.cjs.js +1 -1
  67. package/nodes/core/InputNode.js +43 -57
  68. package/nodes/core/Node.cjs.js +1 -1
  69. package/nodes/core/Node.js +155 -113
  70. package/nodes/core/NodeAttribute.cjs.js +1 -0
  71. package/nodes/core/NodeAttribute.js +11 -0
  72. package/nodes/core/NodeBuilder.cjs.js +1 -1
  73. package/nodes/core/NodeBuilder.js +422 -548
  74. package/nodes/core/NodeCode.cjs.js +1 -0
  75. package/nodes/core/NodeCode.js +13 -0
  76. package/nodes/core/NodeFrame.cjs.js +1 -1
  77. package/nodes/core/NodeFrame.js +34 -27
  78. package/nodes/core/NodeFunction.cjs.js +1 -0
  79. package/nodes/core/NodeFunction.js +17 -0
  80. package/nodes/core/NodeFunctionInput.cjs.js +1 -0
  81. package/nodes/core/NodeFunctionInput.js +14 -0
  82. package/nodes/core/NodeKeywords.cjs.js +1 -0
  83. package/nodes/core/NodeKeywords.js +54 -0
  84. package/nodes/core/NodeParser.cjs.js +1 -0
  85. package/nodes/core/NodeParser.js +8 -0
  86. package/nodes/core/NodeUniform.cjs.js +1 -1
  87. package/nodes/core/NodeUniform.js +18 -17
  88. package/nodes/core/NodeUtils.cjs.js +1 -1
  89. package/nodes/core/NodeUtils.js +55 -35
  90. package/nodes/core/NodeVar.cjs.js +1 -0
  91. package/nodes/core/NodeVar.js +11 -0
  92. package/nodes/core/NodeVary.cjs.js +1 -0
  93. package/nodes/core/NodeVary.js +11 -0
  94. package/nodes/core/PropertyNode.cjs.js +1 -0
  95. package/nodes/core/PropertyNode.js +26 -0
  96. package/nodes/core/TempNode.cjs.js +1 -1
  97. package/nodes/core/TempNode.js +21 -88
  98. package/nodes/core/UniformNode.cjs.js +1 -0
  99. package/nodes/core/UniformNode.js +28 -0
  100. package/nodes/core/VarNode.cjs.js +1 -1
  101. package/nodes/core/VarNode.js +28 -35
  102. package/nodes/core/VaryNode.cjs.js +1 -0
  103. package/nodes/core/VaryNode.js +38 -0
  104. package/nodes/core/constants.cjs.js +1 -0
  105. package/nodes/core/constants.js +11 -0
  106. package/nodes/display/ColorSpaceNode.cjs.js +1 -0
  107. package/nodes/display/ColorSpaceNode.js +67 -0
  108. package/nodes/display/NormalMapNode.cjs.js +1 -0
  109. package/nodes/display/NormalMapNode.js +71 -0
  110. package/nodes/fog/FogNode.cjs.js +1 -0
  111. package/nodes/fog/FogNode.js +18 -0
  112. package/nodes/fog/FogRangeNode.cjs.js +1 -0
  113. package/nodes/fog/FogRangeNode.js +20 -0
  114. package/nodes/functions/BSDFs.cjs.js +1 -0
  115. package/nodes/functions/BSDFs.js +121 -0
  116. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
  117. package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
  118. package/nodes/lights/LightContextNode.cjs.js +1 -0
  119. package/nodes/lights/LightContextNode.js +43 -0
  120. package/nodes/lights/LightNode.cjs.js +1 -0
  121. package/nodes/lights/LightNode.js +61 -0
  122. package/nodes/lights/LightsNode.cjs.js +1 -0
  123. package/nodes/lights/LightsNode.js +77 -0
  124. package/nodes/loaders/NodeLoader.cjs.js +1 -0
  125. package/nodes/loaders/NodeLoader.js +80 -0
  126. package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
  127. package/nodes/loaders/NodeMaterialLoader.js +29 -0
  128. package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
  129. package/nodes/loaders/NodeObjectLoader.js +49 -0
  130. package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
  131. package/nodes/materials/LineBasicNodeMaterial.js +31 -0
  132. package/nodes/materials/Materials.cjs.js +1 -0
  133. package/nodes/materials/Materials.js +27 -0
  134. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
  135. package/nodes/materials/MeshBasicNodeMaterial.js +32 -0
  136. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -1
  137. package/nodes/materials/MeshStandardNodeMaterial.js +41 -13
  138. package/nodes/materials/NodeMaterial.cjs.js +1 -1
  139. package/nodes/materials/NodeMaterial.js +67 -140
  140. package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
  141. package/nodes/materials/PointsNodeMaterial.js +34 -0
  142. package/nodes/math/CondNode.cjs.js +1 -1
  143. package/nodes/math/CondNode.js +33 -74
  144. package/nodes/math/MathNode.cjs.js +1 -1
  145. package/nodes/math/MathNode.js +193 -193
  146. package/nodes/math/OperatorNode.cjs.js +1 -1
  147. package/nodes/math/OperatorNode.js +116 -52
  148. package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
  149. package/nodes/parsers/GLSLNodeFunction.js +101 -0
  150. package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
  151. package/nodes/parsers/GLSLNodeParser.js +13 -0
  152. package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
  153. package/nodes/parsers/WGSLNodeFunction.js +71 -0
  154. package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
  155. package/nodes/parsers/WGSLNodeParser.js +13 -0
  156. package/nodes/procedural/CheckerNode.cjs.js +1 -1
  157. package/nodes/procedural/CheckerNode.js +22 -40
  158. package/nodes/utils/ArrayElementNode.cjs.js +1 -0
  159. package/nodes/utils/ArrayElementNode.js +22 -0
  160. package/nodes/utils/ConvertNode.cjs.js +1 -0
  161. package/nodes/utils/ConvertNode.js +29 -0
  162. package/nodes/utils/JoinNode.cjs.js +1 -1
  163. package/nodes/utils/JoinNode.js +19 -69
  164. package/nodes/utils/MatcapUVNode.cjs.js +1 -0
  165. package/nodes/utils/MatcapUVNode.js +18 -0
  166. package/nodes/utils/OscNode.cjs.js +1 -0
  167. package/nodes/utils/OscNode.js +55 -0
  168. package/nodes/utils/SplitNode.cjs.js +1 -0
  169. package/nodes/utils/SplitNode.js +58 -0
  170. package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
  171. package/nodes/utils/SpriteSheetUVNode.js +39 -0
  172. package/nodes/utils/TimerNode.cjs.js +1 -1
  173. package/nodes/utils/TimerNode.js +38 -56
  174. package/package.json +2 -2
  175. package/Nodes-894ac9dc.js +0 -1
  176. package/Nodes-af575af7.js +0 -157
  177. package/nodes/accessors/ColorsNode.cjs.js +0 -1
  178. package/nodes/accessors/ColorsNode.d.ts +0 -10
  179. package/nodes/accessors/ColorsNode.js +0 -40
  180. package/nodes/accessors/LightNode.cjs.js +0 -1
  181. package/nodes/accessors/LightNode.d.ts +0 -12
  182. package/nodes/accessors/LightNode.js +0 -41
  183. package/nodes/accessors/ResolutionNode.cjs.js +0 -1
  184. package/nodes/accessors/ResolutionNode.d.ts +0 -14
  185. package/nodes/accessors/ResolutionNode.js +0 -41
  186. package/nodes/accessors/ScreenUVNode.cjs.js +0 -1
  187. package/nodes/accessors/ScreenUVNode.d.ts +0 -11
  188. package/nodes/accessors/ScreenUVNode.js +0 -43
  189. package/nodes/core/NodeLib.cjs.js +0 -1
  190. package/nodes/core/NodeLib.d.ts +0 -22
  191. package/nodes/core/NodeLib.js +0 -37
  192. package/nodes/core/StructNode.cjs.js +0 -1
  193. package/nodes/core/StructNode.d.ts +0 -19
  194. package/nodes/core/StructNode.js +0 -72
  195. package/nodes/effects/BlurNode.cjs.js +0 -1
  196. package/nodes/effects/BlurNode.d.ts +0 -31
  197. package/nodes/effects/BlurNode.js +0 -100
  198. package/nodes/effects/ColorAdjustmentNode.cjs.js +0 -1
  199. package/nodes/effects/ColorAdjustmentNode.d.ts +0 -27
  200. package/nodes/effects/ColorAdjustmentNode.js +0 -73
  201. package/nodes/effects/LuminanceNode.cjs.js +0 -1
  202. package/nodes/effects/LuminanceNode.d.ts +0 -18
  203. package/nodes/effects/LuminanceNode.js +0 -46
  204. package/nodes/inputs/BoolNode.cjs.js +0 -1
  205. package/nodes/inputs/BoolNode.d.ts +0 -19
  206. package/nodes/inputs/BoolNode.js +0 -36
  207. package/nodes/inputs/ColorNode.cjs.js +0 -1
  208. package/nodes/inputs/ColorNode.d.ts +0 -21
  209. package/nodes/inputs/ColorNode.js +0 -41
  210. package/nodes/inputs/CubeTextureNode.cjs.js +0 -1
  211. package/nodes/inputs/CubeTextureNode.d.ts +0 -17
  212. package/nodes/inputs/CubeTextureNode.js +0 -79
  213. package/nodes/inputs/FloatNode.cjs.js +0 -1
  214. package/nodes/inputs/FloatNode.d.ts +0 -19
  215. package/nodes/inputs/FloatNode.js +0 -36
  216. package/nodes/inputs/IntNode.cjs.js +0 -1
  217. package/nodes/inputs/IntNode.d.ts +0 -19
  218. package/nodes/inputs/IntNode.js +0 -36
  219. package/nodes/inputs/Matrix3Node.cjs.js +0 -1
  220. package/nodes/inputs/Matrix3Node.d.ts +0 -22
  221. package/nodes/inputs/Matrix3Node.js +0 -46
  222. package/nodes/inputs/Matrix4Node.cjs.js +0 -1
  223. package/nodes/inputs/Matrix4Node.d.ts +0 -22
  224. package/nodes/inputs/Matrix4Node.js +0 -46
  225. package/nodes/inputs/PropertyNode.cjs.js +0 -1
  226. package/nodes/inputs/PropertyNode.d.ts +0 -10
  227. package/nodes/inputs/PropertyNode.js +0 -35
  228. package/nodes/inputs/RTTNode.cjs.js +0 -1
  229. package/nodes/inputs/RTTNode.d.ts +0 -27
  230. package/nodes/inputs/RTTNode.js +0 -103
  231. package/nodes/inputs/ReflectorNode.cjs.js +0 -1
  232. package/nodes/inputs/ReflectorNode.d.ts +0 -21
  233. package/nodes/inputs/ReflectorNode.js +0 -60
  234. package/nodes/inputs/ScreenNode.cjs.js +0 -1
  235. package/nodes/inputs/ScreenNode.d.ts +0 -11
  236. package/nodes/inputs/ScreenNode.js +0 -20
  237. package/nodes/inputs/TextureNode.cjs.js +0 -1
  238. package/nodes/inputs/TextureNode.d.ts +0 -20
  239. package/nodes/inputs/TextureNode.js +0 -83
  240. package/nodes/inputs/Vector2Node.cjs.js +0 -1
  241. package/nodes/inputs/Vector2Node.d.ts +0 -21
  242. package/nodes/inputs/Vector2Node.js +0 -40
  243. package/nodes/inputs/Vector3Node.cjs.js +0 -1
  244. package/nodes/inputs/Vector3Node.d.ts +0 -21
  245. package/nodes/inputs/Vector3Node.js +0 -41
  246. package/nodes/inputs/Vector4Node.cjs.js +0 -1
  247. package/nodes/inputs/Vector4Node.d.ts +0 -21
  248. package/nodes/inputs/Vector4Node.js +0 -42
  249. package/nodes/materials/BasicNodeMaterial.cjs.js +0 -1
  250. package/nodes/materials/BasicNodeMaterial.d.ts +0 -11
  251. package/nodes/materials/BasicNodeMaterial.js +0 -15
  252. package/nodes/materials/PhongNodeMaterial.cjs.js +0 -1
  253. package/nodes/materials/PhongNodeMaterial.d.ts +0 -21
  254. package/nodes/materials/PhongNodeMaterial.js +0 -15
  255. package/nodes/materials/SpriteNodeMaterial.cjs.js +0 -1
  256. package/nodes/materials/SpriteNodeMaterial.d.ts +0 -12
  257. package/nodes/materials/SpriteNodeMaterial.js +0 -15
  258. package/nodes/materials/StandardNodeMaterial.cjs.js +0 -1
  259. package/nodes/materials/StandardNodeMaterial.d.ts +0 -25
  260. package/nodes/materials/StandardNodeMaterial.js +0 -15
  261. package/nodes/materials/nodes/BasicNode.cjs.js +0 -1
  262. package/nodes/materials/nodes/BasicNode.d.ts +0 -15
  263. package/nodes/materials/nodes/BasicNode.js +0 -91
  264. package/nodes/materials/nodes/MeshStandardNode.cjs.js +0 -1
  265. package/nodes/materials/nodes/MeshStandardNode.d.ts +0 -25
  266. package/nodes/materials/nodes/MeshStandardNode.js +0 -81
  267. package/nodes/materials/nodes/PhongNode.cjs.js +0 -1
  268. package/nodes/materials/nodes/PhongNode.d.ts +0 -14
  269. package/nodes/materials/nodes/PhongNode.js +0 -212
  270. package/nodes/materials/nodes/RawNode.cjs.js +0 -1
  271. package/nodes/materials/nodes/RawNode.d.ts +0 -10
  272. package/nodes/materials/nodes/RawNode.js +0 -42
  273. package/nodes/materials/nodes/SpriteNode.cjs.js +0 -1
  274. package/nodes/materials/nodes/SpriteNode.d.ts +0 -13
  275. package/nodes/materials/nodes/SpriteNode.js +0 -113
  276. package/nodes/materials/nodes/StandardNode.cjs.js +0 -1
  277. package/nodes/materials/nodes/StandardNode.d.ts +0 -15
  278. package/nodes/materials/nodes/StandardNode.js +0 -336
  279. package/nodes/misc/BumpMapNode.cjs.js +0 -1
  280. package/nodes/misc/BumpMapNode.d.ts +0 -21
  281. package/nodes/misc/BumpMapNode.js +0 -80
  282. package/nodes/misc/NormalMapNode.cjs.js +0 -1
  283. package/nodes/misc/NormalMapNode.d.ts +0 -19
  284. package/nodes/misc/NormalMapNode.js +0 -102
  285. package/nodes/misc/TextureCubeNode.cjs.js +0 -1
  286. package/nodes/misc/TextureCubeNode.d.ts +0 -21
  287. package/nodes/misc/TextureCubeNode.js +0 -52
  288. package/nodes/misc/TextureCubeUVNode.cjs.js +0 -1
  289. package/nodes/misc/TextureCubeUVNode.d.ts +0 -18
  290. package/nodes/misc/TextureCubeUVNode.js +0 -229
  291. package/nodes/postprocessing/NodePass.cjs.js +0 -1
  292. package/nodes/postprocessing/NodePass.d.ts +0 -15
  293. package/nodes/postprocessing/NodePass.js +0 -61
  294. package/nodes/postprocessing/NodePostProcessing.cjs.js +0 -1
  295. package/nodes/postprocessing/NodePostProcessing.d.ts +0 -26
  296. package/nodes/postprocessing/NodePostProcessing.js +0 -91
  297. package/nodes/procedural/NoiseNode.cjs.js +0 -1
  298. package/nodes/procedural/NoiseNode.d.ts +0 -17
  299. package/nodes/procedural/NoiseNode.js +0 -43
  300. package/nodes/utils/BypassNode.cjs.js +0 -1
  301. package/nodes/utils/BypassNode.d.ts +0 -11
  302. package/nodes/utils/BypassNode.js +0 -55
  303. package/nodes/utils/ColorSpaceNode.cjs.js +0 -1
  304. package/nodes/utils/ColorSpaceNode.d.ts +0 -55
  305. package/nodes/utils/ColorSpaceNode.js +0 -106
  306. package/nodes/utils/MaxMIPLevelNode.cjs.js +0 -1
  307. package/nodes/utils/MaxMIPLevelNode.d.ts +0 -11
  308. package/nodes/utils/MaxMIPLevelNode.js +0 -38
  309. package/nodes/utils/SpecularMIPLevelNode.cjs.js +0 -1
  310. package/nodes/utils/SpecularMIPLevelNode.d.ts +0 -17
  311. package/nodes/utils/SpecularMIPLevelNode.js +0 -61
  312. package/nodes/utils/SubSlotNode.cjs.js +0 -1
  313. package/nodes/utils/SubSlotNode.js +0 -53
  314. package/nodes/utils/SwitchNode.cjs.js +0 -1
  315. package/nodes/utils/SwitchNode.d.ts +0 -11
  316. package/nodes/utils/SwitchNode.js +0 -69
  317. package/nodes/utils/UVTransformNode.cjs.js +0 -1
  318. package/nodes/utils/UVTransformNode.d.ts +0 -15
  319. package/nodes/utils/UVTransformNode.js +0 -46
  320. package/nodes/utils/VelocityNode.cjs.js +0 -1
  321. package/nodes/utils/VelocityNode.d.ts +0 -28
  322. package/nodes/utils/VelocityNode.js +0 -115
@@ -0,0 +1,101 @@
1
+ import NodeFunction from '../core/NodeFunction.js';
2
+ import NodeFunctionInput from '../core/NodeFunctionInput.js';
3
+
4
+ const declarationRegexp = /^\s*(highp|mediump|lowp)?\s*([a-z_0-9]+)\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)/i;
5
+ const propertiesRegexp = /[a-z_0-9]+/gi;
6
+ const pragmaMain = '#pragma main';
7
+
8
+ const parse = source => {
9
+ source = source.trim();
10
+ const pragmaMainIndex = source.indexOf(pragmaMain);
11
+ const mainCode = pragmaMainIndex !== -1 ? source.slice(pragmaMainIndex + pragmaMain.length) : source;
12
+ const declaration = mainCode.match(declarationRegexp);
13
+
14
+ if (declaration !== null && declaration.length === 5) {
15
+ // tokenizer
16
+ const inputsCode = declaration[4];
17
+ const propsMatches = [];
18
+ let nameMatch = null;
19
+
20
+ while ((nameMatch = propertiesRegexp.exec(inputsCode)) !== null) {
21
+ propsMatches.push(nameMatch);
22
+ } // parser
23
+
24
+
25
+ const inputs = [];
26
+ let i = 0;
27
+
28
+ while (i < propsMatches.length) {
29
+ const isConst = propsMatches[i][0] === 'const';
30
+
31
+ if (isConst === true) {
32
+ i++;
33
+ }
34
+
35
+ let qualifier = propsMatches[i][0];
36
+
37
+ if (qualifier === 'in' || qualifier === 'out' || qualifier === 'inout') {
38
+ i++;
39
+ } else {
40
+ qualifier = '';
41
+ }
42
+
43
+ const type = propsMatches[i++][0];
44
+ let count = Number.parseInt(propsMatches[i][0]);
45
+ if (Number.isNaN(count) === false) i++;else count = null;
46
+ const name = propsMatches[i++][0];
47
+ inputs.push(new NodeFunctionInput(type, name, count, qualifier, isConst));
48
+ } //
49
+
50
+
51
+ const blockCode = mainCode.substring(declaration[0].length);
52
+ const name = declaration[3] !== undefined ? declaration[3] : '';
53
+ const type = declaration[2];
54
+ const presicion = declaration[1] !== undefined ? declaration[1] : '';
55
+ const headerCode = pragmaMainIndex !== -1 ? source.slice(0, pragmaMainIndex) : '';
56
+ return {
57
+ type,
58
+ inputs,
59
+ name,
60
+ presicion,
61
+ inputsCode,
62
+ blockCode,
63
+ headerCode
64
+ };
65
+ } else {
66
+ throw new Error('FunctionNode: Function is not a GLSL code.');
67
+ }
68
+ };
69
+
70
+ class GLSLNodeFunction extends NodeFunction {
71
+ constructor(source) {
72
+ const {
73
+ type,
74
+ inputs,
75
+ name,
76
+ presicion,
77
+ inputsCode,
78
+ blockCode,
79
+ headerCode
80
+ } = parse(source);
81
+ super(type, inputs, name, presicion);
82
+ this.inputsCode = inputsCode;
83
+ this.blockCode = blockCode;
84
+ this.headerCode = headerCode;
85
+ }
86
+
87
+ getCode(name = this.name) {
88
+ const headerCode = this.headerCode;
89
+ const presicion = this.presicion;
90
+ let declarationCode = `${this.type} ${name} ( ${this.inputsCode.trim()} )`;
91
+
92
+ if (presicion !== '') {
93
+ declarationCode = `${presicion} ${declarationCode}`;
94
+ }
95
+
96
+ return headerCode + declarationCode + this.blockCode;
97
+ }
98
+
99
+ }
100
+
101
+ export default GLSLNodeFunction;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/NodeParser.cjs.js"),r=require("./GLSLNodeFunction.cjs.js");require("../core/NodeFunction.cjs.js"),require("../core/NodeFunctionInput.cjs.js");module.exports=class extends e{parseFunction(e){return new r(e)}};
@@ -0,0 +1,13 @@
1
+ import NodeParser from '../core/NodeParser.js';
2
+ import GLSLNodeFunction from './GLSLNodeFunction.js';
3
+ import '../core/NodeFunction.js';
4
+ import '../core/NodeFunctionInput.js';
5
+
6
+ class GLSLNodeParser extends NodeParser {
7
+ parseFunction(source) {
8
+ return new GLSLNodeFunction(source);
9
+ }
10
+
11
+ }
12
+
13
+ export default GLSLNodeParser;
@@ -0,0 +1 @@
1
+ "use strict";var t=require("../core/NodeFunction.cjs.js"),e=require("../core/NodeFunctionInput.cjs.js");const n=/^fn\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)\s*\-\>\s*([a-z_0-9]+)?/i,s=/[a-z_0-9]+/gi;module.exports=class extends t{constructor(t){const{type:o,inputs:i,name:c,inputsCode:u,blockCode:r}=(t=>{const o=(t=t.trim()).match(n);if(null!==o&&4===o.length){const n=o[2],i=[];let c=null;for(;null!==(c=s.exec(n));)i.push(c);const u=[];let r=0;for(;r<i.length;){const t=i[r++][0],n=i[r++][0];r<i.length&&!0===/^[fui]\d{2}$/.test(i[r][0])&&r++,u.push(new e(n,t))}const l=t.substring(o[0].length),d=void 0!==o[1]?o[1]:"";return{type:o[3],inputs:u,name:d,inputsCode:n,blockCode:l}}throw new Error("FunctionNode: Function is not a WGSL code.")})(t);super(o,i,c),this.inputsCode=u,this.blockCode=r}getCode(t=this.name){return`fn ${t} ( ${this.inputsCode.trim()} ) -> ${this.type}`+this.blockCode}};
@@ -0,0 +1,71 @@
1
+ import NodeFunction from '../core/NodeFunction.js';
2
+ import NodeFunctionInput from '../core/NodeFunctionInput.js';
3
+
4
+ const declarationRegexp = /^fn\s*([a-z_0-9]+)?\s*\(([\s\S]*?)\)\s*\-\>\s*([a-z_0-9]+)?/i;
5
+ const propertiesRegexp = /[a-z_0-9]+/gi;
6
+
7
+ const parse = source => {
8
+ source = source.trim();
9
+ const declaration = source.match(declarationRegexp);
10
+
11
+ if (declaration !== null && declaration.length === 4) {
12
+ // tokenizer
13
+ const inputsCode = declaration[2];
14
+ const propsMatches = [];
15
+ let nameMatch = null;
16
+
17
+ while ((nameMatch = propertiesRegexp.exec(inputsCode)) !== null) {
18
+ propsMatches.push(nameMatch);
19
+ } // parser
20
+
21
+
22
+ const inputs = [];
23
+ let i = 0;
24
+
25
+ while (i < propsMatches.length) {
26
+ // default
27
+ const name = propsMatches[i++][0];
28
+ const type = propsMatches[i++][0]; // precision
29
+
30
+ if (i < propsMatches.length && /^[fui]\d{2}$/.test(propsMatches[i][0]) === true) i++; // add input
31
+
32
+ inputs.push(new NodeFunctionInput(type, name));
33
+ } //
34
+
35
+
36
+ const blockCode = source.substring(declaration[0].length);
37
+ const name = declaration[1] !== undefined ? declaration[1] : '';
38
+ const type = declaration[3];
39
+ return {
40
+ type,
41
+ inputs,
42
+ name,
43
+ inputsCode,
44
+ blockCode
45
+ };
46
+ } else {
47
+ throw new Error('FunctionNode: Function is not a WGSL code.');
48
+ }
49
+ };
50
+
51
+ class WGSLNodeFunction extends NodeFunction {
52
+ constructor(source) {
53
+ const {
54
+ type,
55
+ inputs,
56
+ name,
57
+ inputsCode,
58
+ blockCode
59
+ } = parse(source);
60
+ super(type, inputs, name);
61
+ this.inputsCode = inputsCode;
62
+ this.blockCode = blockCode;
63
+ }
64
+
65
+ getCode(name = this.name) {
66
+ return `fn ${name} ( ${this.inputsCode.trim()} ) -> ${this.type}` + this.blockCode;
67
+ }
68
+
69
+ }
70
+
71
+ export default WGSLNodeFunction;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/NodeParser.cjs.js"),r=require("./WGSLNodeFunction.cjs.js");require("../core/NodeFunction.cjs.js"),require("../core/NodeFunctionInput.cjs.js");module.exports=class extends e{parseFunction(e){return new r(e)}};
@@ -0,0 +1,13 @@
1
+ import NodeParser from '../core/NodeParser.js';
2
+ import WGSLNodeFunction from './WGSLNodeFunction.js';
3
+ import '../core/NodeFunction.js';
4
+ import '../core/NodeFunctionInput.js';
5
+
6
+ class WGSLNodeParser extends NodeParser {
7
+ parseFunction(source) {
8
+ return new WGSLNodeFunction(source);
9
+ }
10
+
11
+ }
12
+
13
+ export default WGSLNodeParser;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/TempNode.cjs.js"),o=require("../core/FunctionNode.cjs.js"),t=require("../accessors/UVNode.cjs.js");function r(o){e.TempNode.call(this,"f"),this.uv=o||new t.UVNode}require("three"),require("../core/Node.cjs.js"),require("../core/NodeLib.cjs.js"),r.prototype=Object.create(e.TempNode.prototype),r.prototype.constructor=r,r.prototype.nodeType="Noise",r.Nodes={checker:new o.FunctionNode(["float checker( vec2 uv ) {","\tfloat cx = floor( uv.x );","\tfloat cy = floor( uv.y ); ","\tfloat result = mod( cx + cy, 2.0 );","\treturn sign( result );","}"].join("\n"))},r.prototype.generate=function(e,o){var t=e.include(r.Nodes.checker);return e.format(t+"( "+this.uv.build(e,"v2")+" )",this.getType(e),o)},r.prototype.copy=function(o){return e.TempNode.prototype.copy.call(this,o),this.uv=o.uv,this},r.prototype.toJSON=function(e){var o=this.getJSONNode(e);return o||((o=this.createJSONNode(e)).uv=this.uv.toJSON(e).uuid),o},exports.CheckerNode=r;
1
+ "use strict";var e=require("../core/Node.cjs.js"),r=require("../ShaderNode.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../utils/JoinNode.cjs.js"),require("../utils/SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");const s=new r.ShaderNode((e=>{const s=r.mul(e.uv,2),o=r.floor(s.x),c=r.floor(s.y),j=r.mod(r.add(o,c),2);return r.sign(j)}));module.exports=class extends e{constructor(e=r.uv()){super("float"),this.uvNode=e}generate(e){return s({uv:this.uvNode}).build(e)}};
@@ -1,44 +1,26 @@
1
- import { TempNode } from '../core/TempNode.js';
2
- import { FunctionNode } from '../core/FunctionNode.js';
3
- import { UVNode } from '../accessors/UVNode.js';
4
-
5
- function CheckerNode(uv) {
6
- TempNode.call(this, 'f');
7
- this.uv = uv || new UVNode();
8
- }
9
-
10
- CheckerNode.prototype = Object.create(TempNode.prototype);
11
- CheckerNode.prototype.constructor = CheckerNode;
12
- CheckerNode.prototype.nodeType = 'Noise';
13
-
14
- CheckerNode.Nodes = function () {
15
- // https://github.com/mattdesl/glsl-checker/blob/master/index.glsl
16
- var checker = new FunctionNode(['float checker( vec2 uv ) {', ' float cx = floor( uv.x );', ' float cy = floor( uv.y ); ', ' float result = mod( cx + cy, 2.0 );', ' return sign( result );', '}'].join('\n'));
17
- return {
18
- checker: checker
19
- };
20
- }();
21
-
22
- CheckerNode.prototype.generate = function (builder, output) {
23
- var snoise = builder.include(CheckerNode.Nodes.checker);
24
- return builder.format(snoise + '( ' + this.uv.build(builder, 'v2') + ' )', this.getType(builder), output);
25
- };
26
-
27
- CheckerNode.prototype.copy = function (source) {
28
- TempNode.prototype.copy.call(this, source);
29
- this.uv = source.uv;
30
- return this;
31
- };
32
-
33
- CheckerNode.prototype.toJSON = function (meta) {
34
- var data = this.getJSONNode(meta);
1
+ import Node from '../core/Node.js';
2
+ import { ShaderNode, mul, floor, mod, add, sign, uv } from '../ShaderNode.js';
3
+
4
+ const checkerShaderNode = new ShaderNode(inputs => {
5
+ const uv = mul(inputs.uv, 2.0);
6
+ const cx = floor(uv.x);
7
+ const cy = floor(uv.y);
8
+ const result = mod(add(cx, cy), 2.0);
9
+ return sign(result);
10
+ });
11
+
12
+ class CheckerNode extends Node {
13
+ constructor(uvNode = uv()) {
14
+ super('float');
15
+ this.uvNode = uvNode;
16
+ }
35
17
 
36
- if (!data) {
37
- data = this.createJSONNode(meta);
38
- data.uv = this.uv.toJSON(meta).uuid;
18
+ generate(builder) {
19
+ return checkerShaderNode({
20
+ uv: this.uvNode
21
+ }).build(builder);
39
22
  }
40
23
 
41
- return data;
42
- };
24
+ }
43
25
 
44
- export { CheckerNode };
26
+ export default CheckerNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e,r){super(),this.node=e,this.indexNode=r}getNodeType(e){return this.node.getNodeType(e)}generate(e){return`${this.node.build(e)}[ ${this.indexNode.build(e,"int")} ]`}};
@@ -0,0 +1,22 @@
1
+ import Node from '../core/Node.js';
2
+
3
+ class ArrayElementNode extends Node {
4
+ constructor(node, indexNode) {
5
+ super();
6
+ this.node = node;
7
+ this.indexNode = indexNode;
8
+ }
9
+
10
+ getNodeType(builder) {
11
+ return this.node.getNodeType(builder);
12
+ }
13
+
14
+ generate(builder) {
15
+ const nodeSnippet = this.node.build(builder);
16
+ const indexSnippet = this.indexNode.build(builder, 'int');
17
+ return `${nodeSnippet}[ ${indexSnippet} ]`;
18
+ }
19
+
20
+ }
21
+
22
+ export default ArrayElementNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e,r){super(),this.node=e,this.convertTo=r}getNodeType(){return this.convertTo}generate(e){const r=this.convertTo,t=this.node;if(!1===e.isReference(r)){const s=e.getType(r),o=t.build(e,r);return`${e.getVectorType(s)}( ${o} )`}return t.build(e,r)}};
@@ -0,0 +1,29 @@
1
+ import Node from '../core/Node.js';
2
+
3
+ class ConvertNode extends Node {
4
+ constructor(node, convertTo) {
5
+ super();
6
+ this.node = node;
7
+ this.convertTo = convertTo;
8
+ }
9
+
10
+ getNodeType() {
11
+ return this.convertTo;
12
+ }
13
+
14
+ generate(builder) {
15
+ const convertTo = this.convertTo;
16
+ const node = this.node;
17
+
18
+ if (builder.isReference(convertTo) === false) {
19
+ const convertToSnippet = builder.getType(convertTo);
20
+ const nodeSnippet = node.build(builder, convertTo);
21
+ return `${builder.getVectorType(convertToSnippet)}( ${nodeSnippet} )`;
22
+ } else {
23
+ return node.build(builder, convertTo);
24
+ }
25
+ }
26
+
27
+ }
28
+
29
+ export default ConvertNode;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("../core/TempNode.cjs.js"),e=require("../core/NodeUtils.cjs.js");require("three"),require("../core/Node.cjs.js");var o=e.NodeUtils.elements;function r(e,o,r,i){t.TempNode.call(this,"f"),this.x=e,this.y=o,this.z=r,this.w=i}r.prototype=Object.create(t.TempNode.prototype),r.prototype.constructor=r,r.prototype.nodeType="Join",r.prototype.getNumElements=function(){for(var t=o.length;t--;)if(void 0!==this[o[t]]){++t;break}return Math.max(t,2)},r.prototype.getType=function(t){return t.getTypeFromLength(this.getNumElements())},r.prototype.generate=function(t,e){var r=this.getType(t),i=this.getNumElements(),s=[];for(let e=0;e<i;e++){var n=this[o[e]];s.push(n?n.build(t,"f"):"0.0")}var p=(i>1?t.getConstructorFromLength(i):"")+"( "+s.join(", ")+" )";return t.format(p,r,e)},r.prototype.copy=function(e){t.TempNode.prototype.copy.call(this,e);for(let t in e.inputs)this[t]=e.inputs[t];return this},r.prototype.toJSON=function(t){var e=this.getJSONNode(t);if(!e){(e=this.createJSONNode(t)).inputs={};var r=this.getNumElements();for(let s=0;s<r;s++){var i=this[o[s]];i&&(e.inputs[o[s]]=i.toJSON(t).uuid)}}return e},exports.JoinNode=r;
1
+ "use strict";var e=require("../core/Node.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three");module.exports=class extends e{constructor(e=[]){super(),this.nodes=e}getNodeType(e){return e.getTypeFromLength(this.nodes.reduce(((t,s)=>t+e.getTypeLength(s.getNodeType(e))),0))}generate(e){const t=this.getNodeType(e),s=this.nodes,r=[];for(let t=0;t<s.length;t++){const o=s[t].build(e);r.push(o)}return`${e.getType(t)}( ${r.join(", ")} )`}};
@@ -1,79 +1,29 @@
1
- import { TempNode } from '../core/TempNode.js';
2
- import { NodeUtils } from '../core/NodeUtils.js';
1
+ import Node from '../core/Node.js';
3
2
 
4
- var inputs = NodeUtils.elements;
5
-
6
- function JoinNode(x, y, z, w) {
7
- TempNode.call(this, 'f');
8
- this.x = x;
9
- this.y = y;
10
- this.z = z;
11
- this.w = w;
12
- }
13
-
14
- JoinNode.prototype = Object.create(TempNode.prototype);
15
- JoinNode.prototype.constructor = JoinNode;
16
- JoinNode.prototype.nodeType = 'Join';
17
-
18
- JoinNode.prototype.getNumElements = function () {
19
- var i = inputs.length;
20
-
21
- while (i--) {
22
- if (this[inputs[i]] !== undefined) {
23
- ++i;
24
- break;
25
- }
26
- }
27
-
28
- return Math.max(i, 2);
29
- };
30
-
31
- JoinNode.prototype.getType = function (builder) {
32
- return builder.getTypeFromLength(this.getNumElements());
33
- };
34
-
35
- JoinNode.prototype.generate = function (builder, output) {
36
- var type = this.getType(builder),
37
- length = this.getNumElements(),
38
- outputs = [];
39
-
40
- for (let i = 0; i < length; i++) {
41
- var elm = this[inputs[i]];
42
- outputs.push(elm ? elm.build(builder, 'f') : '0.0');
3
+ class JoinNode extends Node {
4
+ constructor(nodes = []) {
5
+ super();
6
+ this.nodes = nodes;
43
7
  }
44
8
 
45
- var code = (length > 1 ? builder.getConstructorFromLength(length) : '') + '( ' + outputs.join(', ') + ' )';
46
- return builder.format(code, type, output);
47
- };
48
-
49
- JoinNode.prototype.copy = function (source) {
50
- TempNode.prototype.copy.call(this, source);
51
-
52
- for (let prop in source.inputs) {
53
- this[prop] = source.inputs[prop];
9
+ getNodeType(builder) {
10
+ return builder.getTypeFromLength(this.nodes.reduce((count, cur) => count + builder.getTypeLength(cur.getNodeType(builder)), 0));
54
11
  }
55
12
 
56
- return this;
57
- };
58
-
59
- JoinNode.prototype.toJSON = function (meta) {
60
- var data = this.getJSONNode(meta);
13
+ generate(builder) {
14
+ const type = this.getNodeType(builder);
15
+ const nodes = this.nodes;
16
+ const snippetValues = [];
61
17
 
62
- if (!data) {
63
- data = this.createJSONNode(meta);
64
- data.inputs = {};
65
- var length = this.getNumElements();
66
-
67
- for (let i = 0; i < length; i++) {
68
- var elm = this[inputs[i]];
69
-
70
- if (elm) {
71
- data.inputs[inputs[i]] = elm.toJSON(meta).uuid;
72
- }
18
+ for (let i = 0; i < nodes.length; i++) {
19
+ const input = nodes[i];
20
+ const inputSnippet = input.build(builder);
21
+ snippetValues.push(inputSnippet);
73
22
  }
23
+
24
+ return `${builder.getType(type)}( ${snippetValues.join(', ')} )`;
74
25
  }
75
26
 
76
- return data;
77
- };
27
+ }
78
28
 
79
- export { JoinNode };
29
+ export default JoinNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/TempNode.cjs.js"),r=require("../ShaderNode.cjs.js");require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("./JoinNode.cjs.js"),require("./SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("./ArrayElementNode.cjs.js"),require("./ConvertNode.cjs.js");module.exports=class extends e{constructor(){super("vec2")}generate(e){const s=r.normalize(r.join(r.positionViewDirection.z,0,r.negate(r.positionViewDirection.x))),o=r.cross(r.positionViewDirection,s);return r.add(r.mul(r.join(r.dot(s,r.transformedNormalView),r.dot(o,r.transformedNormalView)),.495),.5).build(e,this.getNodeType(e))}};
@@ -0,0 +1,18 @@
1
+ import TempNode from '../core/TempNode.js';
2
+ import { normalize, join, negate, positionViewDirection, cross, add, mul, dot, transformedNormalView } from '../ShaderNode.js';
3
+
4
+ class MatcapUVNode extends TempNode {
5
+ constructor() {
6
+ super('vec2');
7
+ }
8
+
9
+ generate(builder) {
10
+ const x = normalize(join(positionViewDirection.z, 0, negate(positionViewDirection.x)));
11
+ const y = cross(positionViewDirection, x);
12
+ const uv = add(mul(join(dot(x, transformedNormalView), dot(y, transformedNormalView)), 0.495), 0.5);
13
+ return uv.build(builder, this.getNodeType(builder));
14
+ }
15
+
16
+ }
17
+
18
+ export default MatcapUVNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("../core/Node.cjs.js"),s=require("./TimerNode.cjs.js"),o=require("../ShaderNode.cjs.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("../accessors/BufferNode.cjs.js"),require("../accessors/PositionNode.cjs.js"),require("../accessors/ModelNode.cjs.js"),require("../accessors/Object3DNode.cjs.js"),require("../math/MathNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("./JoinNode.cjs.js"),require("./SplitNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js"),require("../math/OperatorNode.cjs.js"),require("../accessors/NormalNode.cjs.js"),require("../accessors/CameraNode.cjs.js"),require("../accessors/TextureNode.cjs.js"),require("../accessors/UVNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("./ArrayElementNode.cjs.js"),require("./ConvertNode.cjs.js");var i=c(e);class j extends r{constructor(e=j.SINE,r=new s){super(),this.method=e,this.timeNode=r}getNodeType(e){return this.timeNode.getNodeType(e)}generate(e){const r=this.method,s=this.timeNode;let c=null;return r===j.SINE?c=o.add(o.mul(o.sin(o.mul(o.add(s,.75),2*Math.PI)),.5),.5):r===j.SQUARE?c=o.round(o.fract(s)):r===j.TRIANGLE?c=o.abs(o.sub(1,o.mul(o.fract(o.add(s,.5)),2))):r===j.SAWTOOTH&&(c=o.fract(s)),c.build(e)}serialize(e){super.serialize(e),e.method=this.method}deserialize(e){super.deserialize(e),this.method=e.method}}i.default(j,"SINE","sine"),i.default(j,"SQUARE","square"),i.default(j,"TRIANGLE","triangle"),i.default(j,"SAWTOOTH","sawtooth"),module.exports=j;
@@ -0,0 +1,55 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import Node from '../core/Node.js';
3
+ import TimerNode from './TimerNode.js';
4
+ import { add, mul, sin, round, fract, abs, sub } from '../ShaderNode.js';
5
+
6
+ class OscNode extends Node {
7
+ constructor(method = OscNode.SINE, timeNode = new TimerNode()) {
8
+ super();
9
+ this.method = method;
10
+ this.timeNode = timeNode;
11
+ }
12
+
13
+ getNodeType(builder) {
14
+ return this.timeNode.getNodeType(builder);
15
+ }
16
+
17
+ generate(builder) {
18
+ const method = this.method;
19
+ const timeNode = this.timeNode;
20
+ let outputNode = null;
21
+
22
+ if (method === OscNode.SINE) {
23
+ outputNode = add(mul(sin(mul(add(timeNode, 0.75), Math.PI * 2)), 0.5), 0.5);
24
+ } else if (method === OscNode.SQUARE) {
25
+ outputNode = round(fract(timeNode));
26
+ } else if (method === OscNode.TRIANGLE) {
27
+ outputNode = abs(sub(1, mul(fract(add(timeNode, 0.5)), 2)));
28
+ } else if (method === OscNode.SAWTOOTH) {
29
+ outputNode = fract(timeNode);
30
+ }
31
+
32
+ return outputNode.build(builder);
33
+ }
34
+
35
+ serialize(data) {
36
+ super.serialize(data);
37
+ data.method = this.method;
38
+ }
39
+
40
+ deserialize(data) {
41
+ super.deserialize(data);
42
+ this.method = data.method;
43
+ }
44
+
45
+ }
46
+
47
+ _defineProperty(OscNode, "SINE", 'sine');
48
+
49
+ _defineProperty(OscNode, "SQUARE", 'square');
50
+
51
+ _defineProperty(OscNode, "TRIANGLE", 'triangle');
52
+
53
+ _defineProperty(OscNode, "SAWTOOTH", 'sawtooth');
54
+
55
+ export default OscNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js"),r=require("../core/NodeBuilder.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js");module.exports=class extends e{constructor(e,r="x"){super(),this.node=e,this.components=r}getVectorLength(){let e=this.components.length;for(const t of this.components)e=Math.max(r.vector.indexOf(t)+1,e);return e}getNodeType(e){return e.getTypeFromLength(this.components.length)}generate(e){const r=this.node,t=e.getTypeLength(r.getNodeType(e));if(t>1){let s=null;this.getVectorLength()>=t&&(s=e.getTypeFromLength(this.getVectorLength()));return`${r.build(e,s)}.${this.components}`}return r.build(e)}serialize(e){super.serialize(e),e.components=this.components}deserialize(e){super.deserialize(e),this.components=e.components}};
@@ -0,0 +1,58 @@
1
+ import Node from '../core/Node.js';
2
+ import { vector } from '../core/NodeBuilder.js';
3
+
4
+ class SplitNode extends Node {
5
+ constructor(node, components = 'x') {
6
+ super();
7
+ this.node = node;
8
+ this.components = components;
9
+ }
10
+
11
+ getVectorLength() {
12
+ let vectorLength = this.components.length;
13
+
14
+ for (const c of this.components) {
15
+ vectorLength = Math.max(vector.indexOf(c) + 1, vectorLength);
16
+ }
17
+
18
+ return vectorLength;
19
+ }
20
+
21
+ getNodeType(builder) {
22
+ return builder.getTypeFromLength(this.components.length);
23
+ }
24
+
25
+ generate(builder) {
26
+ const node = this.node;
27
+ const nodeTypeLength = builder.getTypeLength(node.getNodeType(builder));
28
+
29
+ if (nodeTypeLength > 1) {
30
+ let type = null;
31
+ const componentsLength = this.getVectorLength();
32
+
33
+ if (componentsLength >= nodeTypeLength) {
34
+ // need expand the input node
35
+ type = builder.getTypeFromLength(this.getVectorLength());
36
+ }
37
+
38
+ const nodeSnippet = node.build(builder, type);
39
+ return `${nodeSnippet}.${this.components}`;
40
+ } else {
41
+ // ignore components if node is a float
42
+ return node.build(builder);
43
+ }
44
+ }
45
+
46
+ serialize(data) {
47
+ super.serialize(data);
48
+ data.components = this.components;
49
+ }
50
+
51
+ deserialize(data) {
52
+ super.deserialize(data);
53
+ this.components = data.components;
54
+ }
55
+
56
+ }
57
+
58
+ export default SplitNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js"),r=require("../core/ConstNode.cjs.js"),s=require("../accessors/UVNode.cjs.js"),o=require("../math/MathNode.cjs.js"),c=require("../math/OperatorNode.cjs.js"),i=require("./SplitNode.cjs.js"),j=require("./JoinNode.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/InputNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../core/TempNode.cjs.js"),require("../core/ExpressionNode.cjs.js"),require("../core/NodeBuilder.cjs.js"),require("../core/NodeUniform.cjs.js"),require("../core/NodeAttribute.cjs.js"),require("../core/NodeVary.cjs.js"),require("../core/NodeVar.cjs.js"),require("../core/NodeCode.cjs.js"),require("../core/NodeKeywords.cjs.js");module.exports=class extends e{constructor(e,o=new s,c=new r(0)){super("vec2"),this.countNode=e,this.uvNode=o,this.frameNode=c}generate(e){const s=this.countNode,t=this.uvNode,u=this.frameNode,n=new r(1),d=new i(s,"x"),N=new i(s,"y"),q=new c("*",d,N),w=new o(o.FLOOR,new o(o.MOD,u,q)),a=new c("+",w,n),h=new o(o.MOD,w,d),p=new o(o.CEIL,new c("/",a,d)),l=new c("-",N,p),m=new c("/",n,s),y=new j([new c("*",h,new i(m,"x")),new c("*",l,new i(m,"y"))]),b=new c("*",t,m);return new c("+",b,y).build(e,this.getNodeType(e))}};