three-stdlib 2.8.8 → 2.8.11

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,80 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import Node from '../core/Node.js';
3
+ import OperatorNode from '../math/OperatorNode.js';
4
+ import MaterialReferenceNode from './MaterialReferenceNode.js';
5
+
6
+ class MaterialNode extends Node {
7
+ constructor(scope = MaterialNode.COLOR) {
8
+ super();
9
+ this.scope = scope;
10
+ }
11
+
12
+ getNodeType(builder) {
13
+ const scope = this.scope;
14
+ const material = builder.context.material;
15
+
16
+ if (scope === MaterialNode.COLOR) {
17
+ return material.map !== null ? 'vec4' : 'vec3';
18
+ } else if (scope === MaterialNode.OPACITY) {
19
+ return 'float';
20
+ } else if (scope === MaterialNode.SPECULAR) {
21
+ return 'vec3';
22
+ } else if (scope === MaterialNode.ROUGHNESS || scope === MaterialNode.METALNESS) {
23
+ return 'float';
24
+ }
25
+ }
26
+
27
+ generate(builder, output) {
28
+ const material = builder.context.material;
29
+ const scope = this.scope;
30
+ let node = null;
31
+
32
+ if (scope === MaterialNode.ALPHA_TEST) {
33
+ node = new MaterialReferenceNode('alphaTest', 'float');
34
+ } else if (scope === MaterialNode.COLOR) {
35
+ const colorNode = new MaterialReferenceNode('color', 'color');
36
+
37
+ if (material.map !== null && material.map !== undefined && material.map.isTexture === true) {
38
+ node = new OperatorNode('*', colorNode, new MaterialReferenceNode('map', 'texture'));
39
+ } else {
40
+ node = colorNode;
41
+ }
42
+ } else if (scope === MaterialNode.OPACITY) {
43
+ const opacityNode = new MaterialReferenceNode('opacity', 'float');
44
+
45
+ if (material.alphaMap !== null && material.alphaMap !== undefined && material.alphaMap.isTexture === true) {
46
+ node = new OperatorNode('*', opacityNode, new MaterialReferenceNode('alphaMap', 'texture'));
47
+ } else {
48
+ node = opacityNode;
49
+ }
50
+ } else if (scope === MaterialNode.SPECULAR) {
51
+ const specularColorNode = new MaterialReferenceNode('specularColor', 'color');
52
+
53
+ if (material.specularColorMap !== null && material.specularColorMap !== undefined && material.specularColorMap.isTexture === true) {
54
+ node = new OperatorNode('*', specularColorNode, new MaterialReferenceNode('specularColorMap', 'texture'));
55
+ } else {
56
+ node = specularColorNode;
57
+ }
58
+ } else {
59
+ const outputType = this.getNodeType(builder);
60
+ node = new MaterialReferenceNode(scope, outputType);
61
+ }
62
+
63
+ return node.build(builder, output);
64
+ }
65
+
66
+ }
67
+
68
+ _defineProperty(MaterialNode, "ALPHA_TEST", 'alphaTest');
69
+
70
+ _defineProperty(MaterialNode, "COLOR", 'color');
71
+
72
+ _defineProperty(MaterialNode, "OPACITY", 'opacity');
73
+
74
+ _defineProperty(MaterialNode, "SPECULAR", 'specular');
75
+
76
+ _defineProperty(MaterialNode, "ROUGHNESS", 'roughness');
77
+
78
+ _defineProperty(MaterialNode, "METALNESS", 'metalness');
79
+
80
+ export default MaterialNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("./ReferenceNode.cjs.js");require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js");module.exports=class extends e{constructor(e,r,s=null){super(e,r,s),this.material=s}update(e){this.object=null!==this.material?this.material:e.material,super.update(e)}};
@@ -0,0 +1,16 @@
1
+ import ReferenceNode from './ReferenceNode.js';
2
+
3
+ class MaterialReferenceNode extends ReferenceNode {
4
+ constructor(property, inputType, material = null) {
5
+ super(property, inputType, material);
6
+ this.material = material;
7
+ }
8
+
9
+ update(frame) {
10
+ this.object = this.material !== null ? this.material : frame.material;
11
+ super.update(frame);
12
+ }
13
+
14
+ }
15
+
16
+ export default MaterialReferenceNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("./Object3DNode.cjs.js");require("@babel/runtime/helpers/defineProperty"),require("three"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js");class r extends e{constructor(e=r.VIEW_MATRIX){super(e)}}module.exports=r;
@@ -0,0 +1,10 @@
1
+ import Object3DNode from './Object3DNode.js';
2
+
3
+ class ModelNode extends Object3DNode {
4
+ constructor(scope = ModelNode.VIEW_MATRIX) {
5
+ super(scope);
6
+ }
7
+
8
+ }
9
+
10
+ export default ModelNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js"),r=require("./CameraNode.cjs.js"),s=require("./ModelNode.cjs.js"),o=require("../math/OperatorNode.cjs.js"),i=require("./PositionNode.cjs.js");require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("@babel/runtime/helpers/defineProperty"),require("./Object3DNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js"),require("../core/TempNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/VaryNode.cjs.js"),require("../math/MathNode.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");module.exports=class extends e{constructor(e=new i){super("vec4"),this.position=e}generate(e){const i=this.position,j=new o("*",new r(r.PROJECTION_MATRIX),new s(s.VIEW_MATRIX));return new o("*",j,i).build(e)}};
@@ -0,0 +1,22 @@
1
+ import Node from '../core/Node.js';
2
+ import CameraNode from './CameraNode.js';
3
+ import ModelNode from './ModelNode.js';
4
+ import OperatorNode from '../math/OperatorNode.js';
5
+ import PositionNode from './PositionNode.js';
6
+
7
+ class ModelViewProjectionNode extends Node {
8
+ constructor(position = new PositionNode()) {
9
+ super('vec4');
10
+ this.position = position;
11
+ }
12
+
13
+ generate(builder) {
14
+ const position = this.position;
15
+ const mvpMatrix = new OperatorNode('*', new CameraNode(CameraNode.PROJECTION_MATRIX), new ModelNode(ModelNode.VIEW_MATRIX));
16
+ const mvpNode = new OperatorNode('*', mvpMatrix, position);
17
+ return mvpNode.build(builder);
18
+ }
19
+
20
+ }
21
+
22
+ export default ModelViewProjectionNode;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/TempNode.cjs.js"),r=require("../core/NodeLib.cjs.js");function o(r){e.TempNode.call(this,"v3"),this.scope=r||o.VIEW}require("three"),require("../core/Node.cjs.js"),o.LOCAL="local",o.WORLD="world",o.VIEW="view",o.prototype=Object.create(e.TempNode.prototype),o.prototype.constructor=o,o.prototype.nodeType="Normal",o.prototype.getShared=function(){return this.scope===o.WORLD},o.prototype.build=function(r,o,t,i){var s=r.context[this.scope+"Normal"];return s?s.build(r,o,t,i):e.TempNode.prototype.build.call(this,r,o,t)},o.prototype.generate=function(e,r){var t;switch(this.scope){case o.VIEW:t=e.isShader("vertex")?"transformedNormal":"geometryNormal";break;case o.LOCAL:e.isShader("vertex")?t="objectNormal":(e.requires.normal=!0,t="vObjectNormal");break;case o.WORLD:e.isShader("vertex")?t="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,t="vWNormal")}return e.format(t,this.getType(e),r)},o.prototype.copy=function(r){return e.TempNode.prototype.copy.call(this,r),this.scope=r.scope,this},o.prototype.toJSON=function(e){var r=this.getJSONNode(e);return r||((r=this.createJSONNode(e)).scope=this.scope),r},r.NodeLib.addKeyword("viewNormal",(function(){return new o(o.VIEW)})),r.NodeLib.addKeyword("localNormal",(function(){return new o(o.NORMAL)})),r.NodeLib.addKeyword("worldNormal",(function(){return new o(o.WORLD)})),exports.NormalNode=o;
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("../core/Node.cjs.js"),s=require("../core/AttributeNode.cjs.js"),o=require("../core/VaryNode.cjs.js"),c=require("./ModelNode.cjs.js"),i=require("./CameraNode.cjs.js"),t=require("../math/OperatorNode.cjs.js"),u=require("../math/MathNode.cjs.js");function j(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("./Object3DNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.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");var d=j(e);class n extends r{constructor(e=n.LOCAL){super("vec3"),this.scope=e}getHash(){return`normal-${this.scope}`}generate(e){const r=this.scope;let j=null;if(r===n.GEOMETRY)j=new s("normal","vec3");else if(r===n.LOCAL)j=new o(new n(n.GEOMETRY));else if(r===n.VIEW){const e=new t("*",new c(c.NORMAL_MATRIX),new n(n.LOCAL));j=new u(u.NORMALIZE,new o(e))}else if(r===n.WORLD){const e=new u(u.TRANSFORM_DIRECTION,new n(n.VIEW),new i(i.VIEW_MATRIX));j=new u(u.NORMALIZE,new o(e))}return j.build(e)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}}d.default(n,"GEOMETRY","geometry"),d.default(n,"LOCAL","local"),d.default(n,"WORLD","world"),d.default(n,"VIEW","view"),module.exports=n;
@@ -1,90 +1,60 @@
1
- import { TempNode } from '../core/TempNode.js';
2
- import { NodeLib } from '../core/NodeLib.js';
3
-
4
- function NormalNode(scope) {
5
- TempNode.call(this, 'v3');
6
- this.scope = scope || NormalNode.VIEW;
7
- }
8
-
9
- NormalNode.LOCAL = 'local';
10
- NormalNode.WORLD = 'world';
11
- NormalNode.VIEW = 'view';
12
- NormalNode.prototype = Object.create(TempNode.prototype);
13
- NormalNode.prototype.constructor = NormalNode;
14
- NormalNode.prototype.nodeType = 'Normal';
15
-
16
- NormalNode.prototype.getShared = function () {
17
- // if shared is false, TempNode will not create temp variable (for optimization)
18
- return this.scope === NormalNode.WORLD;
19
- };
20
-
21
- NormalNode.prototype.build = function (builder, output, uuid, ns) {
22
- var contextNormal = builder.context[this.scope + 'Normal'];
23
-
24
- if (contextNormal) {
25
- return contextNormal.build(builder, output, uuid, ns);
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import Node from '../core/Node.js';
3
+ import AttributeNode from '../core/AttributeNode.js';
4
+ import VaryNode from '../core/VaryNode.js';
5
+ import ModelNode from './ModelNode.js';
6
+ import CameraNode from './CameraNode.js';
7
+ import OperatorNode from '../math/OperatorNode.js';
8
+ import MathNode from '../math/MathNode.js';
9
+
10
+ class NormalNode extends Node {
11
+ constructor(scope = NormalNode.LOCAL) {
12
+ super('vec3');
13
+ this.scope = scope;
26
14
  }
27
15
 
28
- return TempNode.prototype.build.call(this, builder, output, uuid);
29
- };
30
-
31
- NormalNode.prototype.generate = function (builder, output) {
32
- var result;
33
-
34
- switch (this.scope) {
35
- case NormalNode.VIEW:
36
- if (builder.isShader('vertex')) result = 'transformedNormal';else result = 'geometryNormal';
37
- break;
38
-
39
- case NormalNode.LOCAL:
40
- if (builder.isShader('vertex')) {
41
- result = 'objectNormal';
42
- } else {
43
- builder.requires.normal = true;
44
- result = 'vObjectNormal';
45
- }
46
-
47
- break;
16
+ getHash() {
17
+ return `normal-${this.scope}`;
18
+ }
48
19
 
49
- case NormalNode.WORLD:
50
- if (builder.isShader('vertex')) {
51
- result = 'inverseTransformDirection( transformedNormal, viewMatrix ).xyz';
52
- } else {
53
- builder.requires.worldNormal = true;
54
- result = 'vWNormal';
55
- }
20
+ generate(builder) {
21
+ const scope = this.scope;
22
+ let outputNode = null;
23
+
24
+ if (scope === NormalNode.GEOMETRY) {
25
+ outputNode = new AttributeNode('normal', 'vec3');
26
+ } else if (scope === NormalNode.LOCAL) {
27
+ outputNode = new VaryNode(new NormalNode(NormalNode.GEOMETRY));
28
+ } else if (scope === NormalNode.VIEW) {
29
+ const vertexNormalNode = new OperatorNode('*', new ModelNode(ModelNode.NORMAL_MATRIX), new NormalNode(NormalNode.LOCAL));
30
+ outputNode = new MathNode(MathNode.NORMALIZE, new VaryNode(vertexNormalNode));
31
+ } else if (scope === NormalNode.WORLD) {
32
+ // To use INVERSE_TRANSFORM_DIRECTION only inverse the param order like this: MathNode( ..., Vector, Matrix );
33
+ const vertexNormalNode = new MathNode(MathNode.TRANSFORM_DIRECTION, new NormalNode(NormalNode.VIEW), new CameraNode(CameraNode.VIEW_MATRIX));
34
+ outputNode = new MathNode(MathNode.NORMALIZE, new VaryNode(vertexNormalNode));
35
+ }
36
+
37
+ return outputNode.build(builder);
38
+ }
56
39
 
57
- break;
40
+ serialize(data) {
41
+ super.serialize(data);
42
+ data.scope = this.scope;
58
43
  }
59
44
 
60
- return builder.format(result, this.getType(builder), output);
61
- };
45
+ deserialize(data) {
46
+ super.deserialize(data);
47
+ this.scope = data.scope;
48
+ }
62
49
 
63
- NormalNode.prototype.copy = function (source) {
64
- TempNode.prototype.copy.call(this, source);
65
- this.scope = source.scope;
66
- return this;
67
- };
50
+ }
68
51
 
69
- NormalNode.prototype.toJSON = function (meta) {
70
- var data = this.getJSONNode(meta);
52
+ _defineProperty(NormalNode, "GEOMETRY", 'geometry');
71
53
 
72
- if (!data) {
73
- data = this.createJSONNode(meta);
74
- data.scope = this.scope;
75
- }
54
+ _defineProperty(NormalNode, "LOCAL", 'local');
76
55
 
77
- return data;
78
- };
56
+ _defineProperty(NormalNode, "WORLD", 'world');
79
57
 
80
- NodeLib.addKeyword('viewNormal', function () {
81
- return new NormalNode(NormalNode.VIEW);
82
- });
83
- NodeLib.addKeyword('localNormal', function () {
84
- return new NormalNode(NormalNode.NORMAL);
85
- });
86
- NodeLib.addKeyword('worldNormal', function () {
87
- return new NormalNode(NormalNode.WORLD);
88
- });
58
+ _defineProperty(NormalNode, "VIEW", 'view');
89
59
 
90
- export { NormalNode };
60
+ export default NormalNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),t=require("three"),r=require("../core/Node.cjs.js"),o=require("../core/UniformNode.cjs.js"),i=require("../core/constants.cjs.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("../core/NodeUtils.cjs.js"),require("../core/InputNode.cjs.js");var a=s(e);class u extends r{constructor(e=u.VIEW_MATRIX,t=null){super(),this.scope=e,this.object3d=t,this.updateType=i.NodeUpdateType.Object,this._uniformNode=new o(null)}getNodeType(){const e=this.scope;return e===u.WORLD_MATRIX||e===u.VIEW_MATRIX?"mat4":e===u.NORMAL_MATRIX?"mat3":e===u.POSITION||e===u.VIEW_POSITION?"vec3":void 0}update(e){const t=null!==this.object3d?this.object3d:e.object,r=this._uniformNode,o=e.camera,i=this.scope;i===u.VIEW_MATRIX?r.value=t.modelViewMatrix:i===u.NORMAL_MATRIX?r.value=t.normalMatrix:i===u.WORLD_MATRIX?r.value=t.matrixWorld:i===u.POSITION?r.value.setFromMatrixPosition(t.matrixWorld):i===u.VIEW_POSITION&&(r.value.setFromMatrixPosition(t.matrixWorld),r.value.applyMatrix4(o.matrixWorldInverse))}generate(e){const r=this.scope;return r===u.WORLD_MATRIX||r===u.VIEW_MATRIX?this._uniformNode.nodeType="mat4":r===u.NORMAL_MATRIX?this._uniformNode.nodeType="mat3":r!==u.POSITION&&r!==u.VIEW_POSITION||(this._uniformNode.nodeType="vec3",this._uniformNode.value=new t.Vector3),this._uniformNode.build(e)}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}}a.default(u,"VIEW_MATRIX","viewMatrix"),a.default(u,"NORMAL_MATRIX","normalMatrix"),a.default(u,"WORLD_MATRIX","worldMatrix"),a.default(u,"POSITION","position"),a.default(u,"VIEW_POSITION","viewPosition"),module.exports=u;
@@ -0,0 +1,85 @@
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import { Vector3 } from 'three';
3
+ import Node from '../core/Node.js';
4
+ import UniformNode from '../core/UniformNode.js';
5
+ import { NodeUpdateType } from '../core/constants.js';
6
+
7
+ class Object3DNode extends Node {
8
+ constructor(scope = Object3DNode.VIEW_MATRIX, object3d = null) {
9
+ super();
10
+ this.scope = scope;
11
+ this.object3d = object3d;
12
+ this.updateType = NodeUpdateType.Object;
13
+ this._uniformNode = new UniformNode(null);
14
+ }
15
+
16
+ getNodeType() {
17
+ const scope = this.scope;
18
+
19
+ if (scope === Object3DNode.WORLD_MATRIX || scope === Object3DNode.VIEW_MATRIX) {
20
+ return 'mat4';
21
+ } else if (scope === Object3DNode.NORMAL_MATRIX) {
22
+ return 'mat3';
23
+ } else if (scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION) {
24
+ return 'vec3';
25
+ }
26
+ }
27
+
28
+ update(frame) {
29
+ const object = this.object3d !== null ? this.object3d : frame.object;
30
+ const uniformNode = this._uniformNode;
31
+ const camera = frame.camera;
32
+ const scope = this.scope;
33
+
34
+ if (scope === Object3DNode.VIEW_MATRIX) {
35
+ uniformNode.value = object.modelViewMatrix;
36
+ } else if (scope === Object3DNode.NORMAL_MATRIX) {
37
+ uniformNode.value = object.normalMatrix;
38
+ } else if (scope === Object3DNode.WORLD_MATRIX) {
39
+ uniformNode.value = object.matrixWorld;
40
+ } else if (scope === Object3DNode.POSITION) {
41
+ uniformNode.value.setFromMatrixPosition(object.matrixWorld);
42
+ } else if (scope === Object3DNode.VIEW_POSITION) {
43
+ uniformNode.value.setFromMatrixPosition(object.matrixWorld);
44
+ uniformNode.value.applyMatrix4(camera.matrixWorldInverse);
45
+ }
46
+ }
47
+
48
+ generate(builder) {
49
+ const scope = this.scope;
50
+
51
+ if (scope === Object3DNode.WORLD_MATRIX || scope === Object3DNode.VIEW_MATRIX) {
52
+ this._uniformNode.nodeType = 'mat4';
53
+ } else if (scope === Object3DNode.NORMAL_MATRIX) {
54
+ this._uniformNode.nodeType = 'mat3';
55
+ } else if (scope === Object3DNode.POSITION || scope === Object3DNode.VIEW_POSITION) {
56
+ this._uniformNode.nodeType = 'vec3';
57
+ this._uniformNode.value = new Vector3();
58
+ }
59
+
60
+ return this._uniformNode.build(builder);
61
+ }
62
+
63
+ serialize(data) {
64
+ super.serialize(data);
65
+ data.scope = this.scope;
66
+ }
67
+
68
+ deserialize(data) {
69
+ super.deserialize(data);
70
+ this.scope = data.scope;
71
+ }
72
+
73
+ }
74
+
75
+ _defineProperty(Object3DNode, "VIEW_MATRIX", 'viewMatrix');
76
+
77
+ _defineProperty(Object3DNode, "NORMAL_MATRIX", 'normalMatrix');
78
+
79
+ _defineProperty(Object3DNode, "WORLD_MATRIX", 'worldMatrix');
80
+
81
+ _defineProperty(Object3DNode, "POSITION", 'position');
82
+
83
+ _defineProperty(Object3DNode, "VIEW_POSITION", 'viewPosition');
84
+
85
+ export default Object3DNode;
@@ -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");class r extends e{constructor(){super("vec2")}generate(){return"vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )"}}r.prototype.isPointUVNode=!0,module.exports=r;
@@ -0,0 +1,16 @@
1
+ import Node from '../core/Node.js';
2
+
3
+ class PointUVNode extends Node {
4
+ constructor() {
5
+ super('vec2');
6
+ }
7
+
8
+ generate() {
9
+ return 'vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y )';
10
+ }
11
+
12
+ }
13
+
14
+ PointUVNode.prototype.isPointUVNode = true;
15
+
16
+ export default PointUVNode;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/TempNode.cjs.js"),o=require("../core/NodeLib.cjs.js");function t(o){e.TempNode.call(this,"v3"),this.scope=o||t.LOCAL}require("three"),require("../core/Node.cjs.js"),t.LOCAL="local",t.WORLD="world",t.VIEW="view",t.PROJECTION="projection",t.prototype=Object.create(e.TempNode.prototype),t.prototype.constructor=t,t.prototype.nodeType="Position",t.prototype.getType=function(){switch(this.scope){case t.PROJECTION:return"v4"}return this.type},t.prototype.getShared=function(){switch(this.scope){case t.LOCAL:case t.WORLD:return!1}return!0},t.prototype.generate=function(e,o){var r;switch(this.scope){case t.LOCAL:e.isShader("vertex")?r="transformed":(e.requires.position=!0,r="vPosition");break;case t.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,r="vWPosition";break;case t.VIEW:r=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case t.PROJECTION:r=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )"}return e.format(r,this.getType(e),o)},t.prototype.copy=function(o){return e.TempNode.prototype.copy.call(this,o),this.scope=o.scope,this},t.prototype.toJSON=function(e){var o=this.getJSONNode(e);return o||((o=this.createJSONNode(e)).scope=this.scope),o},o.NodeLib.addKeyword("position",(function(){return new t})),o.NodeLib.addKeyword("worldPosition",(function(){return new t(t.WORLD)})),o.NodeLib.addKeyword("viewPosition",(function(){return new t(t.VIEW)})),exports.PositionNode=t;
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("../core/Node.cjs.js"),s=require("../core/AttributeNode.cjs.js"),o=require("../core/VaryNode.cjs.js"),i=require("./ModelNode.cjs.js"),c=require("../math/MathNode.cjs.js"),t=require("../math/OperatorNode.cjs.js");function u(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("./Object3DNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.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");var j=u(e);class n extends r{constructor(e=n.LOCAL){super("vec3"),this.scope=e}getHash(){return`position-${this.scope}`}generate(e){const r=this.scope;let u=null;if(r===n.GEOMETRY)u=new s("position","vec3");else if(r===n.LOCAL)u=new o(new n(n.GEOMETRY));else if(r===n.WORLD){const e=new c(c.TRANSFORM_DIRECTION,new i(i.WORLD_MATRIX),new n(n.LOCAL));u=new o(e)}else if(r===n.VIEW){const e=new t("*",new i(i.VIEW_MATRIX),new n(n.LOCAL));u=new o(e)}else if(r===n.VIEW_DIRECTION){const e=new c(c.NEGATE,new n(n.VIEW));u=new c(c.NORMALIZE,new o(e))}return u.build(e,this.getNodeType(e))}serialize(e){super.serialize(e),e.scope=this.scope}deserialize(e){super.deserialize(e),this.scope=e.scope}}j.default(n,"GEOMETRY","geometry"),j.default(n,"LOCAL","local"),j.default(n,"WORLD","world"),j.default(n,"VIEW","view"),j.default(n,"VIEW_DIRECTION","viewDirection"),module.exports=n;
@@ -1,101 +1,63 @@
1
- import { TempNode } from '../core/TempNode.js';
2
- import { NodeLib } from '../core/NodeLib.js';
3
-
4
- function PositionNode(scope) {
5
- TempNode.call(this, 'v3');
6
- this.scope = scope || PositionNode.LOCAL;
7
- }
8
-
9
- PositionNode.LOCAL = 'local';
10
- PositionNode.WORLD = 'world';
11
- PositionNode.VIEW = 'view';
12
- PositionNode.PROJECTION = 'projection';
13
- PositionNode.prototype = Object.create(TempNode.prototype);
14
- PositionNode.prototype.constructor = PositionNode;
15
- PositionNode.prototype.nodeType = 'Position';
16
-
17
- PositionNode.prototype.getType = function () {
18
- switch (this.scope) {
19
- case PositionNode.PROJECTION:
20
- return 'v4';
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import Node from '../core/Node.js';
3
+ import AttributeNode from '../core/AttributeNode.js';
4
+ import VaryNode from '../core/VaryNode.js';
5
+ import ModelNode from './ModelNode.js';
6
+ import MathNode from '../math/MathNode.js';
7
+ import OperatorNode from '../math/OperatorNode.js';
8
+
9
+ class PositionNode extends Node {
10
+ constructor(scope = PositionNode.LOCAL) {
11
+ super('vec3');
12
+ this.scope = scope;
21
13
  }
22
14
 
23
- return this.type;
24
- };
25
-
26
- PositionNode.prototype.getShared = function
27
- /* builder */
28
- () {
29
- switch (this.scope) {
30
- case PositionNode.LOCAL:
31
- case PositionNode.WORLD:
32
- return false;
15
+ getHash() {
16
+ return `position-${this.scope}`;
33
17
  }
34
18
 
35
- return true;
36
- };
37
-
38
- PositionNode.prototype.generate = function (builder, output) {
39
- var result;
40
-
41
- switch (this.scope) {
42
- case PositionNode.LOCAL:
43
- if (builder.isShader('vertex')) {
44
- result = 'transformed';
45
- } else {
46
- builder.requires.position = true;
47
- result = 'vPosition';
48
- }
49
-
50
- break;
51
-
52
- case PositionNode.WORLD:
53
- if (builder.isShader('vertex')) {
54
- return '( modelMatrix * vec4( transformed, 1.0 ) ).xyz';
55
- } else {
56
- builder.requires.worldPosition = true;
57
- result = 'vWPosition';
58
- }
59
-
60
- break;
19
+ generate(builder) {
20
+ const scope = this.scope;
21
+ let outputNode = null;
22
+
23
+ if (scope === PositionNode.GEOMETRY) {
24
+ outputNode = new AttributeNode('position', 'vec3');
25
+ } else if (scope === PositionNode.LOCAL) {
26
+ outputNode = new VaryNode(new PositionNode(PositionNode.GEOMETRY));
27
+ } else if (scope === PositionNode.WORLD) {
28
+ const vertexPositionNode = new MathNode(MathNode.TRANSFORM_DIRECTION, new ModelNode(ModelNode.WORLD_MATRIX), new PositionNode(PositionNode.LOCAL));
29
+ outputNode = new VaryNode(vertexPositionNode);
30
+ } else if (scope === PositionNode.VIEW) {
31
+ const vertexPositionNode = new OperatorNode('*', new ModelNode(ModelNode.VIEW_MATRIX), new PositionNode(PositionNode.LOCAL));
32
+ outputNode = new VaryNode(vertexPositionNode);
33
+ } else if (scope === PositionNode.VIEW_DIRECTION) {
34
+ const vertexPositionNode = new MathNode(MathNode.NEGATE, new PositionNode(PositionNode.VIEW));
35
+ outputNode = new MathNode(MathNode.NORMALIZE, new VaryNode(vertexPositionNode));
36
+ }
37
+
38
+ return outputNode.build(builder, this.getNodeType(builder));
39
+ }
61
40
 
62
- case PositionNode.VIEW:
63
- result = builder.isShader('vertex') ? '-mvPosition.xyz' : 'vViewPosition';
64
- break;
41
+ serialize(data) {
42
+ super.serialize(data);
43
+ data.scope = this.scope;
44
+ }
65
45
 
66
- case PositionNode.PROJECTION:
67
- result = builder.isShader('vertex') ? '( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )' : 'vec4( 0.0 )';
68
- break;
46
+ deserialize(data) {
47
+ super.deserialize(data);
48
+ this.scope = data.scope;
69
49
  }
70
50
 
71
- return builder.format(result, this.getType(builder), output);
72
- };
51
+ }
73
52
 
74
- PositionNode.prototype.copy = function (source) {
75
- TempNode.prototype.copy.call(this, source);
76
- this.scope = source.scope;
77
- return this;
78
- };
53
+ _defineProperty(PositionNode, "GEOMETRY", 'geometry');
79
54
 
80
- PositionNode.prototype.toJSON = function (meta) {
81
- var data = this.getJSONNode(meta);
55
+ _defineProperty(PositionNode, "LOCAL", 'local');
82
56
 
83
- if (!data) {
84
- data = this.createJSONNode(meta);
85
- data.scope = this.scope;
86
- }
57
+ _defineProperty(PositionNode, "WORLD", 'world');
87
58
 
88
- return data;
89
- };
59
+ _defineProperty(PositionNode, "VIEW", 'view');
90
60
 
91
- NodeLib.addKeyword('position', function () {
92
- return new PositionNode();
93
- });
94
- NodeLib.addKeyword('worldPosition', function () {
95
- return new PositionNode(PositionNode.WORLD);
96
- });
97
- NodeLib.addKeyword('viewPosition', function () {
98
- return new PositionNode(PositionNode.VIEW);
99
- });
61
+ _defineProperty(PositionNode, "VIEW_DIRECTION", 'viewDirection');
100
62
 
101
- export { PositionNode };
63
+ export default PositionNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../core/Node.cjs.js"),t=require("../core/UniformNode.cjs.js"),s=require("../core/constants.cjs.js");require("../core/NodeUtils.cjs.js"),require("three"),require("../core/InputNode.cjs.js");module.exports=class extends e{constructor(e,t,o=null){super(),this.property=e,this.uniformType=t,this.object=o,this.node=null,this.updateType=s.NodeUpdateType.Object,this.setNodeType(t)}setNodeType(e){this.node=new t(null,e),this.nodeType=e,"color"===e?this.nodeType="vec3":"texture"===e&&(this.nodeType="vec4")}getNodeType(){return this.uniformType}update(e){const t=(null!==this.object?this.object:e.object)[this.property];this.node.value=t}generate(e){return this.node.build(e,this.getNodeType(e))}};
@@ -0,0 +1,43 @@
1
+ import Node from '../core/Node.js';
2
+ import UniformNode from '../core/UniformNode.js';
3
+ import { NodeUpdateType } from '../core/constants.js';
4
+
5
+ class ReferenceNode extends Node {
6
+ constructor(property, uniformType, object = null) {
7
+ super();
8
+ this.property = property;
9
+ this.uniformType = uniformType;
10
+ this.object = object;
11
+ this.node = null;
12
+ this.updateType = NodeUpdateType.Object;
13
+ this.setNodeType(uniformType);
14
+ }
15
+
16
+ setNodeType(uniformType) {
17
+ this.node = new UniformNode(null, uniformType);
18
+ this.nodeType = uniformType;
19
+
20
+ if (uniformType === 'color') {
21
+ this.nodeType = 'vec3';
22
+ } else if (uniformType === 'texture') {
23
+ this.nodeType = 'vec4';
24
+ }
25
+ }
26
+
27
+ getNodeType() {
28
+ return this.uniformType;
29
+ }
30
+
31
+ update(frame) {
32
+ const object = this.object !== null ? this.object : frame.object;
33
+ const value = object[this.property];
34
+ this.node.value = value;
35
+ }
36
+
37
+ generate(builder) {
38
+ return this.node.build(builder, this.getNodeType(builder));
39
+ }
40
+
41
+ }
42
+
43
+ export default ReferenceNode;