three-stdlib 2.8.9 → 2.8.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) 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/nodes/Nodes.cjs.js +1 -1
  9. package/nodes/Nodes.js +203 -76
  10. package/nodes/ShaderNode.cjs.js +1 -0
  11. package/nodes/ShaderNode.js +308 -0
  12. package/nodes/accessors/BufferNode.cjs.js +1 -0
  13. package/nodes/accessors/BufferNode.js +18 -0
  14. package/nodes/accessors/CameraNode.cjs.js +1 -1
  15. package/nodes/accessors/CameraNode.js +32 -138
  16. package/nodes/accessors/CubeTextureNode.cjs.js +1 -0
  17. package/nodes/accessors/CubeTextureNode.js +53 -0
  18. package/nodes/accessors/MaterialNode.cjs.js +1 -0
  19. package/nodes/accessors/MaterialNode.js +80 -0
  20. package/nodes/accessors/MaterialReferenceNode.cjs.js +1 -0
  21. package/nodes/accessors/MaterialReferenceNode.js +16 -0
  22. package/nodes/accessors/ModelNode.cjs.js +1 -0
  23. package/nodes/accessors/ModelNode.js +10 -0
  24. package/nodes/accessors/ModelViewProjectionNode.cjs.js +1 -0
  25. package/nodes/accessors/ModelViewProjectionNode.js +22 -0
  26. package/nodes/accessors/NormalNode.cjs.js +1 -1
  27. package/nodes/accessors/NormalNode.js +48 -78
  28. package/nodes/accessors/Object3DNode.cjs.js +1 -0
  29. package/nodes/accessors/Object3DNode.js +85 -0
  30. package/nodes/accessors/PointUVNode.cjs.js +1 -0
  31. package/nodes/accessors/PointUVNode.js +16 -0
  32. package/nodes/accessors/PositionNode.cjs.js +1 -1
  33. package/nodes/accessors/PositionNode.js +49 -87
  34. package/nodes/accessors/ReferenceNode.cjs.js +1 -0
  35. package/nodes/accessors/ReferenceNode.js +43 -0
  36. package/nodes/accessors/ReflectNode.cjs.js +1 -1
  37. package/nodes/accessors/ReflectNode.js +35 -98
  38. package/nodes/accessors/SkinningNode.cjs.js +1 -0
  39. package/nodes/accessors/SkinningNode.js +59 -0
  40. package/nodes/accessors/TextureNode.cjs.js +1 -0
  41. package/nodes/accessors/TextureNode.js +68 -0
  42. package/nodes/accessors/UVNode.cjs.js +1 -1
  43. package/nodes/accessors/UVNode.js +20 -38
  44. package/nodes/core/ArrayUniformNode.cjs.js +1 -0
  45. package/nodes/core/ArrayUniformNode.js +17 -0
  46. package/nodes/core/AttributeNode.cjs.js +1 -1
  47. package/nodes/core/AttributeNode.js +31 -40
  48. package/nodes/core/BypassNode.cjs.js +1 -0
  49. package/nodes/core/BypassNode.js +28 -0
  50. package/nodes/core/CodeNode.cjs.js +1 -0
  51. package/nodes/core/CodeNode.js +35 -0
  52. package/nodes/core/ConstNode.cjs.js +1 -1
  53. package/nodes/core/ConstNode.js +10 -78
  54. package/nodes/core/ContextNode.cjs.js +1 -0
  55. package/nodes/core/ContextNode.js +26 -0
  56. package/nodes/core/ExpressionNode.cjs.js +1 -1
  57. package/nodes/core/ExpressionNode.js +19 -8
  58. package/nodes/core/FunctionCallNode.cjs.js +1 -1
  59. package/nodes/core/FunctionCallNode.js +31 -60
  60. package/nodes/core/FunctionNode.cjs.js +1 -1
  61. package/nodes/core/FunctionNode.js +45 -166
  62. package/nodes/core/InputNode.cjs.js +1 -1
  63. package/nodes/core/InputNode.js +43 -57
  64. package/nodes/core/Node.cjs.js +1 -1
  65. package/nodes/core/Node.js +155 -113
  66. package/nodes/core/NodeAttribute.cjs.js +1 -0
  67. package/nodes/core/NodeAttribute.js +11 -0
  68. package/nodes/core/NodeBuilder.cjs.js +1 -1
  69. package/nodes/core/NodeBuilder.js +422 -548
  70. package/nodes/core/NodeCode.cjs.js +1 -0
  71. package/nodes/core/NodeCode.js +13 -0
  72. package/nodes/core/NodeFrame.cjs.js +1 -1
  73. package/nodes/core/NodeFrame.js +34 -27
  74. package/nodes/core/NodeFunction.cjs.js +1 -0
  75. package/nodes/core/NodeFunction.js +17 -0
  76. package/nodes/core/NodeFunctionInput.cjs.js +1 -0
  77. package/nodes/core/NodeFunctionInput.js +14 -0
  78. package/nodes/core/NodeKeywords.cjs.js +1 -0
  79. package/nodes/core/NodeKeywords.js +54 -0
  80. package/nodes/core/NodeParser.cjs.js +1 -0
  81. package/nodes/core/NodeParser.js +8 -0
  82. package/nodes/core/NodeUniform.cjs.js +1 -1
  83. package/nodes/core/NodeUniform.js +18 -17
  84. package/nodes/core/NodeUtils.cjs.js +1 -1
  85. package/nodes/core/NodeUtils.js +55 -35
  86. package/nodes/core/NodeVar.cjs.js +1 -0
  87. package/nodes/core/NodeVar.js +11 -0
  88. package/nodes/core/NodeVary.cjs.js +1 -0
  89. package/nodes/core/NodeVary.js +11 -0
  90. package/nodes/core/PropertyNode.cjs.js +1 -0
  91. package/nodes/core/PropertyNode.js +26 -0
  92. package/nodes/core/TempNode.cjs.js +1 -1
  93. package/nodes/core/TempNode.js +21 -88
  94. package/nodes/core/UniformNode.cjs.js +1 -0
  95. package/nodes/core/UniformNode.js +28 -0
  96. package/nodes/core/VarNode.cjs.js +1 -1
  97. package/nodes/core/VarNode.js +28 -35
  98. package/nodes/core/VaryNode.cjs.js +1 -0
  99. package/nodes/core/VaryNode.js +38 -0
  100. package/nodes/core/constants.cjs.js +1 -0
  101. package/nodes/core/constants.js +11 -0
  102. package/nodes/display/ColorSpaceNode.cjs.js +1 -0
  103. package/nodes/display/ColorSpaceNode.js +67 -0
  104. package/nodes/display/NormalMapNode.cjs.js +1 -0
  105. package/nodes/display/NormalMapNode.js +71 -0
  106. package/nodes/fog/FogNode.cjs.js +1 -0
  107. package/nodes/fog/FogNode.js +18 -0
  108. package/nodes/fog/FogRangeNode.cjs.js +1 -0
  109. package/nodes/fog/FogRangeNode.js +20 -0
  110. package/nodes/functions/BSDFs.cjs.js +1 -0
  111. package/nodes/functions/BSDFs.js +121 -0
  112. package/nodes/functions/PhysicalMaterialFunctions.cjs.js +1 -0
  113. package/nodes/functions/PhysicalMaterialFunctions.js +57 -0
  114. package/nodes/lights/LightContextNode.cjs.js +1 -0
  115. package/nodes/lights/LightContextNode.js +43 -0
  116. package/nodes/lights/LightNode.cjs.js +1 -0
  117. package/nodes/lights/LightNode.js +61 -0
  118. package/nodes/lights/LightsNode.cjs.js +1 -0
  119. package/nodes/lights/LightsNode.js +77 -0
  120. package/nodes/loaders/NodeLoader.cjs.js +1 -0
  121. package/nodes/loaders/NodeLoader.js +80 -0
  122. package/nodes/loaders/NodeMaterialLoader.cjs.js +1 -0
  123. package/nodes/loaders/NodeMaterialLoader.js +29 -0
  124. package/nodes/loaders/NodeObjectLoader.cjs.js +1 -0
  125. package/nodes/loaders/NodeObjectLoader.js +49 -0
  126. package/nodes/materials/LineBasicNodeMaterial.cjs.js +1 -0
  127. package/nodes/materials/LineBasicNodeMaterial.js +31 -0
  128. package/nodes/materials/Materials.cjs.js +1 -0
  129. package/nodes/materials/Materials.js +27 -0
  130. package/nodes/materials/MeshBasicNodeMaterial.cjs.js +1 -0
  131. package/nodes/materials/MeshBasicNodeMaterial.js +32 -0
  132. package/nodes/materials/MeshStandardNodeMaterial.cjs.js +1 -1
  133. package/nodes/materials/MeshStandardNodeMaterial.js +41 -13
  134. package/nodes/materials/NodeMaterial.cjs.js +1 -1
  135. package/nodes/materials/NodeMaterial.js +67 -140
  136. package/nodes/materials/PointsNodeMaterial.cjs.js +1 -0
  137. package/nodes/materials/PointsNodeMaterial.js +34 -0
  138. package/nodes/math/CondNode.cjs.js +1 -1
  139. package/nodes/math/CondNode.js +33 -74
  140. package/nodes/math/MathNode.cjs.js +1 -1
  141. package/nodes/math/MathNode.js +193 -193
  142. package/nodes/math/OperatorNode.cjs.js +1 -1
  143. package/nodes/math/OperatorNode.js +116 -52
  144. package/nodes/parsers/GLSLNodeFunction.cjs.js +1 -0
  145. package/nodes/parsers/GLSLNodeFunction.js +101 -0
  146. package/nodes/parsers/GLSLNodeParser.cjs.js +1 -0
  147. package/nodes/parsers/GLSLNodeParser.js +13 -0
  148. package/nodes/parsers/WGSLNodeFunction.cjs.js +1 -0
  149. package/nodes/parsers/WGSLNodeFunction.js +71 -0
  150. package/nodes/parsers/WGSLNodeParser.cjs.js +1 -0
  151. package/nodes/parsers/WGSLNodeParser.js +13 -0
  152. package/nodes/procedural/CheckerNode.cjs.js +1 -1
  153. package/nodes/procedural/CheckerNode.js +22 -40
  154. package/nodes/utils/ArrayElementNode.cjs.js +1 -0
  155. package/nodes/utils/ArrayElementNode.js +22 -0
  156. package/nodes/utils/ConvertNode.cjs.js +1 -0
  157. package/nodes/utils/ConvertNode.js +29 -0
  158. package/nodes/utils/JoinNode.cjs.js +1 -1
  159. package/nodes/utils/JoinNode.js +19 -69
  160. package/nodes/utils/MatcapUVNode.cjs.js +1 -0
  161. package/nodes/utils/MatcapUVNode.js +18 -0
  162. package/nodes/utils/OscNode.cjs.js +1 -0
  163. package/nodes/utils/OscNode.js +55 -0
  164. package/nodes/utils/SplitNode.cjs.js +1 -0
  165. package/nodes/utils/SplitNode.js +58 -0
  166. package/nodes/utils/SpriteSheetUVNode.cjs.js +1 -0
  167. package/nodes/utils/SpriteSheetUVNode.js +39 -0
  168. package/nodes/utils/TimerNode.cjs.js +1 -1
  169. package/nodes/utils/TimerNode.js +38 -56
  170. package/package.json +1 -1
  171. package/Nodes-894ac9dc.js +0 -1
  172. package/Nodes-af575af7.js +0 -157
  173. package/nodes/accessors/ColorsNode.cjs.js +0 -1
  174. package/nodes/accessors/ColorsNode.d.ts +0 -10
  175. package/nodes/accessors/ColorsNode.js +0 -40
  176. package/nodes/accessors/LightNode.cjs.js +0 -1
  177. package/nodes/accessors/LightNode.d.ts +0 -12
  178. package/nodes/accessors/LightNode.js +0 -41
  179. package/nodes/accessors/ResolutionNode.cjs.js +0 -1
  180. package/nodes/accessors/ResolutionNode.d.ts +0 -14
  181. package/nodes/accessors/ResolutionNode.js +0 -41
  182. package/nodes/accessors/ScreenUVNode.cjs.js +0 -1
  183. package/nodes/accessors/ScreenUVNode.d.ts +0 -11
  184. package/nodes/accessors/ScreenUVNode.js +0 -43
  185. package/nodes/core/NodeLib.cjs.js +0 -1
  186. package/nodes/core/NodeLib.d.ts +0 -22
  187. package/nodes/core/NodeLib.js +0 -37
  188. package/nodes/core/StructNode.cjs.js +0 -1
  189. package/nodes/core/StructNode.d.ts +0 -19
  190. package/nodes/core/StructNode.js +0 -72
  191. package/nodes/effects/BlurNode.cjs.js +0 -1
  192. package/nodes/effects/BlurNode.d.ts +0 -31
  193. package/nodes/effects/BlurNode.js +0 -100
  194. package/nodes/effects/ColorAdjustmentNode.cjs.js +0 -1
  195. package/nodes/effects/ColorAdjustmentNode.d.ts +0 -27
  196. package/nodes/effects/ColorAdjustmentNode.js +0 -73
  197. package/nodes/effects/LuminanceNode.cjs.js +0 -1
  198. package/nodes/effects/LuminanceNode.d.ts +0 -18
  199. package/nodes/effects/LuminanceNode.js +0 -46
  200. package/nodes/inputs/BoolNode.cjs.js +0 -1
  201. package/nodes/inputs/BoolNode.d.ts +0 -19
  202. package/nodes/inputs/BoolNode.js +0 -36
  203. package/nodes/inputs/ColorNode.cjs.js +0 -1
  204. package/nodes/inputs/ColorNode.d.ts +0 -21
  205. package/nodes/inputs/ColorNode.js +0 -41
  206. package/nodes/inputs/CubeTextureNode.cjs.js +0 -1
  207. package/nodes/inputs/CubeTextureNode.d.ts +0 -17
  208. package/nodes/inputs/CubeTextureNode.js +0 -79
  209. package/nodes/inputs/FloatNode.cjs.js +0 -1
  210. package/nodes/inputs/FloatNode.d.ts +0 -19
  211. package/nodes/inputs/FloatNode.js +0 -36
  212. package/nodes/inputs/IntNode.cjs.js +0 -1
  213. package/nodes/inputs/IntNode.d.ts +0 -19
  214. package/nodes/inputs/IntNode.js +0 -36
  215. package/nodes/inputs/Matrix3Node.cjs.js +0 -1
  216. package/nodes/inputs/Matrix3Node.d.ts +0 -22
  217. package/nodes/inputs/Matrix3Node.js +0 -46
  218. package/nodes/inputs/Matrix4Node.cjs.js +0 -1
  219. package/nodes/inputs/Matrix4Node.d.ts +0 -22
  220. package/nodes/inputs/Matrix4Node.js +0 -46
  221. package/nodes/inputs/PropertyNode.cjs.js +0 -1
  222. package/nodes/inputs/PropertyNode.d.ts +0 -10
  223. package/nodes/inputs/PropertyNode.js +0 -35
  224. package/nodes/inputs/RTTNode.cjs.js +0 -1
  225. package/nodes/inputs/RTTNode.d.ts +0 -27
  226. package/nodes/inputs/RTTNode.js +0 -103
  227. package/nodes/inputs/ReflectorNode.cjs.js +0 -1
  228. package/nodes/inputs/ReflectorNode.d.ts +0 -21
  229. package/nodes/inputs/ReflectorNode.js +0 -60
  230. package/nodes/inputs/ScreenNode.cjs.js +0 -1
  231. package/nodes/inputs/ScreenNode.d.ts +0 -11
  232. package/nodes/inputs/ScreenNode.js +0 -20
  233. package/nodes/inputs/TextureNode.cjs.js +0 -1
  234. package/nodes/inputs/TextureNode.d.ts +0 -20
  235. package/nodes/inputs/TextureNode.js +0 -83
  236. package/nodes/inputs/Vector2Node.cjs.js +0 -1
  237. package/nodes/inputs/Vector2Node.d.ts +0 -21
  238. package/nodes/inputs/Vector2Node.js +0 -40
  239. package/nodes/inputs/Vector3Node.cjs.js +0 -1
  240. package/nodes/inputs/Vector3Node.d.ts +0 -21
  241. package/nodes/inputs/Vector3Node.js +0 -41
  242. package/nodes/inputs/Vector4Node.cjs.js +0 -1
  243. package/nodes/inputs/Vector4Node.d.ts +0 -21
  244. package/nodes/inputs/Vector4Node.js +0 -42
  245. package/nodes/materials/BasicNodeMaterial.cjs.js +0 -1
  246. package/nodes/materials/BasicNodeMaterial.d.ts +0 -11
  247. package/nodes/materials/BasicNodeMaterial.js +0 -15
  248. package/nodes/materials/PhongNodeMaterial.cjs.js +0 -1
  249. package/nodes/materials/PhongNodeMaterial.d.ts +0 -21
  250. package/nodes/materials/PhongNodeMaterial.js +0 -15
  251. package/nodes/materials/SpriteNodeMaterial.cjs.js +0 -1
  252. package/nodes/materials/SpriteNodeMaterial.d.ts +0 -12
  253. package/nodes/materials/SpriteNodeMaterial.js +0 -15
  254. package/nodes/materials/StandardNodeMaterial.cjs.js +0 -1
  255. package/nodes/materials/StandardNodeMaterial.d.ts +0 -25
  256. package/nodes/materials/StandardNodeMaterial.js +0 -15
  257. package/nodes/materials/nodes/BasicNode.cjs.js +0 -1
  258. package/nodes/materials/nodes/BasicNode.d.ts +0 -15
  259. package/nodes/materials/nodes/BasicNode.js +0 -91
  260. package/nodes/materials/nodes/MeshStandardNode.cjs.js +0 -1
  261. package/nodes/materials/nodes/MeshStandardNode.d.ts +0 -25
  262. package/nodes/materials/nodes/MeshStandardNode.js +0 -81
  263. package/nodes/materials/nodes/PhongNode.cjs.js +0 -1
  264. package/nodes/materials/nodes/PhongNode.d.ts +0 -14
  265. package/nodes/materials/nodes/PhongNode.js +0 -212
  266. package/nodes/materials/nodes/RawNode.cjs.js +0 -1
  267. package/nodes/materials/nodes/RawNode.d.ts +0 -10
  268. package/nodes/materials/nodes/RawNode.js +0 -42
  269. package/nodes/materials/nodes/SpriteNode.cjs.js +0 -1
  270. package/nodes/materials/nodes/SpriteNode.d.ts +0 -13
  271. package/nodes/materials/nodes/SpriteNode.js +0 -113
  272. package/nodes/materials/nodes/StandardNode.cjs.js +0 -1
  273. package/nodes/materials/nodes/StandardNode.d.ts +0 -15
  274. package/nodes/materials/nodes/StandardNode.js +0 -336
  275. package/nodes/misc/BumpMapNode.cjs.js +0 -1
  276. package/nodes/misc/BumpMapNode.d.ts +0 -21
  277. package/nodes/misc/BumpMapNode.js +0 -80
  278. package/nodes/misc/NormalMapNode.cjs.js +0 -1
  279. package/nodes/misc/NormalMapNode.d.ts +0 -19
  280. package/nodes/misc/NormalMapNode.js +0 -102
  281. package/nodes/misc/TextureCubeNode.cjs.js +0 -1
  282. package/nodes/misc/TextureCubeNode.d.ts +0 -21
  283. package/nodes/misc/TextureCubeNode.js +0 -52
  284. package/nodes/misc/TextureCubeUVNode.cjs.js +0 -1
  285. package/nodes/misc/TextureCubeUVNode.d.ts +0 -18
  286. package/nodes/misc/TextureCubeUVNode.js +0 -229
  287. package/nodes/postprocessing/NodePass.cjs.js +0 -1
  288. package/nodes/postprocessing/NodePass.d.ts +0 -15
  289. package/nodes/postprocessing/NodePass.js +0 -61
  290. package/nodes/postprocessing/NodePostProcessing.cjs.js +0 -1
  291. package/nodes/postprocessing/NodePostProcessing.d.ts +0 -26
  292. package/nodes/postprocessing/NodePostProcessing.js +0 -91
  293. package/nodes/procedural/NoiseNode.cjs.js +0 -1
  294. package/nodes/procedural/NoiseNode.d.ts +0 -17
  295. package/nodes/procedural/NoiseNode.js +0 -43
  296. package/nodes/utils/BypassNode.cjs.js +0 -1
  297. package/nodes/utils/BypassNode.d.ts +0 -11
  298. package/nodes/utils/BypassNode.js +0 -55
  299. package/nodes/utils/ColorSpaceNode.cjs.js +0 -1
  300. package/nodes/utils/ColorSpaceNode.d.ts +0 -55
  301. package/nodes/utils/ColorSpaceNode.js +0 -106
  302. package/nodes/utils/MaxMIPLevelNode.cjs.js +0 -1
  303. package/nodes/utils/MaxMIPLevelNode.d.ts +0 -11
  304. package/nodes/utils/MaxMIPLevelNode.js +0 -38
  305. package/nodes/utils/SpecularMIPLevelNode.cjs.js +0 -1
  306. package/nodes/utils/SpecularMIPLevelNode.d.ts +0 -17
  307. package/nodes/utils/SpecularMIPLevelNode.js +0 -61
  308. package/nodes/utils/SubSlotNode.cjs.js +0 -1
  309. package/nodes/utils/SubSlotNode.js +0 -53
  310. package/nodes/utils/SwitchNode.cjs.js +0 -1
  311. package/nodes/utils/SwitchNode.d.ts +0 -11
  312. package/nodes/utils/SwitchNode.js +0 -69
  313. package/nodes/utils/UVTransformNode.cjs.js +0 -1
  314. package/nodes/utils/UVTransformNode.d.ts +0 -15
  315. package/nodes/utils/UVTransformNode.js +0 -46
  316. package/nodes/utils/VelocityNode.cjs.js +0 -1
  317. package/nodes/utils/VelocityNode.d.ts +0 -28
  318. package/nodes/utils/VelocityNode.js +0 -115
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../core/TempNode.cjs.js"),t=require("../core/FunctionNode.cjs.js"),o=require("../inputs/FloatNode.cjs.js"),r=require("./PositionNode.cjs.js");function s(t,o){e.TempNode.call(this,"v3"),this.setScope(t||s.POSITION),this.setCamera(o)}require("three"),require("../core/Node.cjs.js"),require("../core/NodeLib.cjs.js"),require("../core/InputNode.cjs.js"),s.Nodes={depthColor:new t.FunctionNode(["float depthColor( float mNear, float mFar ) {","\t#ifdef USE_LOGDEPTHBUF_EXT","\t\tfloat depth = gl_FragDepthEXT / gl_FragCoord.w;","\t#else","\t\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;","\t#endif","\treturn 1.0 - smoothstep( mNear, mFar, depth );","}"].join("\n"))},s.POSITION="position",s.DEPTH="depth",s.TO_VERTEX="toVertex",s.prototype=Object.create(e.TempNode.prototype),s.prototype.constructor=s,s.prototype.nodeType="Camera",s.prototype.setCamera=function(e){this.camera=e,this.updateFrame=void 0!==e?this.onUpdateFrame:void 0},s.prototype.setScope=function(e){switch(this.scope){case s.DEPTH:delete this.near,delete this.far}switch(this.scope=e,e){case s.DEPTH:var t=this.camera;this.near=new o.FloatNode(t?t.near:1),this.far=new o.FloatNode(t?t.far:1200)}},s.prototype.getType=function(){switch(this.scope){case s.DEPTH:return"f"}return this.type},s.prototype.getUnique=function(){switch(this.scope){case s.DEPTH:case s.TO_VERTEX:return!0}return!1},s.prototype.getShared=function(){switch(this.scope){case s.POSITION:return!1}return!0},s.prototype.generate=function(e,t){var o;switch(this.scope){case s.POSITION:o="cameraPosition";break;case s.DEPTH:o=e.include(s.Nodes.depthColor)+"( "+this.near.build(e,"f")+", "+this.far.build(e,"f")+" )";break;case s.TO_VERTEX:o="normalize( "+new r.PositionNode(r.PositionNode.WORLD).build(e,"v3")+" - cameraPosition )"}return e.format(o,this.getType(e),t)},s.prototype.onUpdateFrame=function(){switch(this.scope){case s.DEPTH:var e=this.camera;this.near.value=e.near,this.far.value=e.far}},s.prototype.copy=function(t){switch(e.TempNode.prototype.copy.call(this,t),this.setScope(t.scope),t.camera&&this.setCamera(t.camera),t.scope){case s.DEPTH:this.near.number=t.near,this.far.number=t.far}return this},s.prototype.toJSON=function(e){var t=this.getJSONNode(e);if(!t)switch((t=this.createJSONNode(e)).scope=this.scope,this.camera&&(t.camera=this.camera.uuid),this.scope){case s.DEPTH:t.near=this.near.value,t.far=this.far.value}return t},exports.CameraNode=s;
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("./Object3DNode.cjs.js");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}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");var s=t(e);class o extends r{constructor(e=o.POSITION){super(e)}getNodeType(e){return this.scope===o.PROJECTION_MATRIX?"mat4":super.getNodeType(e)}update(e){const r=e.camera,t=this._uniformNode,s=this.scope;s===o.PROJECTION_MATRIX?t.value=r.projectionMatrix:s===o.VIEW_MATRIX?t.value=r.matrixWorldInverse:(this.object3d=r,super.update(e))}generate(e){return this.scope===o.PROJECTION_MATRIX&&(this._uniformNode.nodeType="mat4"),super.generate(e)}}s.default(o,"PROJECTION_MATRIX","projectionMatrix"),module.exports=o;
@@ -1,154 +1,48 @@
1
- import { TempNode } from '../core/TempNode.js';
2
- import { FunctionNode } from '../core/FunctionNode.js';
3
- import { FloatNode } from '../inputs/FloatNode.js';
4
- import { PositionNode } from './PositionNode.js';
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import Object3DNode from './Object3DNode.js';
5
3
 
6
- function CameraNode(scope, camera) {
7
- TempNode.call(this, 'v3');
8
- this.setScope(scope || CameraNode.POSITION);
9
- this.setCamera(camera);
10
- }
11
-
12
- CameraNode.Nodes = function () {
13
- var depthColor = new FunctionNode(['float depthColor( float mNear, float mFar ) {', ' #ifdef USE_LOGDEPTHBUF_EXT', ' float depth = gl_FragDepthEXT / gl_FragCoord.w;', ' #else', ' float depth = gl_FragCoord.z / gl_FragCoord.w;', ' #endif', ' return 1.0 - smoothstep( mNear, mFar, depth );', '}'].join('\n'));
14
- return {
15
- depthColor: depthColor
16
- };
17
- }();
18
-
19
- CameraNode.POSITION = 'position';
20
- CameraNode.DEPTH = 'depth';
21
- CameraNode.TO_VERTEX = 'toVertex';
22
- CameraNode.prototype = Object.create(TempNode.prototype);
23
- CameraNode.prototype.constructor = CameraNode;
24
- CameraNode.prototype.nodeType = 'Camera';
25
-
26
- CameraNode.prototype.setCamera = function (camera) {
27
- this.camera = camera;
28
- this.updateFrame = camera !== undefined ? this.onUpdateFrame : undefined;
29
- };
30
-
31
- CameraNode.prototype.setScope = function (scope) {
32
- switch (this.scope) {
33
- case CameraNode.DEPTH:
34
- delete this.near;
35
- delete this.far;
36
- break;
37
- }
38
-
39
- this.scope = scope;
40
-
41
- switch (scope) {
42
- case CameraNode.DEPTH:
43
- var camera = this.camera;
44
- this.near = new FloatNode(camera ? camera.near : 1);
45
- this.far = new FloatNode(camera ? camera.far : 1200);
46
- break;
47
- }
48
- };
49
-
50
- CameraNode.prototype.getType = function
51
- /* builder */
52
- () {
53
- switch (this.scope) {
54
- case CameraNode.DEPTH:
55
- return 'f';
56
- }
57
-
58
- return this.type;
59
- };
60
-
61
- CameraNode.prototype.getUnique = function
62
- /* builder */
63
- () {
64
- switch (this.scope) {
65
- case CameraNode.DEPTH:
66
- case CameraNode.TO_VERTEX:
67
- return true;
68
- }
69
-
70
- return false;
71
- };
72
-
73
- CameraNode.prototype.getShared = function
74
- /* builder */
75
- () {
76
- switch (this.scope) {
77
- case CameraNode.POSITION:
78
- return false;
4
+ class CameraNode extends Object3DNode {
5
+ constructor(scope = CameraNode.POSITION) {
6
+ super(scope);
79
7
  }
80
8
 
81
- return true;
82
- };
83
-
84
- CameraNode.prototype.generate = function (builder, output) {
85
- var result;
86
-
87
- switch (this.scope) {
88
- case CameraNode.POSITION:
89
- result = 'cameraPosition';
90
- break;
9
+ getNodeType(builder) {
10
+ const scope = this.scope;
91
11
 
92
- case CameraNode.DEPTH:
93
- var depthColor = builder.include(CameraNode.Nodes.depthColor);
94
- result = depthColor + '( ' + this.near.build(builder, 'f') + ', ' + this.far.build(builder, 'f') + ' )';
95
- break;
12
+ if (scope === CameraNode.PROJECTION_MATRIX) {
13
+ return 'mat4';
14
+ }
96
15
 
97
- case CameraNode.TO_VERTEX:
98
- result = 'normalize( ' + new PositionNode(PositionNode.WORLD).build(builder, 'v3') + ' - cameraPosition )';
99
- break;
16
+ return super.getNodeType(builder);
100
17
  }
101
18
 
102
- return builder.format(result, this.getType(builder), output);
103
- };
19
+ update(frame) {
20
+ const camera = frame.camera;
21
+ const uniformNode = this._uniformNode;
22
+ const scope = this.scope;
104
23
 
105
- CameraNode.prototype.onUpdateFrame = function
106
- /* frame */
107
- () {
108
- switch (this.scope) {
109
- case CameraNode.DEPTH:
110
- var camera = this.camera;
111
- this.near.value = camera.near;
112
- this.far.value = camera.far;
113
- break;
24
+ if (scope === CameraNode.PROJECTION_MATRIX) {
25
+ uniformNode.value = camera.projectionMatrix;
26
+ } else if (scope === CameraNode.VIEW_MATRIX) {
27
+ uniformNode.value = camera.matrixWorldInverse;
28
+ } else {
29
+ this.object3d = camera;
30
+ super.update(frame);
31
+ }
114
32
  }
115
- };
116
33
 
117
- CameraNode.prototype.copy = function (source) {
118
- TempNode.prototype.copy.call(this, source);
119
- this.setScope(source.scope);
34
+ generate(builder) {
35
+ const scope = this.scope;
120
36
 
121
- if (source.camera) {
122
- this.setCamera(source.camera);
123
- }
37
+ if (scope === CameraNode.PROJECTION_MATRIX) {
38
+ this._uniformNode.nodeType = 'mat4';
39
+ }
124
40
 
125
- switch (source.scope) {
126
- case CameraNode.DEPTH:
127
- this.near.number = source.near;
128
- this.far.number = source.far;
129
- break;
41
+ return super.generate(builder);
130
42
  }
131
43
 
132
- return this;
133
- };
134
-
135
- CameraNode.prototype.toJSON = function (meta) {
136
- var data = this.getJSONNode(meta);
137
-
138
- if (!data) {
139
- data = this.createJSONNode(meta);
140
- data.scope = this.scope;
141
- if (this.camera) data.camera = this.camera.uuid;
142
-
143
- switch (this.scope) {
144
- case CameraNode.DEPTH:
145
- data.near = this.near.value;
146
- data.far = this.far.value;
147
- break;
148
- }
149
- }
44
+ }
150
45
 
151
- return data;
152
- };
46
+ _defineProperty(CameraNode, "PROJECTION_MATRIX", 'projectionMatrix');
153
47
 
154
- export { CameraNode };
48
+ export default CameraNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("./TextureNode.cjs.js"),r=require("../core/UniformNode.cjs.js"),s=require("./ReflectNode.cjs.js");require("./UVNode.cjs.js"),require("../core/AttributeNode.cjs.js"),require("../core/Node.cjs.js"),require("../core/constants.cjs.js"),require("../core/NodeUtils.cjs.js"),require("three"),require("../core/VaryNode.cjs.js"),require("../core/InputNode.cjs.js"),require("@babel/runtime/helpers/defineProperty"),require("../ShaderNode.cjs.js"),require("../core/PropertyNode.cjs.js"),require("../core/VarNode.cjs.js"),require("../core/ConstNode.cjs.js"),require("./BufferNode.cjs.js"),require("./PositionNode.cjs.js"),require("./ModelNode.cjs.js"),require("./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("./NormalNode.cjs.js"),require("./CameraNode.cjs.js"),require("../math/CondNode.cjs.js"),require("../core/ContextNode.cjs.js"),require("../utils/ArrayElementNode.cjs.js"),require("../utils/ConvertNode.cjs.js");class o extends e{constructor(e,r=new s,o=null){super(e,r,o)}getInputType(){return"cubeTexture"}generate(e,s){const o=this.value;if(!o||!0!==o.isCubeTexture)throw new Error("CubeTextureNode: Need a three.js cube texture.");const t=r.prototype.generate.call(this,e,"cubeTexture");if("sampler"===s)return t+"_sampler";if(e.isReference(s))return t;{const r=e.getDataFromNode(this);let o=r.snippet;if(void 0===o){const s=this.uvNode.build(e,"vec3"),u=this.biasNode;if(null!==u){const r=u.build(e,"float");o=e.getCubeTextureBias(t,s,r)}else o=e.getCubeTexture(t,s);r.snippet=o}return e.format(o,"vec4",s)}}}o.prototype.isCubeTextureNode=!0,module.exports=o;
@@ -0,0 +1,53 @@
1
+ import TextureNode from './TextureNode.js';
2
+ import UniformNode from '../core/UniformNode.js';
3
+ import ReflectNode from './ReflectNode.js';
4
+
5
+ class CubeTextureNode extends TextureNode {
6
+ constructor(value, uvNode = new ReflectNode(), biasNode = null) {
7
+ super(value, uvNode, biasNode);
8
+ }
9
+
10
+ getInputType() {
11
+ return 'cubeTexture';
12
+ }
13
+
14
+ generate(builder, output) {
15
+ const texture = this.value;
16
+
17
+ if (!texture || texture.isCubeTexture !== true) {
18
+ throw new Error('CubeTextureNode: Need a three.js cube texture.');
19
+ }
20
+
21
+ const textureProperty = UniformNode.prototype.generate.call(this, builder, 'cubeTexture');
22
+
23
+ if (output === 'sampler') {
24
+ return textureProperty + '_sampler';
25
+ } else if (builder.isReference(output)) {
26
+ return textureProperty;
27
+ } else {
28
+ const nodeData = builder.getDataFromNode(this);
29
+ let snippet = nodeData.snippet;
30
+
31
+ if (snippet === undefined) {
32
+ const uvSnippet = this.uvNode.build(builder, 'vec3');
33
+ const biasNode = this.biasNode;
34
+
35
+ if (biasNode !== null) {
36
+ const biasSnippet = biasNode.build(builder, 'float');
37
+ snippet = builder.getCubeTextureBias(textureProperty, uvSnippet, biasSnippet);
38
+ } else {
39
+ snippet = builder.getCubeTexture(textureProperty, uvSnippet);
40
+ }
41
+
42
+ nodeData.snippet = snippet;
43
+ }
44
+
45
+ return builder.format(snippet, 'vec4', output);
46
+ }
47
+ }
48
+
49
+ }
50
+
51
+ CubeTextureNode.prototype.isCubeTextureNode = true;
52
+
53
+ export default CubeTextureNode;
@@ -0,0 +1 @@
1
+ "use strict";var e=require("@babel/runtime/helpers/defineProperty"),r=require("../core/Node.cjs.js"),t=require("../math/OperatorNode.cjs.js"),o=require("./MaterialReferenceNode.cjs.js");function s(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/TempNode.cjs.js"),require("./ReferenceNode.cjs.js"),require("../core/UniformNode.cjs.js"),require("../core/InputNode.cjs.js");var a=s(e);class l extends r{constructor(e=l.COLOR){super(),this.scope=e}getNodeType(e){const r=this.scope,t=e.context.material;return r===l.COLOR?null!==t.map?"vec4":"vec3":r===l.OPACITY?"float":r===l.SPECULAR?"vec3":r===l.ROUGHNESS||r===l.METALNESS?"float":void 0}generate(e,r){const s=e.context.material,a=this.scope;let c=null;if(a===l.ALPHA_TEST)c=new o("alphaTest","float");else if(a===l.COLOR){const e=new o("color","color");c=null!==s.map&&void 0!==s.map&&!0===s.map.isTexture?new t("*",e,new o("map","texture")):e}else if(a===l.OPACITY){const e=new o("opacity","float");c=null!==s.alphaMap&&void 0!==s.alphaMap&&!0===s.alphaMap.isTexture?new t("*",e,new o("alphaMap","texture")):e}else if(a===l.SPECULAR){const e=new o("specularColor","color");c=null!==s.specularColorMap&&void 0!==s.specularColorMap&&!0===s.specularColorMap.isTexture?new t("*",e,new o("specularColorMap","texture")):e}else{const r=this.getNodeType(e);c=new o(a,r)}return c.build(e,r)}}a.default(l,"ALPHA_TEST","alphaTest"),a.default(l,"COLOR","color"),a.default(l,"OPACITY","opacity"),a.default(l,"SPECULAR","specular"),a.default(l,"ROUGHNESS","roughness"),a.default(l,"METALNESS","metalness"),module.exports=l;
@@ -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;