@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
|
@@ -21,11 +21,11 @@ export const NODE3D_STRUCT: WebGPUStruct;
|
|
|
21
21
|
/**
|
|
22
22
|
* Reserved row id for the scene root in the GPU `transforms` table.
|
|
23
23
|
*
|
|
24
|
-
* The
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
24
|
+
* The root's record sits at index 0 — identity, written once by
|
|
25
|
+
* `GPUSceneContext.build`, its first. An entity whose attachment names
|
|
26
|
+
* no entity with a row gets a GPU `parent` field of `NODE3D_SCENE_ID`
|
|
27
|
+
* and carries its world pose as its local one, so the composition is
|
|
28
|
+
* exact.
|
|
29
29
|
*
|
|
30
30
|
* The transform-hierarchy pass also treats `parent == NODE3D_SCENE_ID`
|
|
31
31
|
* as the walk termination condition. That makes 0 — the natural value
|
|
@@ -69,11 +69,11 @@ export const NODE3D_STRUCT = WebGPUStruct.from({
|
|
|
69
69
|
/**
|
|
70
70
|
* Reserved row id for the scene root in the GPU `transforms` table.
|
|
71
71
|
*
|
|
72
|
-
* The
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
72
|
+
* The root's record sits at index 0 — identity, written once by
|
|
73
|
+
* `GPUSceneContext.build`, its first. An entity whose attachment names
|
|
74
|
+
* no entity with a row gets a GPU `parent` field of `NODE3D_SCENE_ID`
|
|
75
|
+
* and carries its world pose as its local one, so the composition is
|
|
76
|
+
* exact.
|
|
77
77
|
*
|
|
78
78
|
* The transform-hierarchy pass also treats `parent == NODE3D_SCENE_ID`
|
|
79
79
|
* as the walk termination condition. That makes 0 — the natural value
|
|
@@ -5,11 +5,9 @@
|
|
|
5
5
|
export class Node3D {
|
|
6
6
|
/**
|
|
7
7
|
* Stable numeric id, unique across every Node3D instance (meshes,
|
|
8
|
-
* lights, scenes, anchors)
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* or rebuild because it's tied to the JS object's identity, not
|
|
12
|
-
* its position in any array.
|
|
8
|
+
* lights, scenes, anchors) — tied to the JS object's identity, not
|
|
9
|
+
* its position in any array. A node in a scene is bound to its rows
|
|
10
|
+
* through the object itself (`GPUSceneContext.node_rows`).
|
|
13
11
|
*
|
|
14
12
|
* @type {number}
|
|
15
13
|
* @readonly
|
|
@@ -37,13 +35,34 @@ export class Node3D {
|
|
|
37
35
|
* @param {boolean} v
|
|
38
36
|
*/
|
|
39
37
|
set needsUpdate(v: boolean);
|
|
38
|
+
/**
|
|
39
|
+
* Where this node reports that it has moved — set by the {@link GPUSceneContext} that gives it
|
|
40
|
+
* rows, cleared when it takes them back. Null for a node no context holds, which is every node
|
|
41
|
+
* before it is added to a scene and every node after it leaves one.
|
|
42
|
+
*
|
|
43
|
+
* A node reports to one list, not several. Two contexts holding the same node would need two,
|
|
44
|
+
* and nothing in the engine does that: a `SceneManager` keeps one context per scene, and
|
|
45
|
+
* {@link GPUSceneContext} asserts when a node arrives already reporting somewhere else rather
|
|
46
|
+
* than quietly taking the claim and leaving the other context deaf.
|
|
47
|
+
*
|
|
48
|
+
* @type {Node3DDirtyList|null}
|
|
49
|
+
*/
|
|
50
|
+
transform_dirty_list: Node3DDirtyList | null;
|
|
51
|
+
/**
|
|
52
|
+
* Handing a row back to the CPU has to be *reported*, not waited for: while the GPU owned the
|
|
53
|
+
* row nothing bumped this node's version, so nothing else would ever mark it as needing a
|
|
54
|
+
* write and the CPU would go on not writing a row it now owns.
|
|
55
|
+
*
|
|
56
|
+
* @param {TransformAuthority} value
|
|
57
|
+
*/
|
|
58
|
+
set transform_authority(value: number);
|
|
40
59
|
/**
|
|
41
60
|
* Who writes this node's TRS in the GPU `transforms` table. Declared, never inferred — see
|
|
42
61
|
* {@link TransformAuthority} for what each side owns and why guessing does not work.
|
|
43
62
|
*
|
|
44
|
-
* @
|
|
63
|
+
* @returns {TransformAuthority}
|
|
45
64
|
*/
|
|
46
|
-
transform_authority:
|
|
65
|
+
get transform_authority(): number;
|
|
47
66
|
/**
|
|
48
67
|
* World transform, **derived** — {@link updateMatrices} recomputes it from
|
|
49
68
|
* {@link transform_local} and the parent chain, so writing it directly is undone the moment
|
|
@@ -134,7 +153,7 @@ export class Node3D {
|
|
|
134
153
|
readonly isNode3D: boolean;
|
|
135
154
|
#private;
|
|
136
155
|
}
|
|
137
|
-
|
|
156
|
+
export type Node3DDirtyList = import("./Node3DDirtyList.js").Node3DDirtyList;
|
|
138
157
|
import { Transform64 } from "../../../engine/ecs/transform/Transform64.js";
|
|
139
158
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
140
159
|
//# sourceMappingURL=Node3D.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node3D.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/Node3D.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Node3D.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/Node3D.js"],"names":[],"mappings":"AAYA;;;GAGG;AACH;IAEI;;;;;;;;OAQG;IACH,aAHU,MAAM,CAGE;IAElB;;;OAGG;IACH,MAFU,MAAM,CAEP;IAOT;;;;;;;;;;;OAWG;IACH,sBAEC;IAED;;OAEG;IACH,4BAMC;IAED;;;;;;;;;;;OAWG;IACH,sBAFU,eAAe,GAAC,IAAI,CAEF;IA6C5B;;;;;;OAMG;IACH,uCAQC;IAzBD;;;;;OAKG;IACH,kCAEC;IAmBD;;;;;;OAMG;IACH,kBAFU,WAAW,CAEgB;IAErC;;;;;OAKG;IACH,iBAFU,WAAW,CAEe;IAEpC,YAAc;IAEd;;;OAGG;IACH,UAFU,MAAM,EAAE,CAEL;IAYb;;;;;;OAMG;IACH,wBAMC;IAvBD;;;;;OAKG;IACH,uBAEC;IAiBD;;;;;OAKG;IACH,qBAEC;IAED;;OAEG;IACH,8BAEC;IAED;;;;;OAKG;IACH,6BAEC;IAED,uBAOC;IAED,gBAmBC;IAED;;;;OAIG;IACH,0BAHoB,MAAM,+BASzB;IAED;;;;;;OAMG;IACH,uBA4BC;IAED;;;OAGG;IACH,sBAFW,MAAM,EAAE,QAOlB;IAED;;;OAGG;IACH,gBAFW,MAAM,QAchB;IAIL;;;;;;OAMG;IACH,mBAFU,OAAO,CAEQ;;CATxB;8BAhUY,OAAO,sBAAsB,EAAE,eAAe;4BAJ/B,8CAA8C;oBAHtD,+BAA+B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("./Node3D.js").Node3D} Node3D
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Nodes whose transform has been touched since the last drain — how a {@link GPUSceneContext}
|
|
6
|
+
* finds out what moved, instead of asking every node it holds.
|
|
7
|
+
*
|
|
8
|
+
* A scene-wide scan is proportional to the scene and not to the frame: a version comparison is
|
|
9
|
+
* cheap, several tens of thousands of them are not, and the scan runs once per view. Movement is
|
|
10
|
+
* reported at the one place it happens — {@link Node3D.updateMatrices}, and the two other things
|
|
11
|
+
* that bump a node's version — so the list is what actually changed and the frame costs what it
|
|
12
|
+
* moved.
|
|
13
|
+
*
|
|
14
|
+
* {@link generation} is the drain counter, and a node stamps itself with it when it joins. That is
|
|
15
|
+
* what makes a repeat within one frame free: `updateMatrices` recurses into children, so a
|
|
16
|
+
* character's root moving reaches every joint under it, and reaching a joint twice — through the
|
|
17
|
+
* recursion and again through a call of its own — must not queue it twice.
|
|
18
|
+
*
|
|
19
|
+
* A node on the list is a node that *may* have moved, never a promise that it did. The consumer
|
|
20
|
+
* still compares versions: the membership sweep writes an arriving node's row itself, and that
|
|
21
|
+
* node is on the list as well.
|
|
22
|
+
*/
|
|
23
|
+
export class Node3DDirtyList {
|
|
24
|
+
/**
|
|
25
|
+
* Bumped by {@link drain}. A node carries the value it last joined under; see the class note.
|
|
26
|
+
*
|
|
27
|
+
* @type {number}
|
|
28
|
+
*/
|
|
29
|
+
generation: number;
|
|
30
|
+
/**
|
|
31
|
+
* @param {Node3D} node
|
|
32
|
+
*/
|
|
33
|
+
add(node: Node3D): void;
|
|
34
|
+
/**
|
|
35
|
+
* How many nodes are waiting. For a spec, and for anything that wants to know whether a frame
|
|
36
|
+
* has anything to do before it starts doing it.
|
|
37
|
+
*
|
|
38
|
+
* @returns {number}
|
|
39
|
+
*/
|
|
40
|
+
get size(): number;
|
|
41
|
+
/**
|
|
42
|
+
* Hand over everything queued and start a fresh batch.
|
|
43
|
+
*
|
|
44
|
+
* The returned array is valid until the next drain, which is also when it is recycled — so a
|
|
45
|
+
* caller reads it and lets go of it. Anything queued *while* it is being read lands in the new
|
|
46
|
+
* batch rather than being appended to the one under the reader's feet.
|
|
47
|
+
*
|
|
48
|
+
* @returns {Node3D[]}
|
|
49
|
+
*/
|
|
50
|
+
drain(): Node3D[];
|
|
51
|
+
/**
|
|
52
|
+
* Forget everything queued without handing it anywhere. For a context being torn down, whose
|
|
53
|
+
* nodes may outlive it.
|
|
54
|
+
*/
|
|
55
|
+
clear(): void;
|
|
56
|
+
#private;
|
|
57
|
+
}
|
|
58
|
+
export type Node3D = import("./Node3D.js").Node3D;
|
|
59
|
+
//# sourceMappingURL=Node3DDirtyList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Node3DDirtyList.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/Node3DDirtyList.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAEI;;;;OAIG;IACH,YAFU,MAAM,CAED;IAef;;OAEG;IACH,UAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,mBAEC;IAED;;;;;;;;OAQG;IACH,SAFa,MAAM,EAAE,CAapB;IAED;;;OAGG;IACH,cAKC;;CACJ;qBA7FY,OAAO,aAAa,EAAE,MAAM"}
|
|
@@ -1,35 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* (e.g. world-shift the whole hierarchy) just like any other Node3D.
|
|
2
|
+
* @typedef {import("../../../engine/ecs/EntityComponentDataset.js").EntityComponentDataset} EntityComponentDataset
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* A scene: the dataset whose entities are what it draws and poses, and the three things that are
|
|
6
|
+
* not entities — its lights' collection, a light probe volume, volumetrics.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* Everything drawn is an entity of {@link dataset} holding a row of the scene's GPU database
|
|
9
|
+
* (`GPUSceneContext.rows`), at `entity + 1`. A game's systems take rows as components appear; a
|
|
10
|
+
* scene with no systems places a model with `prefab_place`, a primitive with `place_primitive`
|
|
11
|
+
* and a light with `place_light`. Nothing is added to the scene itself.
|
|
13
12
|
*/
|
|
14
|
-
export class Scene
|
|
15
|
-
instances: InstanceBatch;
|
|
16
|
-
/**
|
|
17
|
-
* Number of *renderable* mesh instances. Drives the rasterization
|
|
18
|
-
* pipeline's per-mesh dispatches.
|
|
19
|
-
*
|
|
20
|
-
* @return {number}
|
|
21
|
-
*/
|
|
22
|
-
get instance_count(): number;
|
|
13
|
+
export class Scene {
|
|
23
14
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* the GPU scene-graph propagation pass's iteration range.
|
|
15
|
+
* The dataset whose entities are this scene's rows. A scene is bound to one dataset; whoever
|
|
16
|
+
* owns both names it here, before anything asks the scene's GPU context for its rows. Null
|
|
17
|
+
* for a scene that draws nothing.
|
|
28
18
|
*
|
|
29
|
-
* @
|
|
19
|
+
* @type {EntityComponentDataset|null}
|
|
30
20
|
*/
|
|
31
|
-
|
|
21
|
+
dataset: EntityComponentDataset | null;
|
|
32
22
|
/**
|
|
23
|
+
* Each light at an entity of {@link dataset} — `lights.add(light, entity)`, or `place_light`
|
|
24
|
+
* for a caller with no entity of its own.
|
|
33
25
|
*
|
|
34
26
|
* @type {LightCollection}
|
|
35
27
|
*/
|
|
@@ -44,47 +36,13 @@ export class Scene extends Node3D {
|
|
|
44
36
|
* @type {SceneVolumetrics}
|
|
45
37
|
*/
|
|
46
38
|
volumetrics: SceneVolumetrics;
|
|
47
|
-
hash(): number;
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
* @param {Scene} other
|
|
51
|
-
*/
|
|
52
|
-
equals(other: Scene): boolean;
|
|
53
|
-
/**
|
|
54
|
-
* Add a `Node3D` (or any of its subclasses — `Mesh`, `Light`, …) to
|
|
55
|
-
* the scene. Children of the node are traversed and added too. Pass
|
|
56
|
-
* an array to add several nodes at once.
|
|
57
|
-
*
|
|
58
|
-
* Routing rule:
|
|
59
|
-
* - {@link isLight}-tagged nodes go to {@link lights} (their own
|
|
60
|
-
* GPU pipeline) and are *not* tracked by the instance batch.
|
|
61
|
-
* - Everything else — meshes, anchors, future skeleton joints —
|
|
62
|
-
* goes into {@link instances}, the InstanceBatch. Meshes also
|
|
63
|
-
* surface in `instances.instances` (the rendered subset);
|
|
64
|
-
* non-mesh nodes are visible only as part of `instances.nodes`,
|
|
65
|
-
* which is what the GPU scene-graph propagation pass iterates.
|
|
66
|
-
*
|
|
67
|
-
* @param {Node3D|Node3D[]} node
|
|
68
|
-
*/
|
|
69
|
-
add(node: Node3D | Node3D[]): void;
|
|
70
|
-
/**
|
|
71
|
-
* Take a node back out, along with everything {@link add} brought in with it.
|
|
72
|
-
*
|
|
73
|
-
* Routing mirrors {@link add} exactly: lights leave {@link lights}, everything else leaves
|
|
74
|
-
* {@link instances}. A node is only ever in one of them, so the two are not both consulted.
|
|
75
|
-
*
|
|
76
|
-
* @param {Node3D|Node3D[]} node
|
|
77
|
-
* @returns {boolean} true if the node itself was found and dropped
|
|
78
|
-
*/
|
|
79
|
-
remove(node: Node3D | Node3D[]): boolean;
|
|
80
39
|
/**
|
|
81
40
|
* @readonly
|
|
82
41
|
* @type {boolean}
|
|
83
42
|
*/
|
|
84
43
|
readonly isScene: boolean;
|
|
85
44
|
}
|
|
86
|
-
|
|
87
|
-
import { InstanceBatch } from "./InstanceBatch.js";
|
|
45
|
+
export type EntityComponentDataset = import("../../../engine/ecs/EntityComponentDataset.js").EntityComponentDataset;
|
|
88
46
|
import { LightCollection } from "../light/LightCollection.js";
|
|
89
47
|
import { LightProbeVolume } from "../global_illumination/lpv/LightProbeVolume.js";
|
|
90
48
|
import { SceneVolumetrics } from "../volumetrics/SceneVolumetrics.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/Scene.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/Scene.js"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;;;;;;GAQG;AACH;IACI;;;;;;OAMG;IACH,SAFU,sBAAsB,GAAC,IAAI,CAEtB;IAEf;;;;;OAKG;IACH,QAFU,eAAe,CAEM;IAE/B;;;OAGG;IACH,oBAFU,gBAAgB,CAEkB;IAE5C;;;OAGG;IACH,aAFU,gBAAgB,CAEW;IAGzC;;;OAGG;IACH,kBAFU,OAAO,CAEM;CANtB;qCAzCY,OAAO,+CAA+C,EAAE,sBAAsB;gCAJ3D,6BAA6B;iCAD5B,gDAAgD;iCAEhD,oCAAoC"}
|
|
@@ -1,146 +1,53 @@
|
|
|
1
|
-
import { LightProbeVolume } from "../global_illumination/lpv/LightProbeVolume.js";
|
|
2
|
-
import { LightCollection } from "../light/LightCollection.js";
|
|
3
|
-
import { SceneVolumetrics } from "../volumetrics/SceneVolumetrics.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
*/
|
|
55
|
-
light_probe_volume = new LightProbeVolume();
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
*
|
|
59
|
-
* @type {SceneVolumetrics}
|
|
60
|
-
*/
|
|
61
|
-
volumetrics = new SceneVolumetrics();
|
|
62
|
-
|
|
63
|
-
hash() {
|
|
64
|
-
return 0;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
*
|
|
69
|
-
* @param {Scene} other
|
|
70
|
-
*/
|
|
71
|
-
equals(other) {
|
|
72
|
-
return this.instances.equals(other.instances);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Add a `Node3D` (or any of its subclasses — `Mesh`, `Light`, …) to
|
|
77
|
-
* the scene. Children of the node are traversed and added too. Pass
|
|
78
|
-
* an array to add several nodes at once.
|
|
79
|
-
*
|
|
80
|
-
* Routing rule:
|
|
81
|
-
* - {@link isLight}-tagged nodes go to {@link lights} (their own
|
|
82
|
-
* GPU pipeline) and are *not* tracked by the instance batch.
|
|
83
|
-
* - Everything else — meshes, anchors, future skeleton joints —
|
|
84
|
-
* goes into {@link instances}, the InstanceBatch. Meshes also
|
|
85
|
-
* surface in `instances.instances` (the rendered subset);
|
|
86
|
-
* non-mesh nodes are visible only as part of `instances.nodes`,
|
|
87
|
-
* which is what the GPU scene-graph propagation pass iterates.
|
|
88
|
-
*
|
|
89
|
-
* @param {Node3D|Node3D[]} node
|
|
90
|
-
*/
|
|
91
|
-
add(node) {
|
|
92
|
-
if (Array.isArray(node)) {
|
|
93
|
-
for (const n of node) this.add(n);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (node.isLight === true) {
|
|
98
|
-
this.lights.add(node);
|
|
99
|
-
} else {
|
|
100
|
-
this.instances.add(node);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const children = node.children;
|
|
104
|
-
for (let i = 0; i < children.length; i++) {
|
|
105
|
-
this.add(children[i]);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Take a node back out, along with everything {@link add} brought in with it.
|
|
111
|
-
*
|
|
112
|
-
* Routing mirrors {@link add} exactly: lights leave {@link lights}, everything else leaves
|
|
113
|
-
* {@link instances}. A node is only ever in one of them, so the two are not both consulted.
|
|
114
|
-
*
|
|
115
|
-
* @param {Node3D|Node3D[]} node
|
|
116
|
-
* @returns {boolean} true if the node itself was found and dropped
|
|
117
|
-
*/
|
|
118
|
-
remove(node) {
|
|
119
|
-
if (Array.isArray(node)) {
|
|
120
|
-
let any = false;
|
|
121
|
-
|
|
122
|
-
for (const n of node) {
|
|
123
|
-
any = this.remove(n) || any;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return any;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const removed = node.isLight === true
|
|
130
|
-
? this.lights.remove(node)
|
|
131
|
-
: this.instances.remove(node);
|
|
132
|
-
|
|
133
|
-
const children = node.children;
|
|
134
|
-
for (let i = 0; i < children.length; i++) {
|
|
135
|
-
this.remove(children[i]);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return removed;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* @readonly
|
|
144
|
-
* @type {boolean}
|
|
145
|
-
*/
|
|
146
|
-
Scene.prototype.isScene = true;
|
|
1
|
+
import { LightProbeVolume } from "../global_illumination/lpv/LightProbeVolume.js";
|
|
2
|
+
import { LightCollection } from "../light/LightCollection.js";
|
|
3
|
+
import { SceneVolumetrics } from "../volumetrics/SceneVolumetrics.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {import("../../../engine/ecs/EntityComponentDataset.js").EntityComponentDataset} EntityComponentDataset
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A scene: the dataset whose entities are what it draws and poses, and the three things that are
|
|
11
|
+
* not entities — its lights' collection, a light probe volume, volumetrics.
|
|
12
|
+
*
|
|
13
|
+
* Everything drawn is an entity of {@link dataset} holding a row of the scene's GPU database
|
|
14
|
+
* (`GPUSceneContext.rows`), at `entity + 1`. A game's systems take rows as components appear; a
|
|
15
|
+
* scene with no systems places a model with `prefab_place`, a primitive with `place_primitive`
|
|
16
|
+
* and a light with `place_light`. Nothing is added to the scene itself.
|
|
17
|
+
*/
|
|
18
|
+
export class Scene {
|
|
19
|
+
/**
|
|
20
|
+
* The dataset whose entities are this scene's rows. A scene is bound to one dataset; whoever
|
|
21
|
+
* owns both names it here, before anything asks the scene's GPU context for its rows. Null
|
|
22
|
+
* for a scene that draws nothing.
|
|
23
|
+
*
|
|
24
|
+
* @type {EntityComponentDataset|null}
|
|
25
|
+
*/
|
|
26
|
+
dataset = null;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Each light at an entity of {@link dataset} — `lights.add(light, entity)`, or `place_light`
|
|
30
|
+
* for a caller with no entity of its own.
|
|
31
|
+
*
|
|
32
|
+
* @type {LightCollection}
|
|
33
|
+
*/
|
|
34
|
+
lights = new LightCollection();
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @type {LightProbeVolume}
|
|
39
|
+
*/
|
|
40
|
+
light_probe_volume = new LightProbeVolume();
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @type {SceneVolumetrics}
|
|
45
|
+
*/
|
|
46
|
+
volumetrics = new SceneVolumetrics();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @readonly
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
*/
|
|
53
|
+
Scene.prototype.isScene = true;
|
|
@@ -1,110 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* A mesh whose vertices are deformed each frame by joint transforms.
|
|
6
|
-
*
|
|
7
|
-
* On the CPU side, a `SkinnedMesh` is just a {@link Mesh} that points at
|
|
8
|
-
* the *unmodified* source {@link MeshletGeometry} — the same way every
|
|
9
|
-
* other instance of that mesh would. Multiple `SkinnedMesh` instances
|
|
10
|
-
* share the source geometry; no per-instance CPU clones happen.
|
|
11
|
-
*
|
|
12
|
-
* The GPU side makes the deformation possible by allocating a
|
|
13
|
-
* per-instance vertex/metadata clone of the source geometry inside the
|
|
14
|
-
* existing meshlet buffers (see
|
|
15
|
-
* {@link GPUMeshletManager#clone_batch_allocation}). The clone is
|
|
16
|
-
* registered as a separate geometry id (see
|
|
17
|
-
* {@link GPUGeometryManager#add_clone}); the instance record this mesh
|
|
18
|
-
* produces points at the clone, not at the source. Rasterization then
|
|
19
|
-
* sees the clone like any other geometry.
|
|
20
|
-
*
|
|
21
|
-
* Per-frame, a skinning compute pass reads the source's vertex data and
|
|
22
|
-
* the joint matrices and writes the deformed result into the clone's
|
|
23
|
-
* vertex region — leaving every other instance pointed at the source
|
|
24
|
-
* untouched. The skin matrices are computed per the glTF spec formula
|
|
25
|
-
* `inverse(meshNode.worldMatrix) × jointNode.worldMatrix ×
|
|
26
|
-
* inverseBindMatrix`, and the rasterizer re-applies
|
|
27
|
-
* `mesh.transform_global` to the result — so the mesh node's own
|
|
28
|
-
* transform cancels out of the rendered position exactly, which is what
|
|
29
|
-
* the glTF spec asks for. The leftmost factor is taken live from the
|
|
30
|
-
* mesh's own transforms row inside {@link shader_meshlet_apply_skinning};
|
|
31
|
-
* see {@link chunk_skin_blend_mesh_local} for why it goes into each
|
|
32
|
-
* matrix rather than onto the blended position.
|
|
2
|
+
* A loader's mark on a primitive that a skin deforms.
|
|
33
3
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* {@link skin_normalize_mesh_frame}, with the skin's own bind
|
|
41
|
-
* transform. Whatever the file put there is discarded, and anything
|
|
42
|
-
* reading this expecting the file's value is reading the wrong thing.
|
|
43
|
-
* See `renderer/animation/SKINNING_FRAME_PLAN.md`.
|
|
4
|
+
* **A tag, not a renderable.** A skinned model is placed as a prefab — `prefab_compile` reads
|
|
5
|
+
* this class off the loader's tree to know which primitives deform against which skin, and
|
|
6
|
+
* `prefab_instantiate` spawns each as an entity whose mesh row draws a per-instance clone the
|
|
7
|
+
* skinning pass writes (`ShadedGeometryFlags.Skinned`). Adding one of these to a scene as a node
|
|
8
|
+
* is refused by the scene database: a node draws its source geometry rigidly, and there is no
|
|
9
|
+
* node-side skinning any more.
|
|
44
10
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* that knows nothing about the GPU, and this mesh holds a reference to
|
|
49
|
-
* it in {@link skin} so its bounds can be worked out without asking the
|
|
50
|
-
* GPU anything. Bind the mesh to a skin via
|
|
51
|
-
* `gpu_scene.skinning.bind(mesh, skin_id)`, or rely on
|
|
52
|
-
* {@link GPUAnimationManager#register_skin} to do it for every entry
|
|
53
|
-
* in `Skin.meshes` — which is also what populates {@link skin}. Until
|
|
54
|
-
* bound, the clone routes through the rendering path but its vertices
|
|
55
|
-
* stay at the source's bind-pose values — useful as an intermediate
|
|
56
|
-
* verification state, and the state in which this mesh bounds itself
|
|
57
|
-
* exactly like a regular {@link Mesh}.
|
|
58
|
-
*
|
|
59
|
-
* A note on which bounds to believe. {@link Mesh#bounding_box} here is
|
|
60
|
-
* derived from whatever pose the *CPU* can see, and for a character
|
|
61
|
-
* animated by the pose accumulator that is the rest pose — the joints
|
|
62
|
-
* are {@link TransformAuthority.GPU} and their `transform_global` is
|
|
63
|
-
* never advanced. It is the right size and in the right place, and it
|
|
64
|
-
* is what seeds the scene database's `meshes` row. The deformed world
|
|
65
|
-
* box, refreshed every frame from the vertices the skinning pass just
|
|
66
|
-
* moved, is that row — read it from there when the silhouette is what
|
|
67
|
-
* matters.
|
|
11
|
+
* What the class still says: the geometry, the material, and that this primitive's vertices are
|
|
12
|
+
* placed by joints rather than by its own transform — which is why glTF declares the node's own
|
|
13
|
+
* transform meaningless for it, and why the prefab moves the node onto the skin's bind frame.
|
|
68
14
|
*/
|
|
69
15
|
export class SkinnedMesh extends Mesh {
|
|
70
|
-
/**
|
|
71
|
-
* The skin whose formula places this mesh's vertices, or `null` while none does.
|
|
72
|
-
*
|
|
73
|
-
* Not "is the deformation running" — {@link GPUMeshSkinningContext#unbind} can stop the
|
|
74
|
-
* skinning pass without this changing, and a mesh whose pass has stopped still holds vertices
|
|
75
|
-
* the skin put there. So {@link GPUAnimationManager#register_skin} writes it and nothing
|
|
76
|
-
* clears it: once a skin has taken a mesh over, its formula stays the right basis for
|
|
77
|
-
* {@link updateBoundsBasic} whether or not a pass runs this frame. Clear it by hand to hand
|
|
78
|
-
* the mesh back to {@link Mesh}'s composition.
|
|
79
|
-
*
|
|
80
|
-
* CPU data throughout (see {@link Skin}). The GPU-side skin *id* is a table row and lives in
|
|
81
|
-
* {@link GPUMeshSkinningContext}; this does not expose it.
|
|
82
|
-
*
|
|
83
|
-
* Nothing refreshes derived state on assignment — set this and the bounds go on describing
|
|
84
|
-
* the previous basis until {@link updateMatrices} or {@link updateBoundsBasic} runs.
|
|
85
|
-
*
|
|
86
|
-
* A clone shares the reference, exactly as {@link Skin#copy} shares its joint and mesh
|
|
87
|
-
* references: retargeting a cloned character means replacing this alongside the skin's own
|
|
88
|
-
* arrays, which {@link instantiate_scene_bundle} gets for free by re-registering the
|
|
89
|
-
* corresponded skin.
|
|
90
|
-
*
|
|
91
|
-
* @type {Skin|null}
|
|
92
|
-
*/
|
|
93
|
-
skin: Skin | null;
|
|
94
16
|
/**
|
|
95
17
|
* @returns {SkinnedMesh}
|
|
96
18
|
*/
|
|
97
19
|
clone(): SkinnedMesh;
|
|
98
|
-
/**
|
|
99
|
-
* @param {SkinnedMesh} other
|
|
100
|
-
*/
|
|
101
|
-
copy(other: SkinnedMesh): void;
|
|
102
20
|
/**
|
|
103
21
|
* @readonly
|
|
104
22
|
* @type {boolean}
|
|
105
23
|
*/
|
|
106
24
|
readonly isSkinnedMesh: boolean;
|
|
107
25
|
}
|
|
108
|
-
export type Skin = import("../animation/Skin.js").Skin;
|
|
109
26
|
import { Mesh } from "./Mesh.js";
|
|
110
27
|
//# sourceMappingURL=SkinnedMesh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkinnedMesh.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/SkinnedMesh.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SkinnedMesh.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/SkinnedMesh.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH;IAEI;;OAEG;IACH,SAFa,WAAW,CAMvB;IAGL;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CANlC;qBA1BoB,WAAW"}
|