@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.
- package/dist/animation/joint_dynamics/controller.js +92 -32
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/convex_collider.js +320 -0
- package/dist/animation/joint_dynamics/convex_collider.js.map +1 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +57 -19
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +71 -27
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics_modifier.js +21 -20
- package/dist/animation/joint_dynamics_modifier.js.map +1 -1
- package/dist/animation/skeleton.js +7 -10
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/app/engine.js +134 -140
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptregistry.js +47 -16
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +3 -1
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +346 -7
- package/dist/asset/model.js.map +1 -1
- package/dist/avatar/wardrobe.js +20 -16
- package/dist/avatar/wardrobe.js.map +1 -1
- package/dist/camera/camera.js +416 -210
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +1350 -621
- package/dist/index.js +6 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +23 -1
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +178 -23
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +4 -4
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +2 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +2 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +63 -16
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +105 -32
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -6
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +1 -1
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +276 -65
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -3
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js +2 -2
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/msdf_text.js +3 -3
- package/dist/material/msdf_text.js.map +1 -1
- package/dist/material/mtoon.js +574 -0
- package/dist/material/mtoon.js.map +1 -0
- package/dist/material/pbrblueprint.js +499 -336
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +118 -100
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +324 -294
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/subsurfaceprofile.js +812 -0
- package/dist/material/subsurfaceprofile.js.map +1 -0
- package/dist/material/unlit.js +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/posteffect/compositor.js +46 -11
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/ssr.js +422 -96
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +1053 -0
- package/dist/posteffect/sss.js.map +1 -0
- package/dist/posteffect/taa.js +61 -60
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +63 -12
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +6 -5
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable.js +1 -5
- package/dist/render/drawable.js.map +1 -1
- package/dist/render/drawable_mixin.js +2 -1
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +2 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +2 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +2 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/lightpass.js +110 -23
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +51 -8
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +80 -66
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +8 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +481 -95
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +55 -0
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +3 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +10 -4
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sky.js +31 -1
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +23 -5
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +4 -2
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +3 -1
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +11 -1
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +21 -3
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +29 -14
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +5 -2
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +5 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +3 -1
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +6 -5
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +4 -2
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +2 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +4 -2
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +4 -2
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/shadow.js +26 -393
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shadow/esm.js +112 -12
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +2 -2
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +19 -10
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +58 -7
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js +6 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +229 -0
- package/dist/shadow/shadow_region.js.map +1 -0
- package/dist/shadow/shadowmapper.js +67 -59
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/vsm.js +45 -19
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/text/font/cff_font.js +890 -0
- package/dist/text/font/cff_font.js.map +1 -0
- package/dist/text/font/font_asset.js +17 -3
- package/dist/text/font/font_asset.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +8 -8
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +31 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +1 -17
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/manager.js +327 -359
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +5 -2
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +249 -54
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +37 -1
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +42 -3
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +1112 -646
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +7 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +31 -12
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +3 -1
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +18 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +6 -3
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +5 -2
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -1
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +4 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +6 -0
- package/dist/utility/textures/ltcdata.js.map +1 -0
- package/dist/utility/textures/ltclut.js +61 -0
- package/dist/utility/textures/ltclut.js.map +1 -0
- package/dist/values.js +9 -1
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
- package/dist/animation/ik/ik_chain_builder.js +0 -68
- package/dist/animation/ik/ik_chain_builder.js.map +0 -1
- package/dist/animation/ik/ik_pole_constraint.js +0 -123
- package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
- package/dist/animation/ik/ik_track.js +0 -96
- package/dist/animation/ik/ik_track.js.map +0 -1
- package/dist/animation/ik_postprocessor.js +0 -71
- package/dist/animation/ik_postprocessor.js.map +0 -1
- package/dist/animation/joint_dynamics/math.js +0 -16
- package/dist/animation/joint_dynamics/math.js.map +0 -1
- package/dist/animation/manual_transform_processor.js +0 -156
- package/dist/animation/manual_transform_processor.js.map +0 -1
- package/dist/animation/skeleton_postprocessor.js +0 -50
- package/dist/animation/skeleton_postprocessor.js.map +0 -1
- package/dist/animation/spring2/collision.js +0 -469
- package/dist/animation/spring2/collision.js.map +0 -1
- package/dist/animation/spring2/constraints.js +0 -329
- package/dist/animation/spring2/constraints.js.map +0 -1
- package/dist/animation/spring2/controller.js +0 -434
- package/dist/animation/spring2/controller.js.map +0 -1
- package/dist/animation/spring2/math.js +0 -16
- package/dist/animation/spring2/math.js.map +0 -1
- package/dist/animation/spring2/solver.js +0 -624
- package/dist/animation/spring2/solver.js.map +0 -1
- package/dist/animation/spring2/spring_system.js +0 -118
- package/dist/animation/spring2/spring_system.js.map +0 -1
- package/dist/animation/spring2/types.js +0 -19
- package/dist/animation/spring2/types.js.map +0 -1
- package/dist/animation/spring_postprocessor.js +0 -54
- package/dist/animation/spring_postprocessor.js.map +0 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +0 -1276
- package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/asset/loaders/gltf/helpers.js +0 -331
- package/dist/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/material/sprite3d.js +0 -301
- package/dist/material/sprite3d.js.map +0 -1
- package/dist/material/sprite3d_std.js +0 -116
- package/dist/material/sprite3d_std.js.map +0 -1
- package/dist/material/sprite3dblueprint.js +0 -235
- package/dist/material/sprite3dblueprint.js.map +0 -1
- package/dist/material/sprite_sdf.js +0 -106
- package/dist/material/sprite_sdf.js.map +0 -1
- package/dist/material/terrainmaterial.js +0 -368
- package/dist/material/terrainmaterial.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/render/deferredlightpass.js +0 -510
- package/dist/render/deferredlightpass.js.map +0 -1
- package/dist/render/deferredshadowlightpass.js +0 -428
- package/dist/render/deferredshadowlightpass.js.map +0 -1
- package/dist/render/gbufferpass.js +0 -50
- package/dist/render/gbufferpass.js.map +0 -1
- package/dist/scene/sdftextsprite.js +0 -322
- package/dist/scene/sdftextsprite.js.map +0 -1
- package/dist/scene/sprite3d.js +0 -18
- package/dist/scene/sprite3d.js.map +0 -1
- package/dist/scene/terrain/grass.js +0 -280
- package/dist/scene/terrain/grass.js.map +0 -1
- package/dist/scene/terrain/heightfield.js +0 -475
- package/dist/scene/terrain/heightfield.js.map +0 -1
- package/dist/scene/terrain/patch.js +0 -532
- package/dist/scene/terrain/patch.js.map +0 -1
- package/dist/scene/terrain/quadtree.js +0 -461
- package/dist/scene/terrain/quadtree.js.map +0 -1
- package/dist/scene/terrain/terrain.js +0 -231
- package/dist/scene/terrain/terrain.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
- package/dist/utility/serialization/scene/cloth_script.js +0 -834
- package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
- package/dist/utility/serialization/scene/spring_script.js +0 -596
- 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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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":";;;;AAIA;;;;IAKO,MAAMA,kBAA2BC,SAAAA,aAAAA,CAAAA;kCAEtC,MAAuB;0EAEvB,UAA4B;yEAE5B,UAA2B;AAC3B;;;;;AAKC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG,CAAA;QACd,IAAI,CAACC,UAAU,GAAG,KAAA;QAClB,IAAI,CAACC,UAAU,GAAG,EAAA;QAClB,IAAI,CAACC,QAAQ,GAAG;AAAC,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG;AAAE,SAAA;AACvC;AACA;;;;;;;AAOC,MACDC,QAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAACL,UAAU,GAAG,IAAI,CAACC,UAAU,GAAG,CAAGK,EAAAA,IAAAA,CAAKC,KAAK,CAAC,IAAI,CAACR,MAAM,GAAG,QAAQ,IAAM,CAAA,CAAA;AACvF;AACA;;;;;;;;AAQC,MACD,OAAOS,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAMZ,EAAAA,kBAAAA;YACNO,IAAM,EAAA,oBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA8BC,KAAK,EAAA;AACjCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,SAAS;AAChC,yBAAA;AACAC,wBAAAA,GAAAA,CAAAA,CAA8BH,KAAK,EAAA;AACjC,4BAAA,IAAI,CAACE,SAAS,GAAGF,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AAChC;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,QAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA8BC,KAAK,EAAA;AACjCA,4BAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,CAAK,CAAA,GAAA,EAAA;AAC5D,yBAAA;AACAH,wBAAAA,GAAAA,CAAAA,CAA8BH,KAAK,EAAA;4BACjC,IAAI,CAAC,kBAAkBO,IAAI,CAACP,MAAMI,GAAG,CAAC,EAAE,CAAG,EAAA;gCACzCI,OAAQC,CAAAA,GAAG,CAAC,CAAC,wBAAwB,EAAET,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;6BAChD,MAAA;gCACL,IAAI,CAACC,SAAS,GAAG,CAAC,EAAE,EAAEL,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA;AACtC;AACF;AACF,qBAAA;AACA,oBAAA;wBACEd,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA8BC,KAAK,EAAA;AACjCA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,CAAC;AACvB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA8BH,KAAK,EAAA;AACjC,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;AAEC,MACD,IAAIR,SAAY,GAAA;QACd,OAAO,IAAI,CAAChB,UAAU;AACxB;IACA,IAAIgB,SAAAA,CAAUU,GAAY,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC1B,UAAU,KAAK,CAAC,CAAC0B,GAAK,EAAA;AAC7B,YAAA,IAAI,CAAC1B,UAAU,GAAG,CAAC,CAAC0B,GAAAA;AACpB,YAAA,IAAI,CAAC,IAAI,CAACzB,UAAU,EAAE;gBACpB,IAAI,CAACA,UAAU,GAAG0B,YAAAA,EAAAA;AACpB;AACF;AACF;AACA;;AAEC,MACD,IAAIR,SAAY,GAAA;QACd,OAAO,IAAI,CAAClB,UAAU;AACxB;IACA,IAAIkB,SAAAA,CAAUO,GAAW,EAAE;AACzB,QAAA,IAAI,IAAI,CAACzB,UAAU,KAAKyB,GAAK,EAAA;YAC3B,IAAI,CAACzB,UAAU,GAAGyB,GAAAA;YAClB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIH,CAAI,GAAA;QACN,OAAO,IAAI,CAAC1B,MAAM;AACpB;IACA,IAAI0B,CAAAA,CAAEC,GAAW,EAAE;AACjB,QAAA,IAAIA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,EAAE;YACvB,IAAI,CAACA,MAAM,GAAG2B,GAAAA;YACd,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;AAIC,MACD,OAAoB,GAAA;QAClB,OAAO,OAAA;AACT;AACF;AAEA;;;;IAKO,MAAMC,mBAA4B/B,SAAAA,aAAAA,CAAAA;oCAEvC,MAAwB;AACxB;;;;;AAKC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG,KAAA;QACd,IAAI,CAACG,QAAQ,GAAG;AAAC,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG;AAAE,SAAA;AACvC;AACA;;;;;;;AAOC,MACDC,QAAW,GAAA;QACT,OAAOyB,MAAAA,CAAO,IAAI,CAAC/B,MAAM,CAAA;AAC3B;AACA;;;;;;;;AAQC,MACD,OAAOS,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAMoB,EAAAA,mBAAAA;YACNzB,IAAM,EAAA,qBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA+BC,KAAK,EAAA;AAClCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACU,CAAC;AACxB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA+BH,KAAK,EAAA;AAClC,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;AAEC,MACD,IAAIU,CAAI,GAAA;QACN,OAAO,IAAI,CAAC1B,MAAM;AACpB;IACA,IAAI0B,CAAAA,CAAEC,GAAY,EAAE;AAClB,QAAA,IAAI,CAAC,CAACA,GAAAA,KAAQ,IAAI,CAAC3B,MAAM,EAAE;AACzB,YAAA,IAAI,CAACA,MAAM,GAAG,CAAC,CAAC2B,GAAAA;YAChB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;AAIC,MACD,OAAoB,GAAA;QAClB,OAAO,MAAA;AACT;AACF;AAEA;;;;IAKO,MAAMG,gBAAyBjC,SAAAA,aAAAA,CAAAA;sCAEpC,MAAyB;0EAEzB,UAA4B;yEAE5B,UAA2B;AAC3B;;;;;;AAMC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA;AAAE,SAAA;QACpB,IAAI,CAACC,UAAU,GAAG,KAAA;QAClB,IAAI,CAACC,UAAU,GAAG,EAAA;QAClB,IAAI,CAACC,QAAQ,GAAG;AACd,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG,aAAA;AAClB,YAAA;gBAAED,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI;AAClC,SAAA;AACH;AACA;;;;;;;AAOC,MACD3B,QAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAACL,UAAU,GAClB,IAAI,CAACC,UAAU,GACf,CAAA,EAAGK,IAAKC,CAAAA,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAE,CAAA,GAAG,IAAQ,CAAA,GAAA,IAAA,CAAK,CAAC,EAAEO,KAAKC,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAE,CAAA,GAAG,QAAQ,IAAM,CAAA,CAAA;AAC/F;AACA;;AAEC,MACD,IAAIiB,SAAY,GAAA;QACd,OAAO,IAAI,CAAChB,UAAU;AACxB;IACA,IAAIgB,SAAAA,CAAUU,GAAY,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC1B,UAAU,KAAK,CAAC,CAAC0B,GAAK,EAAA;AAC7B,YAAA,IAAI,CAAC1B,UAAU,GAAG,CAAC,CAAC0B,GAAAA;AACpB,YAAA,IAAI,CAAC,IAAI,CAACzB,UAAU,EAAE;gBACpB,IAAI,CAACA,UAAU,GAAG0B,YAAAA,EAAAA;AACpB;AACF;AACF;AACA;;AAEC,MACD,IAAIR,SAAY,GAAA;QACd,OAAO,IAAI,CAAClB,UAAU;AACxB;IACA,IAAIkB,SAAAA,CAAUO,GAAW,EAAE;AACzB,QAAA,IAAI,IAAI,CAACzB,UAAU,KAAKyB,GAAK,EAAA;YAC3B,IAAI,CAACzB,UAAU,GAAGyB,GAAAA;YAClB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AAEA;;AAEC,MACD,IAAIH,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC1B,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAI0B,CAAAA,CAAEC,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIK,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAClC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIkC,CAAAA,CAAEP,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;AAOC,MACD,OAAOpB,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAMsB,EAAAA,gBAAAA;YACN3B,IAAM,EAAA,kBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,SAAS;AAChC,yBAAA;AACAC,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACE,SAAS,GAAGF,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AAChC;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,QAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,CAAK,CAAA,GAAA,EAAA;AAC5D,yBAAA;AACAH,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;4BAC/B,IAAI,CAAC,kBAAkBO,IAAI,CAACP,MAAMI,GAAG,CAAC,EAAE,CAAG,EAAA;gCACzCI,OAAQC,CAAAA,GAAG,CAAC,CAAC,wBAAwB,EAAET,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;6BAChD,MAAA;gCACL,IAAI,CAACC,SAAS,GAAG,CAAC,EAAE,EAAEL,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA;AACtC;AACF;AACF,qBAAA;AACA,oBAAA;wBACEd,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,CAAC;AACvB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACS,CAAC;AACvB,yBAAA;AACAhB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACmB,CAAC,GAAGnB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;;MAMUU,OAAQ/B,CAAAA,EAAU,EAAE;QAC5B,OAAOA,EAAAA,GAAK,IAAI,OAAU,GAAA,MAAA;AAC5B;AACF;AAEA;;;;IAKO,MAAMgC,iBAA0BrC,SAAAA,aAAAA,CAAAA;sCAErC,MAA0B;AAC1B;;;;;;AAMC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG;AAAC,YAAA,KAAA;AAAO,YAAA;AAAM,SAAA;QAC5B,IAAI,CAACG,QAAQ,GAAG;AACd,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG,aAAA;AAClB,YAAA;gBAAED,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI;AAClC,SAAA;AACH;AACA;;;;;;;AAOC,MACD3B,QAAW,GAAA;AACT,QAAA,OAAO,GAAGyB,MAAO,CAAA,IAAI,CAAC/B,MAAM,CAAC,CAAE,CAAA,CAAA,CAAE,CAAC,EAAE+B,OAAO,IAAI,CAAC/B,MAAM,CAAC,EAAE,CAAG,CAAA,CAAA;AAC9D;AACA;;AAEC,MACD,IAAI0B,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC1B,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAI0B,CAAAA,CAAEC,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIK,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAClC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIkC,CAAAA,CAAEP,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;AAOC,MACD,OAAOpB,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAM0B,EAAAA,iBAAAA;YACN/B,IAAM,EAAA,mBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACU,CAAC;AACxB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkB,CAAC;AACxB,yBAAA;AACAhB,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACmB,CAAC,GAAGnB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;;MAMUmB,OAAQ/B,CAAAA,EAAU,EAAE;QAC5B,OAAOA,EAAAA,GAAK,IAAI,MAAS,GAAA,OAAA;AAC3B;AACF;AAEA;;;;IAKO,MAAMiC,gBAAyBtC,SAAAA,aAAAA,CAAAA;yCAEpC,MAAyB;0EAEzB,UAA4B;yEAE5B,UAA2B;AAC3B;;;;;;AAMC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA;AAAE,SAAA;QACvB,IAAI,CAACC,UAAU,GAAG,KAAA;QAClB,IAAI,CAACC,UAAU,GAAG,EAAA;QAClB,IAAI,CAACC,QAAQ,GAAG;AACd,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG,aAAA;AAClB,YAAA;gBAAED,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI;AAClC,SAAA;AACH;AACA;;;;;;;AAOC,MACD3B,QAAW,GAAA;QACT,OAAO,IAAI,CAACL,UAAU,GAClB,IAAI,CAACC,UAAU,GACf,CAAGK,EAAAA,IAAAA,CAAKC,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,EAAE,GAAG,IAAA,CAAA,GAAQ,KAAK,CAAC,EAAEO,KAAKC,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAE,CAAA,GAAG,QAAQ,IAAK,CAAA,CAAC,EACvFO,IAAKC,CAAAA,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA,CAAA,GAAQ,IACpC,CAAA,CAAA;AACR;AACA;;AAEC,MACD,IAAIiB,SAAY,GAAA;QACd,OAAO,IAAI,CAAChB,UAAU;AACxB;IACA,IAAIgB,SAAAA,CAAUU,GAAY,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC1B,UAAU,KAAK,CAAC,CAAC0B,GAAK,EAAA;AAC7B,YAAA,IAAI,CAAC1B,UAAU,GAAG,CAAC,CAAC0B,GAAAA;AACpB,YAAA,IAAI,CAAC,IAAI,CAACzB,UAAU,EAAE;gBACpB,IAAI,CAACA,UAAU,GAAG0B,YAAAA,EAAAA;AACpB;AACF;AACF;AACA;;AAEC,MACD,IAAIR,SAAY,GAAA;QACd,OAAO,IAAI,CAAClB,UAAU;AACxB;IACA,IAAIkB,SAAAA,CAAUO,GAAW,EAAE;AACzB,QAAA,IAAI,IAAI,CAACzB,UAAU,KAAKyB,GAAK,EAAA;YAC3B,IAAI,CAACzB,UAAU,GAAGyB,GAAAA;YAClB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AAEA;;AAEC,MACD,IAAIH,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC1B,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAI0B,CAAAA,CAAEC,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIK,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAClC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIkC,CAAAA,CAAEP,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIS,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAACtC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIsC,CAAAA,CAAEX,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;;AAQC,MACD,OAAOpB,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAM2B,EAAAA,gBAAAA;YACNhC,IAAM,EAAA,kBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,SAAS;AAChC,yBAAA;AACAC,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACE,SAAS,GAAGF,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AAChC;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,QAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,CAAK,CAAA,GAAA,EAAA;AAC5D,yBAAA;AACAH,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;4BAC/B,IAAI,CAAC,kBAAkBO,IAAI,CAACP,MAAMI,GAAG,CAAC,EAAE,CAAG,EAAA;gCACzCI,OAAQC,CAAAA,GAAG,CAAC,CAAC,wBAAwB,EAAET,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;6BAChD,MAAA;gCACL,IAAI,CAACC,SAAS,GAAG,CAAC,EAAE,EAAEL,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA;AACtC;AACF;AACF,qBAAA;AACA,oBAAA;wBACEd,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,CAAC;AACvB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACS,CAAC;AACvB,yBAAA;AACAhB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACmB,CAAC,GAAGnB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,CAAC;AACvB,yBAAA;AACApB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACuB,CAAC,GAAGvB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,KAAA;wBACNQ,IAAM,EAAA,KAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,CAAC;AACrBX,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACS,CAAC;AACrBnB,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,CAAC;AACvB,yBAAA;AACApB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrB,4BAAA,IAAI,CAACS,CAAC,GAAGnB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrB,4BAAA,IAAI,CAACa,CAAC,GAAGvB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;;MAMUU,OAAQ/B,CAAAA,EAAU,EAAE;QAC5B,OAAOA,EAAAA,GAAK,IAAI,OAAU,GAAA,MAAA;AAC5B;AACF;AAEA;;;;IAKO,MAAMmC,iBAA0BxC,SAAAA,aAAAA,CAAAA;yCAErC,MAA0B;AAC1B;;;;;;AAMC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG;AAAC,YAAA,KAAA;AAAO,YAAA,KAAA;AAAO,YAAA;AAAM,SAAA;QACnC,IAAI,CAACG,QAAQ,GAAG;AACd,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG,aAAA;AAClB,YAAA;gBAAED,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI;AAClC,SAAA;AACH;AACA;;;;;;;AAOC,MACD3B,QAAW,GAAA;QACT,OAAO,CAAA,EAAGyB,MAAO,CAAA,IAAI,CAAC/B,MAAM,CAAC,CAAE,CAAA,CAAA,CAAE,CAAC,EAAE+B,MAAO,CAAA,IAAI,CAAC/B,MAAM,CAAC,CAAE,CAAA,CAAA,CAAE,CAAC,EAAE+B,MAAO,CAAA,IAAI,CAAC/B,MAAM,CAAC,CAAA,CAAE,CAAG,CAAA,CAAA;AACxF;AACA;;AAEC,MACD,IAAI0B,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC1B,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAI0B,CAAAA,CAAEC,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIK,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAClC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIkC,CAAAA,CAAEP,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIS,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAACtC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIsC,CAAAA,CAAEX,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;;AAQC,MACD,OAAOpB,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAM6B,EAAAA,iBAAAA;YACNlC,IAAM,EAAA,mBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACU,CAAC;AACxB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkB,CAAC;AACxB,yBAAA;AACAhB,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACmB,CAAC,GAAGnB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsB,CAAC;AACxB,yBAAA;AACApB,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACuB,CAAC,GAAGvB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;;MAMUmB,OAAQ/B,CAAAA,EAAU,EAAE;QAC5B,OAAOA,EAAAA,GAAK,IAAI,MAAS,GAAA,OAAA;AAC3B;AACF;AAEA;;;;IAKO,MAAMoC,gBAAyBzC,SAAAA,aAAAA,CAAAA;4CAEpC,MAAyB;yEAEzB,UAA2B;0EAE3B,UAA4B;AAC5B;;;;;;AAMC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG;AAAC,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA,CAAA;AAAG,YAAA;AAAE,SAAA;QAC1B,IAAI,CAACC,UAAU,GAAG,KAAA;QAClB,IAAI,CAACC,UAAU,GAAG,EAAA;QAClB,IAAI,CAACC,QAAQ,GAAG;AACd,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG,aAAA;AAClB,YAAA;gBAAED,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI;AAClC,SAAA;AACH;AACA;;;;;;;AAOC,MACD3B,QAAW,GAAA;QACT,OAAO,IAAI,CAACL,UAAU,GAClB,IAAI,CAACC,UAAU,GACf,CAAA,EAAGK,IAAKC,CAAAA,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA,CAAA,GAAQ,IAAK,CAAA,CAAC,EAAEO,IAAAA,CAAKC,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,EAAE,GAAG,IAAA,CAAA,GAAQ,IAAK,CAAA,CAAC,EACvFO,IAAAA,CAAKC,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAE,CAAA,GAAG,IAAQ,CAAA,GAAA,IAAA,CACrC,CAAC,EAAEO,IAAKC,CAAAA,KAAK,CAAC,IAAI,CAACR,MAAM,CAAC,CAAA,CAAE,GAAG,IAAA,CAAA,GAAQ,IAAM,CAAA,CAAA;AACpD;AACA;;AAEC,MACD,IAAIiB,SAAY,GAAA;QACd,OAAO,IAAI,CAAChB,UAAU;AACxB;IACA,IAAIgB,SAAAA,CAAUU,GAAY,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC1B,UAAU,KAAK,CAAC,CAAC0B,GAAK,EAAA;AAC7B,YAAA,IAAI,CAAC1B,UAAU,GAAG,CAAC,CAAC0B,GAAAA;AACpB,YAAA,IAAI,CAAC,IAAI,CAACzB,UAAU,EAAE;gBACpB,IAAI,CAACA,UAAU,GAAG0B,YAAAA,EAAAA;AACpB;AACF;AACF;AACA;;AAEC,MACD,IAAIR,SAAY,GAAA;QACd,OAAO,IAAI,CAAClB,UAAU;AACxB;IACA,IAAIkB,SAAAA,CAAUO,GAAW,EAAE;AACzB,QAAA,IAAI,IAAI,CAACzB,UAAU,KAAKyB,GAAK,EAAA;YAC3B,IAAI,CAACzB,UAAU,GAAGyB,GAAAA;YAClB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AAEA;;AAEC,MACD,IAAIH,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC1B,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAI0B,CAAAA,CAAEC,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIK,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAClC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIkC,CAAAA,CAAEP,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIS,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAACtC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIsC,CAAAA,CAAEX,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIY,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAACzC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIyC,CAAAA,CAAEd,GAAW,EAAE;AACjB,QAAA,IAAIA,QAAQ,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC1B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG2B,GAAAA;YACjB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;;AAQC,MACD,OAAOpB,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAM8B,EAAAA,gBAAAA;YACNnC,IAAM,EAAA,kBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,SAAS;AAChC,yBAAA;AACAC,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACE,SAAS,GAAGF,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AAChC;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,WAAA;wBACNQ,IAAM,EAAA,QAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMI,GAAG,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,SAAS,GAAG,IAAI,CAACA,SAAS,CAACC,KAAK,CAAC,CAAK,CAAA,GAAA,EAAA;AAC5D,yBAAA;AACAH,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;4BAC/B,IAAI,CAAC,kBAAkBO,IAAI,CAACP,MAAMI,GAAG,CAAC,EAAE,CAAG,EAAA;gCACzCI,OAAQC,CAAAA,GAAG,CAAC,CAAC,wBAAwB,EAAET,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;6BAChD,MAAA;gCACL,IAAI,CAACC,SAAS,GAAG,CAAC,EAAE,EAAEL,KAAMI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE,CAAA;AACtC;AACF;AACF,qBAAA;AACA,oBAAA;wBACEd,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,CAAC;AACvB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACS,CAAC;AACvB,yBAAA;AACAhB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACmB,CAAC,GAAGnB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,CAAC;AACvB,yBAAA;AACApB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACuB,CAAC,GAAGvB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,OAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgB,CAAC;AACvB,yBAAA;AACAvB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAAC0B,CAAC,GAAG1B,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF,qBAAA;AACA,oBAAA;wBACEpB,IAAM,EAAA,MAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA4BC,KAAK,EAAA;AAC/BA,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACC,CAAC;AACrBX,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACS,CAAC;AACrBnB,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACa,CAAC;AACrBvB,4BAAAA,KAAAA,CAAMU,GAAG,CAAC,CAAA,CAAE,GAAG,IAAI,CAACgB,CAAC;AACvB,yBAAA;AACAvB,wBAAAA,GAAAA,CAAAA,CAA4BH,KAAK,EAAA;AAC/B,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrB,4BAAA,IAAI,CAACS,CAAC,GAAGnB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrB,4BAAA,IAAI,CAACa,CAAC,GAAGvB,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACrB,4BAAA,IAAI,CAACgB,CAAC,GAAG1B,KAAMU,CAAAA,GAAG,CAAC,CAAE,CAAA;AACvB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;;MAMUU,OAAQ/B,CAAAA,EAAU,EAAE;QAC5B,OAAOA,EAAAA,GAAK,IAAI,OAAU,GAAA,MAAA;AAC5B;AACF;AAEA;;;;IAKO,MAAMsC,iBAA0B3C,SAAAA,aAAAA,CAAAA;4CAErC,MAA0B;AAC1B;;;;;;AAMC,MACD,WAAc,EAAA;QACZ,KAAK,EAAA;QACL,IAAI,CAACC,MAAM,GAAG;AAAC,YAAA,KAAA;AAAO,YAAA,KAAA;AAAO,YAAA,KAAA;AAAO,YAAA;AAAM,SAAA;QAC1C,IAAI,CAACG,QAAQ,GAAG;AACd,YAAA;gBAAEC,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA;AAAG,aAAA;AAClB,YAAA;gBAAED,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI,aAAA;AACjC,YAAA;gBAAE7B,EAAI,EAAA,CAAA;gBAAGC,IAAM,EAAA,GAAA;gBAAK4B,OAAS,EAAA;AAAI;AAClC,SAAA;AACH;AACA;;;;;;;AAOC,MACD3B,QAAW,GAAA;AACT,QAAA,OAAO,CAAGyB,EAAAA,MAAAA,CAAO,IAAI,CAAC/B,MAAM,CAAC,CAAA,CAAE,CAAE,CAAA,CAAC,EAAE+B,MAAO,CAAA,IAAI,CAAC/B,MAAM,CAAC,CAAE,CAAA,CAAA,CAAE,CAAC,EAAE+B,MAC5D,CAAA,IAAI,CAAC/B,MAAM,CAAC,CAAE,CAAA,CAAA,CACd,CAAC,EAAE+B,OAAO,IAAI,CAAC/B,MAAM,CAAC,EAAE,CAAG,CAAA,CAAA;AAC/B;AACA;;AAEC,MACD,IAAI0B,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC1B,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAI0B,CAAAA,CAAEC,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIK,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAClC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIkC,CAAAA,CAAEP,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIS,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAACtC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIsC,CAAAA,CAAEX,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;AAEC,MACD,IAAIY,CAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAACzC,MAAM,CAAC,CAAE,CAAA;AACvB;IACA,IAAIyC,CAAAA,CAAEd,GAAY,EAAE;QAClB,IAAI,CAAC,CAACA,GAAQ,KAAA,IAAI,CAAC3B,MAAM,CAAC,EAAE,EAAE;AAC5B,YAAA,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC2B,GAAAA;YACnB,IAAI,CAACE,aAAa,CAAC,SAAA,CAAA;AACrB;AACF;AACA;;;;;;;;AAQC,MACD,OAAOpB,mBAAsB,GAAA;QAC3B,OAAO;YACLC,IAAMgC,EAAAA,iBAAAA;YACNrC,IAAM,EAAA,mBAAA;AACNM,YAAAA,QAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,WAAY,CAAA;AACjB,oBAAA;wBACEP,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACU,CAAC;AACxB,yBAAA;AACAR,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACW,CAAC,GAAGX,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACkB,CAAC;AACxB,yBAAA;AACAhB,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACmB,CAAC,GAAGnB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsB,CAAC;AACxB,yBAAA;AACApB,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAACuB,CAAC,GAAGvB,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF,qBAAA;AACA,oBAAA;wBACEX,IAAM,EAAA,GAAA;wBACNQ,IAAM,EAAA,MAAA;AACNC,wBAAAA,GAAAA,CAAAA,CAA6BC,KAAK,EAAA;AAChCA,4BAAAA,KAAAA,CAAMC,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAACyB,CAAC;AACxB,yBAAA;AACAvB,wBAAAA,GAAAA,CAAAA,CAA6BH,KAAK,EAAA;AAChC,4BAAA,IAAI,CAAC0B,CAAC,GAAG1B,KAAMC,CAAAA,IAAI,CAAC,CAAE,CAAA;AACxB;AACF;AACD,iBAAA,CAAA;AACH;AACF,SAAA;AACF;AACA;;;;;;;AAOC,MACD,QAAqB,GAAA;QACnB,OAAO,EAAA;AACT;AACA;;;;;MAMUmB,OAAQ/B,CAAAA,EAAU,EAAE;QAC5B,OAAOA,EAAAA,GAAK,IAAI,MAAS,GAAA,OAAA;AAC3B;AACF;;;;"}
|
|
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
|
|
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
|
|
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: '
|
|
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',
|