@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
|
@@ -11,15 +11,19 @@ import { System } from "../ecs/System.js";
|
|
|
11
11
|
import Terrain from "../ecs/terrain/ecs/Terrain.js";
|
|
12
12
|
import { TerrainFlags } from "../ecs/terrain/ecs/TerrainFlags.js";
|
|
13
13
|
import { tile_geometry_to_meshlets } from "../ecs/terrain/tiles/tile_geometry_to_meshlets.js";
|
|
14
|
+
import { SerializationMetadata } from "../ecs/components/SerializationMetadata.js";
|
|
15
|
+
import { Name } from "../ecs/name/Name.js";
|
|
16
|
+
import { ParentEntity } from "../ecs/parent/ParentEntity.js";
|
|
14
17
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
18
|
+
import { t64_announce_change } from "../ecs/transform/t64_announce_change.js";
|
|
15
19
|
import { t64_equals_components } from "../ecs/transform/t64_equals_components.js";
|
|
20
|
+
import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
16
21
|
import { sampler2d_ensure_uint8_RGBA } from "../graphics/texture/sampler/sampler2d_ensure_uint8_RGBA.js";
|
|
17
22
|
import { Sampler2D } from "../graphics/texture/sampler/Sampler2D.js";
|
|
18
23
|
import { WHITE_PIXEL_DATA_URL } from "../graphics/WHITE_PIXEL_DATA_URL.js";
|
|
19
24
|
import { FramePhase } from "../../shade/renderer/extension/FramePhase.js";
|
|
20
25
|
import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
|
|
21
26
|
import { StandardShadeMaterial } from "../../shade/renderer/material/StandardShadeMaterial.js";
|
|
22
|
-
import { Mesh } from "../../shade/renderer/scene/Mesh.js";
|
|
23
27
|
import { GPUTerrainSplatRenderer } from "./terrain/GPUTerrainSplatRenderer.js";
|
|
24
28
|
import { pack_terrain_row_table } from "./terrain/pack_terrain_row_table.js";
|
|
25
29
|
|
|
@@ -41,12 +45,22 @@ const WHITE_SPRITE = Sampler2D.uint8(4, 1, 1);
|
|
|
41
45
|
WHITE_SPRITE.data.fill(255);
|
|
42
46
|
|
|
43
47
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
48
|
+
* What a tile entity carries. Registered on the dataset the first time a tile is spawned, which is
|
|
49
|
+
* idempotent; a terrain may well be the first thing in a level to draw.
|
|
50
|
+
*
|
|
51
|
+
* @type {Function[]}
|
|
52
|
+
*/
|
|
53
|
+
const TILE_COMPONENT_TYPES = [Transform64, ShadedGeometry, Name, ParentEntity, SerializationMetadata];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Draws terrain under Shade: each built tile becomes one entity that draws — a `ShadedGeometry`
|
|
57
|
+
* over the tile's meshlets, standing where the terrain entity stands, owned by it and never saved
|
|
58
|
+
* — and a pass after the opaque geometry textures the lot. The system that owns primitives puts
|
|
59
|
+
* the tile in the scene's rows; this one makes and keeps the entity.
|
|
46
60
|
*
|
|
47
61
|
* **The tile is the unit, not the terrain.** Tiles are built on demand as the camera sees them and
|
|
48
62
|
* destroyed as it leaves, which is the streaming the tile manager already does; this system follows
|
|
49
|
-
* that with
|
|
63
|
+
* that with entities rather than deciding anything about it.
|
|
50
64
|
*
|
|
51
65
|
* **Tile vertices are already in terrain space** — the height-field builder positions each tile
|
|
52
66
|
* within the whole grid rather than at its own origin — so every tile mesh carries the terrain
|
|
@@ -76,13 +90,6 @@ export class TerrainSystem extends System {
|
|
|
76
90
|
*/
|
|
77
91
|
#extension = null;
|
|
78
92
|
|
|
79
|
-
/**
|
|
80
|
-
* The scene this system writes into, received rather than created so terrain, meshes and lights
|
|
81
|
-
* all land in the one the facade draws.
|
|
82
|
-
*
|
|
83
|
-
* @type {Scene}
|
|
84
|
-
*/
|
|
85
|
-
#scene;
|
|
86
93
|
|
|
87
94
|
/**
|
|
88
95
|
* @type {AssetManager}
|
|
@@ -90,15 +97,16 @@ export class TerrainSystem extends System {
|
|
|
90
97
|
#assetManager;
|
|
91
98
|
|
|
92
99
|
/**
|
|
93
|
-
* What each terrain entity has
|
|
100
|
+
* What each terrain entity has spawned.
|
|
94
101
|
*
|
|
95
|
-
* @type {Map<number, {terrain: Terrain, material: StandardShadeMaterial,
|
|
102
|
+
* @type {Map<number, {terrain: Terrain, material: StandardShadeMaterial, tiles: Map<TerrainTile, number>, bindings: SignalBinding[]}>}
|
|
96
103
|
*/
|
|
97
104
|
#entries = new Map();
|
|
98
105
|
|
|
99
106
|
/**
|
|
100
107
|
* @param {GraphicsEngine} graphics
|
|
101
|
-
* @param {Scene} scene
|
|
108
|
+
* @param {Scene} scene the scene the profile draws; a tile is an entity in its rows, put there
|
|
109
|
+
* by the system that owns primitives, so this one keeps nothing of the scene itself
|
|
102
110
|
* @param {AssetManager} assetManager
|
|
103
111
|
*/
|
|
104
112
|
constructor(graphics, scene, assetManager) {
|
|
@@ -109,7 +117,6 @@ export class TerrainSystem extends System {
|
|
|
109
117
|
assert.defined(assetManager, 'assetManager');
|
|
110
118
|
|
|
111
119
|
this.#graphics = graphics;
|
|
112
|
-
this.#scene = scene;
|
|
113
120
|
this.#assetManager = assetManager;
|
|
114
121
|
}
|
|
115
122
|
|
|
@@ -153,7 +160,7 @@ export class TerrainSystem extends System {
|
|
|
153
160
|
splat shader forced.
|
|
154
161
|
*/
|
|
155
162
|
material: new StandardShadeMaterial(),
|
|
156
|
-
|
|
163
|
+
tiles: new Map(),
|
|
157
164
|
bindings: [],
|
|
158
165
|
renderer: new GPUTerrainSplatRenderer(),
|
|
159
166
|
/**
|
|
@@ -276,29 +283,63 @@ export class TerrainSystem extends System {
|
|
|
276
283
|
return;
|
|
277
284
|
}
|
|
278
285
|
|
|
279
|
-
if (entry.
|
|
286
|
+
if (entry.tiles.has(tile)) {
|
|
280
287
|
// a rebuilt tile replaces what it had rather than accumulating
|
|
281
288
|
this.#remove_tile(entity, tile);
|
|
282
289
|
}
|
|
283
290
|
|
|
291
|
+
const name = `terrain tile ${tile.gridPosition.x},${tile.gridPosition.y}`;
|
|
292
|
+
|
|
284
293
|
const geometry = tile_geometry_to_meshlets({
|
|
285
294
|
vertices: tile.vertices,
|
|
286
295
|
normals: tile.normals,
|
|
287
296
|
uvs: tile.uvs,
|
|
288
297
|
indices: tile.indices
|
|
289
|
-
},
|
|
298
|
+
}, name);
|
|
290
299
|
|
|
291
|
-
const
|
|
300
|
+
const ecd = this.entityManager.dataset;
|
|
292
301
|
|
|
293
|
-
|
|
302
|
+
ecd.registerManyComponentTypes(TILE_COMPONENT_TYPES);
|
|
294
303
|
|
|
295
|
-
|
|
304
|
+
/*
|
|
305
|
+
The tile stands where the terrain stands: the world pose is copied rather than attached,
|
|
306
|
+
because a terrain may be linked before it has a transform at all and is placed on a poll
|
|
307
|
+
({@link update}) for that reason. Owned by the terrain entity, so a lifetime system takes
|
|
308
|
+
it down with the terrain; transient, because it is built from the terrain on load.
|
|
309
|
+
*/
|
|
310
|
+
const tile_entity = ecd.createEntity();
|
|
296
311
|
|
|
297
|
-
const
|
|
312
|
+
const placement = new Transform64();
|
|
313
|
+
const transform = ecd.getComponent(entity, Transform64);
|
|
314
|
+
|
|
315
|
+
if (transform !== undefined) {
|
|
316
|
+
placement.copy(transform);
|
|
317
|
+
placement.updateMatrix();
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
ecd.addComponentToEntity(tile_entity, SerializationMetadata.Transient);
|
|
321
|
+
ecd.addComponentToEntity(tile_entity, ParentEntity.from(entity));
|
|
322
|
+
ecd.addComponentToEntity(tile_entity, new Name(name));
|
|
323
|
+
ecd.addComponentToEntity(tile_entity, placement);
|
|
324
|
+
ecd.addComponentToEntity(tile_entity, ShadedGeometry.from(geometry, entry.material));
|
|
325
|
+
|
|
326
|
+
entry.tiles.set(tile, tile_entity);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* The entities a terrain's built tiles are.
|
|
331
|
+
*
|
|
332
|
+
* @param {number} entity the terrain entity
|
|
333
|
+
* @returns {Int32Array}
|
|
334
|
+
*/
|
|
335
|
+
tiles_of(entity) {
|
|
336
|
+
const entry = this.#entries.get(entity);
|
|
298
337
|
|
|
299
|
-
if (
|
|
300
|
-
|
|
338
|
+
if (entry === undefined) {
|
|
339
|
+
return new Int32Array(0);
|
|
301
340
|
}
|
|
341
|
+
|
|
342
|
+
return Int32Array.from(entry.tiles.values());
|
|
302
343
|
}
|
|
303
344
|
|
|
304
345
|
/**
|
|
@@ -312,15 +353,19 @@ export class TerrainSystem extends System {
|
|
|
312
353
|
return;
|
|
313
354
|
}
|
|
314
355
|
|
|
315
|
-
const
|
|
356
|
+
const tile_entity = entry.tiles.get(tile);
|
|
316
357
|
|
|
317
|
-
if (
|
|
358
|
+
if (tile_entity === undefined) {
|
|
318
359
|
return;
|
|
319
360
|
}
|
|
320
361
|
|
|
321
|
-
|
|
362
|
+
entry.tiles.delete(tile);
|
|
363
|
+
|
|
364
|
+
const ecd = this.entityManager.dataset;
|
|
322
365
|
|
|
323
|
-
|
|
366
|
+
if (ecd.entityExists(tile_entity)) {
|
|
367
|
+
ecd.removeEntity(tile_entity);
|
|
368
|
+
}
|
|
324
369
|
}
|
|
325
370
|
|
|
326
371
|
/**
|
|
@@ -338,23 +383,27 @@ export class TerrainSystem extends System {
|
|
|
338
383
|
return;
|
|
339
384
|
}
|
|
340
385
|
|
|
341
|
-
|
|
386
|
+
const ecd = this.entityManager.dataset;
|
|
387
|
+
|
|
388
|
+
for (const tile_entity of entry.tiles.values()) {
|
|
389
|
+
const placement = ecd.getComponent(tile_entity, Transform64);
|
|
390
|
+
|
|
342
391
|
/*
|
|
343
392
|
A tile already standing where it belongs is left alone, and it is the common case:
|
|
344
393
|
{@link update} places on a poll rather than on the entity's transform signals, because a
|
|
345
|
-
terrain may be linked before it has a `Transform` at all.
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
that has not moved since the level loaded (E19).
|
|
394
|
+
terrain may be linked before it has a `Transform` at all. An announcement is what
|
|
395
|
+
makes the scene's rows rewrite the tile's row and the top-level acceleration structure
|
|
396
|
+
refit — once a frame, for a ground that has not moved since the level loaded, is what
|
|
397
|
+
the poll used to cost before it compared (E19).
|
|
350
398
|
*/
|
|
351
|
-
if (t64_equals_components(
|
|
399
|
+
if (t64_equals_components(placement, transform)) {
|
|
352
400
|
continue;
|
|
353
401
|
}
|
|
354
402
|
|
|
355
|
-
|
|
403
|
+
placement.copy(transform);
|
|
404
|
+
placement.updateMatrix();
|
|
356
405
|
|
|
357
|
-
|
|
406
|
+
t64_announce_change(ecd, tile_entity);
|
|
358
407
|
}
|
|
359
408
|
}
|
|
360
409
|
|
|
@@ -372,10 +421,16 @@ export class TerrainSystem extends System {
|
|
|
372
421
|
entry.bindings[i].unlink();
|
|
373
422
|
}
|
|
374
423
|
|
|
375
|
-
|
|
376
|
-
|
|
424
|
+
const ecd = this.entityManager.dataset;
|
|
425
|
+
|
|
426
|
+
for (const tile_entity of entry.tiles.values()) {
|
|
427
|
+
if (ecd.entityExists(tile_entity)) {
|
|
428
|
+
ecd.removeEntity(tile_entity);
|
|
429
|
+
}
|
|
377
430
|
}
|
|
378
431
|
|
|
432
|
+
entry.tiles.clear();
|
|
433
|
+
|
|
379
434
|
entry.renderer.destroy();
|
|
380
435
|
|
|
381
436
|
this.#entries.delete(entity);
|
|
@@ -415,30 +470,24 @@ export class TerrainSystem extends System {
|
|
|
415
470
|
}
|
|
416
471
|
|
|
417
472
|
/**
|
|
418
|
-
* Everything the splat pass draws one terrain from
|
|
419
|
-
*
|
|
420
|
-
*
|
|
473
|
+
* Everything the splat pass draws one terrain from. What the pass consumes and what a gate
|
|
474
|
+
* inspects are deliberately the same object — the same reason `DecalSystem` exposes its
|
|
475
|
+
* packed records.
|
|
421
476
|
*
|
|
422
477
|
* @param {number} entity
|
|
423
|
-
* @
|
|
424
|
-
* @returns {object|null} `null` when this terrain has nothing on screen to texture — no tiles
|
|
425
|
-
* built, or none of them in the scene database yet
|
|
478
|
+
* @returns {object|null} `null` when this terrain has nothing to texture — no tiles built
|
|
426
479
|
*/
|
|
427
|
-
splat_frame(entity
|
|
480
|
+
splat_frame(entity) {
|
|
428
481
|
const entry = this.#entries.get(entity);
|
|
429
482
|
|
|
430
|
-
if (entry === undefined || entry.
|
|
483
|
+
if (entry === undefined || entry.tiles.size === 0) {
|
|
431
484
|
return null;
|
|
432
485
|
}
|
|
433
486
|
|
|
434
|
-
const packed = pack_terrain_row_table({
|
|
487
|
+
const packed = pack_terrain_row_table({ tiles: entry.tiles, table: entry.rows });
|
|
435
488
|
|
|
436
489
|
entry.rows = packed.table;
|
|
437
490
|
|
|
438
|
-
if (packed.size === 0) {
|
|
439
|
-
return null;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
491
|
const terrain = entry.terrain;
|
|
443
492
|
|
|
444
493
|
const invertible = m4_invert(entry.world_to_terrain, terrain.transform);
|
|
@@ -519,7 +568,7 @@ export class TerrainSystem extends System {
|
|
|
519
568
|
*/
|
|
520
569
|
record(frame) {
|
|
521
570
|
for (const entity of this.#entries.keys()) {
|
|
522
|
-
const splat = this.splat_frame(entity
|
|
571
|
+
const splat = this.splat_frame(entity);
|
|
523
572
|
|
|
524
573
|
if (splat === null) {
|
|
525
574
|
// nothing of this terrain on screen; the frame keeps the albedo it already had
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipComponentSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/TooltipComponentSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TooltipComponentSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/TooltipComponentSystem.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IA0EI;;;;;;;OAOG;IACH;QANmC,QAAQ;QACR,QAAQ;QACT,OAAO;QACR,YAAY;QACX,OAAO;OAgBxC;IA/FD,0CAAkC;IAElC;;;;OAIG;IACH,eAFU,MAAM,CAEI;IAEpB;;;;;OAKG;IACH,iBAFU,SAAS,CAEM;IAkFzB;;;;OAIG;IACH,yBAEC;IAED,2CAMC;IAED,4CAMC;IAED;;;OAGG;IACH,gBAHW,gBAAgB,UAChB,MAAM,QAOhB;IAED,8BAyBC;;CAgHJ;uBAxTsB,kBAAkB;iCACR,oCAAoC;sBAJ/C,iCAAiC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { assert } from "../../core/assert.js";
|
|
2
2
|
import Rectangle from "../../core/geom/2d/Rectangle.js";
|
|
3
3
|
import { Vector2 } from "../../core/geom/Vector2.js";
|
|
4
|
-
import Vector3 from "../../core/geom/Vector3.js";
|
|
5
4
|
import { VisualTip } from "../../view/tooltip/VisualTip.js";
|
|
6
5
|
import { System } from "../ecs/System.js";
|
|
7
6
|
import { TooltipComponent } from "../ecs/tooltip/TooltipComponent.js";
|
|
@@ -13,15 +12,7 @@ import { PickingResult } from "./PickingResult.js";
|
|
|
13
12
|
*/
|
|
14
13
|
const SCRATCH_POINT = new Vector2();
|
|
15
14
|
|
|
16
|
-
/**
|
|
17
|
-
* @type {Vector3}
|
|
18
|
-
*/
|
|
19
|
-
const SCRATCH_ORIGIN = new Vector3();
|
|
20
15
|
|
|
21
|
-
/**
|
|
22
|
-
* @type {Vector3}
|
|
23
|
-
*/
|
|
24
|
-
const SCRATCH_DIRECTION = new Vector3();
|
|
25
16
|
|
|
26
17
|
/**
|
|
27
18
|
* How far from the pointer, in pixels, the rectangle a tooltip is anchored to sits.
|
|
@@ -243,13 +234,10 @@ export class TooltipComponentSystem extends System {
|
|
|
243
234
|
|
|
244
235
|
SCRATCH_POINT.set(position.x, position.y);
|
|
245
236
|
|
|
237
|
+
// clip space, x right and y up — the pick wants the fraction of the view, from the top left
|
|
246
238
|
graphics.normalizeViewportPoint(SCRATCH_POINT, SCRATCH_POINT);
|
|
247
|
-
graphics.viewportProjectionRay(
|
|
248
|
-
SCRATCH_POINT.x, SCRATCH_POINT.y,
|
|
249
|
-
SCRATCH_ORIGIN, SCRATCH_DIRECTION
|
|
250
|
-
);
|
|
251
239
|
|
|
252
|
-
const query = PickingQuery.
|
|
240
|
+
const query = PickingQuery.from_viewport((SCRATCH_POINT.x + 1) / 2, (1 - SCRATCH_POINT.y) / 2);
|
|
253
241
|
|
|
254
242
|
this.#query_in_flight = true;
|
|
255
243
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IA0CI;;OAEG;IACH,sCAMC;IAlDD,sDAAsC;IAgCtC;;;;OAIG;IACH,8BAEC;IAaD,2CAIC;IAED,4CAWC;IAED;;;;OAIG;IACH,YAJW,OAAO,aACP,WAAW,UACX,MAAM,
|
|
1
|
+
{"version":3,"file":"Trail3DSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/Trail3DSystem.js"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;IA0CI;;OAEG;IACH,sCAMC;IAlDD,sDAAsC;IAgCtC;;;;OAIG;IACH,8BAEC;IAaD,2CAIC;IAED,4CAWC;IAED;;;;OAIG;IACH,YAJW,OAAO,aACP,WAAW,UACX,MAAM,QAgBhB;IAED;;;;OAIG;IACH,cAJW,OAAO,aACP,WAAW,UACX,MAAM,QAiBhB;IAED,6BAYC;IAED;;OAEG;IACH,kCAeC;;CACJ;AAED;;GAEG;AACH;IAUI;;OAEG;IACH,oBAFW,aAAa,EAMvB;IAED,yBAEC;;CACJ;uBAjNsB,kBAAkB;4BACb,iCAAiC;oBAGzC,oCAAoC;iCALvB,gDAAgD;gCAJjD,mDAAmD"}
|
|
@@ -123,12 +123,10 @@ export class Trail3DSystem extends System {
|
|
|
123
123
|
seed_trail_tube(trail, transform);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
// the extrusion produces world-space vertices, and what the draw applies is the mesh's own
|
|
127
|
+
// transform, identity until moved
|
|
126
128
|
const mesh = DynamicMesh.from(new Geometry());
|
|
127
129
|
|
|
128
|
-
// the extrusion produces world-space vertices, so what the draw applies is identity — but a
|
|
129
|
-
// node's world transform is derived and stays unset until it is asked for
|
|
130
|
-
mesh.updateMatrices();
|
|
131
|
-
|
|
132
130
|
trail_tube_write_geometry(mesh.geometry, trail.tube);
|
|
133
131
|
|
|
134
132
|
this.#batch.add(mesh);
|
|
@@ -36,9 +36,9 @@ export class ClipListPlayer {
|
|
|
36
36
|
* The entity's private copy of the model — where the clips named in the list are found, and
|
|
37
37
|
* where their durations come from.
|
|
38
38
|
*
|
|
39
|
-
* @type {
|
|
39
|
+
* @type {PrefabInstance}
|
|
40
40
|
*/
|
|
41
|
-
instance:
|
|
41
|
+
instance: PrefabInstance;
|
|
42
42
|
/**
|
|
43
43
|
* One per entry of {@link component}'s list, in the list's own order.
|
|
44
44
|
*
|
|
@@ -62,9 +62,9 @@ export class ClipListPlayer {
|
|
|
62
62
|
*
|
|
63
63
|
* @param {number} entity
|
|
64
64
|
* @param {EntityComponentDataset} ecd
|
|
65
|
-
* @param {
|
|
65
|
+
* @param {PrefabInstance} instance
|
|
66
66
|
*/
|
|
67
|
-
bind(entity: number, ecd: EntityComponentDataset, instance:
|
|
67
|
+
bind(entity: number, ecd: EntityComponentDataset, instance: PrefabInstance): void;
|
|
68
68
|
/**
|
|
69
69
|
* Advance every clock, say so when one runs out, and work out what the list therefore weighs.
|
|
70
70
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClipListPlayer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/animation/ClipListPlayer.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAqDI;;;OAGG;IACH,uBAHW,SAAS,GACP,cAAc,CAU1B;IAhED;;;;;OAKG;IACH,WAFU,SAAS,CAEF;IAEjB;;;;;OAKG;IACH,
|
|
1
|
+
{"version":3,"file":"ClipListPlayer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/animation/ClipListPlayer.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAqDI;;;OAGG;IACH,uBAHW,SAAS,GACP,cAAc,CAU1B;IAhED;;;;;OAKG;IACH,WAFU,SAAS,CAEF;IAEjB;;;;;OAKG;IACH,yBAAgB;IAEhB;;;;OAIG;IACH,WAFU,YAAY,EAAE,CAET;IAEf;;;;;;;;OAQG;IACH,SAFU,YAAY,CAEQ;IAkC9B;;;;;;;;OAQG;IACH,aAJW,MAAM,+DAgBhB;IAED;;;;;;;OAOG;IACH,yBAFW,MAAM,QAMhB;;CAuHJ;6BArP4B,mBAAmB"}
|
|
@@ -37,7 +37,7 @@ export class ClipListPlayer {
|
|
|
37
37
|
* The entity's private copy of the model — where the clips named in the list are found, and
|
|
38
38
|
* where their durations come from.
|
|
39
39
|
*
|
|
40
|
-
* @type {
|
|
40
|
+
* @type {PrefabInstance}
|
|
41
41
|
*/
|
|
42
42
|
instance = null;
|
|
43
43
|
|
|
@@ -98,7 +98,7 @@ export class ClipListPlayer {
|
|
|
98
98
|
*
|
|
99
99
|
* @param {number} entity
|
|
100
100
|
* @param {EntityComponentDataset} ecd
|
|
101
|
-
* @param {
|
|
101
|
+
* @param {PrefabInstance} instance
|
|
102
102
|
*/
|
|
103
103
|
bind(entity, ecd, instance) {
|
|
104
104
|
assert.isNonNegativeInteger(entity, 'entity');
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Build the lookup the outline shader reads: one packed colour per mesh row, addressed by the row
|
|
3
3
|
* the visibility buffer writes.
|
|
4
4
|
*
|
|
5
|
-
* **
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* **Each entry decides which rows are its own.** A highlight is attached to an entity, and what
|
|
6
|
+
* that entity draws depends on what kind of thing it is — a model is the primitive entities it
|
|
7
|
+
* spawned, a primitive is its own entity — and a mesh row is its entity plus one. Neither is this
|
|
8
|
+
* function's business: an entry arrives already knowing how to walk to its rows, so the walk here
|
|
9
|
+
* is entry → rows and there is no kind to switch on. An entity whose model has not loaded walks to
|
|
10
|
+
* nothing and needs no special case.
|
|
11
11
|
*
|
|
12
12
|
* **A row holds one colour.** Where two entries reach the same node — a highlighted model and a
|
|
13
13
|
* separately highlighted primitive inside it — the later entry wins, which is link order. Nothing
|
|
@@ -19,18 +19,16 @@
|
|
|
19
19
|
* is.
|
|
20
20
|
*
|
|
21
21
|
* @param {object} args
|
|
22
|
-
* @param {Array<{highlight: Highlight,
|
|
23
|
-
* @param {GPUSceneContext} args.scene resolves a node to its row
|
|
22
|
+
* @param {Array<{highlight: Highlight, rows: function(function(number): void): void}>} args.entries
|
|
24
23
|
* @param {Uint32Array} args.table reused between frames; replaced when it is too small
|
|
25
24
|
* @returns {{table: Uint32Array, size: number}} `size` is one past the highest row written, and is
|
|
26
25
|
* zero when nothing highlighted is in the scene
|
|
27
26
|
*/
|
|
28
|
-
export function pack_highlight_table({ entries,
|
|
27
|
+
export function pack_highlight_table({ entries, table }: {
|
|
29
28
|
entries: Array<{
|
|
30
29
|
highlight: Highlight;
|
|
31
|
-
|
|
30
|
+
rows: (arg0: (arg0: number) => void) => void;
|
|
32
31
|
}>;
|
|
33
|
-
scene: GPUSceneContext;
|
|
34
32
|
table: Uint32Array;
|
|
35
33
|
}): {
|
|
36
34
|
table: Uint32Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack_highlight_table.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/highlight/pack_highlight_table.js"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"pack_highlight_table.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/highlight/pack_highlight_table.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH;IAL6F,OAAO,EAAzF,MAAM;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,IAAI,gBAAoB,MAAM,KAAG,IAAI,KAAG,IAAI,CAAA;KAAC,CAAC;IACzD,KAAK,EAAvB,WAAW;IACT;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CA+C9C"}
|
|
@@ -4,12 +4,12 @@ import { pack_highlight_color } from "./pack_highlight_color.js";
|
|
|
4
4
|
* Build the lookup the outline shader reads: one packed colour per mesh row, addressed by the row
|
|
5
5
|
* the visibility buffer writes.
|
|
6
6
|
*
|
|
7
|
-
* **
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
7
|
+
* **Each entry decides which rows are its own.** A highlight is attached to an entity, and what
|
|
8
|
+
* that entity draws depends on what kind of thing it is — a model is the primitive entities it
|
|
9
|
+
* spawned, a primitive is its own entity — and a mesh row is its entity plus one. Neither is this
|
|
10
|
+
* function's business: an entry arrives already knowing how to walk to its rows, so the walk here
|
|
11
|
+
* is entry → rows and there is no kind to switch on. An entity whose model has not loaded walks to
|
|
12
|
+
* nothing and needs no special case.
|
|
13
13
|
*
|
|
14
14
|
* **A row holds one colour.** Where two entries reach the same node — a highlighted model and a
|
|
15
15
|
* separately highlighted primitive inside it — the later entry wins, which is link order. Nothing
|
|
@@ -21,13 +21,12 @@ import { pack_highlight_color } from "./pack_highlight_color.js";
|
|
|
21
21
|
* is.
|
|
22
22
|
*
|
|
23
23
|
* @param {object} args
|
|
24
|
-
* @param {Array<{highlight: Highlight,
|
|
25
|
-
* @param {GPUSceneContext} args.scene resolves a node to its row
|
|
24
|
+
* @param {Array<{highlight: Highlight, rows: function(function(number): void): void}>} args.entries
|
|
26
25
|
* @param {Uint32Array} args.table reused between frames; replaced when it is too small
|
|
27
26
|
* @returns {{table: Uint32Array, size: number}} `size` is one past the highest row written, and is
|
|
28
27
|
* zero when nothing highlighted is in the scene
|
|
29
28
|
*/
|
|
30
|
-
export function pack_highlight_table({ entries,
|
|
29
|
+
export function pack_highlight_table({ entries, table }) {
|
|
31
30
|
let highest = -1;
|
|
32
31
|
|
|
33
32
|
/*
|
|
@@ -37,9 +36,7 @@ export function pack_highlight_table({ entries, scene, table }) {
|
|
|
37
36
|
rather than over the scene.
|
|
38
37
|
*/
|
|
39
38
|
for (let i = 0; i < entries.length; i++) {
|
|
40
|
-
entries[i].
|
|
41
|
-
const row = scene.mesh_row_of(node);
|
|
42
|
-
|
|
39
|
+
entries[i].rows(row => {
|
|
43
40
|
if (row > highest) {
|
|
44
41
|
highest = row;
|
|
45
42
|
}
|
|
@@ -67,12 +64,8 @@ export function pack_highlight_table({ entries, scene, table }) {
|
|
|
67
64
|
continue;
|
|
68
65
|
}
|
|
69
66
|
|
|
70
|
-
entry.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (row >= 0) {
|
|
74
|
-
result[row] = packed;
|
|
75
|
-
}
|
|
67
|
+
entry.rows(row => {
|
|
68
|
+
result[row] = packed;
|
|
76
69
|
});
|
|
77
70
|
}
|
|
78
71
|
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* so an outcome that depended on it would depend on frame pacing, and determinism and replay would
|
|
8
8
|
* go with it: no GPU readback on a gameplay-affecting path.
|
|
9
9
|
*
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* The named node is an entity of the model's instance, and the pose is {@link t64_evaluate_world}
|
|
11
|
+
* over its attachment chain and the clips the animation systems are driving: a pure function of
|
|
12
|
+
* (hierarchy, clip set, time, weights), off the same clock the renderer is written from, which is
|
|
13
|
+
* what keeps a socket on the mesh that is drawn — whether or not the GPU owns the joint's row.
|
|
13
14
|
*
|
|
14
15
|
* The result carries both its matrix and its components.
|
|
15
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query_entity_node_world_pose.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/pose/query_entity_node_world_pose.js"],"names":[],"mappings":"AAcA
|
|
1
|
+
{"version":3,"file":"query_entity_node_world_pose.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/pose/query_entity_node_world_pose.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,yGANW,MAAM,aACN,MAAM,GACJ,OAAO,CAwCnB"}
|