@woosh/meep-engine 3.23.0 → 3.24.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/editor/entity_world_bounds.d.ts +9 -3
- package/editor/entity_world_bounds.d.ts.map +1 -1
- package/editor/entity_world_bounds.js +61 -4
- package/package.json +1 -1
- package/src/core/binary/allocator/OffsetAllocator.d.ts +40 -2
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +124 -29
- package/src/core/collection/map/u32_index.d.ts +83 -0
- package/src/core/collection/map/u32_index.d.ts.map +1 -0
- package/src/core/collection/map/u32_index.js +247 -0
- package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.d.ts +2 -2
- package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.js +2 -2
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts +1 -2
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts.map +1 -1
- package/src/engine/asset/loaders/USDSceneBundleAssetLoader.js +4 -12
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +55 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPUStateAuthority.js +72 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts +40 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts.map +1 -0
- package/src/engine/ecs/gpu/GPUStateAuthorityFlags.js +79 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts +18 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_assert_cpu.js +27 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.d.ts +23 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_declare.js +39 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +15 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_grant.js +38 -0
- package/src/engine/ecs/gpu/gpu_authority_has.d.ts +18 -0
- package/src/engine/ecs/gpu/gpu_authority_has.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_has.js +28 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts +24 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts.map +1 -0
- package/src/engine/ecs/gpu/gpu_authority_revoke.js +49 -0
- package/src/engine/ecs/ik/IKProblem.d.ts +14 -0
- package/src/engine/ecs/ik/IKProblem.d.ts.map +1 -1
- package/src/engine/ecs/ik/IKProblem.js +16 -0
- package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
- package/src/engine/ecs/ik/InverseKinematicsSystem.js +19 -0
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
- package/src/engine/ecs/ik/ik_bone_chain.d.ts +11 -2
- package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_bone_chain.js +47 -2
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +6 -0
- package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
- package/src/engine/ecs/speaker/VoiceSystem.js +6 -0
- package/src/engine/ecs/transform/T64WorldCache.d.ts +50 -0
- package/src/engine/ecs/transform/T64WorldCache.d.ts.map +1 -0
- package/src/engine/ecs/transform/T64WorldCache.js +139 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts +31 -0
- package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -0
- package/src/engine/ecs/transform/t64_evaluate_world.js +126 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +8 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +59 -30
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +4 -11
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts +14 -0
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.js +13 -0
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +2 -14
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +11 -21
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.d.ts +1 -0
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +7 -0
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts +5 -6
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +13 -11
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts +14 -0
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts.map +1 -0
- package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.js +21 -0
- package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +1 -1
- package/src/engine/graphics/ecs/particles/ParticleEffect.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +1 -1
- package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +1 -1
- package/src/engine/graphics3/AnimationGraphSystem.js +3 -3
- package/src/engine/graphics3/AnimationSystem.js +2 -2
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem.js +2 -4
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +34 -27
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +185 -85
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts +4 -3
- package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
- package/src/engine/graphics3/HighlightOutlineSystem.js +7 -9
- package/src/engine/graphics3/LightSystem.d.ts +7 -5
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +36 -22
- package/src/engine/graphics3/MeshSystem.d.ts +43 -39
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem.js +324 -331
- package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -1
- package/src/engine/graphics3/PathDisplaySystem.js +2 -4
- package/src/engine/graphics3/PickingQuery.d.ts +15 -21
- package/src/engine/graphics3/PickingQuery.d.ts.map +1 -1
- package/src/engine/graphics3/PickingQuery.js +21 -25
- package/src/engine/graphics3/PickingSystem.d.ts +60 -31
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem.js +416 -273
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts +22 -12
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem.js +309 -174
- package/src/engine/graphics3/TerrainSystem.d.ts +19 -11
- package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
- package/src/engine/graphics3/TerrainSystem.js +102 -53
- package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -1
- package/src/engine/graphics3/TooltipComponentSystem.js +2 -14
- package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
- package/src/engine/graphics3/Trail3DSystem.js +2 -4
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts +4 -4
- package/src/engine/graphics3/animation/ClipListPlayer.d.ts.map +1 -1
- package/src/engine/graphics3/animation/ClipListPlayer.js +2 -2
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +9 -11
- package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/pack_highlight_table.js +11 -18
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +4 -3
- package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts.map +1 -1
- package/src/engine/graphics3/pose/query_entity_node_world_pose.js +75 -74
- package/src/engine/graphics3/prefab/Prefab.d.ts +130 -0
- package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/Prefab.js +162 -0
- package/src/engine/graphics3/prefab/PrefabInstance.d.ts +72 -0
- package/src/engine/graphics3/prefab/PrefabInstance.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/PrefabInstance.js +80 -0
- package/src/engine/graphics3/prefab/prefab_compile.d.ts +23 -0
- package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_compile.js +334 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts +46 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_instantiate.js +230 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts +70 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.js +210 -0
- package/src/engine/graphics3/prefab/prefab_place.d.ts +60 -0
- package/src/engine/graphics3/prefab/prefab_place.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_place.js +130 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts +60 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.js +128 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts +40 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts.map +1 -0
- package/src/engine/graphics3/prefab/prefab_skin_frame.js +116 -0
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts +16 -14
- package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
- package/src/engine/graphics3/preview/make_model_preview_scene.js +126 -154
- package/src/engine/graphics3/preview/make_model_thumbnail.js +1 -1
- package/src/engine/graphics3/register_instance_animation.d.ts +6 -6
- package/src/engine/graphics3/register_instance_animation.d.ts.map +1 -1
- package/src/engine/graphics3/register_instance_animation.js +4 -4
- package/src/engine/graphics3/shade_bundle_bounds.d.ts +2 -6
- package/src/engine/graphics3/shade_bundle_bounds.d.ts.map +1 -1
- package/src/engine/graphics3/shade_bundle_bounds.js +47 -55
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts +11 -18
- package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/pack_terrain_row_table.js +48 -53
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts +17 -2
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +284 -256
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +13 -15
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +12 -14
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts +7 -8
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothRig.js +7 -8
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +5 -4
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +11 -12
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +19 -23
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +201 -199
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +8 -0
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts +18 -34
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.js +58 -115
- package/src/engine/physics/cloth/playground/README.md +11 -11
- package/src/engine/physics/cloth/playground/garment_build.d.ts +0 -1
- package/src/engine/physics/cloth/playground/garment_build.d.ts.map +1 -1
- package/src/engine/physics/cloth/playground/garment_build.js +64 -58
- package/src/engine/physics/cloth/playground/garment_main.js +59 -33
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/RENDERER_CONTRACT.md +85 -53
- package/src/shade/device/ShadeGPUCommandContext.d.ts +23 -0
- package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
- package/src/shade/device/ShadeGPUCommandContext.js +36 -0
- package/src/shade/playground/add_random_meshes.d.ts +4 -4
- package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
- package/src/shade/playground/add_random_meshes.js +20 -16
- package/src/shade/playground/avboit/main.d.ts +1 -0
- package/src/shade/playground/avboit/main.d.ts.map +1 -1
- package/src/shade/playground/avboit/main.js +916 -875
- package/src/shade/playground/basis_textures/main.d.ts.map +1 -1
- package/src/shade/playground/basis_textures/main.js +22 -8
- package/src/shade/playground/basis_textures/texture_inventory.d.ts +2 -2
- package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
- package/src/shade/playground/basis_textures/texture_inventory.js +6 -7
- package/src/shade/playground/ground_seam/main.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/main.js +13 -4
- package/src/shade/playground/ground_seam/make_ground.d.ts +13 -4
- package/src/shade/playground/ground_seam/make_ground.d.ts.map +1 -1
- package/src/shade/playground/ground_seam/make_ground.js +21 -16
- package/src/shade/playground/particle_ecs/bonfire_editor.js +3 -3
- package/src/shade/playground/particle_system/main.js +11 -10
- package/src/shade/playground/particle_system/particle_prototype.d.ts +15 -10
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +56 -15
- package/src/shade/playground/particle_system/particle_scene.d.ts +68 -28
- package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_scene.js +149 -53
- package/src/shade/playground/readback_crossover/index.html +41 -0
- package/src/shade/playground/readback_crossover/main.d.ts +2 -0
- package/src/shade/playground/readback_crossover/main.d.ts.map +1 -0
- package/src/shade/playground/readback_crossover/main.js +372 -0
- package/src/shade/playground/skinned_blas_refit/README.md +11 -7
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +13 -44
- package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/add_floor.js +19 -59
- package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/main.js +67 -58
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts +40 -54
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/place_character.js +47 -74
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/sweep_views.js +4 -3
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +11 -4
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +38 -9
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +9 -6
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +3 -3
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +3 -3
- package/src/shade/playground/skinned_mesh_soup/README.md +6 -6
- package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/main.js +44 -102
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +5 -5
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
- package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +42 -33
- package/src/shade/playground/sponza_path_trace/main.d.ts +1 -0
- package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -1
- package/src/shade/playground/sponza_path_trace/main.js +393 -363
- package/src/shade/playground/ssr_reprojection/main.js +11 -9
- package/src/shade/playground/ssr_reprojection/scene.d.ts +15 -4
- package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -1
- package/src/shade/playground/ssr_reprojection/scene.js +32 -11
- package/src/shade/playground/ssr_variance/main.js +1 -1
- package/src/shade/playground/ssr_variance/scene.d.ts +10 -4
- package/src/shade/playground/ssr_variance/scene.d.ts.map +1 -1
- package/src/shade/playground/ssr_variance/scene.js +39 -15
- package/src/shade/playground/vgeo_viewer/main.js +6 -2
- package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
- package/src/shade/playground/volumetrics_froxel/main.js +936 -922
- package/src/shade/renderer/GraphicsContext.d.ts +7 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +11 -0
- package/src/shade/renderer/Renderer.d.ts +3 -2
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +3 -2
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts +39 -47
- package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
- package/src/shade/renderer/animation/GPUAnimationManager.js +319 -256
- package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts +26 -22
- package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationChannel.js +28 -23
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +14 -6
- package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
- package/src/shade/renderer/animation/ShadeAnimationClip.js +20 -8
- package/src/shade/renderer/animation/Skin.d.ts +19 -19
- package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
- package/src/shade/renderer/animation/Skin.js +15 -13
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +6 -5
- package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_local.js +9 -9
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +5 -59
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -1
- package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +8 -132
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +65 -62
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +148 -194
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +4 -7
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +2 -2
- package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +2 -2
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts +74 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts.map +1 -0
- package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.js +240 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +14 -0
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +64 -6
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts +190 -0
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUDatabaseReadback.js +1323 -0
- package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts +10 -0
- package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUPageMetadata.js +12 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts +96 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts +15 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPUReadbackStatus.js +34 -0
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +75 -7
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +518 -135
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts +19 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.js +18 -0
- package/src/shade/renderer/buffer/table/WordViews.d.ts +39 -0
- package/src/shade/renderer/buffer/table/WordViews.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/WordViews.js +62 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts +27 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/gpu_table_gather_shader.js +117 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts +121 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/serde/generate_record_writer.js +395 -0
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +70 -20
- package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +6 -5
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +3 -3
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +15 -11
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts +1 -1
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.js +4 -4
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts +1 -3
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.js +5 -4
- package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -4
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts +8 -3
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +19 -14
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +9 -1
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts +3 -3
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.js +12 -5
- package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +1 -1
- package/src/shade/renderer/light/GPULightCollection.d.ts +29 -0
- package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/GPULightCollection.js +444 -329
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
- package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +7 -1
- package/src/shade/renderer/light/LightCollection.d.ts +29 -1
- package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
- package/src/shade/renderer/light/LightCollection.js +50 -1
- package/src/shade/renderer/light/make_sunlight.js +2 -2
- package/src/shade/renderer/light/model/Light.d.ts +29 -2
- package/src/shade/renderer/light/model/Light.d.ts.map +1 -1
- package/src/shade/renderer/light/model/Light.js +30 -2
- package/src/shade/renderer/light/model/io/light_record_directional.d.ts +3 -1
- package/src/shade/renderer/light/model/io/light_record_directional.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_directional.js +8 -5
- package/src/shade/renderer/light/model/io/light_record_point.d.ts +3 -1
- package/src/shade/renderer/light/model/io/light_record_point.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_point.js +5 -2
- package/src/shade/renderer/light/model/io/light_record_spot.d.ts +4 -1
- package/src/shade/renderer/light/model/io/light_record_spot.d.ts.map +1 -1
- package/src/shade/renderer/light/model/io/light_record_spot.js +10 -6
- package/src/shade/renderer/light/place_light.d.ts +16 -0
- package/src/shade/renderer/light/place_light.d.ts.map +1 -0
- package/src/shade/renderer/light/place_light.js +36 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.d.ts +44 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.d.ts.map +1 -0
- package/src/shade/renderer/light/shader_refresh_light_poses.js +154 -0
- package/src/shade/renderer/lightmap/GPULightMap.js +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
- package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +12 -14
- package/src/shade/renderer/loader/SceneBundle.d.ts +53 -28
- package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
- package/src/shade/renderer/loader/SceneBundle.js +111 -56
- package/src/shade/renderer/loader/SceneNode.d.ts +81 -0
- package/src/shade/renderer/loader/SceneNode.d.ts.map +1 -0
- package/src/shade/renderer/loader/SceneNode.js +114 -0
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts +3 -2
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/load_gltf.js +110 -142
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts +4 -4
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/UsdExtensionRegistry.js +2 -2
- package/src/shade/renderer/loader/usd/load_usd.d.ts +3 -2
- package/src/shade/renderer/loader/usd/load_usd.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/load_usd.js +4 -5
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts +3 -3
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.js +47 -55
- package/src/shade/renderer/material/GPUMaterialManager.js +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +5 -4
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +8 -15
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts +15 -13
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
- package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +40 -21
- package/src/shade/renderer/particles/DESIGN.md +53 -50
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +31 -17
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +54 -91
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +12 -11
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +12 -11
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +13 -19
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +19 -25
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +34 -24
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +53 -40
- package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -1
- package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +2 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.js +5 -2
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +1 -1
- package/src/shade/renderer/scene/DynamicMesh.d.ts +13 -4
- package/src/shade/renderer/scene/DynamicMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/DynamicMesh.js +14 -4
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +38 -18
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +112 -60
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +55 -48
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +594 -928
- package/src/shade/renderer/scene/NODE3D_STRUCT.d.ts +5 -5
- package/src/shade/renderer/scene/NODE3D_STRUCT.js +5 -5
- package/src/shade/renderer/scene/Node3D.d.ts +27 -8
- package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts +59 -0
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts.map +1 -0
- package/src/shade/renderer/scene/Scene.d.ts +18 -60
- package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/Scene.js +53 -146
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +10 -93
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts +24 -3
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
- package/src/shade/renderer/scene/bvh/StaticSceneBVH.js +53 -13
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +5 -6
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
- package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +5 -6
- package/src/shade/renderer/scene/optimization/scene_optimize.d.ts +10 -2
- package/src/shade/renderer/scene/optimization/scene_optimize.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/scene_optimize.js +266 -230
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts +53 -0
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.js +144 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +227 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +1136 -0
- package/src/shade/renderer/scene/rows/place_primitive.d.ts +48 -0
- package/src/shade/renderer/scene/rows/place_primitive.d.ts.map +1 -0
- package/src/shade/renderer/scene/rows/place_primitive.js +98 -0
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts +10 -8
- package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/deserialize_scene.js +24 -27
- package/src/shade/renderer/scene/serialization/serialize_scene.d.ts +9 -2
- package/src/shade/renderer/scene/serialization/serialize_scene.d.ts.map +1 -1
- package/src/shade/renderer/scene/serialization/serialize_scene.js +25 -4
- package/src/shade/renderer/scene/verify_gpu_tlas_build.js +2 -2
- package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.js +5 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +39 -0
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +112 -64
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +7 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1541 -1352
- package/src/shade/renderer/shadow/map/PointLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +1 -1
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +29 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +43 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts +13 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.js +12 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +49 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +194 -0
- package/src/shade/renderer/shadow/map/csm_debug_draw_preview.js +1 -1
- package/src/shade/renderer/shadow/map/shadowmap_update_score.js +1 -1
- package/src/shade/renderer/shadow/ray/RTXShadows.js +1 -1
- package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +3 -1
- package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.js +8 -8
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -3
- package/src/engine/graphics3/instantiate_scene_bundle.js +0 -164
- package/src/engine/graphics3/shade_node_to_entity_composition.js +0 -88
- package/src/shade/renderer/animation/compute_skin_world_bounds.js +0 -146
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.js +0 -531
- package/src/shade/renderer/animation/pose/pose_evaluate_world.js +0 -76
- package/src/shade/renderer/animation/skin_bind_transform.js +0 -33
- package/src/shade/renderer/animation/skin_frame_defect.js +0 -132
- package/src/shade/renderer/animation/skin_joint_matrix.js +0 -46
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +0 -216
- package/src/shade/renderer/scene/InstanceBatch.js +0 -235
- package/src/shade/renderer/scene/Mesh.js +0 -168
- package/src/shade/renderer/scene/Node3D.js +0 -263
- package/src/shade/renderer/scene/SceneNodeBinding.js +0 -56
- package/src/shade/renderer/scene/SkinnedMesh.js +0 -170
- package/src/shade/renderer/scene/TransformAuthority.js +0 -33
|
@@ -1,74 +1,75 @@
|
|
|
1
|
-
import { assert } from "../../../core/assert.js";
|
|
2
|
-
import { PosePlayback } from "../../../shade/renderer/animation/pose/PosePlayback.js";
|
|
3
|
-
import {
|
|
4
|
-
import { MeshSystem } from "../MeshSystem.js";
|
|
5
|
-
import { collect_entity_playbacks } from "./collect_entity_playbacks.js";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* The clip set handed to the evaluator, rebuilt per call from the systems' own entries. Nothing in
|
|
9
|
-
* here outlives the call — the query is on a per-frame path and allocates nothing.
|
|
10
|
-
*
|
|
11
|
-
* @type {PosePlayback[]}
|
|
12
|
-
*/
|
|
13
|
-
const PLAYBACKS = [];
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Where a named part of an entity's model is, in world space.
|
|
17
|
-
*
|
|
18
|
-
* This is the question gameplay asks of an animated model and the only sanctioned way to ask it:
|
|
19
|
-
* where does this projectile leave from, where does that effect anchor, where does the floating UI
|
|
20
|
-
* hang. **The answer is computed, never read back** — GPU readback is a frame late and asynchronous,
|
|
21
|
-
* so an outcome that depended on it would depend on frame pacing, and determinism and replay would
|
|
22
|
-
* go with it: no GPU readback on a gameplay-affecting path.
|
|
23
|
-
*
|
|
24
|
-
* The
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* @param {
|
|
32
|
-
* @param {
|
|
33
|
-
* @param {
|
|
34
|
-
* @
|
|
35
|
-
*
|
|
36
|
-
* the
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
assert.defined(
|
|
41
|
-
assert.
|
|
42
|
-
assert.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
1
|
+
import { assert } from "../../../core/assert.js";
|
|
2
|
+
import { PosePlayback } from "../../../shade/renderer/animation/pose/PosePlayback.js";
|
|
3
|
+
import { t64_evaluate_world } from "../../ecs/transform/t64_evaluate_world.js";
|
|
4
|
+
import { MeshSystem } from "../MeshSystem.js";
|
|
5
|
+
import { collect_entity_playbacks } from "./collect_entity_playbacks.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The clip set handed to the evaluator, rebuilt per call from the systems' own entries. Nothing in
|
|
9
|
+
* here outlives the call — the query is on a per-frame path and allocates nothing.
|
|
10
|
+
*
|
|
11
|
+
* @type {PosePlayback[]}
|
|
12
|
+
*/
|
|
13
|
+
const PLAYBACKS = [];
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Where a named part of an entity's model is, in world space.
|
|
17
|
+
*
|
|
18
|
+
* This is the question gameplay asks of an animated model and the only sanctioned way to ask it:
|
|
19
|
+
* where does this projectile leave from, where does that effect anchor, where does the floating UI
|
|
20
|
+
* hang. **The answer is computed, never read back** — GPU readback is a frame late and asynchronous,
|
|
21
|
+
* so an outcome that depended on it would depend on frame pacing, and determinism and replay would
|
|
22
|
+
* go with it: no GPU readback on a gameplay-affecting path.
|
|
23
|
+
*
|
|
24
|
+
* The named node is an entity of the model's instance, and the pose is {@link t64_evaluate_world}
|
|
25
|
+
* over its attachment chain and the clips the animation systems are driving: a pure function of
|
|
26
|
+
* (hierarchy, clip set, time, weights), off the same clock the renderer is written from, which is
|
|
27
|
+
* what keeps a socket on the mesh that is drawn — whether or not the GPU owns the joint's row.
|
|
28
|
+
*
|
|
29
|
+
* The result carries both its matrix and its components.
|
|
30
|
+
*
|
|
31
|
+
* @param {Transform64} result
|
|
32
|
+
* @param {EntityManager} entity_manager
|
|
33
|
+
* @param {number} entity
|
|
34
|
+
* @param {string} node_name name the asset gave the node — a bone, a socket's bone, an effector
|
|
35
|
+
* @returns {boolean} `false` when there is no such node to answer about: no mesh system is
|
|
36
|
+
* registered, the model has not loaded yet, the entity has none, or the name is not in it. None of
|
|
37
|
+
* the four is an error
|
|
38
|
+
*/
|
|
39
|
+
export function query_entity_node_world_pose(result, entity_manager, entity, node_name) {
|
|
40
|
+
assert.defined(result, 'result');
|
|
41
|
+
assert.defined(entity_manager, 'entity_manager');
|
|
42
|
+
assert.isNonNegativeInteger(entity, 'entity');
|
|
43
|
+
assert.isString(node_name, 'node_name');
|
|
44
|
+
|
|
45
|
+
const meshes = entity_manager.getSystem(MeshSystem);
|
|
46
|
+
|
|
47
|
+
if (meshes === null) {
|
|
48
|
+
// nothing draws models here, so nothing holds one to answer about
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const instance = meshes.instance_of(entity);
|
|
53
|
+
|
|
54
|
+
if (instance === null) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const target = instance.entity_of(node_name);
|
|
59
|
+
|
|
60
|
+
if (target === -1) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const playbacks = PLAYBACKS;
|
|
65
|
+
|
|
66
|
+
playbacks.length = 0;
|
|
67
|
+
|
|
68
|
+
collect_entity_playbacks(playbacks, entity_manager, entity);
|
|
69
|
+
|
|
70
|
+
t64_evaluate_world(result, entity_manager.dataset, target, playbacks);
|
|
71
|
+
|
|
72
|
+
playbacks.length = 0;
|
|
73
|
+
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../../../shade/renderer/geometry/MeshletGeometry.js").MeshletGeometry} MeshletGeometry
|
|
3
|
+
* @typedef {import("../../../shade/renderer/material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
4
|
+
* @typedef {import("../../../shade/renderer/animation/Skin.js").Skin} Skin
|
|
5
|
+
* @typedef {import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
|
|
6
|
+
* @typedef {import("../../ecs/transform/Transform64.js").Transform64} Transform64
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* One draw of a prefab: a node that carries geometry, and the skin that deforms it if any.
|
|
10
|
+
*/
|
|
11
|
+
export class PrefabPrimitive {
|
|
12
|
+
/**
|
|
13
|
+
* Index of the node this primitive draws at.
|
|
14
|
+
*
|
|
15
|
+
* @type {number}
|
|
16
|
+
*/
|
|
17
|
+
node: number;
|
|
18
|
+
/**
|
|
19
|
+
* @type {MeshletGeometry}
|
|
20
|
+
*/
|
|
21
|
+
geometry: MeshletGeometry;
|
|
22
|
+
/**
|
|
23
|
+
* @type {ShadeMaterial}
|
|
24
|
+
*/
|
|
25
|
+
material: ShadeMaterial;
|
|
26
|
+
/**
|
|
27
|
+
* Index into {@link Prefab.skins} of the skin this primitive deforms against, or -1 for a
|
|
28
|
+
* rigid primitive.
|
|
29
|
+
*
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
skin: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A model compiled once, to be spawned as entities any number of times.
|
|
36
|
+
*
|
|
37
|
+
* **Everything in here is addressed by node index**, and a node index is what an instance turns
|
|
38
|
+
* into an entity. Parents precede children, so one forward pass composes every world transform
|
|
39
|
+
* and one forward pass spawns every entity with its parent already there. Node 0 is the root:
|
|
40
|
+
* the entity that places the model, which the prefab does not spawn and whose transform is the
|
|
41
|
+
* placement. It carries no name and no geometry of its own.
|
|
42
|
+
*
|
|
43
|
+
* Skins name their joints and their meshes by node index; clips target node indices. Geometry,
|
|
44
|
+
* materials, inverse-bind matrices and animation curves are shared by every instance — none of
|
|
45
|
+
* them is per-placement state — which is what makes a prefab cheap to instantiate and what a
|
|
46
|
+
* per-instance copy of a node tree could never be.
|
|
47
|
+
*
|
|
48
|
+
* Built by `prefab_compile`, from what a loader produced. Read-only afterwards.
|
|
49
|
+
*/
|
|
50
|
+
export class Prefab {
|
|
51
|
+
/**
|
|
52
|
+
* @type {number}
|
|
53
|
+
*/
|
|
54
|
+
node_count: number;
|
|
55
|
+
/**
|
|
56
|
+
* Parent node of each node; -1 for the root, and every parent's index is below its child's.
|
|
57
|
+
*
|
|
58
|
+
* @type {Int32Array}
|
|
59
|
+
*/
|
|
60
|
+
parent: Int32Array;
|
|
61
|
+
/**
|
|
62
|
+
* The name the asset gave each node, or an empty string.
|
|
63
|
+
*
|
|
64
|
+
* @type {string[]}
|
|
65
|
+
*/
|
|
66
|
+
name: string[];
|
|
67
|
+
/**
|
|
68
|
+
* Each node's rest pose, relative to its parent. A skinned mesh node's is the frame its skin
|
|
69
|
+
* deforms in, not what the file said — see `prefab_normalize_skin_frames`.
|
|
70
|
+
*
|
|
71
|
+
* @type {Transform64[]}
|
|
72
|
+
*/
|
|
73
|
+
local: Transform64[];
|
|
74
|
+
/**
|
|
75
|
+
* Each node's rest pose relative to the root, as a column-major 4×4, composed from
|
|
76
|
+
* {@link local}. The root's is the identity.
|
|
77
|
+
*
|
|
78
|
+
* @type {Float64Array[]}
|
|
79
|
+
*/
|
|
80
|
+
world: Float64Array[];
|
|
81
|
+
/**
|
|
82
|
+
* Whether a node is one the GPU may take over: a joint of a skin, the target of a clip, or
|
|
83
|
+
* anything under either — the GPU composes a driven joint's whole subtree. These are the nodes
|
|
84
|
+
* an instance declares `GPUStateAuthority` on, so that a later grant is a bit write rather
|
|
85
|
+
* than a component add.
|
|
86
|
+
*
|
|
87
|
+
* @type {Uint8Array}
|
|
88
|
+
*/
|
|
89
|
+
animated: Uint8Array;
|
|
90
|
+
/**
|
|
91
|
+
* @type {PrefabPrimitive[]}
|
|
92
|
+
*/
|
|
93
|
+
primitives: PrefabPrimitive[];
|
|
94
|
+
/**
|
|
95
|
+
* Skins with `joints` and `meshes` as node indices.
|
|
96
|
+
*
|
|
97
|
+
* @type {Skin[]}
|
|
98
|
+
*/
|
|
99
|
+
skins: Skin[];
|
|
100
|
+
/**
|
|
101
|
+
* Clips whose channels target node indices.
|
|
102
|
+
*
|
|
103
|
+
* @type {ShadeAnimationClip[]}
|
|
104
|
+
*/
|
|
105
|
+
clips: ShadeAnimationClip[];
|
|
106
|
+
/**
|
|
107
|
+
* Which node the asset calls `name`. A name authored twice answers with the first node in
|
|
108
|
+
* pre-order, which is the same answer a search would have given.
|
|
109
|
+
*
|
|
110
|
+
* @param {string} name
|
|
111
|
+
* @returns {number} the node index, or -1
|
|
112
|
+
*/
|
|
113
|
+
index_of(name: string): number;
|
|
114
|
+
/**
|
|
115
|
+
* Build {@link index_of}'s table from {@link name}. For `prefab_compile`.
|
|
116
|
+
*/
|
|
117
|
+
index_names(): void;
|
|
118
|
+
/**
|
|
119
|
+
* @readonly
|
|
120
|
+
* @type {boolean}
|
|
121
|
+
*/
|
|
122
|
+
readonly isPrefab: boolean;
|
|
123
|
+
#private;
|
|
124
|
+
}
|
|
125
|
+
export type MeshletGeometry = import("../../../shade/renderer/geometry/MeshletGeometry.js").MeshletGeometry;
|
|
126
|
+
export type ShadeMaterial = import("../../../shade/renderer/material/ShadeMaterial.js").ShadeMaterial;
|
|
127
|
+
export type Skin = import("../../../shade/renderer/animation/Skin.js").Skin;
|
|
128
|
+
export type ShadeAnimationClip = import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip;
|
|
129
|
+
export type Transform64 = import("../../ecs/transform/Transform64.js").Transform64;
|
|
130
|
+
//# sourceMappingURL=Prefab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Prefab.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/prefab/Prefab.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH;IACI;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;OAEG;IACH,UAFU,eAAe,CAET;IAEhB;;OAEG;IACH,UAFU,aAAa,CAEP;IAEhB;;;;;OAKG;IACH,MAFU,MAAM,CAEN;CACb;AAED;;;;;;;;;;;;;;;GAeG;AACH;IACI;;OAEG;IACH,YAFU,MAAM,CAED;IAEf;;;;OAIG;IACH,QAFU,UAAU,CAEO;IAE3B;;;;OAIG;IACH,MAFU,MAAM,EAAE,CAER;IAEV;;;;;OAKG;IACH,OAFU,WAAW,EAAE,CAEZ;IAEX;;;;;OAKG;IACH,OAFU,YAAY,EAAE,CAEb;IAEX;;;;;;;OAOG;IACH,UAFU,UAAU,CAES;IAE7B;;OAEG;IACH,YAFU,eAAe,EAAE,CAEX;IAEhB;;;;OAIG;IACH,OAFU,IAAI,EAAE,CAEL;IAEX;;;;OAIG;IACH,OAFU,kBAAkB,EAAE,CAEnB;IAOX;;;;;;OAMG;IACH,eAHW,MAAM,GACJ,MAAM,CAMlB;IAED;;OAEG;IACH,oBAcC;IAGL;;;OAGG;IACH,mBAFU,OAAO,CAEQ;;CANxB;8BA1JY,OAAO,qDAAqD,EAAE,eAAe;4BAC7E,OAAO,mDAAmD,EAAE,aAAa;mBACzE,OAAO,2CAA2C,EAAE,IAAI;iCACxD,OAAO,yDAAyD,EAAE,kBAAkB;0BACpF,OAAO,oCAAoC,EAAE,WAAW"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../../../shade/renderer/geometry/MeshletGeometry.js").MeshletGeometry} MeshletGeometry
|
|
3
|
+
* @typedef {import("../../../shade/renderer/material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
4
|
+
* @typedef {import("../../../shade/renderer/animation/Skin.js").Skin} Skin
|
|
5
|
+
* @typedef {import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
|
|
6
|
+
* @typedef {import("../../ecs/transform/Transform64.js").Transform64} Transform64
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* One draw of a prefab: a node that carries geometry, and the skin that deforms it if any.
|
|
11
|
+
*/
|
|
12
|
+
export class PrefabPrimitive {
|
|
13
|
+
/**
|
|
14
|
+
* Index of the node this primitive draws at.
|
|
15
|
+
*
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
node = 0;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @type {MeshletGeometry}
|
|
22
|
+
*/
|
|
23
|
+
geometry = null;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @type {ShadeMaterial}
|
|
27
|
+
*/
|
|
28
|
+
material = null;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Index into {@link Prefab.skins} of the skin this primitive deforms against, or -1 for a
|
|
32
|
+
* rigid primitive.
|
|
33
|
+
*
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
skin = -1;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A model compiled once, to be spawned as entities any number of times.
|
|
41
|
+
*
|
|
42
|
+
* **Everything in here is addressed by node index**, and a node index is what an instance turns
|
|
43
|
+
* into an entity. Parents precede children, so one forward pass composes every world transform
|
|
44
|
+
* and one forward pass spawns every entity with its parent already there. Node 0 is the root:
|
|
45
|
+
* the entity that places the model, which the prefab does not spawn and whose transform is the
|
|
46
|
+
* placement. It carries no name and no geometry of its own.
|
|
47
|
+
*
|
|
48
|
+
* Skins name their joints and their meshes by node index; clips target node indices. Geometry,
|
|
49
|
+
* materials, inverse-bind matrices and animation curves are shared by every instance — none of
|
|
50
|
+
* them is per-placement state — which is what makes a prefab cheap to instantiate and what a
|
|
51
|
+
* per-instance copy of a node tree could never be.
|
|
52
|
+
*
|
|
53
|
+
* Built by `prefab_compile`, from what a loader produced. Read-only afterwards.
|
|
54
|
+
*/
|
|
55
|
+
export class Prefab {
|
|
56
|
+
/**
|
|
57
|
+
* @type {number}
|
|
58
|
+
*/
|
|
59
|
+
node_count = 0;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Parent node of each node; -1 for the root, and every parent's index is below its child's.
|
|
63
|
+
*
|
|
64
|
+
* @type {Int32Array}
|
|
65
|
+
*/
|
|
66
|
+
parent = new Int32Array(0);
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The name the asset gave each node, or an empty string.
|
|
70
|
+
*
|
|
71
|
+
* @type {string[]}
|
|
72
|
+
*/
|
|
73
|
+
name = [];
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Each node's rest pose, relative to its parent. A skinned mesh node's is the frame its skin
|
|
77
|
+
* deforms in, not what the file said — see `prefab_normalize_skin_frames`.
|
|
78
|
+
*
|
|
79
|
+
* @type {Transform64[]}
|
|
80
|
+
*/
|
|
81
|
+
local = [];
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Each node's rest pose relative to the root, as a column-major 4×4, composed from
|
|
85
|
+
* {@link local}. The root's is the identity.
|
|
86
|
+
*
|
|
87
|
+
* @type {Float64Array[]}
|
|
88
|
+
*/
|
|
89
|
+
world = [];
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Whether a node is one the GPU may take over: a joint of a skin, the target of a clip, or
|
|
93
|
+
* anything under either — the GPU composes a driven joint's whole subtree. These are the nodes
|
|
94
|
+
* an instance declares `GPUStateAuthority` on, so that a later grant is a bit write rather
|
|
95
|
+
* than a component add.
|
|
96
|
+
*
|
|
97
|
+
* @type {Uint8Array}
|
|
98
|
+
*/
|
|
99
|
+
animated = new Uint8Array(0);
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @type {PrefabPrimitive[]}
|
|
103
|
+
*/
|
|
104
|
+
primitives = [];
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Skins with `joints` and `meshes` as node indices.
|
|
108
|
+
*
|
|
109
|
+
* @type {Skin[]}
|
|
110
|
+
*/
|
|
111
|
+
skins = [];
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Clips whose channels target node indices.
|
|
115
|
+
*
|
|
116
|
+
* @type {ShadeAnimationClip[]}
|
|
117
|
+
*/
|
|
118
|
+
clips = [];
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @type {Map<string, number>}
|
|
122
|
+
*/
|
|
123
|
+
#index_by_name = new Map();
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Which node the asset calls `name`. A name authored twice answers with the first node in
|
|
127
|
+
* pre-order, which is the same answer a search would have given.
|
|
128
|
+
*
|
|
129
|
+
* @param {string} name
|
|
130
|
+
* @returns {number} the node index, or -1
|
|
131
|
+
*/
|
|
132
|
+
index_of(name) {
|
|
133
|
+
const index = this.#index_by_name.get(name);
|
|
134
|
+
|
|
135
|
+
return index === undefined ? -1 : index;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Build {@link index_of}'s table from {@link name}. For `prefab_compile`.
|
|
140
|
+
*/
|
|
141
|
+
index_names() {
|
|
142
|
+
const by_name = this.#index_by_name;
|
|
143
|
+
|
|
144
|
+
by_name.clear();
|
|
145
|
+
|
|
146
|
+
const names = this.name;
|
|
147
|
+
|
|
148
|
+
for (let i = 0; i < names.length; i++) {
|
|
149
|
+
const name = names[i];
|
|
150
|
+
|
|
151
|
+
if (name !== "" && !by_name.has(name)) {
|
|
152
|
+
by_name.set(name, i);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @readonly
|
|
160
|
+
* @type {boolean}
|
|
161
|
+
*/
|
|
162
|
+
Prefab.prototype.isPrefab = true;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("./Prefab.js").Prefab} Prefab
|
|
3
|
+
* @typedef {import("../../../shade/renderer/animation/Skin.js").Skin} Skin
|
|
4
|
+
* @typedef {import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* One placement of a {@link Prefab}: the entities its nodes became, and the model's skins and
|
|
8
|
+
* clips re-addressed to them.
|
|
9
|
+
*
|
|
10
|
+
* `entities[i]` is the entity of node `i`; `entities[0]` is the root, the entity that placed the
|
|
11
|
+
* model and was there before. Everything read-only about the model — geometry, materials,
|
|
12
|
+
* inverse-bind matrices, curves — is the prefab's and shared; what is per-instance is the
|
|
13
|
+
* addressing, which is why the skins and clips here are new objects over the same data.
|
|
14
|
+
*
|
|
15
|
+
* Handed out by `MeshSystem.instance_of` rather than copied, because a driver has to know *which*
|
|
16
|
+
* instance it is bound to: a model swap builds a new one, and the object's identity is the only
|
|
17
|
+
* signal that says so.
|
|
18
|
+
*/
|
|
19
|
+
export class PrefabInstance {
|
|
20
|
+
/**
|
|
21
|
+
* @type {Prefab}
|
|
22
|
+
*/
|
|
23
|
+
prefab: Prefab;
|
|
24
|
+
/**
|
|
25
|
+
* The entity that placed the model. Node 0 of the prefab.
|
|
26
|
+
*
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
29
|
+
root: number;
|
|
30
|
+
/**
|
|
31
|
+
* The entity of each node of the prefab, by node index.
|
|
32
|
+
*
|
|
33
|
+
* @type {Int32Array}
|
|
34
|
+
*/
|
|
35
|
+
entities: Int32Array;
|
|
36
|
+
/**
|
|
37
|
+
* The entities that draw — one per primitive of the prefab, in the prefab's primitive order.
|
|
38
|
+
* Each holds the `meshes` row of the same index as its `transforms` row.
|
|
39
|
+
*
|
|
40
|
+
* @type {Int32Array}
|
|
41
|
+
*/
|
|
42
|
+
mesh_entities: Int32Array;
|
|
43
|
+
/**
|
|
44
|
+
* The model's skins, with `joints` and `meshes` as entities of this instance.
|
|
45
|
+
*
|
|
46
|
+
* @type {Skin[]}
|
|
47
|
+
*/
|
|
48
|
+
skins: Skin[];
|
|
49
|
+
/**
|
|
50
|
+
* The model's clips, with every channel targeting an entity of this instance. Their names and
|
|
51
|
+
* durations are the model's; a driver resolves a clip by name to its index here.
|
|
52
|
+
*
|
|
53
|
+
* @type {ShadeAnimationClip[]}
|
|
54
|
+
*/
|
|
55
|
+
clips: ShadeAnimationClip[];
|
|
56
|
+
/**
|
|
57
|
+
* The entity of the node the asset calls `name` — a bone, a socket's bone, an effector.
|
|
58
|
+
*
|
|
59
|
+
* @param {string} name
|
|
60
|
+
* @returns {number} the entity, or -1 when the model has no such node
|
|
61
|
+
*/
|
|
62
|
+
entity_of(name: string): number;
|
|
63
|
+
/**
|
|
64
|
+
* @readonly
|
|
65
|
+
* @type {boolean}
|
|
66
|
+
*/
|
|
67
|
+
readonly isPrefabInstance: boolean;
|
|
68
|
+
}
|
|
69
|
+
export type Prefab = import("./Prefab.js").Prefab;
|
|
70
|
+
export type Skin = import("../../../shade/renderer/animation/Skin.js").Skin;
|
|
71
|
+
export type ShadeAnimationClip = import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip;
|
|
72
|
+
//# sourceMappingURL=PrefabInstance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrefabInstance.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/prefab/PrefabInstance.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;GAYG;AACH;IACI;;OAEG;IACH,QAFU,MAAM,CAEF;IAEd;;;;OAIG;IACH,MAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,UAFU,UAAU,CAES;IAE7B;;;;;OAKG;IACH,eAFU,UAAU,CAEc;IAElC;;;;OAIG;IACH,OAFU,IAAI,EAAE,CAEL;IAEX;;;;;OAKG;IACH,OAFU,kBAAkB,EAAE,CAEnB;IAEX;;;;;OAKG;IACH,gBAHW,MAAM,GACJ,MAAM,CAMlB;IAGL;;;OAGG;IACH,2BAFU,OAAO,CAEwB;CANxC;qBAxEY,OAAO,aAAa,EAAE,MAAM;mBAC5B,OAAO,2CAA2C,EAAE,IAAI;iCACxD,OAAO,yDAAyD,EAAE,kBAAkB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("./Prefab.js").Prefab} Prefab
|
|
3
|
+
* @typedef {import("../../../shade/renderer/animation/Skin.js").Skin} Skin
|
|
4
|
+
* @typedef {import("../../../shade/renderer/animation/ShadeAnimationClip.js").ShadeAnimationClip} ShadeAnimationClip
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* One placement of a {@link Prefab}: the entities its nodes became, and the model's skins and
|
|
9
|
+
* clips re-addressed to them.
|
|
10
|
+
*
|
|
11
|
+
* `entities[i]` is the entity of node `i`; `entities[0]` is the root, the entity that placed the
|
|
12
|
+
* model and was there before. Everything read-only about the model — geometry, materials,
|
|
13
|
+
* inverse-bind matrices, curves — is the prefab's and shared; what is per-instance is the
|
|
14
|
+
* addressing, which is why the skins and clips here are new objects over the same data.
|
|
15
|
+
*
|
|
16
|
+
* Handed out by `MeshSystem.instance_of` rather than copied, because a driver has to know *which*
|
|
17
|
+
* instance it is bound to: a model swap builds a new one, and the object's identity is the only
|
|
18
|
+
* signal that says so.
|
|
19
|
+
*/
|
|
20
|
+
export class PrefabInstance {
|
|
21
|
+
/**
|
|
22
|
+
* @type {Prefab}
|
|
23
|
+
*/
|
|
24
|
+
prefab = null;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The entity that placed the model. Node 0 of the prefab.
|
|
28
|
+
*
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
root = -1;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The entity of each node of the prefab, by node index.
|
|
35
|
+
*
|
|
36
|
+
* @type {Int32Array}
|
|
37
|
+
*/
|
|
38
|
+
entities = new Int32Array(0);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The entities that draw — one per primitive of the prefab, in the prefab's primitive order.
|
|
42
|
+
* Each holds the `meshes` row of the same index as its `transforms` row.
|
|
43
|
+
*
|
|
44
|
+
* @type {Int32Array}
|
|
45
|
+
*/
|
|
46
|
+
mesh_entities = new Int32Array(0);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The model's skins, with `joints` and `meshes` as entities of this instance.
|
|
50
|
+
*
|
|
51
|
+
* @type {Skin[]}
|
|
52
|
+
*/
|
|
53
|
+
skins = [];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The model's clips, with every channel targeting an entity of this instance. Their names and
|
|
57
|
+
* durations are the model's; a driver resolves a clip by name to its index here.
|
|
58
|
+
*
|
|
59
|
+
* @type {ShadeAnimationClip[]}
|
|
60
|
+
*/
|
|
61
|
+
clips = [];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The entity of the node the asset calls `name` — a bone, a socket's bone, an effector.
|
|
65
|
+
*
|
|
66
|
+
* @param {string} name
|
|
67
|
+
* @returns {number} the entity, or -1 when the model has no such node
|
|
68
|
+
*/
|
|
69
|
+
entity_of(name) {
|
|
70
|
+
const index = this.prefab.index_of(name);
|
|
71
|
+
|
|
72
|
+
return index === -1 ? -1 : this.entities[index];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @readonly
|
|
78
|
+
* @type {boolean}
|
|
79
|
+
*/
|
|
80
|
+
PrefabInstance.prototype.isPrefabInstance = true;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile what a loader produced into a {@link Prefab}.
|
|
3
|
+
*
|
|
4
|
+
* The bundle is read and never written: it is the loader's, shared by every placement of the
|
|
5
|
+
* model and by whatever else reads it. Geometry, materials, inverse-bind matrices and curves are
|
|
6
|
+
* referenced, not copied.
|
|
7
|
+
*
|
|
8
|
+
* The bundle's nodes are in pre-order, so one forward pass indexes them with every parent below
|
|
9
|
+
* its children and composes each world from its parent's. Skins and clips are re-addressed from
|
|
10
|
+
* the bundle's indices to the prefab's; nothing about them changes otherwise. Then, once per model
|
|
11
|
+
* rather than once per placement, each skin's meshes are put into the frame the skin deforms in
|
|
12
|
+
* ({@link prefab_normalize_skin_frames}) and each clip that scales something is checked against
|
|
13
|
+
* each skin ({@link prefab_skin_clip_scale_conflicts}), both reported the way the animation
|
|
14
|
+
* manager used to report them on registration.
|
|
15
|
+
*
|
|
16
|
+
* @param {SceneBundle} bundle
|
|
17
|
+
* @returns {Prefab}
|
|
18
|
+
*/
|
|
19
|
+
export function prefab_compile(bundle: SceneBundle): Prefab;
|
|
20
|
+
export type SceneBundle = import("../../../shade/renderer/loader/SceneBundle.js").SceneBundle;
|
|
21
|
+
export type SceneNode = import("../../../shade/renderer/loader/SceneNode.js").SceneNode;
|
|
22
|
+
import { Prefab } from "./Prefab.js";
|
|
23
|
+
//# sourceMappingURL=prefab_compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefab_compile.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/prefab/prefab_compile.js"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;GAiBG;AACH,uCAHW,WAAW,GACT,MAAM,CA0KlB;0BA5NY,OAAO,+CAA+C,EAAE,WAAW;wBACnE,OAAO,6CAA6C,EAAE,SAAS;uBANpC,aAAa"}
|