@zephyr3d/scene 0.9.5 → 0.9.7

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 (621) hide show
  1. package/dist/animation/joint_dynamics/controller.js +92 -32
  2. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  3. package/dist/animation/joint_dynamics/convex_collider.js +320 -0
  4. package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
  5. package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
  6. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  7. package/dist/animation/joint_dynamics/solver.js +71 -27
  8. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  9. package/dist/animation/joint_dynamics_modifier.js +21 -20
  10. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  11. package/dist/animation/skeleton.js +7 -10
  12. package/dist/animation/skeleton.js.map +1 -1
  13. package/dist/app/engine.js +134 -140
  14. package/dist/app/engine.js.map +1 -1
  15. package/dist/app/scriptregistry.js +47 -16
  16. package/dist/app/scriptregistry.js.map +1 -1
  17. package/dist/asset/assetmanager.js +3 -1
  18. package/dist/asset/assetmanager.js.map +1 -1
  19. package/dist/asset/model.js +346 -7
  20. package/dist/asset/model.js.map +1 -1
  21. package/dist/avatar/wardrobe.js +20 -16
  22. package/dist/avatar/wardrobe.js.map +1 -1
  23. package/dist/camera/camera.js +416 -210
  24. package/dist/camera/camera.js.map +1 -1
  25. package/dist/index.d.ts +1350 -621
  26. package/dist/index.js +6 -11
  27. package/dist/index.js.map +1 -1
  28. package/dist/material/blinn.js +1 -1
  29. package/dist/material/blinn.js.map +1 -1
  30. package/dist/material/lambert.js +1 -1
  31. package/dist/material/lambert.js.map +1 -1
  32. package/dist/material/material.js +23 -1
  33. package/dist/material/material.js.map +1 -1
  34. package/dist/material/meshmaterial.js +178 -23
  35. package/dist/material/meshmaterial.js.map +1 -1
  36. package/dist/material/mixins/albedocolor.js +4 -4
  37. package/dist/material/mixins/albedocolor.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
  39. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/lambert.js +2 -1
  41. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  42. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
  43. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  44. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
  45. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  46. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
  47. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  48. package/dist/material/mixins/lit.js +1 -1
  49. package/dist/material/mixins/lit.js.map +1 -1
  50. package/dist/material/mixins/pbr/common.js +276 -65
  51. package/dist/material/mixins/pbr/common.js.map +1 -1
  52. package/dist/material/mixins/texture.js +3 -3
  53. package/dist/material/mixins/texture.js.map +1 -1
  54. package/dist/material/mixins/vertexcolor.js +2 -2
  55. package/dist/material/mixins/vertexcolor.js.map +1 -1
  56. package/dist/material/msdf_text.js +3 -3
  57. package/dist/material/msdf_text.js.map +1 -1
  58. package/dist/material/mtoon.js +574 -0
  59. package/dist/material/mtoon.js.map +1 -0
  60. package/dist/material/pbrblueprint.js +499 -336
  61. package/dist/material/pbrblueprint.js.map +1 -1
  62. package/dist/material/pbrmr.js +118 -100
  63. package/dist/material/pbrmr.js.map +1 -1
  64. package/dist/material/pbrsg.js +1 -1
  65. package/dist/material/pbrsg.js.map +1 -1
  66. package/dist/material/shader/helper.js +324 -294
  67. package/dist/material/shader/helper.js.map +1 -1
  68. package/dist/material/subsurfaceprofile.js +812 -0
  69. package/dist/material/subsurfaceprofile.js.map +1 -0
  70. package/dist/material/unlit.js +1 -1
  71. package/dist/material/unlit.js.map +1 -1
  72. package/dist/posteffect/compositor.js +46 -11
  73. package/dist/posteffect/compositor.js.map +1 -1
  74. package/dist/posteffect/ssr.js +422 -96
  75. package/dist/posteffect/ssr.js.map +1 -1
  76. package/dist/posteffect/sss.js +1053 -0
  77. package/dist/posteffect/sss.js.map +1 -0
  78. package/dist/posteffect/taa.js +61 -60
  79. package/dist/posteffect/taa.js.map +1 -1
  80. package/dist/render/abuffer_oit.js +63 -12
  81. package/dist/render/abuffer_oit.js.map +1 -1
  82. package/dist/render/cluster_light.js +6 -5
  83. package/dist/render/cluster_light.js.map +1 -1
  84. package/dist/render/drawable.js +1 -5
  85. package/dist/render/drawable.js.map +1 -1
  86. package/dist/render/drawable_mixin.js +2 -1
  87. package/dist/render/drawable_mixin.js.map +1 -1
  88. package/dist/render/fbm_wavegenerator.js +2 -1
  89. package/dist/render/fbm_wavegenerator.js.map +1 -1
  90. package/dist/render/gerstner_wavegenerator.js +2 -1
  91. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  92. package/dist/render/globalbindgroup_allocator.js +2 -1
  93. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  94. package/dist/render/lightpass.js +110 -23
  95. package/dist/render/lightpass.js.map +1 -1
  96. package/dist/render/render_queue.js +51 -8
  97. package/dist/render/render_queue.js.map +1 -1
  98. package/dist/render/renderer.js +80 -66
  99. package/dist/render/renderer.js.map +1 -1
  100. package/dist/render/rendergraph/device_pool_allocator.js +8 -0
  101. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
  102. package/dist/render/rendergraph/forward_plus_builder.js +481 -95
  103. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  104. package/dist/render/rendergraph/history_resource_manager.js +55 -0
  105. package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
  106. package/dist/render/rendergraph/history_resources.js +3 -1
  107. package/dist/render/rendergraph/history_resources.js.map +1 -1
  108. package/dist/render/rendergraph/types.js.map +1 -1
  109. package/dist/render/renderpass.js +10 -4
  110. package/dist/render/renderpass.js.map +1 -1
  111. package/dist/render/sky.js +31 -1
  112. package/dist/render/sky.js.map +1 -1
  113. package/dist/render/weightedblended_oit.js +23 -5
  114. package/dist/render/weightedblended_oit.js.map +1 -1
  115. package/dist/scene/basesprite.js +4 -2
  116. package/dist/scene/basesprite.js.map +1 -1
  117. package/dist/scene/batchgroup.js +3 -1
  118. package/dist/scene/batchgroup.js.map +1 -1
  119. package/dist/scene/environment.js +11 -1
  120. package/dist/scene/environment.js.map +1 -1
  121. package/dist/scene/light.js +21 -3
  122. package/dist/scene/light.js.map +1 -1
  123. package/dist/scene/mesh.js +29 -14
  124. package/dist/scene/mesh.js.map +1 -1
  125. package/dist/scene/meshdrawable.js +6 -0
  126. package/dist/scene/meshdrawable.js.map +1 -1
  127. package/dist/scene/msdftext.js +5 -2
  128. package/dist/scene/msdftext.js.map +1 -1
  129. package/dist/scene/msdftextsprite.js +5 -3
  130. package/dist/scene/msdftextsprite.js.map +1 -1
  131. package/dist/scene/particlesys.js +3 -1
  132. package/dist/scene/particlesys.js.map +1 -1
  133. package/dist/scene/scene.js +6 -5
  134. package/dist/scene/scene.js.map +1 -1
  135. package/dist/scene/terrain-cm/grass.js +4 -2
  136. package/dist/scene/terrain-cm/grass.js.map +1 -1
  137. package/dist/scene/terrain-cm/grassmaterial.js +2 -1
  138. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  139. package/dist/scene/terrain-cm/terrain-cm.js +4 -2
  140. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  141. package/dist/scene/water.js +4 -2
  142. package/dist/scene/water.js.map +1 -1
  143. package/dist/shaders/shadow.js +26 -393
  144. package/dist/shaders/shadow.js.map +1 -1
  145. package/dist/shadow/esm.js +112 -12
  146. package/dist/shadow/esm.js.map +1 -1
  147. package/dist/shadow/pcf_opt.js +2 -2
  148. package/dist/shadow/pcf_opt.js.map +1 -1
  149. package/dist/shadow/pcf_pd.js +19 -10
  150. package/dist/shadow/pcf_pd.js.map +1 -1
  151. package/dist/shadow/shader.js +58 -7
  152. package/dist/shadow/shader.js.map +1 -1
  153. package/dist/shadow/shadow_impl.js +6 -0
  154. package/dist/shadow/shadow_impl.js.map +1 -1
  155. package/dist/shadow/shadow_region.js +229 -0
  156. package/dist/shadow/shadow_region.js.map +1 -0
  157. package/dist/shadow/shadowmapper.js +67 -59
  158. package/dist/shadow/shadowmapper.js.map +1 -1
  159. package/dist/shadow/vsm.js +45 -19
  160. package/dist/shadow/vsm.js.map +1 -1
  161. package/dist/text/font/cff_font.js +890 -0
  162. package/dist/text/font/cff_font.js.map +1 -0
  163. package/dist/text/font/font_asset.js +17 -3
  164. package/dist/text/font/font_asset.js.map +1 -1
  165. package/dist/utility/blueprint/common/constants.js +8 -8
  166. package/dist/utility/blueprint/common/constants.js.map +1 -1
  167. package/dist/utility/blueprint/material/pbr.js +31 -4
  168. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  169. package/dist/utility/blueprint/material/texture.js +1 -17
  170. package/dist/utility/blueprint/material/texture.js.map +1 -1
  171. package/dist/utility/serialization/manager.js +327 -359
  172. package/dist/utility/serialization/manager.js.map +1 -1
  173. package/dist/utility/serialization/scene/animation.js +5 -2
  174. package/dist/utility/serialization/scene/animation.js.map +1 -1
  175. package/dist/utility/serialization/scene/batch.js +4 -1
  176. package/dist/utility/serialization/scene/batch.js.map +1 -1
  177. package/dist/utility/serialization/scene/camera.js +249 -54
  178. package/dist/utility/serialization/scene/camera.js.map +1 -1
  179. package/dist/utility/serialization/scene/common.js +37 -1
  180. package/dist/utility/serialization/scene/common.js.map +1 -1
  181. package/dist/utility/serialization/scene/light.js +42 -3
  182. package/dist/utility/serialization/scene/light.js.map +1 -1
  183. package/dist/utility/serialization/scene/material.js +1112 -646
  184. package/dist/utility/serialization/scene/material.js.map +1 -1
  185. package/dist/utility/serialization/scene/mesh.js +7 -4
  186. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  187. package/dist/utility/serialization/scene/node.js +31 -12
  188. package/dist/utility/serialization/scene/node.js.map +1 -1
  189. package/dist/utility/serialization/scene/particle.js +4 -1
  190. package/dist/utility/serialization/scene/particle.js.map +1 -1
  191. package/dist/utility/serialization/scene/primitive.js +3 -1
  192. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  193. package/dist/utility/serialization/scene/scene.js +18 -0
  194. package/dist/utility/serialization/scene/scene.js.map +1 -1
  195. package/dist/utility/serialization/scene/sprite.js +6 -3
  196. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  197. package/dist/utility/serialization/scene/terrain.js +5 -2
  198. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  199. package/dist/utility/serialization/scene/text.js +3 -1
  200. package/dist/utility/serialization/scene/text.js.map +1 -1
  201. package/dist/utility/serialization/scene/water.js +4 -1
  202. package/dist/utility/serialization/scene/water.js.map +1 -1
  203. package/dist/utility/textures/ltcdata.js +6 -0
  204. package/dist/utility/textures/ltcdata.js.map +1 -0
  205. package/dist/utility/textures/ltclut.js +61 -0
  206. package/dist/utility/textures/ltclut.js.map +1 -0
  207. package/dist/values.js +9 -1
  208. package/dist/values.js.map +1 -1
  209. package/package.json +3 -3
  210. package/dist/animation/ik/ik_chain_builder.js +0 -68
  211. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  212. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  213. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  214. package/dist/animation/ik/ik_track.js +0 -96
  215. package/dist/animation/ik/ik_track.js.map +0 -1
  216. package/dist/animation/ik_postprocessor.js +0 -71
  217. package/dist/animation/ik_postprocessor.js.map +0 -1
  218. package/dist/animation/joint_dynamics/math.js +0 -16
  219. package/dist/animation/joint_dynamics/math.js.map +0 -1
  220. package/dist/animation/manual_transform_processor.js +0 -156
  221. package/dist/animation/manual_transform_processor.js.map +0 -1
  222. package/dist/animation/skeleton_postprocessor.js +0 -50
  223. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  224. package/dist/animation/spring2/collision.js +0 -469
  225. package/dist/animation/spring2/collision.js.map +0 -1
  226. package/dist/animation/spring2/constraints.js +0 -329
  227. package/dist/animation/spring2/constraints.js.map +0 -1
  228. package/dist/animation/spring2/controller.js +0 -434
  229. package/dist/animation/spring2/controller.js.map +0 -1
  230. package/dist/animation/spring2/math.js +0 -16
  231. package/dist/animation/spring2/math.js.map +0 -1
  232. package/dist/animation/spring2/solver.js +0 -624
  233. package/dist/animation/spring2/solver.js.map +0 -1
  234. package/dist/animation/spring2/spring_system.js +0 -118
  235. package/dist/animation/spring2/spring_system.js.map +0 -1
  236. package/dist/animation/spring2/types.js +0 -19
  237. package/dist/animation/spring2/types.js.map +0 -1
  238. package/dist/animation/spring_postprocessor.js +0 -54
  239. package/dist/animation/spring_postprocessor.js.map +0 -1
  240. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
  241. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  242. package/dist/asset/loaders/gltf/helpers.js +0 -331
  243. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  244. package/dist/material/sprite3d.js +0 -301
  245. package/dist/material/sprite3d.js.map +0 -1
  246. package/dist/material/sprite3d_std.js +0 -116
  247. package/dist/material/sprite3d_std.js.map +0 -1
  248. package/dist/material/sprite3dblueprint.js +0 -235
  249. package/dist/material/sprite3dblueprint.js.map +0 -1
  250. package/dist/material/sprite_sdf.js +0 -106
  251. package/dist/material/sprite_sdf.js.map +0 -1
  252. package/dist/material/terrainmaterial.js +0 -368
  253. package/dist/material/terrainmaterial.js.map +0 -1
  254. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  255. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  256. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  257. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  258. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  259. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  260. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  261. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  262. package/dist/render/deferredlightpass.js +0 -510
  263. package/dist/render/deferredlightpass.js.map +0 -1
  264. package/dist/render/deferredshadowlightpass.js +0 -428
  265. package/dist/render/deferredshadowlightpass.js.map +0 -1
  266. package/dist/render/gbufferpass.js +0 -50
  267. package/dist/render/gbufferpass.js.map +0 -1
  268. package/dist/scene/sdftextsprite.js +0 -322
  269. package/dist/scene/sdftextsprite.js.map +0 -1
  270. package/dist/scene/sprite3d.js +0 -18
  271. package/dist/scene/sprite3d.js.map +0 -1
  272. package/dist/scene/terrain/grass.js +0 -280
  273. package/dist/scene/terrain/grass.js.map +0 -1
  274. package/dist/scene/terrain/heightfield.js +0 -475
  275. package/dist/scene/terrain/heightfield.js.map +0 -1
  276. package/dist/scene/terrain/patch.js +0 -532
  277. package/dist/scene/terrain/patch.js.map +0 -1
  278. package/dist/scene/terrain/quadtree.js +0 -461
  279. package/dist/scene/terrain/quadtree.js.map +0 -1
  280. package/dist/scene/terrain/terrain.js +0 -231
  281. package/dist/scene/terrain/terrain.js.map +0 -1
  282. package/dist/src/animation/animation.js +0 -127
  283. package/dist/src/animation/animation.js.map +0 -1
  284. package/dist/src/animation/animationset.js +0 -255
  285. package/dist/src/animation/animationset.js.map +0 -1
  286. package/dist/src/animation/animationtrack.js +0 -34
  287. package/dist/src/animation/animationtrack.js.map +0 -1
  288. package/dist/src/animation/eulerrotationtrack.js +0 -52
  289. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  290. package/dist/src/animation/morphtarget.js +0 -93
  291. package/dist/src/animation/morphtarget.js.map +0 -1
  292. package/dist/src/animation/morphtrack.js +0 -70
  293. package/dist/src/animation/morphtrack.js.map +0 -1
  294. package/dist/src/animation/proptrack.js +0 -161
  295. package/dist/src/animation/proptrack.js.map +0 -1
  296. package/dist/src/animation/rotationtrack.js +0 -51
  297. package/dist/src/animation/rotationtrack.js.map +0 -1
  298. package/dist/src/animation/scaletrack.js +0 -50
  299. package/dist/src/animation/scaletrack.js.map +0 -1
  300. package/dist/src/animation/skeleton.js +0 -204
  301. package/dist/src/animation/skeleton.js.map +0 -1
  302. package/dist/src/animation/translationtrack.js +0 -50
  303. package/dist/src/animation/translationtrack.js.map +0 -1
  304. package/dist/src/app/app.js +0 -129
  305. package/dist/src/app/app.js.map +0 -1
  306. package/dist/src/app/inputmgr.js +0 -267
  307. package/dist/src/app/inputmgr.js.map +0 -1
  308. package/dist/src/asset/assetmanager.js +0 -404
  309. package/dist/src/asset/assetmanager.js.map +0 -1
  310. package/dist/src/asset/builtin.js +0 -337
  311. package/dist/src/asset/builtin.js.map +0 -1
  312. package/dist/src/asset/loaders/dds/dds.js +0 -470
  313. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  314. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  315. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  316. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  317. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  318. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  319. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  320. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  321. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  322. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  323. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  324. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  325. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  326. package/dist/src/asset/loaders/loader.js +0 -45
  327. package/dist/src/asset/loaders/loader.js.map +0 -1
  328. package/dist/src/asset/model.js +0 -414
  329. package/dist/src/asset/model.js.map +0 -1
  330. package/dist/src/blitter/bilateralblur.js +0 -221
  331. package/dist/src/blitter/bilateralblur.js.map +0 -1
  332. package/dist/src/blitter/blitter.js +0 -390
  333. package/dist/src/blitter/blitter.js.map +0 -1
  334. package/dist/src/blitter/box.js +0 -118
  335. package/dist/src/blitter/box.js.map +0 -1
  336. package/dist/src/blitter/copy.js +0 -22
  337. package/dist/src/blitter/copy.js.map +0 -1
  338. package/dist/src/blitter/gaussianblur.js +0 -228
  339. package/dist/src/blitter/gaussianblur.js.map +0 -1
  340. package/dist/src/camera/base.js +0 -92
  341. package/dist/src/camera/base.js.map +0 -1
  342. package/dist/src/camera/camera.js +0 -1005
  343. package/dist/src/camera/camera.js.map +0 -1
  344. package/dist/src/camera/fps.js +0 -238
  345. package/dist/src/camera/fps.js.map +0 -1
  346. package/dist/src/camera/orbit.js +0 -245
  347. package/dist/src/camera/orbit.js.map +0 -1
  348. package/dist/src/camera/orthocamera.js +0 -167
  349. package/dist/src/camera/orthocamera.js.map +0 -1
  350. package/dist/src/camera/perspectivecamera.js +0 -141
  351. package/dist/src/camera/perspectivecamera.js.map +0 -1
  352. package/dist/src/index.js +0 -120
  353. package/dist/src/index.js.map +0 -1
  354. package/dist/src/material/blinn.js +0 -81
  355. package/dist/src/material/blinn.js.map +0 -1
  356. package/dist/src/material/grassmaterial.js +0 -113
  357. package/dist/src/material/grassmaterial.js.map +0 -1
  358. package/dist/src/material/lambert.js +0 -92
  359. package/dist/src/material/lambert.js.map +0 -1
  360. package/dist/src/material/material.js +0 -301
  361. package/dist/src/material/material.js.map +0 -1
  362. package/dist/src/material/meshmaterial.js +0 -704
  363. package/dist/src/material/meshmaterial.js.map +0 -1
  364. package/dist/src/material/mixins/albedocolor.js +0 -76
  365. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  366. package/dist/src/material/mixins/foliage.js +0 -47
  367. package/dist/src/material/mixins/foliage.js.map +0 -1
  368. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  369. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  370. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  371. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  372. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  373. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  374. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  375. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  376. package/dist/src/material/mixins/lit.js +0 -476
  377. package/dist/src/material/mixins/lit.js.map +0 -1
  378. package/dist/src/material/mixins/pbr/common.js +0 -918
  379. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  380. package/dist/src/material/mixins/texture.js +0 -172
  381. package/dist/src/material/mixins/texture.js.map +0 -1
  382. package/dist/src/material/mixins/vertexcolor.js +0 -56
  383. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  384. package/dist/src/material/particle.js +0 -178
  385. package/dist/src/material/particle.js.map +0 -1
  386. package/dist/src/material/pbrmr.js +0 -97
  387. package/dist/src/material/pbrmr.js.map +0 -1
  388. package/dist/src/material/pbrsg.js +0 -97
  389. package/dist/src/material/pbrsg.js.map +0 -1
  390. package/dist/src/material/shader/helper.js +0 -1209
  391. package/dist/src/material/shader/helper.js.map +0 -1
  392. package/dist/src/material/terrain-cm.js +0 -606
  393. package/dist/src/material/terrain-cm.js.map +0 -1
  394. package/dist/src/material/terrainmaterial.js +0 -375
  395. package/dist/src/material/terrainmaterial.js.map +0 -1
  396. package/dist/src/material/unlit.js +0 -41
  397. package/dist/src/material/unlit.js.map +0 -1
  398. package/dist/src/material/water.js +0 -417
  399. package/dist/src/material/water.js.map +0 -1
  400. package/dist/src/posteffect/bloom.js +0 -361
  401. package/dist/src/posteffect/bloom.js.map +0 -1
  402. package/dist/src/posteffect/compositor.js +0 -226
  403. package/dist/src/posteffect/compositor.js.map +0 -1
  404. package/dist/src/posteffect/fxaa.js +0 -273
  405. package/dist/src/posteffect/fxaa.js.map +0 -1
  406. package/dist/src/posteffect/grayscale.js +0 -69
  407. package/dist/src/posteffect/grayscale.js.map +0 -1
  408. package/dist/src/posteffect/motionblur.js +0 -96
  409. package/dist/src/posteffect/motionblur.js.map +0 -1
  410. package/dist/src/posteffect/posteffect.js +0 -126
  411. package/dist/src/posteffect/posteffect.js.map +0 -1
  412. package/dist/src/posteffect/sao.js +0 -324
  413. package/dist/src/posteffect/sao.js.map +0 -1
  414. package/dist/src/posteffect/ssr.js +0 -489
  415. package/dist/src/posteffect/ssr.js.map +0 -1
  416. package/dist/src/posteffect/taa.js +0 -172
  417. package/dist/src/posteffect/taa.js.map +0 -1
  418. package/dist/src/posteffect/tonemap.js +0 -94
  419. package/dist/src/posteffect/tonemap.js.map +0 -1
  420. package/dist/src/render/abuffer_oit.js +0 -361
  421. package/dist/src/render/abuffer_oit.js.map +0 -1
  422. package/dist/src/render/clipmap.js +0 -851
  423. package/dist/src/render/clipmap.js.map +0 -1
  424. package/dist/src/render/cluster_light.js +0 -333
  425. package/dist/src/render/cluster_light.js.map +0 -1
  426. package/dist/src/render/cull_visitor.js +0 -187
  427. package/dist/src/render/cull_visitor.js.map +0 -1
  428. package/dist/src/render/depthpass.js +0 -68
  429. package/dist/src/render/depthpass.js.map +0 -1
  430. package/dist/src/render/drawable_mixin.js +0 -227
  431. package/dist/src/render/drawable_mixin.js.map +0 -1
  432. package/dist/src/render/envlight.js +0 -463
  433. package/dist/src/render/envlight.js.map +0 -1
  434. package/dist/src/render/fbm_wavegenerator.js +0 -251
  435. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  436. package/dist/src/render/fft_wavegenerator.js +0 -1006
  437. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  438. package/dist/src/render/fullscreenquad.js +0 -38
  439. package/dist/src/render/fullscreenquad.js.map +0 -1
  440. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  441. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  442. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  443. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  444. package/dist/src/render/hzb.js +0 -273
  445. package/dist/src/render/hzb.js.map +0 -1
  446. package/dist/src/render/lightpass.js +0 -172
  447. package/dist/src/render/lightpass.js.map +0 -1
  448. package/dist/src/render/objectcolorpass.js +0 -51
  449. package/dist/src/render/objectcolorpass.js.map +0 -1
  450. package/dist/src/render/primitive.js +0 -364
  451. package/dist/src/render/primitive.js.map +0 -1
  452. package/dist/src/render/render_queue.js +0 -467
  453. package/dist/src/render/render_queue.js.map +0 -1
  454. package/dist/src/render/renderbundle_wrapper.js +0 -152
  455. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  456. package/dist/src/render/renderer.js +0 -455
  457. package/dist/src/render/renderer.js.map +0 -1
  458. package/dist/src/render/renderpass.js +0 -200
  459. package/dist/src/render/renderpass.js.map +0 -1
  460. package/dist/src/render/shadowmap_pass.js +0 -56
  461. package/dist/src/render/shadowmap_pass.js.map +0 -1
  462. package/dist/src/render/sky.js +0 -1103
  463. package/dist/src/render/sky.js.map +0 -1
  464. package/dist/src/render/weightedblended_oit.js +0 -168
  465. package/dist/src/render/weightedblended_oit.js.map +0 -1
  466. package/dist/src/scene/batchgroup.js +0 -162
  467. package/dist/src/scene/batchgroup.js.map +0 -1
  468. package/dist/src/scene/environment.js +0 -209
  469. package/dist/src/scene/environment.js.map +0 -1
  470. package/dist/src/scene/graph_node.js +0 -72
  471. package/dist/src/scene/graph_node.js.map +0 -1
  472. package/dist/src/scene/light.js +0 -416
  473. package/dist/src/scene/light.js.map +0 -1
  474. package/dist/src/scene/mesh.js +0 -341
  475. package/dist/src/scene/mesh.js.map +0 -1
  476. package/dist/src/scene/octree.js +0 -649
  477. package/dist/src/scene/octree.js.map +0 -1
  478. package/dist/src/scene/particlesys.js +0 -738
  479. package/dist/src/scene/particlesys.js.map +0 -1
  480. package/dist/src/scene/raycast_visitor.js +0 -103
  481. package/dist/src/scene/raycast_visitor.js.map +0 -1
  482. package/dist/src/scene/scene.js +0 -284
  483. package/dist/src/scene/scene.js.map +0 -1
  484. package/dist/src/scene/scene_node.js +0 -732
  485. package/dist/src/scene/scene_node.js.map +0 -1
  486. package/dist/src/scene/terrain/grass.js +0 -278
  487. package/dist/src/scene/terrain/grass.js.map +0 -1
  488. package/dist/src/scene/terrain/heightfield.js +0 -475
  489. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  490. package/dist/src/scene/terrain/patch.js +0 -530
  491. package/dist/src/scene/terrain/patch.js.map +0 -1
  492. package/dist/src/scene/terrain/quadtree.js +0 -461
  493. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  494. package/dist/src/scene/terrain/terrain.js +0 -246
  495. package/dist/src/scene/terrain/terrain.js.map +0 -1
  496. package/dist/src/scene/terrain-cm/grass.js +0 -594
  497. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  498. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  499. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  500. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  501. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  502. package/dist/src/scene/water.js +0 -374
  503. package/dist/src/scene/water.js.map +0 -1
  504. package/dist/src/shaders/atmosphere.js +0 -957
  505. package/dist/src/shaders/atmosphere.js.map +0 -1
  506. package/dist/src/shaders/fog.js +0 -112
  507. package/dist/src/shaders/fog.js.map +0 -1
  508. package/dist/src/shaders/misc.js +0 -266
  509. package/dist/src/shaders/misc.js.map +0 -1
  510. package/dist/src/shaders/noise.js +0 -222
  511. package/dist/src/shaders/noise.js.map +0 -1
  512. package/dist/src/shaders/pbr.js +0 -51
  513. package/dist/src/shaders/pbr.js.map +0 -1
  514. package/dist/src/shaders/shadow.js +0 -636
  515. package/dist/src/shaders/shadow.js.map +0 -1
  516. package/dist/src/shaders/ssr.js +0 -490
  517. package/dist/src/shaders/ssr.js.map +0 -1
  518. package/dist/src/shaders/temporal.js +0 -215
  519. package/dist/src/shaders/temporal.js.map +0 -1
  520. package/dist/src/shaders/water.js +0 -756
  521. package/dist/src/shaders/water.js.map +0 -1
  522. package/dist/src/shadow/esm.js +0 -237
  523. package/dist/src/shadow/esm.js.map +0 -1
  524. package/dist/src/shadow/pcf_opt.js +0 -181
  525. package/dist/src/shadow/pcf_opt.js.map +0 -1
  526. package/dist/src/shadow/pcf_pd.js +0 -189
  527. package/dist/src/shadow/pcf_pd.js.map +0 -1
  528. package/dist/src/shadow/shader.js +0 -37
  529. package/dist/src/shadow/shader.js.map +0 -1
  530. package/dist/src/shadow/shadow_impl.js +0 -15
  531. package/dist/src/shadow/shadow_impl.js.map +0 -1
  532. package/dist/src/shadow/shadowmapper.js +0 -790
  533. package/dist/src/shadow/shadowmapper.js.map +0 -1
  534. package/dist/src/shadow/ssm.js +0 -159
  535. package/dist/src/shadow/ssm.js.map +0 -1
  536. package/dist/src/shadow/vsm.js +0 -297
  537. package/dist/src/shadow/vsm.js.map +0 -1
  538. package/dist/src/shapes/box.js +0 -386
  539. package/dist/src/shapes/box.js.map +0 -1
  540. package/dist/src/shapes/cylinder.js +0 -125
  541. package/dist/src/shapes/cylinder.js.map +0 -1
  542. package/dist/src/shapes/plane.js +0 -88
  543. package/dist/src/shapes/plane.js.map +0 -1
  544. package/dist/src/shapes/shape.js +0 -87
  545. package/dist/src/shapes/shape.js.map +0 -1
  546. package/dist/src/shapes/sphere.js +0 -114
  547. package/dist/src/shapes/sphere.js.map +0 -1
  548. package/dist/src/shapes/tetrahedron.js +0 -188
  549. package/dist/src/shapes/tetrahedron.js.map +0 -1
  550. package/dist/src/shapes/torus.js +0 -111
  551. package/dist/src/shapes/torus.js.map +0 -1
  552. package/dist/src/utility/aabbtree.js +0 -400
  553. package/dist/src/utility/aabbtree.js.map +0 -1
  554. package/dist/src/utility/bounding_volume.js +0 -29
  555. package/dist/src/utility/bounding_volume.js.map +0 -1
  556. package/dist/src/utility/debug.js +0 -28
  557. package/dist/src/utility/debug.js.map +0 -1
  558. package/dist/src/utility/draco/decoder.js +0 -116
  559. package/dist/src/utility/draco/decoder.js.map +0 -1
  560. package/dist/src/utility/misc.js +0 -105
  561. package/dist/src/utility/misc.js.map +0 -1
  562. package/dist/src/utility/panorama.js +0 -163
  563. package/dist/src/utility/panorama.js.map +0 -1
  564. package/dist/src/utility/pmrem.js +0 -354
  565. package/dist/src/utility/pmrem.js.map +0 -1
  566. package/dist/src/utility/rendermipmap.js +0 -115
  567. package/dist/src/utility/rendermipmap.js.map +0 -1
  568. package/dist/src/utility/serialization/json.js +0 -402
  569. package/dist/src/utility/serialization/json.js.map +0 -1
  570. package/dist/src/utility/serialization/manager.js +0 -623
  571. package/dist/src/utility/serialization/manager.js.map +0 -1
  572. package/dist/src/utility/serialization/scene/animation.js +0 -248
  573. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  574. package/dist/src/utility/serialization/scene/batch.js +0 -59
  575. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  576. package/dist/src/utility/serialization/scene/camera.js +0 -790
  577. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  578. package/dist/src/utility/serialization/scene/common.js +0 -222
  579. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  580. package/dist/src/utility/serialization/scene/light.js +0 -575
  581. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  582. package/dist/src/utility/serialization/scene/material.js +0 -1111
  583. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  584. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  585. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  586. package/dist/src/utility/serialization/scene/misc.js +0 -39
  587. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  588. package/dist/src/utility/serialization/scene/node.js +0 -451
  589. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  590. package/dist/src/utility/serialization/scene/particle.js +0 -425
  591. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  592. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  593. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  594. package/dist/src/utility/serialization/scene/scene.js +0 -704
  595. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  596. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  597. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  598. package/dist/src/utility/serialization/scene/water.js +0 -465
  599. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  600. package/dist/src/utility/shprojector.js +0 -297
  601. package/dist/src/utility/shprojector.js.map +0 -1
  602. package/dist/src/utility/textures/ggxlut.js +0 -213
  603. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  604. package/dist/src/utility/textures/gradientnoise.js +0 -62
  605. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  606. package/dist/src/utility/textures/randomnoise.js +0 -41
  607. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  608. package/dist/src/values.js +0 -162
  609. package/dist/src/values.js.map +0 -1
  610. package/dist/utility/blueprint/material/common.js +0 -7
  611. package/dist/utility/blueprint/material/common.js.map +0 -1
  612. package/dist/utility/serialization/blueprint/constants.js +0 -255
  613. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  614. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  615. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  616. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  617. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  618. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  619. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  620. package/dist/utility/serialization/scene/spring_script.js +0 -596
  621. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -18,8 +18,8 @@ import { BaseGraphNode } from '../node.js';
18
18
  */ constructor(){
19
19
  super();
20
20
  this._value = 0;
21
- this._isUniform = false;
22
- this._paramName = '';
21
+ this._isUniform = true;
22
+ this._paramName = getParamName();
23
23
  this._outputs = [
24
24
  {
25
25
  id: 1,
@@ -250,8 +250,8 @@ import { BaseGraphNode } from '../node.js';
250
250
  0,
251
251
  0
252
252
  ];
253
- this._isUniform = false;
254
- this._paramName = '';
253
+ this._isUniform = true;
254
+ this._paramName = getParamName();
255
255
  this._outputs = [
256
256
  {
257
257
  id: 1,
@@ -549,8 +549,8 @@ import { BaseGraphNode } from '../node.js';
549
549
  0,
550
550
  0
551
551
  ];
552
- this._isUniform = false;
553
- this._paramName = '';
552
+ this._isUniform = true;
553
+ this._paramName = getParamName();
554
554
  this._outputs = [
555
555
  {
556
556
  id: 1,
@@ -918,8 +918,8 @@ import { BaseGraphNode } from '../node.js';
918
918
  0,
919
919
  0
920
920
  ];
921
- this._isUniform = false;
922
- this._paramName = '';
921
+ this._isUniform = true;
922
+ this._paramName = getParamName();
923
923
  this._outputs = [
924
924
  {
925
925
  id: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/utility/blueprint/common/constants.ts"],"sourcesContent":["import { defineProps } from '../../serialization/types';\r\nimport { getParamName } from '../common';\r\nimport { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * Constant scalar (float) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantScalarNode extends BaseGraphNode {\r\n /** The scalar float value */\r\n private _value: number;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant scalar node\r\n *\r\n * @remarks\r\n * Initializes with a value of 0 and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = 0;\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform ? this._paramName : `${Math.round(this._value * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantScalarNode,\r\n name: 'ConstantScalarNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantScalarNode, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantScalarNode, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantScalarNode, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.x = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: number) {\r\n if (val !== this._value) {\r\n this._value = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'float' for scalar output\r\n */\r\n protected getType() {\r\n return 'float';\r\n }\r\n}\r\n\r\n/**\r\n * Constant scalar (bool) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBooleanNode extends BaseGraphNode {\r\n /** The scalar boolean value */\r\n private _value: boolean;\r\n /**\r\n * Creates a new constant boolean node\r\n *\r\n * @remarks\r\n * Initializes with a value of false and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = false;\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return String(this._value);\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBooleanNode,\r\n name: 'ConstantBooleanNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBooleanNode, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBooleanNode, value) {\r\n this.x = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value) {\r\n this._value = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'bool' for scalar output\r\n */\r\n protected getType() {\r\n return 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D vector (vec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec2 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0];\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec2Node,\r\n name: 'ConstantVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec2Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec2Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.y = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D boolean vector (bvec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec2 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec2Node,\r\n name: 'ConstantBVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D vector (vec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec3 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0];\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n }`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec3Node,\r\n name: 'ConstantVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec3Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec3Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgb',\r\n type: 'rgb',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D boolean vector (bvec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec3 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(this._value[2])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec3Node,\r\n name: 'ConstantBVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D vector (vec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: number[];\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0, 0];\r\n this._isUniform = false;\r\n this._paramName = '';\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n },${Math.round(this._value[3] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: number) {\r\n if (val !== this._value[3]) {\r\n this._value[3] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec4Node,\r\n name: 'ConstantVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec4Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec4Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.w = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgba',\r\n type: 'rgba',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n value.num[3] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n this.w = value.num[3];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec4';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D boolean vector (bvec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(\r\n this._value[2]\r\n )},${String(this._value[3])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: boolean) {\r\n if (!!val !== this._value[3]) {\r\n this._value[3] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec4Node,\r\n name: 'ConstantBVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.w;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.w = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec4';\r\n }\r\n}\r\n"],"names":["ConstantScalarNode","BaseGraphNode","_value","_isUniform","_paramName","_outputs","id","name","toString","Math","round","getSerializationCls","ctor","getProps","defineProps","type","get","value","bool","isUniform","set","str","paramName","slice","test","console","log","num","x","val","getParamName","dispatchEvent","ConstantBooleanNode","String","ConstantVec2Node","swizzle","y","getType","ConstantBVec2Node","ConstantVec3Node","z","ConstantBVec3Node","ConstantVec4Node","w","ConstantBVec4Node"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/utility/blueprint/common/constants.ts"],"sourcesContent":["import { defineProps } from '../../serialization/types';\r\nimport { getParamName } from '../common';\r\nimport { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * Constant scalar (float) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantScalarNode extends BaseGraphNode {\r\n /** The scalar float value */\r\n private _value: number;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant scalar node\r\n *\r\n * @remarks\r\n * Initializes with a value of 0 and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = 0;\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform ? this._paramName : `${Math.round(this._value * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantScalarNode,\r\n name: 'ConstantScalarNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantScalarNode, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantScalarNode, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantScalarNode, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantScalarNode, value) {\r\n this.x = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: number) {\r\n if (val !== this._value) {\r\n this._value = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'float' for scalar output\r\n */\r\n protected getType() {\r\n return 'float';\r\n }\r\n}\r\n\r\n/**\r\n * Constant scalar (bool) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBooleanNode extends BaseGraphNode {\r\n /** The scalar boolean value */\r\n private _value: boolean;\r\n /**\r\n * Creates a new constant boolean node\r\n *\r\n * @remarks\r\n * Initializes with a value of false and a single unnamed output slot.\r\n */\r\n constructor() {\r\n super();\r\n this._value = false;\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise the rounded numeric value\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return String(this._value);\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Defines how to serialize the isUniform flag, parameter name, and value.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBooleanNode,\r\n name: 'ConstantBooleanNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBooleanNode, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBooleanNode, value) {\r\n this.x = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the scalar value\r\n */\r\n get x() {\r\n return this._value;\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value) {\r\n this._value = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for this node\r\n *\r\n * @returns 'bool' for scalar output\r\n */\r\n protected getType() {\r\n return 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D vector (vec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec2 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0];\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec2Node,\r\n name: 'ConstantVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec2Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec2Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec2Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec2Node, value) {\r\n this.y = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 2D boolean vector (bvec2) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec2Node extends BaseGraphNode {\r\n /** The 2D vector value [x, y] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec2 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec2Node,\r\n name: 'ConstantBVec2Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec2Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec2Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec2' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec2';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D vector (vec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: number[];\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /**\r\n * Creates a new constant vec3 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0];\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n }`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec3Node,\r\n name: 'ConstantVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec3Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec3Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgb',\r\n type: 'rgb',\r\n get(this: ConstantVec3Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n },\r\n set(this: ConstantVec3Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 3D boolean vector (bvec3) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec3Node extends BaseGraphNode {\r\n /** The 3D vector value [x, y, z] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant bvec3 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(this._value[2])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgb' property for color picker integration.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec3Node,\r\n name: 'ConstantBVec3Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec3Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec3Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec3' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec3';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D vector (vec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: number[];\r\n /** The uniform parameter name (only used when isUniform is true) */\r\n private _paramName: string;\r\n /** Whether this constant should be exposed as a uniform parameter */\r\n private _isUniform: boolean;\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [0, 0, 0, 0] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [0, 0, 0, 0];\r\n this._isUniform = true;\r\n this._paramName = getParamName();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return this._isUniform\r\n ? this._paramName\r\n : `${Math.round(this._value[0] * 1000) / 1000},${Math.round(this._value[1] * 1000) / 1000},${\r\n Math.round(this._value[2] * 1000) / 1000\r\n },${Math.round(this._value[3] * 1000) / 1000}`;\r\n }\r\n /**\r\n * Gets whether this constant is exposed as a uniform parameter\r\n */\r\n get isUniform() {\r\n return this._isUniform;\r\n }\r\n set isUniform(val: boolean) {\r\n if (this._isUniform !== !!val) {\r\n this._isUniform = !!val;\r\n if (!this._paramName) {\r\n this._paramName = getParamName();\r\n }\r\n }\r\n }\r\n /**\r\n * Gets the uniform parameter name\r\n */\r\n get paramName() {\r\n return this._paramName;\r\n }\r\n set paramName(val: string) {\r\n if (this._paramName !== val) {\r\n this._paramName = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: number) {\r\n if (val !== this._value[0]) {\r\n this._value[0] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: number) {\r\n if (val !== this._value[1]) {\r\n this._value[1] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: number) {\r\n if (val !== this._value[2]) {\r\n this._value[2] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: number) {\r\n if (val !== this._value[3]) {\r\n this._value[3] = val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantVec4Node,\r\n name: 'ConstantVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'isUniform',\r\n type: 'bool',\r\n get(this: ConstantVec4Node, value) {\r\n value.bool[0] = this.isUniform;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.isUniform = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'paramName',\r\n type: 'string',\r\n get(this: ConstantVec4Node, value) {\r\n value.str[0] = this.paramName ? this.paramName.slice(2) : '';\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {\r\n console.log(`Invalid parameter name: ${value.str[0]}`);\r\n } else {\r\n this.paramName = `u_${value.str[0]}`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'x',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.y;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.y = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.z;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.z = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'float',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.w = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'rgba',\r\n type: 'rgba',\r\n get(this: ConstantVec4Node, value) {\r\n value.num[0] = this.x;\r\n value.num[1] = this.y;\r\n value.num[2] = this.z;\r\n value.num[3] = this.w;\r\n },\r\n set(this: ConstantVec4Node, value) {\r\n this.x = value.num[0];\r\n this.y = value.num[1];\r\n this.z = value.num[2];\r\n this.w = value.num[3];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for component outputs (id \\> 1), 'vec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec4';\r\n }\r\n}\r\n\r\n/**\r\n * Constant 4D boolean vector (bvec4) value node\r\n *\r\n * @public\r\n */\r\nexport class ConstantBVec4Node extends BaseGraphNode {\r\n /** The 4D vector value [x, y, z, w] */\r\n private _value: boolean[];\r\n /**\r\n * Creates a new constant vec4 node\r\n *\r\n * @remarks\r\n * Initializes with [false, false, false, false] and creates output slots for the full vector\r\n * and individual components.\r\n */\r\n constructor() {\r\n super();\r\n this._value = [false, false, false, false];\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' },\r\n { id: 5, name: 'w', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The parameter name if uniform, otherwise comma-separated values\r\n *\r\n * @remarks\r\n * Values are rounded to 3 decimal places for display purposes.\r\n */\r\n toString() {\r\n return `${String(this._value[0])},${String(this._value[1])},${String(\r\n this._value[2]\r\n )},${String(this._value[3])}`;\r\n }\r\n /**\r\n * Gets the x component of the vector\r\n */\r\n get x() {\r\n return this._value[0];\r\n }\r\n set x(val: boolean) {\r\n if (!!val !== this._value[0]) {\r\n this._value[0] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the y component of the vector\r\n */\r\n get y() {\r\n return this._value[1];\r\n }\r\n set y(val: boolean) {\r\n if (!!val !== this._value[1]) {\r\n this._value[1] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the z component of the vector\r\n */\r\n get z() {\r\n return this._value[2];\r\n }\r\n set z(val: boolean) {\r\n if (!!val !== this._value[2]) {\r\n this._value[2] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the w component of the vector\r\n */\r\n get w() {\r\n return this._value[3];\r\n }\r\n set w(val: boolean) {\r\n if (!!val !== this._value[3]) {\r\n this._value[3] = !!val;\r\n this.dispatchEvent('changed');\r\n }\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor with property definitions\r\n *\r\n * @remarks\r\n * Used by the serialization system to save/load node graphs.\r\n * Includes an 'rgba' property for color picker integration with alpha channel.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ConstantBVec4Node,\r\n name: 'ConstantBVec4Node',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'x',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.x;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.x = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'y',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.y;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.y = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'z',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.z;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.z = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'w',\r\n type: 'bool',\r\n get(this: ConstantBVec4Node, value) {\r\n value.bool[0] = this.w;\r\n },\r\n set(this: ConstantBVec4Node, value) {\r\n this.w = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Constant nodes have no validation requirements.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'bool' for component outputs (id \\> 1), 'bvec4' for the full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'bool' : 'bvec4';\r\n }\r\n}\r\n"],"names":["ConstantScalarNode","BaseGraphNode","_value","_isUniform","_paramName","getParamName","_outputs","id","name","toString","Math","round","getSerializationCls","ctor","getProps","defineProps","type","get","value","bool","isUniform","set","str","paramName","slice","test","console","log","num","x","val","dispatchEvent","ConstantBooleanNode","String","ConstantVec2Node","swizzle","y","getType","ConstantBVec2Node","ConstantVec3Node","z","ConstantBVec3Node","ConstantVec4Node","w","ConstantBVec4Node"],"mappings":"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"}
@@ -17,6 +17,8 @@ import { BaseGraphNode } from '../node.js';
17
17
  * - **Normal**: Surface normal in tangent/world space (for bump/normal mapping)
18
18
  * - **Tangent**: Surface tangent vector (for anisotropic effects)
19
19
  * - **Opacity**: Surface transparency (0 = fully transparent, 1 = fully opaque)
20
+ * - **SpecularWeight**: Scalar weight for the specular lobe
21
+ * - **AO**: Ambient occlusion multiplier
20
22
  *
21
23
  * All inputs are optional and have sensible defaults. Only the inputs you connect
22
24
  * will override the default values.
@@ -82,14 +84,16 @@ import { BaseGraphNode } from '../node.js';
82
84
  * Creates a new PBR material output node
83
85
  *
84
86
  * @remarks
85
- * Initializes with 8 input slots for all PBR material properties.
87
+ * Initializes with the full surface input set consumed by the PBR metallic-roughness backend.
88
+ * Existing slot ids are preserved for backward compatibility with saved `.zbpt` graphs,
89
+ * and new inputs are appended at the end.
86
90
  * Each input has:
87
91
  * - Flexible type acceptance (float can expand to vec3/vec4, etc.)
88
92
  * - Default values for when no connection is made
89
93
  * - Origin type that defines the expected canonical type
90
94
  *
91
95
  * Default values provide a reasonable starting material:
92
- * - White base color (1, 1, 1, 1)
96
+ * - White base color (1, 1, 1)
93
97
  * - Fully metallic (1.0)
94
98
  * - Fully rough (1.0)
95
99
  * - White specular (1, 1, 1)
@@ -97,6 +101,8 @@ import { BaseGraphNode } from '../node.js';
97
101
  * - Default surface normal (from vertex data)
98
102
  * - Default tangent (from vertex data)
99
103
  * - Fully opaque (1.0)
104
+ * - Full specular weight (1)
105
+ * - Full AO (1)
100
106
  */ constructor(){
101
107
  super();
102
108
  this._inputs = [
@@ -110,12 +116,11 @@ import { BaseGraphNode } from '../node.js';
110
116
  'vec4'
111
117
  ],
112
118
  defaultValue: [
113
- 1,
114
119
  1,
115
120
  1,
116
121
  1
117
122
  ],
118
- originType: 'vec4'
123
+ originType: 'vec3'
119
124
  },
120
125
  {
121
126
  id: 2,
@@ -198,6 +203,28 @@ import { BaseGraphNode } from '../node.js';
198
203
  1
199
204
  ],
200
205
  originType: 'float'
206
+ },
207
+ {
208
+ id: 9,
209
+ name: 'SpecularWeight',
210
+ type: [
211
+ 'float'
212
+ ],
213
+ defaultValue: [
214
+ 1
215
+ ],
216
+ originType: 'float'
217
+ },
218
+ {
219
+ id: 10,
220
+ name: 'AO',
221
+ type: [
222
+ 'float'
223
+ ],
224
+ defaultValue: [
225
+ 1
226
+ ],
227
+ originType: 'float'
201
228
  }
202
229
  ];
203
230
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pbr.js","sources":["../../../../src/utility/blueprint/material/pbr.ts"],"sourcesContent":["import type { SerializableClass } from '../../serialization';\r\nimport { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * PBR (Physically Based Rendering) material output node\r\n *\r\n * @remarks\r\n * This is the final output node for PBR materials in the material blueprint graph.\r\n * It defines the complete surface properties using the metallic-roughness workflow,\r\n * which is the industry-standard approach for physically-based materials.\r\n *\r\n * The node accepts all essential PBR material properties:\r\n * - **BaseColor**: The diffuse/albedo color of the surface (what color the surface is)\r\n * - **Metallic**: Whether the surface is metallic (0 = dielectric/non-metal, 1 = metal)\r\n * - **Roughness**: How rough/smooth the surface is (0 = mirror smooth, 1 = completely rough)\r\n * - **Specular**: Controls specular reflectance for dielectrics (non-metals)\r\n * - **Emissive**: Light emitted by the surface (for glowing effects)\r\n * - **Normal**: Surface normal in tangent/world space (for bump/normal mapping)\r\n * - **Tangent**: Surface tangent vector (for anisotropic effects)\r\n * - **Opacity**: Surface transparency (0 = fully transparent, 1 = fully opaque)\r\n *\r\n * All inputs are optional and have sensible defaults. Only the inputs you connect\r\n * will override the default values.\r\n *\r\n * Material workflow:\r\n * 1. Connect texture samples and math nodes to the various inputs\r\n * 2. The shader compiler will generate appropriate PBR lighting code\r\n * 3. The material will respond correctly to scene lighting\r\n *\r\n * @example\r\n * ```typescript\r\n * const output = new PBRBlockNode();\r\n *\r\n * // Basic textured material\r\n * const albedoTex = new TextureSampleNode();\r\n * output.connectInput(1, albedoTex, 1); // BaseColor from texture\r\n *\r\n * // Metal/rough workflow\r\n * const metallicTex = new TextureSampleNode();\r\n * const roughnessTex = new TextureSampleNode();\r\n * output.connectInput(2, metallicTex, 2); // Metallic from R channel\r\n * output.connectInput(3, roughnessTex, 2); // Roughness from R channel\r\n *\r\n * // Normal mapping\r\n * const normalMap = new TextureSampleNode();\r\n * output.connectInput(6, normalMap, 1); // Normal from RGB\r\n *\r\n * // Emissive glow\r\n * const emissiveColor = new ConstantVec3Node();\r\n * emissiveColor.x = 1.0; // Red glow\r\n * output.connectInput(5, emissiveColor, 1);\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * // Advanced material with procedural roughness variation\r\n * const output = new PBRBlockNode();\r\n *\r\n * const baseColor = new ConstantVec3Node();\r\n * baseColor.x = 0.8; baseColor.y = 0.2; baseColor.z = 0.1; // Orange\r\n * output.connectInput(1, baseColor, 1);\r\n *\r\n * // Procedural roughness pattern\r\n * const uv = new VertexUVNode();\r\n * const noise = new NoiseNode();\r\n * noise.connectInput(1, uv, 1);\r\n *\r\n * const roughness = new MixNode();\r\n * roughness.connectInput(1, constant0_3, 1); // Min roughness 0.3\r\n * roughness.connectInput(2, constant0_8, 1); // Max roughness 0.8\r\n * roughness.connectInput(3, noise, 1); // Blend factor\r\n * output.connectInput(3, roughness, 1);\r\n *\r\n * // Non-metallic\r\n * const metallic = new ConstantScalarNode();\r\n * metallic.x = 0.0;\r\n * output.connectInput(2, metallic, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class PBRBlockNode extends BaseGraphNode {\r\n /**\r\n * Creates a new PBR material output node\r\n *\r\n * @remarks\r\n * Initializes with 8 input slots for all PBR material properties.\r\n * Each input has:\r\n * - Flexible type acceptance (float can expand to vec3/vec4, etc.)\r\n * - Default values for when no connection is made\r\n * - Origin type that defines the expected canonical type\r\n *\r\n * Default values provide a reasonable starting material:\r\n * - White base color (1, 1, 1, 1)\r\n * - Fully metallic (1.0)\r\n * - Fully rough (1.0)\r\n * - White specular (1, 1, 1)\r\n * - No emission (0, 0, 0)\r\n * - Default surface normal (from vertex data)\r\n * - Default tangent (from vertex data)\r\n * - Fully opaque (1.0)\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'BaseColor',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [1, 1, 1, 1],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 2,\r\n name: 'Metallic',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n },\r\n {\r\n id: 3,\r\n name: 'Roughness',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n },\r\n {\r\n id: 4,\r\n name: 'Specular',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [1, 1, 1],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 5,\r\n name: 'Emissive',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [0, 0, 0],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 6,\r\n name: 'Normal',\r\n type: ['vec3', 'vec4'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 7,\r\n name: 'Tangent',\r\n type: ['vec3'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 8,\r\n name: 'Opacity',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n *\r\n * @remarks\r\n * No additional properties need to be serialized beyond the base node data\r\n * and input connections.\r\n */\r\n static getSerializationCls(): SerializableClass {\r\n return {\r\n ctor: PBRBlockNode,\r\n name: 'PBRBlockNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Output'\r\n *\r\n * @remarks\r\n * This node is typically labeled \"Output\" in the material editor UI\r\n * as it represents the final material output.\r\n */\r\n toString(): string {\r\n return 'Output';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * The PBR output node is always valid because:\r\n * - All inputs are optional (have default values)\r\n * - Type conversions are handled automatically (float → vec3, etc.)\r\n * - It's the terminal node with no type inference requirements\r\n */\r\n protected validate(): string {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns Empty string (no outputs)\r\n *\r\n * @remarks\r\n * As a terminal output node, PBRBlockNode has no outputs.\r\n * It consumes the material graph data and provides it to the renderer.\r\n */\r\n protected getType(): string {\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex output node\r\n *\r\n * @public\r\n */\r\nexport class VertexBlockNode extends BaseGraphNode {\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'Position',\r\n type: ['vec3'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 2,\r\n name: 'Normal',\r\n type: ['vec3'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 3,\r\n name: 'Tangent',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 4,\r\n name: 'Color',\r\n type: ['vec4'],\r\n defaultValue: [1, 1, 1, 1],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 5,\r\n name: 'UV',\r\n type: ['vec2'],\r\n originType: 'vec2'\r\n },\r\n {\r\n id: 6,\r\n name: 'Output1',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 7,\r\n name: 'Output2',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 8,\r\n name: 'Output3',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 9,\r\n name: 'Output4',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n *\r\n * @remarks\r\n * No additional properties need to be serialized beyond the base node data\r\n * and input connections.\r\n */\r\n static getSerializationCls(): SerializableClass {\r\n return {\r\n ctor: VertexBlockNode,\r\n name: 'VertexBlockNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Output'\r\n *\r\n * @remarks\r\n * This node is typically labeled \"Output\" in the material editor UI\r\n * as it represents the final material output.\r\n */\r\n toString(): string {\r\n return 'VertexOutput';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * The PBR output node is always valid because:\r\n * - All inputs are optional (have default values)\r\n * - Type conversions are handled automatically (float → vec3, etc.)\r\n * - It's the terminal node with no type inference requirements\r\n */\r\n protected validate(): string {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns Empty string (no outputs)\r\n *\r\n * @remarks\r\n * As a terminal output node, PBRBlockNode has no outputs.\r\n * It consumes the material graph data and provides it to the renderer.\r\n */\r\n protected getType(): string {\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Sprite material output node\r\n *\r\n * @public\r\n */\r\nexport class SpriteBlockNode extends BaseGraphNode {\r\n /**\r\n * Creates a new Sprite material output node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'Color',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [1, 1, 1, 1],\r\n originType: 'vec4'\r\n }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n *\r\n * @remarks\r\n * No additional properties need to be serialized beyond the base node data\r\n * and input connections.\r\n */\r\n static getSerializationCls(): SerializableClass {\r\n return {\r\n ctor: SpriteBlockNode,\r\n name: 'SpriteBlockNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Output'\r\n *\r\n * @remarks\r\n * This node is typically labeled \"Output\" in the material editor UI\r\n * as it represents the final material output.\r\n */\r\n toString(): string {\r\n return 'Output';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * The PBR output node is always valid because:\r\n * - All inputs are optional (have default values)\r\n * - Type conversions are handled automatically (float → vec3, etc.)\r\n * - It's the terminal node with no type inference requirements\r\n */\r\n protected validate(): string {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns Empty string (no outputs)\r\n *\r\n * @remarks\r\n * As a terminal output node, PBRBlockNode has no outputs.\r\n * It consumes the material graph data and provides it to the renderer.\r\n */\r\n protected getType(): string {\r\n return '';\r\n }\r\n}\r\n"],"names":["PBRBlockNode","BaseGraphNode","_inputs","id","name","type","defaultValue","originType","getSerializationCls","ctor","getProps","toString","VertexBlockNode","SpriteBlockNode"],"mappings":"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"}
1
+ {"version":3,"file":"pbr.js","sources":["../../../../src/utility/blueprint/material/pbr.ts"],"sourcesContent":["import type { SerializableClass } from '../../serialization';\r\nimport { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * PBR (Physically Based Rendering) material output node\r\n *\r\n * @remarks\r\n * This is the final output node for PBR materials in the material blueprint graph.\r\n * It defines the complete surface properties using the metallic-roughness workflow,\r\n * which is the industry-standard approach for physically-based materials.\r\n *\r\n * The node accepts all essential PBR material properties:\r\n * - **BaseColor**: The diffuse/albedo color of the surface (what color the surface is)\r\n * - **Metallic**: Whether the surface is metallic (0 = dielectric/non-metal, 1 = metal)\r\n * - **Roughness**: How rough/smooth the surface is (0 = mirror smooth, 1 = completely rough)\r\n * - **Specular**: Controls specular reflectance for dielectrics (non-metals)\r\n * - **Emissive**: Light emitted by the surface (for glowing effects)\r\n * - **Normal**: Surface normal in tangent/world space (for bump/normal mapping)\r\n * - **Tangent**: Surface tangent vector (for anisotropic effects)\r\n * - **Opacity**: Surface transparency (0 = fully transparent, 1 = fully opaque)\r\n * - **SpecularWeight**: Scalar weight for the specular lobe\r\n * - **AO**: Ambient occlusion multiplier\r\n *\r\n * All inputs are optional and have sensible defaults. Only the inputs you connect\r\n * will override the default values.\r\n *\r\n * Material workflow:\r\n * 1. Connect texture samples and math nodes to the various inputs\r\n * 2. The shader compiler will generate appropriate PBR lighting code\r\n * 3. The material will respond correctly to scene lighting\r\n *\r\n * @example\r\n * ```typescript\r\n * const output = new PBRBlockNode();\r\n *\r\n * // Basic textured material\r\n * const albedoTex = new TextureSampleNode();\r\n * output.connectInput(1, albedoTex, 1); // BaseColor from texture\r\n *\r\n * // Metal/rough workflow\r\n * const metallicTex = new TextureSampleNode();\r\n * const roughnessTex = new TextureSampleNode();\r\n * output.connectInput(2, metallicTex, 2); // Metallic from R channel\r\n * output.connectInput(3, roughnessTex, 2); // Roughness from R channel\r\n *\r\n * // Normal mapping\r\n * const normalMap = new TextureSampleNode();\r\n * output.connectInput(6, normalMap, 1); // Normal from RGB\r\n *\r\n * // Emissive glow\r\n * const emissiveColor = new ConstantVec3Node();\r\n * emissiveColor.x = 1.0; // Red glow\r\n * output.connectInput(5, emissiveColor, 1);\r\n * ```\r\n *\r\n * @example\r\n * ```typescript\r\n * // Advanced material with procedural roughness variation\r\n * const output = new PBRBlockNode();\r\n *\r\n * const baseColor = new ConstantVec3Node();\r\n * baseColor.x = 0.8; baseColor.y = 0.2; baseColor.z = 0.1; // Orange\r\n * output.connectInput(1, baseColor, 1);\r\n *\r\n * // Procedural roughness pattern\r\n * const uv = new VertexUVNode();\r\n * const noise = new NoiseNode();\r\n * noise.connectInput(1, uv, 1);\r\n *\r\n * const roughness = new MixNode();\r\n * roughness.connectInput(1, constant0_3, 1); // Min roughness 0.3\r\n * roughness.connectInput(2, constant0_8, 1); // Max roughness 0.8\r\n * roughness.connectInput(3, noise, 1); // Blend factor\r\n * output.connectInput(3, roughness, 1);\r\n *\r\n * // Non-metallic\r\n * const metallic = new ConstantScalarNode();\r\n * metallic.x = 0.0;\r\n * output.connectInput(2, metallic, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class PBRBlockNode extends BaseGraphNode {\r\n /**\r\n * Creates a new PBR material output node\r\n *\r\n * @remarks\r\n * Initializes with the full surface input set consumed by the PBR metallic-roughness backend.\r\n * Existing slot ids are preserved for backward compatibility with saved `.zbpt` graphs,\r\n * and new inputs are appended at the end.\r\n * Each input has:\r\n * - Flexible type acceptance (float can expand to vec3/vec4, etc.)\r\n * - Default values for when no connection is made\r\n * - Origin type that defines the expected canonical type\r\n *\r\n * Default values provide a reasonable starting material:\r\n * - White base color (1, 1, 1)\r\n * - Fully metallic (1.0)\r\n * - Fully rough (1.0)\r\n * - White specular (1, 1, 1)\r\n * - No emission (0, 0, 0)\r\n * - Default surface normal (from vertex data)\r\n * - Default tangent (from vertex data)\r\n * - Fully opaque (1.0)\r\n * - Full specular weight (1)\r\n * - Full AO (1)\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'BaseColor',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [1, 1, 1],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 2,\r\n name: 'Metallic',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n },\r\n {\r\n id: 3,\r\n name: 'Roughness',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n },\r\n {\r\n id: 4,\r\n name: 'Specular',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [1, 1, 1],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 5,\r\n name: 'Emissive',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [0, 0, 0],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 6,\r\n name: 'Normal',\r\n type: ['vec3', 'vec4'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 7,\r\n name: 'Tangent',\r\n type: ['vec3'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 8,\r\n name: 'Opacity',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n },\r\n {\r\n id: 9,\r\n name: 'SpecularWeight',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n },\r\n {\r\n id: 10,\r\n name: 'AO',\r\n type: ['float'],\r\n defaultValue: [1],\r\n originType: 'float'\r\n }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n *\r\n * @remarks\r\n * No additional properties need to be serialized beyond the base node data\r\n * and input connections.\r\n */\r\n static getSerializationCls(): SerializableClass {\r\n return {\r\n ctor: PBRBlockNode,\r\n name: 'PBRBlockNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Output'\r\n *\r\n * @remarks\r\n * This node is typically labeled \"Output\" in the material editor UI\r\n * as it represents the final material output.\r\n */\r\n toString(): string {\r\n return 'Output';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * The PBR output node is always valid because:\r\n * - All inputs are optional (have default values)\r\n * - Type conversions are handled automatically (float → vec3, etc.)\r\n * - It's the terminal node with no type inference requirements\r\n */\r\n protected validate(): string {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns Empty string (no outputs)\r\n *\r\n * @remarks\r\n * As a terminal output node, PBRBlockNode has no outputs.\r\n * It consumes the material graph data and provides it to the renderer.\r\n */\r\n protected getType(): string {\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex output node\r\n *\r\n * @public\r\n */\r\nexport class VertexBlockNode extends BaseGraphNode {\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'Position',\r\n type: ['vec3'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 2,\r\n name: 'Normal',\r\n type: ['vec3'],\r\n originType: 'vec3'\r\n },\r\n {\r\n id: 3,\r\n name: 'Tangent',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 4,\r\n name: 'Color',\r\n type: ['vec4'],\r\n defaultValue: [1, 1, 1, 1],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 5,\r\n name: 'UV',\r\n type: ['vec2'],\r\n originType: 'vec2'\r\n },\r\n {\r\n id: 6,\r\n name: 'Output1',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 7,\r\n name: 'Output2',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 8,\r\n name: 'Output3',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n },\r\n {\r\n id: 9,\r\n name: 'Output4',\r\n type: ['vec4'],\r\n originType: 'vec4'\r\n }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n *\r\n * @remarks\r\n * No additional properties need to be serialized beyond the base node data\r\n * and input connections.\r\n */\r\n static getSerializationCls(): SerializableClass {\r\n return {\r\n ctor: VertexBlockNode,\r\n name: 'VertexBlockNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Output'\r\n *\r\n * @remarks\r\n * This node is typically labeled \"Output\" in the material editor UI\r\n * as it represents the final material output.\r\n */\r\n toString(): string {\r\n return 'VertexOutput';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * The PBR output node is always valid because:\r\n * - All inputs are optional (have default values)\r\n * - Type conversions are handled automatically (float → vec3, etc.)\r\n * - It's the terminal node with no type inference requirements\r\n */\r\n protected validate(): string {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns Empty string (no outputs)\r\n *\r\n * @remarks\r\n * As a terminal output node, PBRBlockNode has no outputs.\r\n * It consumes the material graph data and provides it to the renderer.\r\n */\r\n protected getType(): string {\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Sprite material output node\r\n *\r\n * @public\r\n */\r\nexport class SpriteBlockNode extends BaseGraphNode {\r\n /**\r\n * Creates a new Sprite material output node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'Color',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n defaultValue: [1, 1, 1, 1],\r\n originType: 'vec4'\r\n }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n *\r\n * @remarks\r\n * No additional properties need to be serialized beyond the base node data\r\n * and input connections.\r\n */\r\n static getSerializationCls(): SerializableClass {\r\n return {\r\n ctor: SpriteBlockNode,\r\n name: 'SpriteBlockNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Output'\r\n *\r\n * @remarks\r\n * This node is typically labeled \"Output\" in the material editor UI\r\n * as it represents the final material output.\r\n */\r\n toString(): string {\r\n return 'Output';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * The PBR output node is always valid because:\r\n * - All inputs are optional (have default values)\r\n * - Type conversions are handled automatically (float → vec3, etc.)\r\n * - It's the terminal node with no type inference requirements\r\n */\r\n protected validate(): string {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns Empty string (no outputs)\r\n *\r\n * @remarks\r\n * As a terminal output node, PBRBlockNode has no outputs.\r\n * It consumes the material graph data and provides it to the renderer.\r\n */\r\n protected getType(): string {\r\n return '';\r\n }\r\n}\r\n"],"names":["PBRBlockNode","BaseGraphNode","_inputs","id","name","type","defaultValue","originType","getSerializationCls","ctor","getProps","toString","VertexBlockNode","SpriteBlockNode"],"mappings":"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"}
@@ -1076,23 +1076,7 @@ import { defineProps } from '../../serialization/types.js';
1076
1076
  name: 'TextureSampleNode',
1077
1077
  getProps () {
1078
1078
  return defineProps([
1079
- {
1080
- name: 'Name',
1081
- type: 'string',
1082
- isNullable () {
1083
- return false;
1084
- },
1085
- get (value) {
1086
- value.str[0] = this.paramName ? this.paramName.slice(2) : '';
1087
- },
1088
- set (value) {
1089
- if (!/^[A-Za-z0-9_]+$/.test(value.str[0])) {
1090
- console.log(`Invalid parameter name: ${value.str[0]}`);
1091
- } else {
1092
- this.paramName = `u_${value.str[0]}`;
1093
- }
1094
- }
1095
- },
1079
+ ...textureNodeProps,
1096
1080
  {
1097
1081
  name: 'SamplerType',
1098
1082
  type: 'string',