@zephyr3d/scene 0.7.1 → 0.8.1
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/animation.js +0 -18
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +200 -3
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +371 -0
- package/dist/animation/ik/ccd_solver.js.map +1 -0
- package/dist/animation/ik/fabrik_solver.js +398 -0
- package/dist/animation/ik/fabrik_solver.js.map +1 -0
- package/dist/animation/ik/ik_angle_constraint.js +181 -0
- package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
- package/dist/animation/ik/ik_chain.js +163 -0
- package/dist/animation/ik/ik_chain.js.map +1 -0
- package/dist/animation/ik/ik_constraint.js +25 -0
- package/dist/animation/ik/ik_constraint.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +128 -0
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
- package/dist/animation/ik/ik_solver.js +48 -0
- package/dist/animation/ik/ik_solver.js.map +1 -0
- package/dist/animation/ik/ik_track.js +96 -0
- package/dist/animation/ik/ik_track.js.map +1 -0
- package/dist/animation/ik/ik_utils.js +191 -0
- package/dist/animation/ik/ik_utils.js.map +1 -0
- package/dist/animation/ik/two_bone_ik_solver.js +331 -0
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
- package/dist/animation/ik_modifier.js +61 -0
- package/dist/animation/ik_modifier.js.map +1 -0
- package/dist/animation/ik_postprocessor.js +71 -0
- package/dist/animation/ik_postprocessor.js.map +1 -0
- package/dist/animation/manual_transform_processor.js +156 -0
- package/dist/animation/manual_transform_processor.js.map +1 -0
- package/dist/animation/skeleton.js +55 -51
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +38 -0
- package/dist/animation/skeleton_modifier.js.map +1 -0
- package/dist/animation/skeleton_postprocessor.js +50 -0
- package/dist/animation/skeleton_postprocessor.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +503 -0
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
- package/dist/animation/spring/spring_bone.js +240 -0
- package/dist/animation/spring/spring_bone.js.map +1 -0
- package/dist/animation/spring/spring_bone_collider.js +198 -0
- package/dist/animation/spring/spring_bone_collider.js.map +1 -0
- package/dist/animation/spring/spring_bone_constraint.js +170 -0
- package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
- package/dist/animation/spring/spring_bone_system.js +328 -0
- package/dist/animation/spring/spring_bone_system.js.map +1 -0
- package/dist/animation/spring/spring_chain.js +103 -0
- package/dist/animation/spring/spring_chain.js.map +1 -0
- package/dist/animation/spring/spring_collider.js +247 -0
- package/dist/animation/spring/spring_collider.js.map +1 -0
- package/dist/animation/spring/spring_constraint.js +21 -0
- package/dist/animation/spring/spring_constraint.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +20 -0
- package/dist/animation/spring/spring_particle.js.map +1 -0
- package/dist/animation/spring/spring_system.js +526 -0
- package/dist/animation/spring/spring_system.js.map +1 -0
- package/dist/animation/spring_modifier.js +45 -0
- package/dist/animation/spring_modifier.js.map +1 -0
- package/dist/animation/spring_postprocessor.js +54 -0
- package/dist/animation/spring_postprocessor.js.map +1 -0
- package/dist/app/screen.js +1 -1
- package/dist/app/screen.js.map +1 -1
- package/dist/asset/model.js +10 -6
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/perspectivecamera.js +3 -3
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +1400 -4
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +20 -17
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/shader/helper.js +5 -3
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/render/gpu_picking.js +100 -0
- package/dist/render/gpu_picking.js.map +1 -0
- package/dist/render/rendergraph/device_pool_allocator.js +41 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
- package/dist/render/rendergraph/executor.js +146 -0
- package/dist/render/rendergraph/executor.js.map +1 -0
- package/dist/render/rendergraph/forward_plus_builder.js +414 -0
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +306 -0
- package/dist/render/rendergraph/rendergraph.js.map +1 -0
- package/dist/render/rendergraph/types.js +57 -0
- package/dist/render/rendergraph/types.js.map +1 -0
- package/dist/render/sky_motion_vector.js +85 -0
- package/dist/render/sky_motion_vector.js.map +1 -0
- package/dist/scene/mesh.js +15 -23
- package/dist/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +24 -23
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +62 -0
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +1 -1
- package/package.json +3 -3
- 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/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
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
import { Disposable, DWeakRef, releaseObject, retainObject } from '@zephyr3d/base';
|
|
2
|
-
import { PBPrimitiveType, matchVertexBuffer } from '@zephyr3d/device';
|
|
3
|
-
import { Application } from '../app/app.js';
|
|
4
|
-
import { RenderBundleWrapper } from './renderbundle_wrapper.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Primitive contains only the vertex and index data of a mesh
|
|
8
|
-
* @public
|
|
9
|
-
*/ class Primitive extends Disposable {
|
|
10
|
-
/** @internal */ static _registry = new Map();
|
|
11
|
-
/** @internal */ _vertexLayout;
|
|
12
|
-
/** @internal */ _vertexLayoutOptions;
|
|
13
|
-
/** @internal */ _primitiveType;
|
|
14
|
-
/** @internal */ _indexStart;
|
|
15
|
-
/** @internal */ _indexCount;
|
|
16
|
-
/** @internal */ _defaultIndexCount;
|
|
17
|
-
/** @internal */ _vertexLayoutDirty;
|
|
18
|
-
/** @internal */ static _nextId = 0;
|
|
19
|
-
/** @internal */ _id;
|
|
20
|
-
/** @internal */ _persistentId;
|
|
21
|
-
/** @internal */ _bbox;
|
|
22
|
-
/** @internal */ _bboxChangeCallback;
|
|
23
|
-
/** @internal */ _changeTag;
|
|
24
|
-
/**
|
|
25
|
-
* Creates an instance of a primitive
|
|
26
|
-
*/ constructor(){
|
|
27
|
-
super();
|
|
28
|
-
this._vertexLayout = null;
|
|
29
|
-
this._vertexLayoutOptions = {
|
|
30
|
-
vertexBuffers: []
|
|
31
|
-
};
|
|
32
|
-
this._primitiveType = 'triangle-list';
|
|
33
|
-
this._indexStart = 0;
|
|
34
|
-
this._indexCount = null;
|
|
35
|
-
this._defaultIndexCount = 0;
|
|
36
|
-
this._vertexLayoutDirty = false;
|
|
37
|
-
this._id = ++Primitive._nextId;
|
|
38
|
-
this._persistentId = crypto.randomUUID();
|
|
39
|
-
this._changeTag = 0;
|
|
40
|
-
this._bbox = null;
|
|
41
|
-
this._bboxChangeCallback = [];
|
|
42
|
-
Primitive._registry.set(this._persistentId, new DWeakRef(this));
|
|
43
|
-
}
|
|
44
|
-
/** @internal */ static findPrimitiveById(id) {
|
|
45
|
-
const m = this._registry.get(id);
|
|
46
|
-
if (m && !m.get()) {
|
|
47
|
-
this._registry.delete(id);
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return m ? m.get() : null;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Unique identifier of the primitive
|
|
54
|
-
* @internal
|
|
55
|
-
*/ get id() {
|
|
56
|
-
return this._id;
|
|
57
|
-
}
|
|
58
|
-
/** Primitive change tag */ get changeTag() {
|
|
59
|
-
return this._changeTag;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Persistent ID used in serialization
|
|
63
|
-
*/ get persistentId() {
|
|
64
|
-
return this._persistentId;
|
|
65
|
-
}
|
|
66
|
-
set persistentId(val) {
|
|
67
|
-
if (val !== this._persistentId) {
|
|
68
|
-
const m = Primitive._registry.get(this._persistentId);
|
|
69
|
-
if (!m || m.get() !== this) {
|
|
70
|
-
throw new Error('Registry primitive mismatch');
|
|
71
|
-
}
|
|
72
|
-
Primitive._registry.delete(this._persistentId);
|
|
73
|
-
this._persistentId = val;
|
|
74
|
-
Primitive._registry.set(this._persistentId, m);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
clone() {
|
|
78
|
-
const other = new Primitive();
|
|
79
|
-
other.copyFrom(this);
|
|
80
|
-
return other;
|
|
81
|
-
}
|
|
82
|
-
copyFrom(other) {
|
|
83
|
-
for (const info of other._vertexLayoutOptions.vertexBuffers){
|
|
84
|
-
this.setVertexBuffer(info.buffer, info.stepMode);
|
|
85
|
-
}
|
|
86
|
-
this.setIndexBuffer(other._vertexLayoutOptions.indexBuffer);
|
|
87
|
-
this.primitiveType = other.primitiveType;
|
|
88
|
-
this.indexStart = other.indexStart;
|
|
89
|
-
this.indexCount = other.indexCount;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Adds a callback function that will be called whenever the bounding box of the primitive changes.
|
|
93
|
-
* @param cb - The callback function
|
|
94
|
-
*
|
|
95
|
-
* @internal
|
|
96
|
-
*/ addBoundingboxChangeCallback(cb) {
|
|
97
|
-
if (cb) {
|
|
98
|
-
this._bboxChangeCallback.push(cb);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Removes a callback function for bounding box changing
|
|
103
|
-
* @param cb - The callback function to be removed
|
|
104
|
-
*/ removeBoundingboxChangeCallback(cb) {
|
|
105
|
-
const index = this._bboxChangeCallback.indexOf(cb);
|
|
106
|
-
if (index >= 0) {
|
|
107
|
-
this._bboxChangeCallback.splice(index, 1);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/** Primitive type */ get primitiveType() {
|
|
111
|
-
return this._primitiveType;
|
|
112
|
-
}
|
|
113
|
-
set primitiveType(type) {
|
|
114
|
-
if (type !== this._primitiveType) {
|
|
115
|
-
this._primitiveType = type;
|
|
116
|
-
this._changeTag++;
|
|
117
|
-
RenderBundleWrapper.primitiveChanged(this);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/** Start index for drawing */ get indexStart() {
|
|
121
|
-
return this._indexStart;
|
|
122
|
-
}
|
|
123
|
-
set indexStart(val) {
|
|
124
|
-
if (val !== this._indexStart) {
|
|
125
|
-
this._indexStart = val;
|
|
126
|
-
this._changeTag++;
|
|
127
|
-
RenderBundleWrapper.primitiveChanged(this);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/** The number of the indices or vertices to be drawn */ get indexCount() {
|
|
131
|
-
this._indexCount = this._indexCount ?? this.calcDefaultIndexCount();
|
|
132
|
-
return this._indexCount;
|
|
133
|
-
}
|
|
134
|
-
set indexCount(val) {
|
|
135
|
-
if (val !== this._indexCount) {
|
|
136
|
-
this._indexCount = val;
|
|
137
|
-
this._changeTag++;
|
|
138
|
-
RenderBundleWrapper.primitiveChanged(this);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Query total vertex count
|
|
143
|
-
* @returns Total vertex count, 0 if no position vertex buffer set
|
|
144
|
-
*/ getNumVertices() {
|
|
145
|
-
const posInfo = this.getVertexBufferInfo('position');
|
|
146
|
-
return posInfo?.buffer ? posInfo.buffer.byteLength / posInfo.stride >> 0 : 0;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Query total face count
|
|
150
|
-
* @returns Total face count
|
|
151
|
-
*/ getNumFaces() {
|
|
152
|
-
const ib = this.getIndexBuffer();
|
|
153
|
-
const count = ib ? ib.byteLength >> (ib.indexType.primitiveType === PBPrimitiveType.U16 ? 1 : 2) : this.getNumVertices();
|
|
154
|
-
switch(this.primitiveType){
|
|
155
|
-
case 'line-list':
|
|
156
|
-
return count >> 1;
|
|
157
|
-
case 'point-list':
|
|
158
|
-
return count;
|
|
159
|
-
case 'line-strip':
|
|
160
|
-
return count - 1;
|
|
161
|
-
case 'triangle-fan':
|
|
162
|
-
return count - 2;
|
|
163
|
-
case 'triangle-strip':
|
|
164
|
-
return count - 2;
|
|
165
|
-
case 'triangle-list':
|
|
166
|
-
return count / 3 >> 0;
|
|
167
|
-
default:
|
|
168
|
-
return 0;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Removes a vertex buffer from the primitive
|
|
173
|
-
* @param buffer - The vertex buffer to be removed
|
|
174
|
-
*/ removeVertexBuffer(semantic) {
|
|
175
|
-
for(let i = this._vertexLayoutOptions.vertexBuffers.length - 1; i >= 0; i--){
|
|
176
|
-
const info = this._vertexLayoutOptions.vertexBuffers[i];
|
|
177
|
-
if (matchVertexBuffer(info.buffer, semantic)) {
|
|
178
|
-
releaseObject(info.buffer);
|
|
179
|
-
this._vertexLayoutOptions.vertexBuffers.splice(i, 1);
|
|
180
|
-
this._vertexLayoutDirty = true;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
if (this._vertexLayoutDirty) {
|
|
184
|
-
this._changeTag++;
|
|
185
|
-
RenderBundleWrapper.primitiveChanged(this);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Gets the vertex buffer by a given semantic
|
|
190
|
-
* @param semantic - The semantic of the vertex buffer
|
|
191
|
-
* @returns The vertex buffer which semantic matches the given value
|
|
192
|
-
*/ getVertexBuffer(semantic) {
|
|
193
|
-
for (const info of this._vertexLayoutOptions.vertexBuffers){
|
|
194
|
-
if (info.buffer && matchVertexBuffer(info.buffer, semantic)) {
|
|
195
|
-
return info.buffer;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return null;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Gets the vertex buffer information by a given semantic
|
|
202
|
-
* @param semantic - The semantic of the vertex buffer
|
|
203
|
-
* @returns The vertex buffer information of the given semantic
|
|
204
|
-
*/ getVertexBufferInfo(semantic) {
|
|
205
|
-
this.checkVertexLayout();
|
|
206
|
-
return this._vertexLayout?.getVertexBufferInfo(semantic) ?? null;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Creates a vertex buffer from the given options and then adds it to the primitive
|
|
210
|
-
* @param format - Vertex format for the vertex buffer
|
|
211
|
-
* @param data - Contents of the vertex buffer
|
|
212
|
-
* @param stepMode - Step mode of the vertex buffer
|
|
213
|
-
* @returns The created vertex buffer
|
|
214
|
-
*/ createAndSetVertexBuffer(format, data, stepMode) {
|
|
215
|
-
const device = Application.instance.device;
|
|
216
|
-
const buffer = Array.isArray(format) ? device.createInterleavedVertexBuffer(format, data) : device.createVertexBuffer(format, data);
|
|
217
|
-
return this.setVertexBuffer(buffer, stepMode);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Adds a vertex buffer to the primitive
|
|
221
|
-
* @param buffer - The vertex buffer to be added
|
|
222
|
-
* @param stepMode - Step mode of the vertex buffer
|
|
223
|
-
* @returns The added vertex buffer
|
|
224
|
-
*/ setVertexBuffer(buffer, stepMode) {
|
|
225
|
-
retainObject(buffer);
|
|
226
|
-
this._vertexLayoutOptions.vertexBuffers.push({
|
|
227
|
-
buffer,
|
|
228
|
-
stepMode
|
|
229
|
-
});
|
|
230
|
-
this._vertexLayoutDirty = true;
|
|
231
|
-
this._changeTag++;
|
|
232
|
-
RenderBundleWrapper.primitiveChanged(this);
|
|
233
|
-
return buffer;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Creates an index buffer from the given options and then adds it to the prmitive
|
|
237
|
-
* @param data - Contents of the index buffer
|
|
238
|
-
* @param dynamic - true if the index buffer is dynamic
|
|
239
|
-
* @returns The created index buffer
|
|
240
|
-
*/ createAndSetIndexBuffer(data, dynamic) {
|
|
241
|
-
const device = Application.instance.device;
|
|
242
|
-
const buffer = device.createIndexBuffer(data, {
|
|
243
|
-
dynamic: !!dynamic,
|
|
244
|
-
managed: !dynamic
|
|
245
|
-
});
|
|
246
|
-
this.setIndexBuffer(buffer);
|
|
247
|
-
return buffer;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Adds an index buffer to the primitive
|
|
251
|
-
* @param buffer - The index buffer to be added
|
|
252
|
-
*/ setIndexBuffer(buffer) {
|
|
253
|
-
if (this._vertexLayoutOptions.indexBuffer !== buffer) {
|
|
254
|
-
retainObject(buffer);
|
|
255
|
-
releaseObject(this._vertexLayoutOptions.indexBuffer);
|
|
256
|
-
this._vertexLayoutOptions.indexBuffer = buffer;
|
|
257
|
-
this._vertexLayoutDirty = true;
|
|
258
|
-
this._changeTag++;
|
|
259
|
-
RenderBundleWrapper.primitiveChanged(this);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Gets the index buffer of the primitive
|
|
264
|
-
* @returns The index buffer of the primitive
|
|
265
|
-
*/ getIndexBuffer() {
|
|
266
|
-
return this._vertexLayoutOptions.indexBuffer;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Draw the prmitive
|
|
270
|
-
*/ draw() {
|
|
271
|
-
this.checkVertexLayout();
|
|
272
|
-
if (this.indexCount > 0) {
|
|
273
|
-
this._vertexLayout?.draw(this._primitiveType, this._indexStart, this.indexCount);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Draw multiple instances of the primitive
|
|
278
|
-
* @param numInstances - How many instances of the primitive should be drawn
|
|
279
|
-
*/ drawInstanced(numInstances) {
|
|
280
|
-
this.checkVertexLayout();
|
|
281
|
-
if (this.indexCount > 0) {
|
|
282
|
-
this._vertexLayout?.drawInstanced(this._primitiveType, this._indexStart, this.indexCount, numInstances);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Disposes the primitive
|
|
287
|
-
*
|
|
288
|
-
* @remarks
|
|
289
|
-
* The vertex buffers and index buffer will also be disposed.
|
|
290
|
-
* To prevent specific vertex buffer or index buffer to be disposed,
|
|
291
|
-
* call removeVertexBuffer() or setIndexBuffer(null) first.
|
|
292
|
-
*/ onDispose() {
|
|
293
|
-
super.onDispose();
|
|
294
|
-
const m = Primitive._registry.get(this.persistentId);
|
|
295
|
-
if (m?.get() === this) {
|
|
296
|
-
Primitive._registry.delete(this._persistentId);
|
|
297
|
-
m.dispose();
|
|
298
|
-
}
|
|
299
|
-
this._vertexLayout?.dispose();
|
|
300
|
-
this._vertexLayout = null;
|
|
301
|
-
if (this._vertexLayoutOptions) {
|
|
302
|
-
releaseObject(this._vertexLayoutOptions.indexBuffer);
|
|
303
|
-
for (const info of this._vertexLayoutOptions.vertexBuffers){
|
|
304
|
-
releaseObject(info.buffer);
|
|
305
|
-
}
|
|
306
|
-
this._vertexLayoutOptions = null;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
/*
|
|
310
|
-
createAABBTree(): AABBTree {
|
|
311
|
-
const indices = this.getIndexBuffer() ? this.getIndexBuffer().getData() : null;
|
|
312
|
-
const vertices = (this.getVertexBuffer(VERTEX_ATTRIB_POSITION)?.getData() as Float32Array) || null;
|
|
313
|
-
const aabbtree = new AABBTree();
|
|
314
|
-
aabbtree.buildFromPrimitives(vertices, indices, this._primitiveType);
|
|
315
|
-
return aabbtree;
|
|
316
|
-
}
|
|
317
|
-
*/ /**
|
|
318
|
-
* Gets the bounding volume of the primitive
|
|
319
|
-
* @returns The bounding volume of the primitive, or null if no bounding volume set
|
|
320
|
-
*/ getBoundingVolume() {
|
|
321
|
-
return this._bbox;
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Sets the bounding volume of the primitive
|
|
325
|
-
* @param bv - The bounding volume to be set
|
|
326
|
-
*/ setBoundingVolume(bv) {
|
|
327
|
-
if (bv !== this._bbox) {
|
|
328
|
-
this._bbox = bv;
|
|
329
|
-
for (const cb of this._bboxChangeCallback){
|
|
330
|
-
cb();
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Ray intersection test
|
|
336
|
-
* @param ray - Ray object used to do intersection test with this object
|
|
337
|
-
* @returns The distance from ray origin to the intersection point if ray intersects with this object, otherwise null
|
|
338
|
-
*/ raycast(ray) {
|
|
339
|
-
const aabb = this.getBoundingVolume()?.toAABB();
|
|
340
|
-
return aabb ? ray.bboxIntersectionTestEx(aabb) : null;
|
|
341
|
-
}
|
|
342
|
-
/** @internal */ checkVertexLayout() {
|
|
343
|
-
if (this._vertexLayoutDirty) {
|
|
344
|
-
this._vertexLayout?.dispose();
|
|
345
|
-
const device = Application.instance.device;
|
|
346
|
-
this._vertexLayout = device.createVertexLayout(this._vertexLayoutOptions);
|
|
347
|
-
this._vertexLayoutDirty = false;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
/** @internal */ calcDefaultIndexCount() {
|
|
351
|
-
const indexBuffer = this.getIndexBuffer();
|
|
352
|
-
if (indexBuffer) {
|
|
353
|
-
return Math.max(0, indexBuffer.length - this._indexStart);
|
|
354
|
-
}
|
|
355
|
-
const info = this.getVertexBufferInfo('position');
|
|
356
|
-
if (info) {
|
|
357
|
-
return Math.max(0, Math.floor((info.buffer.byteLength - info.drawOffset) / info.stride) - this._indexStart);
|
|
358
|
-
}
|
|
359
|
-
return 0;
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
export { Primitive };
|
|
364
|
-
//# sourceMappingURL=primitive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.js","sources":["../../../src/render/primitive.ts"],"sourcesContent":["import {\r\n Disposable,\r\n DWeakRef,\r\n releaseObject,\r\n retainObject,\r\n type Clonable,\r\n type Ray,\r\n type TypedArray\r\n} from '@zephyr3d/base';\r\nimport {\r\n type VertexStepMode,\r\n type VertexLayout,\r\n type VertexLayoutOptions,\r\n type PrimitiveType,\r\n type StructuredBuffer,\r\n type IndexBuffer,\r\n type VertexSemantic,\r\n type VertexAttribFormat,\r\n type VertexBufferInfo,\r\n PBPrimitiveType,\r\n matchVertexBuffer\r\n} from '@zephyr3d/device';\r\nimport { Application } from '../app/app';\r\nimport type { BoundingVolume } from '../utility/bounding_volume';\r\nimport { RenderBundleWrapper } from './renderbundle_wrapper';\r\n\r\n/**\r\n * Primitive contains only the vertex and index data of a mesh\r\n * @public\r\n */\r\nexport class Primitive extends Disposable implements Clonable<Primitive> {\r\n /** @internal */\r\n private static readonly _registry: Map<string, DWeakRef<Primitive>> = new Map();\r\n /** @internal */\r\n protected _vertexLayout: VertexLayout;\r\n /** @internal */\r\n protected _vertexLayoutOptions: VertexLayoutOptions;\r\n /** @internal */\r\n protected _primitiveType: PrimitiveType;\r\n /** @internal */\r\n protected _indexStart: number;\r\n /** @internal */\r\n protected _indexCount: number;\r\n /** @internal */\r\n protected _defaultIndexCount: number;\r\n /** @internal */\r\n protected _vertexLayoutDirty: boolean;\r\n /** @internal */\r\n private static _nextId = 0;\r\n /** @internal */\r\n protected _id: number;\r\n /** @internal */\r\n protected _persistentId: string;\r\n /** @internal */\r\n protected _bbox: BoundingVolume;\r\n /** @internal */\r\n protected _bboxChangeCallback: (() => void)[];\r\n /** @internal */\r\n private _changeTag: number;\r\n /**\r\n * Creates an instance of a primitive\r\n */\r\n constructor() {\r\n super();\r\n this._vertexLayout = null;\r\n this._vertexLayoutOptions = { vertexBuffers: [] };\r\n this._primitiveType = 'triangle-list';\r\n this._indexStart = 0;\r\n this._indexCount = null;\r\n this._defaultIndexCount = 0;\r\n this._vertexLayoutDirty = false;\r\n this._id = ++Primitive._nextId;\r\n this._persistentId = crypto.randomUUID();\r\n this._changeTag = 0;\r\n this._bbox = null;\r\n this._bboxChangeCallback = [];\r\n Primitive._registry.set(this._persistentId, new DWeakRef(this));\r\n }\r\n /** @internal */\r\n static findPrimitiveById(id: string) {\r\n const m = this._registry.get(id);\r\n if (m && !m.get()) {\r\n this._registry.delete(id);\r\n return null;\r\n }\r\n return m ? m.get() : null;\r\n }\r\n /**\r\n * Unique identifier of the primitive\r\n * @internal\r\n */\r\n get id(): number {\r\n return this._id;\r\n }\r\n /** Primitive change tag */\r\n get changeTag() {\r\n return this._changeTag;\r\n }\r\n /**\r\n * Persistent ID used in serialization\r\n */\r\n get persistentId() {\r\n return this._persistentId;\r\n }\r\n set persistentId(val) {\r\n if (val !== this._persistentId) {\r\n const m = Primitive._registry.get(this._persistentId);\r\n if (!m || m.get() !== this) {\r\n throw new Error('Registry primitive mismatch');\r\n }\r\n Primitive._registry.delete(this._persistentId);\r\n this._persistentId = val;\r\n Primitive._registry.set(this._persistentId, m);\r\n }\r\n }\r\n clone(): Primitive {\r\n const other = new Primitive();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n for (const info of other._vertexLayoutOptions.vertexBuffers) {\r\n this.setVertexBuffer(info.buffer, info.stepMode);\r\n }\r\n this.setIndexBuffer(other._vertexLayoutOptions.indexBuffer);\r\n this.primitiveType = other.primitiveType;\r\n this.indexStart = other.indexStart;\r\n this.indexCount = other.indexCount;\r\n }\r\n /**\r\n * Adds a callback function that will be called whenever the bounding box of the primitive changes.\r\n * @param cb - The callback function\r\n *\r\n * @internal\r\n */\r\n addBoundingboxChangeCallback(cb: () => void): void {\r\n if (cb) {\r\n this._bboxChangeCallback.push(cb);\r\n }\r\n }\r\n /**\r\n * Removes a callback function for bounding box changing\r\n * @param cb - The callback function to be removed\r\n */\r\n removeBoundingboxChangeCallback(cb: () => void) {\r\n const index = this._bboxChangeCallback.indexOf(cb);\r\n if (index >= 0) {\r\n this._bboxChangeCallback.splice(index, 1);\r\n }\r\n }\r\n /** Primitive type */\r\n get primitiveType() {\r\n return this._primitiveType;\r\n }\r\n set primitiveType(type) {\r\n if (type !== this._primitiveType) {\r\n this._primitiveType = type;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /** Start index for drawing */\r\n get indexStart() {\r\n return this._indexStart;\r\n }\r\n set indexStart(val) {\r\n if (val !== this._indexStart) {\r\n this._indexStart = val;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /** The number of the indices or vertices to be drawn */\r\n get indexCount() {\r\n this._indexCount = this._indexCount ?? this.calcDefaultIndexCount();\r\n return this._indexCount;\r\n }\r\n set indexCount(val) {\r\n if (val !== this._indexCount) {\r\n this._indexCount = val;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /**\r\n * Query total vertex count\r\n * @returns Total vertex count, 0 if no position vertex buffer set\r\n */\r\n getNumVertices(): number {\r\n const posInfo = this.getVertexBufferInfo('position');\r\n return posInfo?.buffer ? (posInfo.buffer.byteLength / posInfo.stride) >> 0 : 0;\r\n }\r\n /**\r\n * Query total face count\r\n * @returns Total face count\r\n */\r\n getNumFaces(): number {\r\n const ib = this.getIndexBuffer();\r\n const count = ib\r\n ? ib.byteLength >> (ib.indexType.primitiveType === PBPrimitiveType.U16 ? 1 : 2)\r\n : this.getNumVertices();\r\n switch (this.primitiveType) {\r\n case 'line-list':\r\n return count >> 1;\r\n case 'point-list':\r\n return count;\r\n case 'line-strip':\r\n return count - 1;\r\n case 'triangle-fan':\r\n return count - 2;\r\n case 'triangle-strip':\r\n return count - 2;\r\n case 'triangle-list':\r\n return (count / 3) >> 0;\r\n default:\r\n return 0;\r\n }\r\n }\r\n /**\r\n * Removes a vertex buffer from the primitive\r\n * @param buffer - The vertex buffer to be removed\r\n */\r\n removeVertexBuffer(semantic: VertexSemantic): void {\r\n for (let i = this._vertexLayoutOptions.vertexBuffers.length - 1; i >= 0; i--) {\r\n const info = this._vertexLayoutOptions.vertexBuffers[i];\r\n if (matchVertexBuffer(info.buffer, semantic)) {\r\n releaseObject(info.buffer);\r\n this._vertexLayoutOptions.vertexBuffers.splice(i, 1);\r\n this._vertexLayoutDirty = true;\r\n }\r\n }\r\n if (this._vertexLayoutDirty) {\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /**\r\n * Gets the vertex buffer by a given semantic\r\n * @param semantic - The semantic of the vertex buffer\r\n * @returns The vertex buffer which semantic matches the given value\r\n */\r\n getVertexBuffer(semantic: VertexSemantic): StructuredBuffer {\r\n for (const info of this._vertexLayoutOptions.vertexBuffers) {\r\n if (info.buffer && matchVertexBuffer(info.buffer, semantic)) {\r\n return info.buffer;\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Gets the vertex buffer information by a given semantic\r\n * @param semantic - The semantic of the vertex buffer\r\n * @returns The vertex buffer information of the given semantic\r\n */\r\n getVertexBufferInfo(semantic: VertexSemantic): VertexBufferInfo {\r\n this.checkVertexLayout();\r\n return this._vertexLayout?.getVertexBufferInfo(semantic) ?? null;\r\n }\r\n /**\r\n * Creates a vertex buffer from the given options and then adds it to the primitive\r\n * @param format - Vertex format for the vertex buffer\r\n * @param data - Contents of the vertex buffer\r\n * @param stepMode - Step mode of the vertex buffer\r\n * @returns The created vertex buffer\r\n */\r\n createAndSetVertexBuffer(\r\n format: VertexAttribFormat[] | VertexAttribFormat,\r\n data: TypedArray,\r\n stepMode?: VertexStepMode\r\n ): StructuredBuffer {\r\n const device = Application.instance.device;\r\n const buffer = Array.isArray(format)\r\n ? device.createInterleavedVertexBuffer(format, data)\r\n : device.createVertexBuffer(format, data);\r\n return this.setVertexBuffer(buffer, stepMode);\r\n }\r\n /**\r\n * Adds a vertex buffer to the primitive\r\n * @param buffer - The vertex buffer to be added\r\n * @param stepMode - Step mode of the vertex buffer\r\n * @returns The added vertex buffer\r\n */\r\n setVertexBuffer(buffer: StructuredBuffer, stepMode?: VertexStepMode) {\r\n retainObject(buffer);\r\n this._vertexLayoutOptions.vertexBuffers.push({\r\n buffer,\r\n stepMode\r\n });\r\n this._vertexLayoutDirty = true;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n return buffer;\r\n }\r\n /**\r\n * Creates an index buffer from the given options and then adds it to the prmitive\r\n * @param data - Contents of the index buffer\r\n * @param dynamic - true if the index buffer is dynamic\r\n * @returns The created index buffer\r\n */\r\n createAndSetIndexBuffer(\r\n data: Uint16Array<ArrayBuffer> | Uint32Array<ArrayBuffer>,\r\n dynamic?: boolean\r\n ): IndexBuffer {\r\n const device = Application.instance.device;\r\n const buffer = device.createIndexBuffer(data, {\r\n dynamic: !!dynamic,\r\n managed: !dynamic\r\n });\r\n this.setIndexBuffer(buffer);\r\n return buffer;\r\n }\r\n /**\r\n * Adds an index buffer to the primitive\r\n * @param buffer - The index buffer to be added\r\n */\r\n setIndexBuffer(buffer: IndexBuffer): void {\r\n if (this._vertexLayoutOptions.indexBuffer !== buffer) {\r\n retainObject(buffer);\r\n releaseObject(this._vertexLayoutOptions.indexBuffer);\r\n this._vertexLayoutOptions.indexBuffer = buffer;\r\n this._vertexLayoutDirty = true;\r\n this._changeTag++;\r\n RenderBundleWrapper.primitiveChanged(this);\r\n }\r\n }\r\n /**\r\n * Gets the index buffer of the primitive\r\n * @returns The index buffer of the primitive\r\n */\r\n getIndexBuffer(): IndexBuffer {\r\n return this._vertexLayoutOptions.indexBuffer;\r\n }\r\n /**\r\n * Draw the prmitive\r\n */\r\n draw() {\r\n this.checkVertexLayout();\r\n if (this.indexCount > 0) {\r\n this._vertexLayout?.draw(this._primitiveType, this._indexStart, this.indexCount);\r\n }\r\n }\r\n /**\r\n * Draw multiple instances of the primitive\r\n * @param numInstances - How many instances of the primitive should be drawn\r\n */\r\n drawInstanced(numInstances: number): void {\r\n this.checkVertexLayout();\r\n if (this.indexCount > 0) {\r\n this._vertexLayout?.drawInstanced(this._primitiveType, this._indexStart, this.indexCount, numInstances);\r\n }\r\n }\r\n /**\r\n * Disposes the primitive\r\n *\r\n * @remarks\r\n * The vertex buffers and index buffer will also be disposed.\r\n * To prevent specific vertex buffer or index buffer to be disposed,\r\n * call removeVertexBuffer() or setIndexBuffer(null) first.\r\n */\r\n protected onDispose() {\r\n super.onDispose();\r\n const m = Primitive._registry.get(this.persistentId);\r\n if (m?.get() === this) {\r\n Primitive._registry.delete(this._persistentId);\r\n m.dispose();\r\n }\r\n this._vertexLayout?.dispose();\r\n this._vertexLayout = null;\r\n if (this._vertexLayoutOptions) {\r\n releaseObject(this._vertexLayoutOptions.indexBuffer);\r\n for (const info of this._vertexLayoutOptions.vertexBuffers) {\r\n releaseObject(info.buffer);\r\n }\r\n this._vertexLayoutOptions = null;\r\n }\r\n }\r\n /*\r\n createAABBTree(): AABBTree {\r\n const indices = this.getIndexBuffer() ? this.getIndexBuffer().getData() : null;\r\n const vertices = (this.getVertexBuffer(VERTEX_ATTRIB_POSITION)?.getData() as Float32Array) || null;\r\n const aabbtree = new AABBTree();\r\n aabbtree.buildFromPrimitives(vertices, indices, this._primitiveType);\r\n return aabbtree;\r\n }\r\n */\r\n /**\r\n * Gets the bounding volume of the primitive\r\n * @returns The bounding volume of the primitive, or null if no bounding volume set\r\n */\r\n getBoundingVolume(): BoundingVolume {\r\n return this._bbox;\r\n }\r\n /**\r\n * Sets the bounding volume of the primitive\r\n * @param bv - The bounding volume to be set\r\n */\r\n setBoundingVolume(bv: BoundingVolume): void {\r\n if (bv !== this._bbox) {\r\n this._bbox = bv;\r\n for (const cb of this._bboxChangeCallback) {\r\n cb();\r\n }\r\n }\r\n }\r\n /**\r\n * Ray intersection test\r\n * @param ray - Ray object used to do intersection test with this object\r\n * @returns The distance from ray origin to the intersection point if ray intersects with this object, otherwise null\r\n */\r\n raycast(ray: Ray): number {\r\n const aabb = this.getBoundingVolume()?.toAABB();\r\n return aabb ? ray.bboxIntersectionTestEx(aabb) : null;\r\n }\r\n /** @internal */\r\n private checkVertexLayout() {\r\n if (this._vertexLayoutDirty) {\r\n this._vertexLayout?.dispose();\r\n const device = Application.instance.device;\r\n this._vertexLayout = device.createVertexLayout(this._vertexLayoutOptions);\r\n this._vertexLayoutDirty = false;\r\n }\r\n }\r\n /** @internal */\r\n private calcDefaultIndexCount(): number {\r\n const indexBuffer = this.getIndexBuffer();\r\n if (indexBuffer) {\r\n return Math.max(0, indexBuffer.length - this._indexStart);\r\n }\r\n const info = this.getVertexBufferInfo('position');\r\n if (info) {\r\n return Math.max(\r\n 0,\r\n Math.floor((info.buffer.byteLength - info.drawOffset) / info.stride) - this._indexStart\r\n );\r\n }\r\n return 0;\r\n }\r\n}\r\n"],"names":["Primitive","Disposable","_registry","Map","_nextId","_vertexLayout","_vertexLayoutOptions","vertexBuffers","_primitiveType","_indexStart","_indexCount","_defaultIndexCount","_vertexLayoutDirty","_id","_persistentId","crypto","randomUUID","_changeTag","_bbox","_bboxChangeCallback","set","DWeakRef","findPrimitiveById","id","m","get","delete","changeTag","persistentId","val","Error","clone","other","copyFrom","info","setVertexBuffer","buffer","stepMode","setIndexBuffer","indexBuffer","primitiveType","indexStart","indexCount","addBoundingboxChangeCallback","cb","push","removeBoundingboxChangeCallback","index","indexOf","splice","type","RenderBundleWrapper","primitiveChanged","calcDefaultIndexCount","getNumVertices","posInfo","getVertexBufferInfo","byteLength","stride","getNumFaces","ib","getIndexBuffer","count","indexType","PBPrimitiveType","U16","removeVertexBuffer","semantic","i","length","matchVertexBuffer","releaseObject","getVertexBuffer","checkVertexLayout","createAndSetVertexBuffer","format","data","device","Application","instance","Array","isArray","createInterleavedVertexBuffer","createVertexBuffer","retainObject","createAndSetIndexBuffer","dynamic","createIndexBuffer","managed","draw","drawInstanced","numInstances","onDispose","dispose","getBoundingVolume","setBoundingVolume","bv","raycast","ray","aabb","toAABB","bboxIntersectionTestEx","createVertexLayout","Math","max","floor","drawOffset"],"mappings":"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"}
|