@zephyr3d/scene 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/dist/animation/animation.js +4 -33
  2. package/dist/animation/animation.js.map +1 -1
  3. package/dist/animation/animationset.js +24 -11
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js +1 -0
  6. package/dist/animation/animationtrack.js.map +1 -1
  7. package/dist/animation/eulerrotationtrack.js +0 -1
  8. package/dist/animation/eulerrotationtrack.js.map +1 -1
  9. package/dist/animation/ik/ccd_solver.js +372 -0
  10. package/dist/animation/ik/ccd_solver.js.map +1 -0
  11. package/dist/animation/ik/fabrik_solver.js +399 -0
  12. package/dist/animation/ik/fabrik_solver.js.map +1 -0
  13. package/dist/animation/ik/ik_angle_constraint.js +181 -0
  14. package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
  15. package/dist/animation/ik/ik_chain.js +163 -0
  16. package/dist/animation/ik/ik_chain.js.map +1 -0
  17. package/dist/animation/ik/ik_chain_builder.js +68 -0
  18. package/dist/animation/ik/ik_chain_builder.js.map +1 -0
  19. package/dist/animation/ik/ik_constraint.js +25 -0
  20. package/dist/animation/ik/ik_constraint.js.map +1 -0
  21. package/dist/animation/ik/ik_pole_constraint.js +123 -0
  22. package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
  23. package/dist/animation/ik/ik_solver.js +48 -0
  24. package/dist/animation/ik/ik_solver.js.map +1 -0
  25. package/dist/animation/ik/ik_track.js +96 -0
  26. package/dist/animation/ik/ik_track.js.map +1 -0
  27. package/dist/animation/ik/ik_utils.js +270 -0
  28. package/dist/animation/ik/ik_utils.js.map +1 -0
  29. package/dist/animation/ik/two_bone_ik_solver.js +332 -0
  30. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
  31. package/dist/animation/ik_modifier.js +61 -0
  32. package/dist/animation/ik_modifier.js.map +1 -0
  33. package/dist/animation/ik_postprocessor.js +71 -0
  34. package/dist/animation/ik_postprocessor.js.map +1 -0
  35. package/dist/animation/manual_transform_processor.js +156 -0
  36. package/dist/animation/manual_transform_processor.js.map +1 -0
  37. package/dist/animation/morphtarget.js +7 -1
  38. package/dist/animation/morphtarget.js.map +1 -1
  39. package/dist/animation/morphtrack.js +3 -3
  40. package/dist/animation/morphtrack.js.map +1 -1
  41. package/dist/animation/proptrack.js +37 -41
  42. package/dist/animation/proptrack.js.map +1 -1
  43. package/dist/animation/rotationtrack.js +0 -1
  44. package/dist/animation/rotationtrack.js.map +1 -1
  45. package/dist/animation/scaletrack.js +0 -1
  46. package/dist/animation/scaletrack.js.map +1 -1
  47. package/dist/animation/skeleton.js +57 -60
  48. package/dist/animation/skeleton.js.map +1 -1
  49. package/dist/animation/skeleton_modifier.js +38 -0
  50. package/dist/animation/skeleton_modifier.js.map +1 -0
  51. package/dist/animation/skeleton_postprocessor.js +50 -0
  52. package/dist/animation/skeleton_postprocessor.js.map +1 -0
  53. package/dist/animation/spring/multi_chain_spring_system.js +503 -0
  54. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
  55. package/dist/animation/spring/spring_chain.js +103 -0
  56. package/dist/animation/spring/spring_chain.js.map +1 -0
  57. package/dist/animation/spring/spring_collider.js +247 -0
  58. package/dist/animation/spring/spring_collider.js.map +1 -0
  59. package/dist/animation/spring/spring_constraint.js +21 -0
  60. package/dist/animation/spring/spring_constraint.js.map +1 -0
  61. package/dist/animation/spring/spring_particle.js +20 -0
  62. package/dist/animation/spring/spring_particle.js.map +1 -0
  63. package/dist/animation/spring/spring_system.js +526 -0
  64. package/dist/animation/spring/spring_system.js.map +1 -0
  65. package/dist/animation/spring_modifier.js +45 -0
  66. package/dist/animation/spring_modifier.js.map +1 -0
  67. package/dist/animation/spring_postprocessor.js +54 -0
  68. package/dist/animation/spring_postprocessor.js.map +1 -0
  69. package/dist/animation/translationtrack.js +0 -1
  70. package/dist/animation/translationtrack.js.map +1 -1
  71. package/dist/app/api.js +13 -4
  72. package/dist/app/api.js.map +1 -1
  73. package/dist/app/app.js +13 -1
  74. package/dist/app/app.js.map +1 -1
  75. package/dist/app/engine.js +33 -45
  76. package/dist/app/engine.js.map +1 -1
  77. package/dist/app/inputmgr.js.map +1 -1
  78. package/dist/app/runtimescript.js.map +1 -1
  79. package/dist/app/screen.js +318 -0
  80. package/dist/app/screen.js.map +1 -0
  81. package/dist/app/scriptingsystem.js +10 -6
  82. package/dist/app/scriptingsystem.js.map +1 -1
  83. package/dist/app/scriptregistry.js +11 -22
  84. package/dist/app/scriptregistry.js.map +1 -1
  85. package/dist/asset/assetmanager.js +79 -58
  86. package/dist/asset/assetmanager.js.map +1 -1
  87. package/dist/asset/builtin.js +5 -5
  88. package/dist/asset/builtin.js.map +1 -1
  89. package/dist/asset/loaders/dds/dds.js +6 -2
  90. package/dist/asset/loaders/dds/dds.js.map +1 -1
  91. package/dist/asset/loaders/dds/dds_loader.js +1 -1
  92. package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
  93. package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
  94. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  95. package/dist/asset/loaders/gltf/helpers.js +6 -2
  96. package/dist/asset/loaders/gltf/helpers.js.map +1 -1
  97. package/dist/asset/loaders/hdr/hdr.js +22 -15
  98. package/dist/asset/loaders/hdr/hdr.js.map +1 -1
  99. package/dist/asset/loaders/image/tga_Loader.js +2 -1
  100. package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
  101. package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
  102. package/dist/asset/loaders/loader.js +2 -2
  103. package/dist/asset/loaders/loader.js.map +1 -1
  104. package/dist/asset/model.js +9 -5
  105. package/dist/asset/model.js.map +1 -1
  106. package/dist/blitter/bilateralblur.js.map +1 -1
  107. package/dist/blitter/blitter.js +9 -11
  108. package/dist/blitter/blitter.js.map +1 -1
  109. package/dist/blitter/box.js +0 -1
  110. package/dist/blitter/box.js.map +1 -1
  111. package/dist/blitter/copy.js.map +1 -1
  112. package/dist/blitter/gaussianblur.js.map +1 -1
  113. package/dist/camera/base.js +1 -3
  114. package/dist/camera/base.js.map +1 -1
  115. package/dist/camera/camera.js +121 -37
  116. package/dist/camera/camera.js.map +1 -1
  117. package/dist/camera/fps.js +19 -17
  118. package/dist/camera/fps.js.map +1 -1
  119. package/dist/camera/orbit.js +45 -43
  120. package/dist/camera/orbit.js.map +1 -1
  121. package/dist/camera/orthocamera.js +27 -21
  122. package/dist/camera/orthocamera.js.map +1 -1
  123. package/dist/camera/perspectivecamera.js +28 -19
  124. package/dist/camera/perspectivecamera.js.map +1 -1
  125. package/dist/index.d.ts +15802 -15577
  126. package/dist/index.js +33 -11
  127. package/dist/index.js.map +1 -1
  128. package/dist/material/blinn.js.map +1 -1
  129. package/dist/material/grassmaterial.js.map +1 -1
  130. package/dist/material/lambert.js.map +1 -1
  131. package/dist/material/material.js +11 -5
  132. package/dist/material/material.js.map +1 -1
  133. package/dist/material/meshmaterial.js +10 -9
  134. package/dist/material/meshmaterial.js.map +1 -1
  135. package/dist/material/mixins/albedocolor.js.map +1 -1
  136. package/dist/material/mixins/foliage.js.map +1 -1
  137. package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
  138. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  139. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  140. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
  141. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  142. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  143. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  144. package/dist/material/mixins/lit.js +3 -3
  145. package/dist/material/mixins/lit.js.map +1 -1
  146. package/dist/material/mixins/pbr/brdf.js.map +1 -1
  147. package/dist/material/mixins/pbr/common.js.map +1 -1
  148. package/dist/material/mixins/texture.js +3 -0
  149. package/dist/material/mixins/texture.js.map +1 -1
  150. package/dist/material/mixins/vertexcolor.js.map +1 -1
  151. package/dist/material/particle.js.map +1 -1
  152. package/dist/material/pbrblueprint.js +180 -22
  153. package/dist/material/pbrblueprint.js.map +1 -1
  154. package/dist/material/pbrmr.js.map +1 -1
  155. package/dist/material/pbrsg.js.map +1 -1
  156. package/dist/material/shader/helper.js +41 -56
  157. package/dist/material/shader/helper.js.map +1 -1
  158. package/dist/material/sprite.js +301 -0
  159. package/dist/material/sprite.js.map +1 -0
  160. package/dist/material/sprite3d.js +301 -0
  161. package/dist/material/sprite3d.js.map +1 -0
  162. package/dist/material/sprite3d_std.js +116 -0
  163. package/dist/material/sprite3d_std.js.map +1 -0
  164. package/dist/material/sprite3dblueprint.js +235 -0
  165. package/dist/material/sprite3dblueprint.js.map +1 -0
  166. package/dist/material/sprite_std.js +116 -0
  167. package/dist/material/sprite_std.js.map +1 -0
  168. package/dist/material/spriteblueprint.js +235 -0
  169. package/dist/material/spriteblueprint.js.map +1 -0
  170. package/dist/material/terrain-cm.js +0 -1
  171. package/dist/material/terrain-cm.js.map +1 -1
  172. package/dist/material/unlit.js.map +1 -1
  173. package/dist/material/water.js.map +1 -1
  174. package/dist/posteffect/bloom.js.map +1 -1
  175. package/dist/posteffect/compositor.js.map +1 -1
  176. package/dist/posteffect/fxaa.js.map +1 -1
  177. package/dist/posteffect/grayscale.js.map +1 -1
  178. package/dist/posteffect/motionblur.js.map +1 -1
  179. package/dist/posteffect/posteffect.js.map +1 -1
  180. package/dist/posteffect/sao.js.map +1 -1
  181. package/dist/posteffect/ssr.js +7 -5
  182. package/dist/posteffect/ssr.js.map +1 -1
  183. package/dist/posteffect/taa.js.map +1 -1
  184. package/dist/posteffect/tonemap.js.map +1 -1
  185. package/dist/render/abuffer_oit.js +8 -6
  186. package/dist/render/abuffer_oit.js.map +1 -1
  187. package/dist/render/clipmap.js +0 -10
  188. package/dist/render/clipmap.js.map +1 -1
  189. package/dist/render/cluster_light.js +4 -4
  190. package/dist/render/cluster_light.js.map +1 -1
  191. package/dist/render/cull_visitor.js +15 -17
  192. package/dist/render/cull_visitor.js.map +1 -1
  193. package/dist/render/depthpass.js +3 -4
  194. package/dist/render/depthpass.js.map +1 -1
  195. package/dist/render/drawable.js +15 -0
  196. package/dist/render/drawable.js.map +1 -0
  197. package/dist/render/drawable_mixin.js +8 -4
  198. package/dist/render/drawable_mixin.js.map +1 -1
  199. package/dist/render/envlight.js.map +1 -1
  200. package/dist/render/fbm_wavegenerator.js +3 -1
  201. package/dist/render/fbm_wavegenerator.js.map +1 -1
  202. package/dist/render/fft_wavegenerator.js +67 -64
  203. package/dist/render/fft_wavegenerator.js.map +1 -1
  204. package/dist/render/fullscreenquad.js.map +1 -1
  205. package/dist/render/gerstner_wavegenerator.js +3 -1
  206. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  207. package/dist/render/globalbindgroup_allocator.js +3 -1
  208. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  209. package/dist/render/hzb.js +1 -2
  210. package/dist/render/hzb.js.map +1 -1
  211. package/dist/render/lightpass.js +13 -13
  212. package/dist/render/lightpass.js.map +1 -1
  213. package/dist/render/objectcolorpass.js +4 -7
  214. package/dist/render/objectcolorpass.js.map +1 -1
  215. package/dist/render/primitive.js +4 -5
  216. package/dist/render/primitive.js.map +1 -1
  217. package/dist/render/render_queue.js +10 -5
  218. package/dist/render/render_queue.js.map +1 -1
  219. package/dist/render/renderer.js +16 -22
  220. package/dist/render/renderer.js.map +1 -1
  221. package/dist/render/renderpass.js +27 -52
  222. package/dist/render/renderpass.js.map +1 -1
  223. package/dist/render/rendertarget.js +5 -0
  224. package/dist/render/rendertarget.js.map +1 -0
  225. package/dist/render/screenrendertarget.js +56 -0
  226. package/dist/render/screenrendertarget.js.map +1 -0
  227. package/dist/render/shadowmap_pass.js +4 -5
  228. package/dist/render/shadowmap_pass.js.map +1 -1
  229. package/dist/render/sky.js +16 -14
  230. package/dist/render/sky.js.map +1 -1
  231. package/dist/render/weightedblended_oit.js.map +1 -1
  232. package/dist/scene/basesprite.js +296 -0
  233. package/dist/scene/basesprite.js.map +1 -0
  234. package/dist/scene/batchgroup.js +4 -2
  235. package/dist/scene/batchgroup.js.map +1 -1
  236. package/dist/scene/environment.js +9 -10
  237. package/dist/scene/environment.js.map +1 -1
  238. package/dist/scene/graph_node.js.map +1 -1
  239. package/dist/scene/light.js +22 -4
  240. package/dist/scene/light.js.map +1 -1
  241. package/dist/scene/mesh.js +96 -26
  242. package/dist/scene/mesh.js.map +1 -1
  243. package/dist/scene/octree.js.map +1 -1
  244. package/dist/scene/particlesys.js +25 -22
  245. package/dist/scene/particlesys.js.map +1 -1
  246. package/dist/scene/raycast_visitor.js +0 -16
  247. package/dist/scene/raycast_visitor.js.map +1 -1
  248. package/dist/scene/scene.js +7 -4
  249. package/dist/scene/scene.js.map +1 -1
  250. package/dist/scene/scene_node.js +20 -35
  251. package/dist/scene/scene_node.js.map +1 -1
  252. package/dist/scene/sprite.js +18 -0
  253. package/dist/scene/sprite.js.map +1 -0
  254. package/dist/scene/sprite3d.js +18 -0
  255. package/dist/scene/sprite3d.js.map +1 -0
  256. package/dist/scene/terrain-cm/grass.js +5 -4
  257. package/dist/scene/terrain-cm/grass.js.map +1 -1
  258. package/dist/scene/terrain-cm/grassmaterial.js +3 -1
  259. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  260. package/dist/scene/terrain-cm/terrain-cm.js +65 -48
  261. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  262. package/dist/scene/water.js +35 -30
  263. package/dist/scene/water.js.map +1 -1
  264. package/dist/shaders/atmosphere.js +17 -29
  265. package/dist/shaders/atmosphere.js.map +1 -1
  266. package/dist/shaders/fog.js.map +1 -1
  267. package/dist/shaders/misc.js.map +1 -1
  268. package/dist/shaders/noise.js.map +1 -1
  269. package/dist/shaders/pbr.js.map +1 -1
  270. package/dist/shaders/shadow.js.map +1 -1
  271. package/dist/shaders/ssr.js.map +1 -1
  272. package/dist/shaders/temporal.js.map +1 -1
  273. package/dist/shaders/water.js.map +1 -1
  274. package/dist/shadow/esm.js +1 -1
  275. package/dist/shadow/esm.js.map +1 -1
  276. package/dist/shadow/pcf_opt.js.map +1 -1
  277. package/dist/shadow/pcf_pd.js.map +1 -1
  278. package/dist/shadow/shader.js +3 -1
  279. package/dist/shadow/shader.js.map +1 -1
  280. package/dist/shadow/shadow_impl.js.map +1 -1
  281. package/dist/shadow/shadowmapper.js +6 -18
  282. package/dist/shadow/shadowmapper.js.map +1 -1
  283. package/dist/shadow/ssm.js.map +1 -1
  284. package/dist/shadow/vsm.js.map +1 -1
  285. package/dist/shapes/box.js +9 -3
  286. package/dist/shapes/box.js.map +1 -1
  287. package/dist/shapes/cylinder.js +2 -2
  288. package/dist/shapes/cylinder.js.map +1 -1
  289. package/dist/shapes/plane.js +2 -2
  290. package/dist/shapes/plane.js.map +1 -1
  291. package/dist/shapes/shape.js +2 -1
  292. package/dist/shapes/shape.js.map +1 -1
  293. package/dist/shapes/sphere.js +2 -2
  294. package/dist/shapes/sphere.js.map +1 -1
  295. package/dist/shapes/tetrahedron.js +5 -6
  296. package/dist/shapes/tetrahedron.js.map +1 -1
  297. package/dist/shapes/torus.js +2 -2
  298. package/dist/shapes/torus.js.map +1 -1
  299. package/dist/utility/aabbtree.js +1 -1
  300. package/dist/utility/aabbtree.js.map +1 -1
  301. package/dist/utility/blueprint/common/constants.js +578 -104
  302. package/dist/utility/blueprint/common/constants.js.map +1 -1
  303. package/dist/utility/blueprint/common/math.js +471 -9
  304. package/dist/utility/blueprint/common/math.js.map +1 -1
  305. package/dist/utility/blueprint/common.js +1 -1
  306. package/dist/utility/blueprint/common.js.map +1 -1
  307. package/dist/utility/blueprint/material/func.js +9 -5
  308. package/dist/utility/blueprint/material/func.js.map +1 -1
  309. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  310. package/dist/utility/blueprint/material/ir.js +288 -80
  311. package/dist/utility/blueprint/material/ir.js.map +1 -1
  312. package/dist/utility/blueprint/material/pbr.js +92 -4
  313. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  314. package/dist/utility/blueprint/material/texture.js +62 -45
  315. package/dist/utility/blueprint/material/texture.js.map +1 -1
  316. package/dist/utility/blueprint/node.js +28 -1
  317. package/dist/utility/blueprint/node.js.map +1 -1
  318. package/dist/utility/bounding_volume.js.map +1 -1
  319. package/dist/utility/debug.js.map +1 -1
  320. package/dist/utility/draco/decoder.js.map +1 -1
  321. package/dist/utility/misc.js +1 -1
  322. package/dist/utility/misc.js.map +1 -1
  323. package/dist/utility/panorama.js.map +1 -1
  324. package/dist/utility/pmrem.js.map +1 -1
  325. package/dist/utility/rendermipmap.js.map +1 -1
  326. package/dist/utility/serialization/json.js +19 -15
  327. package/dist/utility/serialization/json.js.map +1 -1
  328. package/dist/utility/serialization/manager.js +89 -22
  329. package/dist/utility/serialization/manager.js.map +1 -1
  330. package/dist/utility/serialization/scene/animation.js +44 -41
  331. package/dist/utility/serialization/scene/animation.js.map +1 -1
  332. package/dist/utility/serialization/scene/batch.js +4 -3
  333. package/dist/utility/serialization/scene/batch.js.map +1 -1
  334. package/dist/utility/serialization/scene/camera.js +97 -9
  335. package/dist/utility/serialization/scene/camera.js.map +1 -1
  336. package/dist/utility/serialization/scene/common.js +102 -28
  337. package/dist/utility/serialization/scene/common.js.map +1 -1
  338. package/dist/utility/serialization/scene/light.js +14 -12
  339. package/dist/utility/serialization/scene/light.js.map +1 -1
  340. package/dist/utility/serialization/scene/material.js +216 -26
  341. package/dist/utility/serialization/scene/material.js.map +1 -1
  342. package/dist/utility/serialization/scene/mesh.js +71 -100
  343. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  344. package/dist/utility/serialization/scene/misc.js +3 -2
  345. package/dist/utility/serialization/scene/misc.js.map +1 -1
  346. package/dist/utility/serialization/scene/node.js +42 -9
  347. package/dist/utility/serialization/scene/node.js.map +1 -1
  348. package/dist/utility/serialization/scene/particle.js +7 -5
  349. package/dist/utility/serialization/scene/particle.js.map +1 -1
  350. package/dist/utility/serialization/scene/primitive.js +18 -15
  351. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  352. package/dist/utility/serialization/scene/scene.js +3 -2
  353. package/dist/utility/serialization/scene/scene.js.map +1 -1
  354. package/dist/utility/serialization/scene/sprite.js +164 -0
  355. package/dist/utility/serialization/scene/sprite.js.map +1 -0
  356. package/dist/utility/serialization/scene/terrain.js +8 -6
  357. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  358. package/dist/utility/serialization/scene/water.js +11 -9
  359. package/dist/utility/serialization/scene/water.js.map +1 -1
  360. package/dist/utility/serialization/types.js +6 -0
  361. package/dist/utility/serialization/types.js.map +1 -0
  362. package/dist/utility/shprojector.js.map +1 -1
  363. package/dist/utility/textures/ggxlut.js.map +1 -1
  364. package/dist/utility/textures/gradientnoise.js.map +1 -1
  365. package/dist/utility/textures/randomnoise.js.map +1 -1
  366. package/dist/values.js +14 -14
  367. package/dist/values.js.map +1 -1
  368. package/package.json +80 -80
@@ -1,4 +1,5 @@
1
- import { BaseGraphNode } from '../node.js';
1
+ import { BaseGraphNode, getNodeTypeComponents } from '../node.js';
2
+ import { defineProps } from '../../serialization/types.js';
2
3
 
3
4
  /**
4
5
  * Vector constructor node
@@ -243,7 +244,7 @@ import { BaseGraphNode } from '../node.js';
243
244
  ctor: SwizzleNode,
244
245
  name: 'SwizzleNode',
245
246
  getProps () {
246
- return [
247
+ return defineProps([
247
248
  {
248
249
  name: 'Swizzle',
249
250
  type: 'string',
@@ -254,7 +255,7 @@ import { BaseGraphNode } from '../node.js';
254
255
  this.swizzle = value.str[0];
255
256
  }
256
257
  }
257
- ];
258
+ ]);
258
259
  }
259
260
  };
260
261
  }
@@ -274,9 +275,6 @@ import { BaseGraphNode } from '../node.js';
274
275
  if (err) {
275
276
  return err;
276
277
  }
277
- if (!this._inputs[0].inputNode) {
278
- return `Missing argument \`${name}\``;
279
- }
280
278
  const type = this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId);
281
279
  if (!type) {
282
280
  return `Cannot determine type of argument \`${name}\``;
@@ -309,7 +307,7 @@ import { BaseGraphNode } from '../node.js';
309
307
  * @returns 'float', 'vec2', 'vec3', 'vec4', or empty string if invalid
310
308
  *
311
309
  */ getType() {
312
- const err = super.validate();
310
+ const err = this.validate();
313
311
  if (err) {
314
312
  return '';
315
313
  }
@@ -343,6 +341,366 @@ import { BaseGraphNode } from '../node.js';
343
341
  return this._swizzle.length === 1 ? 'float' : `vec${this._swizzle.length}`;
344
342
  }
345
343
  }
344
+ /**
345
+ * Vector comparison node
346
+ *
347
+ * @public
348
+ */ class CompComparisonNode extends BaseGraphNode {
349
+ _mode;
350
+ /**
351
+ * Creates a new swizzle node
352
+ */ constructor(){
353
+ super();
354
+ this._mode = 'eq';
355
+ this._inputs = [
356
+ {
357
+ id: 1,
358
+ name: '',
359
+ type: [
360
+ 'vec2',
361
+ 'vec3',
362
+ 'vec4'
363
+ ],
364
+ required: true
365
+ },
366
+ {
367
+ id: 2,
368
+ name: '',
369
+ type: [
370
+ 'vec2',
371
+ 'vec3',
372
+ 'vec4'
373
+ ],
374
+ required: true
375
+ }
376
+ ];
377
+ this._outputs = [
378
+ {
379
+ id: 1,
380
+ name: ''
381
+ }
382
+ ];
383
+ }
384
+ /** Swizzle */ get mode() {
385
+ return this._mode;
386
+ }
387
+ set mode(val) {
388
+ this._mode = val;
389
+ }
390
+ /**
391
+ * Generates a string representation of this node
392
+ *
393
+ * @returns 'Swizzle'
394
+ */ toString() {
395
+ return 'Comparison';
396
+ }
397
+ /**
398
+ * Gets the serialization descriptor for this node type
399
+ *
400
+ * @returns Serialization class descriptor
401
+ *
402
+ * @remarks
403
+ * No properties need to be serialized beyond the base node data.
404
+ */ static getSerializationCls() {
405
+ return {
406
+ ctor: CompComparisonNode,
407
+ name: 'CompComparisonNode',
408
+ getProps () {
409
+ return defineProps([
410
+ {
411
+ name: 'mode',
412
+ type: 'string',
413
+ options: {
414
+ enum: {
415
+ labels: [
416
+ 'Equal',
417
+ 'NotEqual',
418
+ 'LessThan',
419
+ 'LessThanEqual',
420
+ 'GreaterThan',
421
+ 'GreaterThanEqual'
422
+ ],
423
+ values: [
424
+ 'eq',
425
+ 'ne',
426
+ 'lt',
427
+ 'le',
428
+ 'gt',
429
+ 'ge'
430
+ ]
431
+ }
432
+ },
433
+ get (value) {
434
+ value.str[0] = this.mode;
435
+ },
436
+ set (value) {
437
+ this.mode = value.str[0];
438
+ }
439
+ }
440
+ ]);
441
+ }
442
+ };
443
+ }
444
+ /**
445
+ * Validates the node state and input types
446
+ *
447
+ * @returns Error message if invalid, empty string if valid
448
+ */ validate() {
449
+ const err = super.validate();
450
+ if (err) {
451
+ return err;
452
+ }
453
+ const type0 = this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId);
454
+ const type1 = this._inputs[1].inputNode.getOutputType(this._inputs[1].inputId);
455
+ if (type0 !== type1) {
456
+ return 'Input arguments must be the same type';
457
+ }
458
+ return '';
459
+ }
460
+ /**
461
+ * Gets the output type based on connected inputs
462
+ *
463
+ * @returns 'bvec2', 'bvec3', 'bvec4', or empty string if invalid
464
+ *
465
+ */ getType() {
466
+ const err = this.validate();
467
+ if (err) {
468
+ return '';
469
+ }
470
+ const type = this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId);
471
+ return `bvec${getNodeTypeComponents(type)}`;
472
+ }
473
+ }
474
+ /**
475
+ * Any condition node
476
+ *
477
+ * @public
478
+ */ class AnyConditionNode extends BaseGraphNode {
479
+ /**
480
+ * Creates a new any-condition node
481
+ */ constructor(){
482
+ super();
483
+ this._inputs = [
484
+ {
485
+ id: 1,
486
+ name: '',
487
+ type: [
488
+ 'bool',
489
+ 'bvec2',
490
+ 'bvec3',
491
+ 'bvec4'
492
+ ],
493
+ required: true
494
+ }
495
+ ];
496
+ this._outputs = [
497
+ {
498
+ id: 1,
499
+ name: ''
500
+ }
501
+ ];
502
+ }
503
+ /**
504
+ * Generates a string representation of this node
505
+ *
506
+ * @returns 'Any'
507
+ */ toString() {
508
+ return 'Any';
509
+ }
510
+ /**
511
+ * Gets the serialization descriptor for this node type
512
+ *
513
+ * @returns Serialization class descriptor
514
+ *
515
+ * @remarks
516
+ * No properties need to be serialized beyond the base node data.
517
+ */ static getSerializationCls() {
518
+ return {
519
+ ctor: AnyConditionNode,
520
+ name: 'AnyConditionNode',
521
+ getProps () {
522
+ return [];
523
+ }
524
+ };
525
+ }
526
+ /**
527
+ * Gets the output type based on connected inputs
528
+ *
529
+ * @returns 'bool'
530
+ *
531
+ */ getType() {
532
+ return this.validate() ? '' : 'bool';
533
+ }
534
+ }
535
+ /**
536
+ * All condition node
537
+ *
538
+ * @public
539
+ */ class AllConditionNode extends BaseGraphNode {
540
+ /**
541
+ * Creates a new all-condition node
542
+ */ constructor(){
543
+ super();
544
+ this._inputs = [
545
+ {
546
+ id: 1,
547
+ name: '',
548
+ type: [
549
+ 'bool',
550
+ 'bvec2',
551
+ 'bvec3',
552
+ 'bvec4'
553
+ ],
554
+ required: true
555
+ }
556
+ ];
557
+ this._outputs = [
558
+ {
559
+ id: 1,
560
+ name: ''
561
+ }
562
+ ];
563
+ }
564
+ /**
565
+ * Generates a string representation of this node
566
+ *
567
+ * @returns 'All'
568
+ */ toString() {
569
+ return 'All';
570
+ }
571
+ /**
572
+ * Gets the serialization descriptor for this node type
573
+ *
574
+ * @returns Serialization class descriptor
575
+ *
576
+ * @remarks
577
+ * No properties need to be serialized beyond the base node data.
578
+ */ static getSerializationCls() {
579
+ return {
580
+ ctor: AllConditionNode,
581
+ name: 'AllConditionNode',
582
+ getProps () {
583
+ return [];
584
+ }
585
+ };
586
+ }
587
+ /**
588
+ * Gets the output type based on connected inputs
589
+ *
590
+ * @returns 'bool'
591
+ *
592
+ */ getType() {
593
+ return this.validate() ? '' : 'bool';
594
+ }
595
+ }
596
+ /**
597
+ * Selection node
598
+ *
599
+ * @public
600
+ */ class SelectionNode extends BaseGraphNode {
601
+ /**
602
+ * Creates a new selection node
603
+ */ constructor(){
604
+ super();
605
+ this._inputs = [
606
+ {
607
+ id: 1,
608
+ name: 'a',
609
+ type: [
610
+ 'float',
611
+ 'vec2',
612
+ 'vec3',
613
+ 'vec4'
614
+ ],
615
+ required: true
616
+ },
617
+ {
618
+ id: 2,
619
+ name: 'b',
620
+ type: [
621
+ 'float',
622
+ 'vec2',
623
+ 'vec3',
624
+ 'vec4'
625
+ ],
626
+ required: true
627
+ },
628
+ {
629
+ id: 3,
630
+ name: 'condition',
631
+ type: [
632
+ 'bool',
633
+ 'bvec2',
634
+ 'bvec3',
635
+ 'bvec4'
636
+ ],
637
+ required: true
638
+ }
639
+ ];
640
+ this._outputs = [
641
+ {
642
+ id: 1,
643
+ name: ''
644
+ }
645
+ ];
646
+ }
647
+ /**
648
+ * Generates a string representation of this node
649
+ *
650
+ * @returns 'Selection'
651
+ */ toString() {
652
+ return 'Selection';
653
+ }
654
+ /**
655
+ * Gets the serialization descriptor for this node type
656
+ *
657
+ * @returns Serialization class descriptor
658
+ *
659
+ * @remarks
660
+ * No properties need to be serialized beyond the base node data.
661
+ */ static getSerializationCls() {
662
+ return {
663
+ ctor: SelectionNode,
664
+ name: 'SelectionNode',
665
+ getProps () {
666
+ return [];
667
+ }
668
+ };
669
+ }
670
+ /**
671
+ * Validates the node state and input types
672
+ *
673
+ * @returns Error message if invalid, empty string if valid
674
+ */ validate() {
675
+ const err = super.validate();
676
+ if (err) {
677
+ return err;
678
+ }
679
+ const type0 = this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId);
680
+ const type1 = this._inputs[1].inputNode.getOutputType(this._inputs[1].inputId);
681
+ if (type0 !== type1) {
682
+ return 'Input arguments 0-1 must be the same type';
683
+ }
684
+ const type2 = this._inputs[2].inputNode.getOutputType(this._inputs[2].inputId);
685
+ const n = getNodeTypeComponents(type2);
686
+ if (n > 1 && n !== getNodeTypeComponents(type0)) {
687
+ return 'Invalid type of argument 2';
688
+ }
689
+ return '';
690
+ }
691
+ /**
692
+ * Gets the output type based on connected inputs
693
+ *
694
+ * @returns 'bool'
695
+ *
696
+ */ getType() {
697
+ const err = this.validate();
698
+ if (err) {
699
+ return '';
700
+ }
701
+ return this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId);
702
+ }
703
+ }
346
704
  /**
347
705
  * Matrix-vector transformation node
348
706
  *
@@ -500,7 +858,7 @@ import { BaseGraphNode } from '../node.js';
500
858
  * - mat * vec = vec (same dimension)
501
859
  * - mat * mat = mat (same dimension)
502
860
  */ getType() {
503
- const err = super.validate();
861
+ const err = this.validate();
504
862
  if (err) {
505
863
  return '';
506
864
  }
@@ -1590,6 +1948,24 @@ import { BaseGraphNode } from '../node.js';
1590
1948
  };
1591
1949
  }
1592
1950
  }
1951
+ /**
1952
+ * SmoothStep function
1953
+ *
1954
+ * @public
1955
+ */ class SmoothStepNode extends GenericMathNode {
1956
+ constructor(){
1957
+ super('smoothStep', 3);
1958
+ }
1959
+ static getSerializationCls() {
1960
+ return {
1961
+ ctor: SmoothStepNode,
1962
+ name: 'SmoothStepNode',
1963
+ getProps () {
1964
+ return [];
1965
+ }
1966
+ };
1967
+ }
1968
+ }
1593
1969
  /**
1594
1970
  * Fused multiply-add operation
1595
1971
  *
@@ -1847,6 +2223,92 @@ import { BaseGraphNode } from '../node.js';
1847
2223
  };
1848
2224
  }
1849
2225
  }
2226
+ /**
2227
+ * Logically and
2228
+ *
2229
+ * @public
2230
+ */ class LogicallyAndNode extends GenericMathNode {
2231
+ constructor(){
2232
+ super('and', 2, 'bool', [
2233
+ 'bool'
2234
+ ]);
2235
+ }
2236
+ static getSerializationCls() {
2237
+ return {
2238
+ ctor: LogicallyAndNode,
2239
+ name: 'LogicallyAndNode',
2240
+ getProps () {
2241
+ return [];
2242
+ }
2243
+ };
2244
+ }
2245
+ }
2246
+ /**
2247
+ * Logically or
2248
+ *
2249
+ * @public
2250
+ */ class LogicallyOrNode extends GenericMathNode {
2251
+ constructor(){
2252
+ super('or', 2, 'bool', [
2253
+ 'bool'
2254
+ ]);
2255
+ }
2256
+ static getSerializationCls() {
2257
+ return {
2258
+ ctor: LogicallyOrNode,
2259
+ name: 'LogicallyOrNode',
2260
+ getProps () {
2261
+ return [];
2262
+ }
2263
+ };
2264
+ }
2265
+ }
2266
+ /**
2267
+ * Equal test across two scalar or vectors
2268
+ *
2269
+ * @public
2270
+ */ class EqualNode extends GenericMathNode {
2271
+ constructor(){
2272
+ super('equal', 2, 'bool', [
2273
+ 'float',
2274
+ 'vec2',
2275
+ 'vec3',
2276
+ 'vec4'
2277
+ ]);
2278
+ }
2279
+ static getSerializationCls() {
2280
+ return {
2281
+ ctor: EqualNode,
2282
+ name: 'EqualNode',
2283
+ getProps () {
2284
+ return [];
2285
+ }
2286
+ };
2287
+ }
2288
+ }
2289
+ /**
2290
+ * Not-Equal test across two scalar or vectors
2291
+ *
2292
+ * @public
2293
+ */ class NotEqualNode extends GenericMathNode {
2294
+ constructor(){
2295
+ super('notEqual', 2, 'bool', [
2296
+ 'float',
2297
+ 'vec2',
2298
+ 'vec3',
2299
+ 'vec4'
2300
+ ]);
2301
+ }
2302
+ static getSerializationCls() {
2303
+ return {
2304
+ ctor: NotEqualNode,
2305
+ name: 'NotEqualNode',
2306
+ getProps () {
2307
+ return [];
2308
+ }
2309
+ };
2310
+ }
2311
+ }
1850
2312
  /**
1851
2313
  * Calculates the dot product of two vectors
1852
2314
  *
@@ -2041,5 +2503,5 @@ import { BaseGraphNode } from '../node.js';
2041
2503
  }
2042
2504
  }
2043
2505
 
2044
- export { AbsNode, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, CeilNode, ClampNode, CompAddNode, CompDivNode, CompMulNode, CompSubNode, CosHNode, CosNode, CrossProductNode, DDXNode, DDYNode, Degrees2RadiansNode, DistanceNode, DotProductNode, Exp2Node, ExpNode, FWidthNode, FaceForwardNode, FloorNode, FmaNode, FractNode, GenericMathNode, Hash1Node, Hash2Node, Hash3Node, InvSqrtNode, LengthNode, Log2Node, LogNode, MakeVectorNode, MaxNode, MinNode, MixNode, ModNode, NormalizeNode, PerlinNoise2DNode, PowNode, Radians2DegreesNode, ReflectNode, RefractNode, SaturateNode, SignNode, SimplexNoise2DNode, SinHNode, SinNode, SqrtNode, StepNode, SwizzleNode, TanHNode, TanNode, TransformNode };
2506
+ export { AbsNode, AllConditionNode, AnyConditionNode, ArcCosNode, ArcSinNode, ArcTan2Node, ArcTanNode, ArccosineHNode, ArcsineHNode, ArctangentHNode, CeilNode, ClampNode, CompAddNode, CompComparisonNode, CompDivNode, CompMulNode, CompSubNode, CosHNode, CosNode, CrossProductNode, DDXNode, DDYNode, Degrees2RadiansNode, DistanceNode, DotProductNode, EqualNode, Exp2Node, ExpNode, FWidthNode, FaceForwardNode, FloorNode, FmaNode, FractNode, GenericMathNode, Hash1Node, Hash2Node, Hash3Node, InvSqrtNode, LengthNode, Log2Node, LogNode, LogicallyAndNode, LogicallyOrNode, MakeVectorNode, MaxNode, MinNode, MixNode, ModNode, NormalizeNode, NotEqualNode, PerlinNoise2DNode, PowNode, Radians2DegreesNode, ReflectNode, RefractNode, SaturateNode, SelectionNode, SignNode, SimplexNoise2DNode, SinHNode, SinNode, SmoothStepNode, SqrtNode, StepNode, SwizzleNode, TanHNode, TanNode, TransformNode };
2045
2507
  //# sourceMappingURL=math.js.map