@zephyr3d/scene 0.9.26 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -27
- package/dist/animation/animation_bank.js +634 -0
- package/dist/animation/animation_bank.js.map +1 -0
- package/dist/animation/animation_bank_gpu.js +256 -0
- package/dist/animation/animation_bank_gpu.js.map +1 -0
- package/dist/animation/animationset.js +146 -30
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_component.js +406 -0
- package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
- package/dist/animation/cloth/gpu_cloth_system.js +332 -202
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
- package/dist/animation/gpu_animation_driver.js +289 -0
- package/dist/animation/gpu_animation_driver.js.map +1 -0
- package/dist/animation/joint_dynamics/collision.js +112 -1
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +6 -0
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +50 -12
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/skeleton.js +300 -56
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skin_palette_atlas.js +252 -0
- package/dist/animation/skin_palette_atlas.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +298 -38
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_chain.js +2 -0
- package/dist/animation/spring/spring_chain.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +159 -21
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_particle.js +1 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_solver.js +173 -0
- package/dist/animation/spring/spring_solver.js.map +1 -0
- package/dist/animation/spring/spring_system.js +249 -24
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +32 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/app.js +26 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +86 -15
- package/dist/app/engine.js.map +1 -1
- package/dist/app/gamepad.js +191 -0
- package/dist/app/gamepad.js.map +1 -0
- package/dist/app/inputactions.js +271 -0
- package/dist/app/inputactions.js.map +1 -0
- package/dist/app/inputmgr.js +331 -22
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/loading.js +138 -0
- package/dist/app/loading.js.map +1 -0
- package/dist/app/pipelinecache.js +209 -0
- package/dist/app/pipelinecache.js.map +1 -0
- package/dist/app/runtimescript.js +25 -0
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/scriptingsystem.js +54 -0
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +7 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/asset_manifest.js +59 -0
- package/dist/asset/asset_manifest.js.map +1 -0
- package/dist/asset/asset_preload.js +258 -0
- package/dist/asset/asset_preload.js.map +1 -0
- package/dist/asset/assetmanager.js +117 -65
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/dist/asset/loaders/ktx2/basis_location.js +17 -0
- package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
- package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
- package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
- package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
- package/dist/asset/mesh_lod_builder.js +104 -0
- package/dist/asset/mesh_lod_builder.js.map +1 -0
- package/dist/asset/mesh_settings.js +111 -0
- package/dist/asset/mesh_settings.js.map +1 -0
- package/dist/asset/meshopt_decoder.js +18 -0
- package/dist/asset/meshopt_decoder.js.map +1 -0
- package/dist/asset/meshopt_simplifier.js +26 -0
- package/dist/asset/meshopt_simplifier.js.map +1 -0
- package/dist/asset/model.js +177 -3
- package/dist/asset/model.js.map +1 -1
- package/dist/asset/texture_settings.js +231 -0
- package/dist/asset/texture_settings.js.map +1 -0
- package/dist/asset/zmsh_binary.js +131 -0
- package/dist/asset/zmsh_binary.js.map +1 -0
- package/dist/asset/zsdf_binary.js +111 -0
- package/dist/asset/zsdf_binary.js.map +1 -0
- package/dist/blitter/bilateralblur.js +1 -2
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/gaussianblur.js +1 -6
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +31 -10
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +178 -200
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/follow.js +342 -0
- package/dist/camera/follow.js.map +1 -0
- package/dist/camera/fps.js +9 -7
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +46 -19
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +30475 -19865
- package/dist/index.js +67 -12
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +3 -0
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/eye.js +1 -1
- package/dist/material/eye.js.map +1 -1
- package/dist/material/hair.js +2 -3
- package/dist/material/hair.js.map +1 -1
- package/dist/material/hairstrand.js +235 -235
- package/dist/material/hairstrand.js.map +1 -1
- package/dist/material/lambert.js +4 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +362 -300
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +118 -45
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +223 -83
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +31 -206
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +1 -1
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrmr.js +3 -0
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +3 -0
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/sdf_debug.js +78 -0
- package/dist/material/sdf_debug.js.map +1 -0
- package/dist/material/shader/helper.js +733 -190
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +204 -43
- package/dist/material/shader/terrain_blend.js.map +1 -1
- package/dist/material/skin.js +331 -297
- package/dist/material/skin.js.map +1 -1
- package/dist/material/skinprofile.js +1058 -0
- package/dist/material/skinprofile.js.map +1 -0
- package/dist/material/sss.js +353 -0
- package/dist/material/sss.js.map +1 -0
- package/dist/material/sss_kernel.js +265 -0
- package/dist/material/sss_kernel.js.map +1 -0
- package/dist/material/sssprofile.js +879 -0
- package/dist/material/sssprofile.js.map +1 -0
- package/dist/material/subsurfaceprofile.js +4 -8
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/terrain-cm.js +464 -188
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js +3 -0
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js +2009 -201
- package/dist/material/water.js.map +1 -1
- package/dist/node_modules/meshoptimizer/LICENSE +21 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
- package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
- package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
- package/dist/physics/character.js +226 -0
- package/dist/physics/character.js.map +1 -0
- package/dist/physics/collider.js +209 -0
- package/dist/physics/collider.js.map +1 -0
- package/dist/physics/events.js +79 -0
- package/dist/physics/events.js.map +1 -0
- package/dist/physics/joint.js +272 -0
- package/dist/physics/joint.js.map +1 -0
- package/dist/physics/node_physics.js +234 -0
- package/dist/physics/node_physics.js.map +1 -0
- package/dist/physics/part.js +91 -0
- package/dist/physics/part.js.map +1 -0
- package/dist/physics/rigid_body.js +379 -0
- package/dist/physics/rigid_body.js.map +1 -0
- package/dist/physics/vehicle.js +335 -0
- package/dist/physics/vehicle.js.map +1 -0
- package/dist/physics/world.js +25 -0
- package/dist/physics/world.js.map +1 -0
- package/dist/posteffect/bloom.js +49 -14
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/motionblur.js +668 -63
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js +12 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/postsss.js +572 -0
- package/dist/posteffect/postsss.js.map +1 -0
- package/dist/posteffect/sao.js +48 -50
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +605 -355
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +91 -162
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -11
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +34 -15
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +1 -0
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/abuffer_oit.js +40 -39
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +328 -62
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +958 -224
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +26 -5
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/debug_views.js +37 -0
- package/dist/render/debug_views.js.map +1 -0
- package/dist/render/depthpass.js +5 -1
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +53 -6
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +53 -53
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +196 -113
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +8 -13
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +268 -136
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +113 -28
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/gi/probe_volume.js +1334 -0
- package/dist/render/gi/probe_volume.js.map +1 -0
- package/dist/render/gi/scene_gi.js +282 -0
- package/dist/render/gi/scene_gi.js.map +1 -0
- package/dist/render/gi/voxel_atlas.js +198 -0
- package/dist/render/gi/voxel_atlas.js.map +1 -0
- package/dist/render/gi/voxel_lighting.js +652 -0
- package/dist/render/gi/voxel_lighting.js.map +1 -0
- package/dist/render/gi/voxel_scene.js +642 -0
- package/dist/render/gi/voxel_scene.js.map +1 -0
- package/dist/render/gi/voxelize_pass.js +223 -0
- package/dist/render/gi/voxelize_pass.js.map +1 -0
- package/dist/render/globalbindgroup_allocator.js +3 -2
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/gpu_picking.js +9 -36
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +80 -22
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/instance_culling.js +499 -0
- package/dist/render/instance_culling.js.map +1 -0
- package/dist/render/lightpass.js +23 -9
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/lod.js +46 -0
- package/dist/render/lod.js.map +1 -0
- package/dist/render/oit.js +11 -11
- package/dist/render/oit.js.map +1 -1
- package/dist/render/primitive.js +301 -9
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/primitive_readback.js +209 -0
- package/dist/render/primitive_readback.js.map +1 -0
- package/dist/render/render_queue.js +198 -11
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +14 -7
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +15 -1
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/executor.js +136 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +585 -59
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +8 -1
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +31 -2
- package/dist/render/rendergraph/scene_render_context.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +28 -5
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/sdf/box_allocator.js +98 -0
- package/dist/render/sdf/box_allocator.js.map +1 -0
- package/dist/render/sdf/global_sdf.js +865 -0
- package/dist/render/sdf/global_sdf.js.map +1 -0
- package/dist/render/sdf/scene_sdf.js +562 -0
- package/dist/render/sdf/scene_sdf.js.map +1 -0
- package/dist/render/sdf/sdf_atlas.js +227 -0
- package/dist/render/sdf/sdf_atlas.js.map +1 -0
- package/dist/render/sdf/sdf_programs.js +42 -0
- package/dist/render/sdf/sdf_programs.js.map +1 -0
- package/dist/render/sdf/sdf_view.js +199 -0
- package/dist/render/sdf/sdf_view.js.map +1 -0
- package/dist/render/sdf/waterline.js +610 -0
- package/dist/render/sdf/waterline.js.map +1 -0
- package/dist/render/shadow_mask_pass.js +142 -25
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/shore_wave_generator.js +1193 -0
- package/dist/render/shore_wave_generator.js.map +1 -0
- package/dist/render/sky.js +516 -86
- package/dist/render/sky.js.map +1 -1
- package/dist/render/transmission_thickness_pass.js +477 -0
- package/dist/render/transmission_thickness_pass.js.map +1 -0
- package/dist/render/underwater.js +524 -0
- package/dist/render/underwater.js.map +1 -0
- package/dist/render/virtualtexture/virtual_texture.js +1214 -0
- package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_common.js +472 -0
- package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
- package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
- package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
- package/dist/render/volumetric_cloud/debug_view.js +131 -0
- package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
- package/dist/render/volumetric_cloud/resources.js +380 -0
- package/dist/render/volumetric_cloud/resources.js.map +1 -0
- package/dist/render/volumetric_cloud/sky_cache.js +380 -0
- package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
- package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
- package/dist/render/water_caustics.js +1195 -0
- package/dist/render/water_caustics.js.map +1 -0
- package/dist/render/water_foam.js +627 -0
- package/dist/render/water_foam.js.map +1 -0
- package/dist/render/water_interaction.js +1795 -0
- package/dist/render/water_interaction.js.map +1 -0
- package/dist/render/weightedblended_oit.js +36 -36
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +9 -4
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +108 -12
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +28 -7
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/foliage.js +1020 -0
- package/dist/scene/foliage.js.map +1 -0
- package/dist/scene/foliage_buckets.js +147 -0
- package/dist/scene/foliage_buckets.js.map +1 -0
- package/dist/scene/foliage_mask.js +358 -0
- package/dist/scene/foliage_mask.js.map +1 -0
- package/dist/scene/hair.js +15 -4
- package/dist/scene/hair.js.map +1 -1
- package/dist/scene/light.js +179 -13
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +327 -45
- 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 +9 -3
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +9 -3
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +8 -2
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/physics_settings.js +157 -0
- package/dist/scene/physics_settings.js.map +1 -0
- package/dist/scene/scene.js +190 -44
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +147 -6
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
- package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +881 -42
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grass_gpu.js +929 -0
- package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
- package/dist/scene/terrain-cm/grassmaterial.js +180 -9
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +465 -36
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
- package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
- package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
- package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
- package/dist/scene/update_queue.js +54 -0
- package/dist/scene/update_queue.js.map +1 -0
- package/dist/scene/water.js +997 -96
- package/dist/scene/water.js.map +1 -1
- package/dist/scene/water_surface_sampler.js +324 -0
- package/dist/scene/water_surface_sampler.js.map +1 -0
- package/dist/scene/wind.js +317 -0
- package/dist/scene/wind.js.map +1 -0
- package/dist/shaders/atmosphere.js +388 -166
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +100 -32
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/gi.js +365 -0
- package/dist/shaders/gi.js.map +1 -0
- package/dist/shaders/ltc_rect.js +202 -0
- package/dist/shaders/ltc_rect.js.map +1 -0
- package/dist/shaders/misc.js +1 -10
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +5 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/probes.js +309 -0
- package/dist/shaders/probes.js.map +1 -0
- package/dist/shaders/sdf.js +537 -0
- package/dist/shaders/sdf.js.map +1 -0
- package/dist/shaders/shadow.js +104 -70
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/skin_brdf.js +243 -0
- package/dist/shaders/skin_brdf.js.map +1 -0
- package/dist/shaders/ssr.js +6 -159
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js +38 -27
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js +40 -87
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +42 -0
- package/dist/shaders/water_medium.js.map +1 -0
- package/dist/shadow/dom.js +110 -19
- package/dist/shadow/dom.js.map +1 -1
- package/dist/shadow/esm.js +3 -3
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -48
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +15 -53
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +34 -9
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +3 -8
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +87 -49
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +93 -53
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +18 -72
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +3 -3
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/shape.js +44 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/utility/buoyancy.js +287 -0
- package/dist/utility/buoyancy.js.map +1 -0
- package/dist/utility/physical.js +10 -1
- package/dist/utility/physical.js.map +1 -1
- package/dist/utility/pmrem.js +17 -43
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/sdf/bake.js +435 -0
- package/dist/utility/sdf/bake.js.map +1 -0
- package/dist/utility/sdf/bvh.js +576 -0
- package/dist/utility/sdf/bvh.js.map +1 -0
- package/dist/utility/serialization/manager.js +36 -6
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +77 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +11 -4
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +140 -279
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/cloth.js +25 -0
- package/dist/utility/serialization/scene/cloth.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +14 -6
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/foliage.js +821 -0
- package/dist/utility/serialization/scene/foliage.js.map +1 -0
- package/dist/utility/serialization/scene/hair.js +11 -4
- package/dist/utility/serialization/scene/hair.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +115 -7
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +388 -220
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +69 -4
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +140 -5
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/node_physics.js +1318 -0
- package/dist/utility/serialization/scene/node_physics.js.map +1 -0
- package/dist/utility/serialization/scene/particle.js +11 -4
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/physics.js +120 -0
- package/dist/utility/serialization/scene/physics.js.map +1 -0
- package/dist/utility/serialization/scene/primitive.js +124 -10
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +1687 -51
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +11 -4
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +163 -33
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +11 -4
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +2473 -114
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +97 -109
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/foam.js +170 -0
- package/dist/utility/textures/foam.js.map +1 -0
- package/dist/utility/textures/ggxlut.js +17 -43
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/ltcdata.js +4 -4
- package/dist/utility/textures/ltcdata.js.map +1 -1
- package/dist/utility/textures/ltclut.js +16 -6
- package/dist/utility/textures/ltclut.js.map +1 -1
- package/dist/utility/unsupported.js +24 -0
- package/dist/utility/unsupported.js.map +1 -0
- package/dist/values.js +13 -1
- package/dist/values.js.map +1 -1
- package/package.json +25 -12
- package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
- package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
- package/src/asset/meshoptimizer/LICENSE +21 -0
package/dist/asset/model.js
CHANGED
|
@@ -2,6 +2,10 @@ import { Vector3, Quaternion, Matrix4x4, Disposable, PathUtils, uint8ArrayToBase
|
|
|
2
2
|
import { getVertexFormatComponentCount } from '@zephyr3d/device';
|
|
3
3
|
import { Mesh } from '../scene/mesh.js';
|
|
4
4
|
import { BoundingBox } from '../utility/bounding_volume.js';
|
|
5
|
+
import { defaultMeshImportSettings, writeMeshImportSettings } from './mesh_settings.js';
|
|
6
|
+
import { buildLodChain } from './mesh_lod_builder.js';
|
|
7
|
+
import { getMeshoptSimplifier } from './meshopt_simplifier.js';
|
|
8
|
+
import { getAssetMetaPath, inferTextureUsageFromPath, writeTextureImportSettings, defaultTextureImportSettings, inferTextureUsageFromSlot, mergeTextureUsage } from './texture_settings.js';
|
|
5
9
|
import { SceneNode, setSceneMeshAssetBinding } from '../scene/scene_node.js';
|
|
6
10
|
import { SkeletonRig, SkinBinding } from '../animation/skeleton.js';
|
|
7
11
|
import '../animation/animationset.js';
|
|
@@ -14,6 +18,7 @@ import { MorphTargetGroupTrack } from '../animation/morphtargetgrouptrack.js';
|
|
|
14
18
|
import { FixedGeometryCacheTrack } from '../animation/fixed_geometry_cache_track.js';
|
|
15
19
|
import { getDevice } from '../app/api.js';
|
|
16
20
|
import { PCAGeometryCacheTrack } from '../animation/pca_geometry_cache_track.js';
|
|
21
|
+
import '../animation/animation_bank.js';
|
|
17
22
|
import '../animation/joint_dynamics/collision.js';
|
|
18
23
|
import '../animation/joint_dynamics/solver.js';
|
|
19
24
|
import { createTransformAccess, JointDynamicsSystem } from '../animation/joint_dynamics/joint_dynamics_system.js';
|
|
@@ -208,6 +213,7 @@ function getAssetNodePath(node) {
|
|
|
208
213
|
/** Joints of the skeleton */ joints;
|
|
209
214
|
/** Inverse of the binding matrices of the joints */ inverseBindMatrices;
|
|
210
215
|
/** Binding pose matrices of the joints */ bindPose;
|
|
216
|
+
/** Optional humanoid retarget reference pose, ordered like `joints`. */ retargetPose;
|
|
211
217
|
/** Explicit humanoid joint mapping, when supplied by the source asset. */ humanoidJointMapping;
|
|
212
218
|
/**
|
|
213
219
|
* Creates an instance of AssetSkeleton
|
|
@@ -219,6 +225,7 @@ function getAssetNodePath(node) {
|
|
|
219
225
|
this.joints = [];
|
|
220
226
|
this.inverseBindMatrices = [];
|
|
221
227
|
this.bindPose = [];
|
|
228
|
+
this.retargetPose = null;
|
|
222
229
|
this.humanoidJointMapping = null;
|
|
223
230
|
}
|
|
224
231
|
/**
|
|
@@ -341,6 +348,9 @@ function getAssetNodePath(node) {
|
|
|
341
348
|
set activeScene(val) {
|
|
342
349
|
this._activeScene = val;
|
|
343
350
|
}
|
|
351
|
+
/** Number of image slots the model references */ get imageCount() {
|
|
352
|
+
return this._imageList.length;
|
|
353
|
+
}
|
|
344
354
|
getImage(index) {
|
|
345
355
|
return this._imageList[index];
|
|
346
356
|
}
|
|
@@ -356,6 +366,101 @@ function getAssetNodePath(node) {
|
|
|
356
366
|
addPrimitive(prim) {
|
|
357
367
|
this._primitiveList.push(prim);
|
|
358
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* Generates levels of detail for the triangle meshes of the model, as the editor does for
|
|
371
|
+
* imported meshes: every level is simplified from the source to a fraction of its triangles,
|
|
372
|
+
* levels stop before one would have fewer than `lodMinTriangles`, and the switch sizes follow
|
|
373
|
+
* the simplification error. Levels only add indices: vertices, skins and morph targets are
|
|
374
|
+
* unchanged.
|
|
375
|
+
*
|
|
376
|
+
* Call it after importing and before creating scene nodes from the model; meshes that already
|
|
377
|
+
* have levels of detail are left as they are.
|
|
378
|
+
*
|
|
379
|
+
* @param settings - Generation settings, by default those of {@link defaultMeshImportSettings}
|
|
380
|
+
* @param simplifier - Simplifier to use, meshoptimizer's by default (see {@link getMeshoptSimplifier})
|
|
381
|
+
* @returns The number of meshes that got levels of detail
|
|
382
|
+
*/ async generateLods(settings, simplifier) {
|
|
383
|
+
if (this._primitiveMap.size > 0) {
|
|
384
|
+
console.warn('SharedModel.generateLods(): scene nodes were already created from this model, skipped');
|
|
385
|
+
return 0;
|
|
386
|
+
}
|
|
387
|
+
const defaults = defaultMeshImportSettings();
|
|
388
|
+
const lodSettings = {
|
|
389
|
+
lodMinTriangles: settings?.lodMinTriangles ?? defaults.lodMinTriangles,
|
|
390
|
+
lodReduction: settings?.lodReduction ?? defaults.lodReduction,
|
|
391
|
+
lodPixelError: settings?.lodPixelError ?? defaults.lodPixelError
|
|
392
|
+
};
|
|
393
|
+
simplifier ??= await getMeshoptSimplifier();
|
|
394
|
+
let count = 0;
|
|
395
|
+
for (const info of this._primitiveList){
|
|
396
|
+
if (SharedModel.generatePrimitiveLods(info, simplifier, lodSettings)) {
|
|
397
|
+
count++;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
return count;
|
|
401
|
+
}
|
|
402
|
+
/** Gives one primitive its levels of detail, false if it gets none */ static generatePrimitiveLods(info, simplifier, settings) {
|
|
403
|
+
if (info.type !== 'triangle-list' || (info.lods?.length ?? 0) > 0) {
|
|
404
|
+
return false;
|
|
405
|
+
}
|
|
406
|
+
const positions = SharedModel.readVec3(info, 'position');
|
|
407
|
+
if (!positions) {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
const vertexCount = positions.length / 3;
|
|
411
|
+
const indexCount = info.indexCount;
|
|
412
|
+
let indices;
|
|
413
|
+
if (info.indices) {
|
|
414
|
+
indices = Uint32Array.from(info.indices.subarray(0, indexCount));
|
|
415
|
+
} else {
|
|
416
|
+
// Not indexed: the vertices in order
|
|
417
|
+
indices = new Uint32Array(indexCount);
|
|
418
|
+
for(let i = 0; i < indexCount; i++){
|
|
419
|
+
indices[i] = i;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
if (indices.length < 3 || indices.length % 3 !== 0) {
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
// The sphere the runtime measures the projected size with, around the bounds box
|
|
426
|
+
const dx = (info.boxMax.x - info.boxMin.x) * 0.5;
|
|
427
|
+
const dy = (info.boxMax.y - info.boxMin.y) * 0.5;
|
|
428
|
+
const dz = (info.boxMax.z - info.boxMin.z) * 0.5;
|
|
429
|
+
const chain = buildLodChain(simplifier, indices, positions, SharedModel.readVec3(info, 'normal'), Math.sqrt(dx * dx + dy * dy + dz * dz), settings);
|
|
430
|
+
if (chain.levels.length <= 1) {
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
info.indices = vertexCount <= 0x10000 ? Uint16Array.from(chain.indices) : chain.indices;
|
|
434
|
+
info.indexCount = chain.levels[0].indexCount;
|
|
435
|
+
info.lods = chain.levels.slice(1).map(({ indexStart, indexCount, screenSize, hysteresis })=>({
|
|
436
|
+
indexStart,
|
|
437
|
+
indexCount,
|
|
438
|
+
screenSize,
|
|
439
|
+
hysteresis
|
|
440
|
+
}));
|
|
441
|
+
return true;
|
|
442
|
+
}
|
|
443
|
+
/** A float vertex attribute as 3 floats per vertex, null if missing or not float */ static readVec3(info, semantic) {
|
|
444
|
+
const attrib = info.vertices[semantic];
|
|
445
|
+
if (!attrib || !(attrib.data instanceof Float32Array)) {
|
|
446
|
+
return null;
|
|
447
|
+
}
|
|
448
|
+
const components = getVertexFormatComponentCount(attrib.format);
|
|
449
|
+
if (components < 3) {
|
|
450
|
+
return null;
|
|
451
|
+
}
|
|
452
|
+
const vertexCount = Math.floor(attrib.data.length / components);
|
|
453
|
+
if (components === 3) {
|
|
454
|
+
return attrib.data.slice(0, vertexCount * 3);
|
|
455
|
+
}
|
|
456
|
+
const out = new Float32Array(vertexCount * 3);
|
|
457
|
+
for(let i = 0; i < vertexCount; i++){
|
|
458
|
+
out[i * 3] = attrib.data[i * components];
|
|
459
|
+
out[i * 3 + 1] = attrib.data[i * components + 1];
|
|
460
|
+
out[i * 3 + 2] = attrib.data[i * components + 2];
|
|
461
|
+
}
|
|
462
|
+
return out;
|
|
463
|
+
}
|
|
359
464
|
sanitizeResourceName(name, fallback) {
|
|
360
465
|
let normalized = (name ?? '').trim();
|
|
361
466
|
if (!normalized) {
|
|
@@ -619,10 +724,55 @@ function getAssetNodePath(node) {
|
|
|
619
724
|
*/ addAnimation(animation) {
|
|
620
725
|
this._animations.push(animation);
|
|
621
726
|
}
|
|
727
|
+
/**
|
|
728
|
+
* Gives every imported image a `.zmeta` describing what it is, taken from the
|
|
729
|
+
* material slots that reference it. That is better information than the file
|
|
730
|
+
* name inference used for textures added any other way, so it is recorded even
|
|
731
|
+
* when the import does not ask for compression: turning compression on later
|
|
732
|
+
* then starts from the right usage. An existing `.zmeta` is left alone, so
|
|
733
|
+
* re-importing keeps settings tuned in the editor.
|
|
734
|
+
*/ async writeImportedTextureSettings(vfs, compress) {
|
|
735
|
+
const usages = new Map();
|
|
736
|
+
const visit = (value, key, depth)=>{
|
|
737
|
+
if (!value || typeof value !== 'object' || depth > 4) {
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
740
|
+
const info = value;
|
|
741
|
+
if (info.image && 'texCoord' in info) {
|
|
742
|
+
const usage = inferTextureUsageFromSlot(key, !!info.sRGB);
|
|
743
|
+
const current = usages.get(info.image);
|
|
744
|
+
usages.set(info.image, current ? mergeTextureUsage(current, usage) : usage);
|
|
745
|
+
return;
|
|
746
|
+
}
|
|
747
|
+
for (const [k, v] of Object.entries(value)){
|
|
748
|
+
visit(v, k, depth + 1);
|
|
749
|
+
}
|
|
750
|
+
};
|
|
751
|
+
for (const material of Object.values(this._materialList)){
|
|
752
|
+
visit(material, '', 0);
|
|
753
|
+
}
|
|
754
|
+
for (const img of this._imageList){
|
|
755
|
+
if (!img?.uri) {
|
|
756
|
+
continue;
|
|
757
|
+
}
|
|
758
|
+
try {
|
|
759
|
+
if (await vfs.exists(getAssetMetaPath(img.uri))) {
|
|
760
|
+
continue;
|
|
761
|
+
}
|
|
762
|
+
const usage = usages.get(img) ?? inferTextureUsageFromPath(img.uri);
|
|
763
|
+
await writeTextureImportSettings(vfs, img.uri, defaultTextureImportSettings(usage, compress ? 'auto' : 'none'));
|
|
764
|
+
} catch (err) {
|
|
765
|
+
console.warn(`Failed to write texture settings for ${img.uri}: ${err}`);
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
}
|
|
622
769
|
static async writePrimitive(vfs, primitive, path) {
|
|
770
|
+
// Only the first level: in the editor, levels of detail come from the mesh settings and are
|
|
771
|
+
// derived from the source, which stays as imported
|
|
772
|
+
const indices = primitive.indices && (primitive.lods?.length ?? 0) > 0 ? primitive.indices.subarray(0, primitive.indexCount) : primitive.indices;
|
|
623
773
|
const data = {
|
|
624
774
|
vertices: {},
|
|
625
|
-
indices:
|
|
775
|
+
indices: indices ? uint8ArrayToBase64(new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength)) : null,
|
|
626
776
|
indexType: primitive.indices ? primitive.indices instanceof Uint16Array ? 'u16' : 'u32' : '',
|
|
627
777
|
indexCount: primitive.indexCount,
|
|
628
778
|
type: primitive.type,
|
|
@@ -709,6 +859,7 @@ function getAssetNodePath(node) {
|
|
|
709
859
|
img.mimeType = '';
|
|
710
860
|
}
|
|
711
861
|
}
|
|
862
|
+
await this.writeImportedTextureSettings(dstVFS, !!this._preprocessOptions?.compressTextures);
|
|
712
863
|
}
|
|
713
864
|
const materialKeys = Object.keys(this._materialList);
|
|
714
865
|
if (materialKeys.length > 0) {
|
|
@@ -746,6 +897,24 @@ function getAssetNodePath(node) {
|
|
|
746
897
|
const baseName = this.sanitizeResourceName(this.getPrimitiveBaseName(info, i, destName), `${destName}_mesh_${i}`);
|
|
747
898
|
const path = await this.tryReuseExactResourcePath(dstVFS, destPath, baseName, '.zmsh', usedPaths, `${destName}_mesh_${i}`) ?? this.consumeReusableResourcePath(reusableResourcePools, baseName, '.zmsh', usedPaths) ?? await this.createUniqueResourcePath(dstVFS, destPath, baseName, '.zmsh', usedPaths, `${destName}_mesh_${i}`);
|
|
748
899
|
await SharedModel.writePrimitive(dstVFS, info, path);
|
|
900
|
+
const options = this._preprocessOptions;
|
|
901
|
+
if ((options?.compressVertices || options?.generateLods) && !await dstVFS.exists(getAssetMetaPath(path))) {
|
|
902
|
+
// Without a .zmeta a mesh ships as it is, so only an opt-in needs one
|
|
903
|
+
const settings = defaultMeshImportSettings(options.compressVertices ? 'meshopt' : 'none');
|
|
904
|
+
if (options.generateLods) {
|
|
905
|
+
settings.lodEnabled = true;
|
|
906
|
+
if (Number.isInteger(options.lodMinTriangles) && options.lodMinTriangles >= 1) {
|
|
907
|
+
settings.lodMinTriangles = options.lodMinTriangles;
|
|
908
|
+
}
|
|
909
|
+
if (typeof options.lodReduction === 'number' && options.lodReduction > 0 && options.lodReduction < 1) {
|
|
910
|
+
settings.lodReduction = options.lodReduction;
|
|
911
|
+
}
|
|
912
|
+
if (typeof options.lodPixelError === 'number' && options.lodPixelError > 0) {
|
|
913
|
+
settings.lodPixelError = options.lodPixelError;
|
|
914
|
+
}
|
|
915
|
+
}
|
|
916
|
+
await writeMeshImportSettings(dstVFS, path, settings);
|
|
917
|
+
}
|
|
749
918
|
info.path = path;
|
|
750
919
|
}
|
|
751
920
|
}
|
|
@@ -948,9 +1117,11 @@ function getAssetNodePath(node) {
|
|
|
948
1117
|
const humanoidJointMapping = this.remapHumanoidJointMapping(sk.humanoidJointMapping, nodeMap);
|
|
949
1118
|
rig = new SkeletonRig(joints, sk.bindPose, humanoidJointMapping ? {
|
|
950
1119
|
rootJoint,
|
|
951
|
-
humanoidJointMapping
|
|
1120
|
+
humanoidJointMapping,
|
|
1121
|
+
retargetPose: sk.retargetPose
|
|
952
1122
|
} : {
|
|
953
|
-
rootJoint
|
|
1123
|
+
rootJoint,
|
|
1124
|
+
retargetPose: sk.retargetPose
|
|
954
1125
|
});
|
|
955
1126
|
rigMap.set(rigKey, rig);
|
|
956
1127
|
group.animationSet.rigs.push(new DRef(rig));
|
|
@@ -1385,6 +1556,9 @@ function getAssetNodePath(node) {
|
|
|
1385
1556
|
}
|
|
1386
1557
|
primitive.primitiveType = info.type;
|
|
1387
1558
|
primitive.indexCount = info.indexCount;
|
|
1559
|
+
if (info.lods) {
|
|
1560
|
+
primitive.lods = info.lods;
|
|
1561
|
+
}
|
|
1388
1562
|
primitive.setBoundingVolume(new BoundingBox(info.boxMin, info.boxMax));
|
|
1389
1563
|
return primitive;
|
|
1390
1564
|
}
|