@zephyr3d/scene 0.9.27 → 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 +54 -0
- 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 +279 -55
- 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 +171 -1
- 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 +104 -178
- 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 +25436 -15990
- package/dist/index.js +65 -11
- 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/lambert.js +4 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +66 -4
- 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 +191 -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 +333 -191
- 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 +1261 -1438
- 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 +106 -106
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/postsss.js +572 -0
- package/dist/posteffect/postsss.js.map +1 -0
- package/dist/posteffect/sao.js +2 -6
- 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 +4 -13
- 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 +3 -2
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +179 -64
- 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 +25 -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 +5 -5
- 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 +5 -10
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +247 -157
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +16 -38
- 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/instance_culling.js +499 -0
- package/dist/render/instance_culling.js.map +1 -0
- package/dist/render/lightpass.js +19 -8
- 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/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 +162 -11
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +10 -7
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +14 -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 +272 -55
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_graph_context.js +41 -0
- package/dist/render/rendergraph/frame_graph_context.js.map +1 -0
- 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 +58 -158
- package/dist/render/underwater.js.map +1 -1
- 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 +134 -319
- package/dist/render/water_caustics.js.map +1 -1
- 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 +3 -3
- 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 +633 -268
- 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/ssgi.js +63 -0
- package/dist/shaders/ssgi.js.map +1 -0
- package/dist/shaders/ssgi_reprojection.js +118 -0
- package/dist/shaders/ssgi_reprojection.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 +32 -82
- package/dist/shaders/water.js.map +1 -1
- package/dist/shaders/water_medium.js +7 -21
- package/dist/shaders/water_medium.js.map +1 -1
- 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 +40 -2
- 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 +34 -6
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +46 -5
- 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 +87 -254
- 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 +1543 -264
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +10 -22
- 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/animation/joint_dynamics/convex_collider.js +0 -320
- package/dist/animation/joint_dynamics/convex_collider.js.map +0 -1
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';
|
|
@@ -343,6 +348,9 @@ function getAssetNodePath(node) {
|
|
|
343
348
|
set activeScene(val) {
|
|
344
349
|
this._activeScene = val;
|
|
345
350
|
}
|
|
351
|
+
/** Number of image slots the model references */ get imageCount() {
|
|
352
|
+
return this._imageList.length;
|
|
353
|
+
}
|
|
346
354
|
getImage(index) {
|
|
347
355
|
return this._imageList[index];
|
|
348
356
|
}
|
|
@@ -358,6 +366,101 @@ function getAssetNodePath(node) {
|
|
|
358
366
|
addPrimitive(prim) {
|
|
359
367
|
this._primitiveList.push(prim);
|
|
360
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
|
+
}
|
|
361
464
|
sanitizeResourceName(name, fallback) {
|
|
362
465
|
let normalized = (name ?? '').trim();
|
|
363
466
|
if (!normalized) {
|
|
@@ -621,10 +724,55 @@ function getAssetNodePath(node) {
|
|
|
621
724
|
*/ addAnimation(animation) {
|
|
622
725
|
this._animations.push(animation);
|
|
623
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
|
+
}
|
|
624
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;
|
|
625
773
|
const data = {
|
|
626
774
|
vertices: {},
|
|
627
|
-
indices:
|
|
775
|
+
indices: indices ? uint8ArrayToBase64(new Uint8Array(indices.buffer, indices.byteOffset, indices.byteLength)) : null,
|
|
628
776
|
indexType: primitive.indices ? primitive.indices instanceof Uint16Array ? 'u16' : 'u32' : '',
|
|
629
777
|
indexCount: primitive.indexCount,
|
|
630
778
|
type: primitive.type,
|
|
@@ -711,6 +859,7 @@ function getAssetNodePath(node) {
|
|
|
711
859
|
img.mimeType = '';
|
|
712
860
|
}
|
|
713
861
|
}
|
|
862
|
+
await this.writeImportedTextureSettings(dstVFS, !!this._preprocessOptions?.compressTextures);
|
|
714
863
|
}
|
|
715
864
|
const materialKeys = Object.keys(this._materialList);
|
|
716
865
|
if (materialKeys.length > 0) {
|
|
@@ -748,6 +897,24 @@ function getAssetNodePath(node) {
|
|
|
748
897
|
const baseName = this.sanitizeResourceName(this.getPrimitiveBaseName(info, i, destName), `${destName}_mesh_${i}`);
|
|
749
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}`);
|
|
750
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
|
+
}
|
|
751
918
|
info.path = path;
|
|
752
919
|
}
|
|
753
920
|
}
|
|
@@ -1389,6 +1556,9 @@ function getAssetNodePath(node) {
|
|
|
1389
1556
|
}
|
|
1390
1557
|
primitive.primitiveType = info.type;
|
|
1391
1558
|
primitive.indexCount = info.indexCount;
|
|
1559
|
+
if (info.lods) {
|
|
1560
|
+
primitive.lods = info.lods;
|
|
1561
|
+
}
|
|
1392
1562
|
primitive.setBoundingVolume(new BoundingBox(info.boxMin, info.boxMax));
|
|
1393
1563
|
return primitive;
|
|
1394
1564
|
}
|