@woosh/meep-engine 3.22.0 → 3.23.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/package.json +1 -1
- package/src/core/geom/3d/hash-grid/PointHashGrid3.d.ts +118 -0
- package/src/core/geom/3d/hash-grid/PointHashGrid3.d.ts.map +1 -0
- package/src/core/geom/3d/hash-grid/PointHashGrid3.js +283 -0
- package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/BoxShape3D.js +6 -17
- package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CapsuleShape3D.js +3 -14
- package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/CylinderShape3D.js +3 -21
- package/src/core/geom/3d/shape/PlaneShape3D.d.ts +105 -0
- package/src/core/geom/3d/shape/PlaneShape3D.d.ts.map +1 -0
- package/src/core/geom/3d/shape/PlaneShape3D.js +251 -0
- package/src/core/geom/3d/shape/SphereShape3D.js +3 -3
- package/src/core/geom/3d/shape/json/shape_to_type.d.ts.map +1 -1
- package/src/core/geom/3d/shape/json/shape_to_type.js +3 -0
- package/src/core/geom/3d/shape/json/type_adapters.d.ts +14 -0
- package/src/core/geom/3d/shape/json/type_adapters.d.ts.map +1 -1
- package/src/core/geom/3d/shape/json/type_adapters.js +15 -0
- package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts +51 -0
- package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts.map +1 -0
- package/src/core/geom/3d/shape/sdf/sdf3_box.js +113 -0
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts +46 -0
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts.map +1 -0
- package/src/core/geom/3d/shape/sdf/sdf3_capsule.js +82 -0
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts +60 -0
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts.map +1 -0
- package/src/core/geom/3d/shape/sdf/sdf3_cylinder.js +126 -0
- package/src/core/geom/3d/shape/sdf/sdf3_degenerate_normal.d.ts +50 -0
- package/src/core/geom/3d/shape/sdf/sdf3_degenerate_normal.d.ts.map +1 -0
- package/src/core/geom/3d/shape/sdf/sdf3_degenerate_normal.js +53 -0
- package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts +52 -0
- package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts.map +1 -0
- package/src/core/geom/3d/shape/sdf/sdf3_plane.js +61 -0
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts +41 -0
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts.map +1 -0
- package/src/core/geom/3d/shape/sdf/sdf3_sphere.js +71 -0
- package/src/core/process/ConcurrencyGate.d.ts +103 -0
- package/src/core/process/ConcurrencyGate.d.ts.map +1 -0
- package/src/core/process/ConcurrencyGate.js +207 -0
- package/src/engine/asset/AssetManager.d.ts +10 -0
- package/src/engine/asset/AssetManager.d.ts.map +1 -1
- package/src/engine/asset/AssetManager.js +10 -0
- package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +30 -13
- package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts +26 -0
- package/src/engine/graphics3/pose/collect_entity_playbacks.d.ts.map +1 -0
- package/src/engine/graphics3/pose/collect_entity_playbacks.js +40 -0
- 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 +74 -101
- package/src/engine/physics/cloth/MEASUREMENTS.md +1287 -4
- package/src/engine/physics/cloth/PLAN.md +1967 -1581
- package/src/engine/physics/cloth/build/ClothProxy.d.ts +147 -0
- package/src/engine/physics/cloth/build/ClothProxy.d.ts.map +1 -0
- package/src/engine/physics/cloth/build/ClothProxy.js +207 -0
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts +70 -0
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -0
- package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +256 -0
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +176 -0
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -0
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +435 -0
- package/src/engine/physics/cloth/collider/ClothColliderKind.d.ts +12 -0
- package/src/engine/physics/cloth/collider/ClothColliderKind.d.ts.map +1 -0
- package/src/engine/physics/cloth/collider/ClothColliderKind.js +38 -0
- package/src/engine/physics/cloth/collider/ClothColliderRecord.d.ts +120 -0
- package/src/engine/physics/cloth/collider/ClothColliderRecord.d.ts.map +1 -0
- package/src/engine/physics/cloth/collider/ClothColliderRecord.js +137 -0
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts +25 -0
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -0
- package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +190 -0
- package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts +44 -0
- package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts.map +1 -0
- package/src/engine/physics/cloth/collider/cloth_collider_pack.js +173 -0
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +94 -0
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -0
- package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +275 -0
- package/src/engine/physics/cloth/ecs/ClothCollider.d.ts +126 -0
- package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothCollider.js +199 -0
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.d.ts +9 -0
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +32 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +114 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +243 -0
- package/src/engine/physics/cloth/ecs/ClothDynamicsFlags.js +66 -57
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +109 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +479 -363
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts +95 -0
- package/src/engine/physics/cloth/ecs/ClothRig.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothRig.js +140 -0
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +30 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +1021 -773
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts +90 -0
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +374 -0
- package/src/engine/physics/cloth/ecs/cloth_dynamics_library.d.ts +32 -3
- package/src/engine/physics/cloth/ecs/cloth_dynamics_library.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_dynamics_library.js +283 -254
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts +59 -0
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +328 -0
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts +13 -0
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +288 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +58 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +199 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts +8 -63
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +317 -645
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts +61 -0
- package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_write_back.js +212 -449
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts +49 -0
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_write_back_rig.js +115 -0
- package/src/engine/physics/cloth/playground/README.md +155 -1
- package/src/engine/physics/cloth/playground/collide.html +178 -0
- package/src/engine/physics/cloth/playground/collide_build.d.ts +95 -0
- package/src/engine/physics/cloth/playground/collide_build.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/collide_build.js +315 -0
- package/src/engine/physics/cloth/playground/collide_main.d.ts +2 -0
- package/src/engine/physics/cloth/playground/collide_main.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/collide_main.js +720 -0
- package/src/engine/physics/cloth/playground/garment.html +182 -0
- package/src/engine/physics/cloth/playground/garment_build.d.ts +78 -0
- package/src/engine/physics/cloth/playground/garment_build.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/garment_build.js +359 -0
- package/src/engine/physics/cloth/playground/garment_main.d.ts +2 -0
- package/src/engine/physics/cloth/playground/garment_main.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/garment_main.js +633 -0
- package/src/engine/physics/cloth/solver/ClothState.d.ts +208 -5
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +302 -8
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts +87 -0
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +343 -0
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts +112 -0
- package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_self_find.js +448 -0
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts +4 -1
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +16 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +112 -5
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.js +117 -6
- package/src/engine/physics/cloth/solver/cloth_step.d.ts +40 -9
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +122 -10
- package/src/engine/physics/cloth/solver/constraint/cloth_backstop_row.d.ts +95 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_backstop_row.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_backstop_row.js +285 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +129 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +501 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.d.ts +75 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_self_row.js +202 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/vgeo_viewer/README.md +18 -0
- package/src/shade/playground/vgeo_viewer/main.js +87 -50
- package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUDatabase.js +191 -62
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +94 -2
- package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
- package/src/shade/renderer/buffer/table/GPUTypedTable.js +414 -2
- package/src/shade/renderer/buffer/table/GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS.d.ts +14 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS.js +13 -0
- package/src/shade/renderer/buffer/table/gpu_table_partial_upload_shader.d.ts +17 -0
- package/src/shade/renderer/buffer/table/gpu_table_partial_upload_shader.d.ts.map +1 -0
- package/src/shade/renderer/buffer/table/gpu_table_partial_upload_shader.js +116 -0
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +9 -4
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +843 -734
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +12 -0
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +13 -0
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +17 -0
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +185 -30
- package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +17 -0
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +141 -24
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +204 -64
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +110 -10
- package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +19 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +19 -6
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +26 -7
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +173 -14
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +458 -51
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +49 -13
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +52 -14
- package/src/shade/renderer/geometry/virtual/format/read/tool/VGEO_MAX_AUDIT_BYTES.d.ts +20 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/VGEO_MAX_AUDIT_BYTES.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/VGEO_MAX_AUDIT_BYTES.js +19 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/vgeo_audit_container.d.ts +27 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/vgeo_audit_container.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/vgeo_audit_container.js +48 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/vgeo_install_all_pages.d.ts +29 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/vgeo_install_all_pages.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/tool/vgeo_install_all_pages.js +60 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +8 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.js +32 -2
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.d.ts +258 -0
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.js +723 -0
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.d.ts +49 -0
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.js +50 -0
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.d.ts +3 -0
- package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.js +121 -21
- package/src/shade/renderer/texture/virtual/README.md +6 -4
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +7 -0
- package/src/shade/renderer/texture/virtual/source/VTSourceTiled.d.ts +3 -3
- package/src/shade/renderer/texture/virtual/source/VTSourceTiled.js +3 -3
- package/src/engine/ecs/system/SystemExecutionPhase.d.ts +0 -9
- package/src/engine/ecs/system/SystemExecutionPhase.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/NOTES.md +0 -128
- package/src/engine/graphics/texture/virtual/VT_DEFAULT_PAGE_RESOLUTION.d.ts +0 -6
- package/src/engine/graphics/texture/virtual/VT_DEFAULT_PAGE_RESOLUTION.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/VT_DEFAULT_PAGE_RESOLUTION.js +0 -5
- package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +0 -49
- package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.js +0 -264
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +0 -44
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureUsage.js +0 -228
- package/src/engine/graphics/texture/virtual/VirtualTextureUsageShader.d.ts +0 -3
- package/src/engine/graphics/texture/virtual/VirtualTextureUsageShader.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureUsageShader.js +0 -73
- package/src/engine/graphics/texture/virtual/debug/ResidencyDebugView.d.ts +0 -14
- package/src/engine/graphics/texture/virtual/debug/ResidencyDebugView.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/debug/ResidencyDebugView.js +0 -85
- package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts +0 -12
- package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/debug/UsageDebugView.js +0 -63
- package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts +0 -12
- package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.js +0 -243
- package/src/engine/graphics/texture/virtual/tile/VirtualTextureTile.d.ts +0 -30
- package/src/engine/graphics/texture/virtual/tile/VirtualTextureTile.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/tile/VirtualTextureTile.js +0 -39
- package/src/engine/graphics/texture/virtual/tile/compose_finger_print.d.ts +0 -9
- package/src/engine/graphics/texture/virtual/tile/compose_finger_print.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/tile/compose_finger_print.js +0 -24
- package/src/engine/graphics/texture/virtual/tile/compose_tile_address.d.ts +0 -9
- package/src/engine/graphics/texture/virtual/tile/compose_tile_address.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/tile/compose_tile_address.js +0 -26
- package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.d.ts +0 -11
- package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.js +0 -12
- package/src/engine/graphics/texture/virtual/tile/finger_print_to_tile_address.d.ts +0 -7
- package/src/engine/graphics/texture/virtual/tile/finger_print_to_tile_address.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/tile/finger_print_to_tile_address.js +0 -16
- package/src/engine/graphics/texture/virtual/tile/tile_address_to_finger_print.d.ts +0 -7
- package/src/engine/graphics/texture/virtual/tile/tile_address_to_finger_print.d.ts.map +0 -1
- package/src/engine/graphics/texture/virtual/tile/tile_address_to_finger_print.js +0 -35
|
@@ -11,6 +11,8 @@ import { inspect_gpu_buffer } from "../inspect_gpu_buffer.js";
|
|
|
11
11
|
import { inspect_gpu_buffer_typed } from "../inspect_gpu_buffer_typed.js";
|
|
12
12
|
import { GPU_DATABASE_BUFFER_ELEMENT_TYPE } from "./GPU_DATABASE_BUFFER_ELEMENT_TYPE.js";
|
|
13
13
|
import { gpu_table_element_upload_shader } from "./gpu_table_element_upload_shader.js";
|
|
14
|
+
import { gpu_table_partial_upload_shader } from "./gpu_table_partial_upload_shader.js";
|
|
15
|
+
import { GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS } from "./GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS.js";
|
|
14
16
|
import { GPUPageMetadata } from "./GPUPageMetadata.js";
|
|
15
17
|
import { GPUTypedTable } from "./GPUTypedTable.js";
|
|
16
18
|
import { PageBufferPool } from "./PageBufferPool.js";
|
|
@@ -521,70 +523,17 @@ export class GPUDatabase {
|
|
|
521
523
|
// transfer elements (chunked)
|
|
522
524
|
for (let i = 0; i < table_count; i++) {
|
|
523
525
|
const table = tables[i];
|
|
524
|
-
const upload_data = table.element_upload_buffer;
|
|
525
|
-
const cursor = upload_data.position;
|
|
526
526
|
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
assert.isNonNegativeInteger(total_element_count, 'total_element_count');
|
|
537
|
-
|
|
538
|
-
// Chunk the upload to avoid oversized transient buffers
|
|
539
|
-
const max_elements_per_chunk = Math.max(1, Math.floor(UPLOAD_CHUNK_SIZE / record_stride));
|
|
540
|
-
|
|
541
|
-
let elements_uploaded = 0;
|
|
542
|
-
|
|
543
|
-
while (elements_uploaded < total_element_count) {
|
|
544
|
-
const chunk_count = Math.min(max_elements_per_chunk, total_element_count - elements_uploaded);
|
|
545
|
-
const chunk_byte_offset = elements_uploaded * record_stride;
|
|
546
|
-
const chunk_byte_size = chunk_count * record_stride;
|
|
547
|
-
|
|
548
|
-
assert.isNonNegativeInteger(chunk_count, 'chunk_count');
|
|
549
|
-
|
|
550
|
-
// immediate data — a plain value written straight into the pass, not a buffer
|
|
551
|
-
const settings = {
|
|
552
|
-
count: chunk_count,
|
|
553
|
-
// record_size is read by the upload shader as a count of
|
|
554
|
-
// GPU_DATABASE_BUFFER_ELEMENT_TYPE (u32) units. Records
|
|
555
|
-
// are stored at type.size stride (no record-level padding),
|
|
556
|
-
// with WGSL alignment applied within fields and array elements.
|
|
557
|
-
record_size: table_descriptor.packed_element_size_bytes / GPU_DATABASE_BUFFER_ELEMENT_TYPE.size,
|
|
558
|
-
elements_per_page: table_descriptor.elements_per_page,
|
|
559
|
-
page_lookup_address: table_descriptor.page_lookup_address,
|
|
560
|
-
page_header_words: table_descriptor.page_header_words,
|
|
561
|
-
page_limit: table_descriptor.page_limit,
|
|
562
|
-
};
|
|
563
|
-
|
|
564
|
-
const upload_buffer = encoder.allocateTransientBufferAndLoad(
|
|
565
|
-
upload_data.data,
|
|
566
|
-
GPUBufferUsage.STORAGE,
|
|
567
|
-
chunk_byte_offset,
|
|
568
|
-
chunk_byte_size
|
|
569
|
-
);
|
|
570
|
-
|
|
571
|
-
gpu_table_element_upload_shader.dispatchThreads({
|
|
572
|
-
encoder,
|
|
573
|
-
bindings: {
|
|
574
|
-
settings,
|
|
575
|
-
upload_buffer,
|
|
576
|
-
database: this.buffer,
|
|
577
|
-
},
|
|
578
|
-
thread_count_x: chunk_count,
|
|
579
|
-
});
|
|
580
|
-
|
|
581
|
-
elements_uploaded += chunk_count;
|
|
582
|
-
}
|
|
527
|
+
// Whole records first, sub-record ranges second. In one update cycle a row normally
|
|
528
|
+
// has a pending write in one stream or the other, never both — `GPUTypedTable` patches
|
|
529
|
+
// or retires across the two as writes come in. The one case it reconciles through a
|
|
530
|
+
// bounded scan rather than an index is a range landing on a whole record queued long
|
|
531
|
+
// before it, and that case leaves both entries live. This order is what settles it,
|
|
532
|
+
// and it settles it the way append order already did: the range lands on top.
|
|
533
|
+
this.#upload_element_records(table, encoder);
|
|
534
|
+
this.#upload_partial_ranges(table, encoder);
|
|
583
535
|
|
|
584
|
-
//
|
|
585
|
-
table.element_upload_buffer.position = 0;
|
|
586
|
-
|
|
587
|
-
// Trim upload buffer if it grew too large
|
|
536
|
+
// Trim upload buffers if they grew too large
|
|
588
537
|
table.trim_upload_buffer();
|
|
589
538
|
}
|
|
590
539
|
|
|
@@ -605,6 +554,186 @@ export class GPUDatabase {
|
|
|
605
554
|
}
|
|
606
555
|
}
|
|
607
556
|
|
|
557
|
+
/**
|
|
558
|
+
* Dispatch a table's pending whole-record writes, chunked so no single transient buffer grows
|
|
559
|
+
* past {@link UPLOAD_CHUNK_SIZE}. Rewinds the buffer.
|
|
560
|
+
*
|
|
561
|
+
* @param {GPUTypedTable} table
|
|
562
|
+
* @param {ShadeGPUCommandContext} encoder
|
|
563
|
+
*/
|
|
564
|
+
#upload_element_records(table, encoder) {
|
|
565
|
+
const upload_data = table.element_upload_buffer;
|
|
566
|
+
const cursor = upload_data.position;
|
|
567
|
+
|
|
568
|
+
if (cursor === 0) {
|
|
569
|
+
// no data
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
const table_descriptor = table.descriptor;
|
|
574
|
+
const record_stride = table_descriptor.packed_element_size_bytes + u32.size;
|
|
575
|
+
const total_element_count = cursor / record_stride;
|
|
576
|
+
|
|
577
|
+
assert.isNonNegativeInteger(total_element_count, 'total_element_count');
|
|
578
|
+
|
|
579
|
+
// Chunk the upload to avoid oversized transient buffers
|
|
580
|
+
const max_elements_per_chunk = Math.max(1, Math.floor(UPLOAD_CHUNK_SIZE / record_stride));
|
|
581
|
+
|
|
582
|
+
let elements_uploaded = 0;
|
|
583
|
+
|
|
584
|
+
while (elements_uploaded < total_element_count) {
|
|
585
|
+
const chunk_count = Math.min(max_elements_per_chunk, total_element_count - elements_uploaded);
|
|
586
|
+
const chunk_byte_offset = elements_uploaded * record_stride;
|
|
587
|
+
const chunk_byte_size = chunk_count * record_stride;
|
|
588
|
+
|
|
589
|
+
assert.isNonNegativeInteger(chunk_count, 'chunk_count');
|
|
590
|
+
|
|
591
|
+
// immediate data — a plain value written straight into the pass, not a buffer
|
|
592
|
+
const settings = {
|
|
593
|
+
count: chunk_count,
|
|
594
|
+
// record_size is read by the upload shader as a count of
|
|
595
|
+
// GPU_DATABASE_BUFFER_ELEMENT_TYPE (u32) units. Records
|
|
596
|
+
// are stored at type.size stride (no record-level padding),
|
|
597
|
+
// with WGSL alignment applied within fields and array elements.
|
|
598
|
+
record_size: table_descriptor.packed_element_size_bytes / GPU_DATABASE_BUFFER_ELEMENT_TYPE.size,
|
|
599
|
+
elements_per_page: table_descriptor.elements_per_page,
|
|
600
|
+
page_lookup_address: table_descriptor.page_lookup_address,
|
|
601
|
+
page_header_words: table_descriptor.page_header_words,
|
|
602
|
+
page_limit: table_descriptor.page_limit,
|
|
603
|
+
};
|
|
604
|
+
|
|
605
|
+
const upload_buffer = encoder.allocateTransientBufferAndLoad(
|
|
606
|
+
upload_data.data,
|
|
607
|
+
GPUBufferUsage.STORAGE,
|
|
608
|
+
chunk_byte_offset,
|
|
609
|
+
chunk_byte_size
|
|
610
|
+
);
|
|
611
|
+
|
|
612
|
+
gpu_table_element_upload_shader.dispatchThreads({
|
|
613
|
+
encoder,
|
|
614
|
+
bindings: {
|
|
615
|
+
settings,
|
|
616
|
+
upload_buffer,
|
|
617
|
+
database: this.buffer,
|
|
618
|
+
},
|
|
619
|
+
thread_count_x: chunk_count,
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
elements_uploaded += chunk_count;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
// reset upload buffer
|
|
626
|
+
upload_data.position = 0;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
/**
|
|
630
|
+
* Dispatch a table's pending sub-record ("partial") writes and rewind both of that stream's
|
|
631
|
+
* buffers.
|
|
632
|
+
*
|
|
633
|
+
* The stream is a fixed-stride descriptor array plus a data blob the descriptors index. One
|
|
634
|
+
* thread per descriptor, so chunking is a descriptor count — but the data words a chunk's
|
|
635
|
+
* descriptors reach have to travel with it. That works because both buffers are append-only
|
|
636
|
+
* and grow together: descriptor `data_offset` is non-decreasing, so a run of descriptors owns
|
|
637
|
+
* one contiguous slice of the blob. The dispatch carries the slice's base and the shader
|
|
638
|
+
* subtracts it.
|
|
639
|
+
*
|
|
640
|
+
* @param {GPUTypedTable} table
|
|
641
|
+
* @param {ShadeGPUCommandContext} encoder
|
|
642
|
+
*/
|
|
643
|
+
#upload_partial_ranges(table, encoder) {
|
|
644
|
+
const descriptors = table.partial_upload_descriptors;
|
|
645
|
+
const descriptor_cursor = descriptors.position;
|
|
646
|
+
|
|
647
|
+
if (descriptor_cursor === 0) {
|
|
648
|
+
// nothing pending — the cost of the whole feature to a table that never uses it
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
const data = table.partial_upload_data;
|
|
653
|
+
const word_size = GPU_DATABASE_BUFFER_ELEMENT_TYPE.size;
|
|
654
|
+
const descriptor_stride = GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS * word_size;
|
|
655
|
+
const total_descriptor_count = descriptor_cursor / descriptor_stride;
|
|
656
|
+
|
|
657
|
+
assert.isNonNegativeInteger(total_descriptor_count, 'total_descriptor_count');
|
|
658
|
+
|
|
659
|
+
const descriptor_words = new Uint32Array(descriptors.data, 0, descriptor_cursor / word_size);
|
|
660
|
+
|
|
661
|
+
const table_descriptor = table.descriptor;
|
|
662
|
+
|
|
663
|
+
const max_descriptors_per_chunk = Math.max(1, Math.floor(UPLOAD_CHUNK_SIZE / descriptor_stride));
|
|
664
|
+
|
|
665
|
+
let descriptors_uploaded = 0;
|
|
666
|
+
|
|
667
|
+
while (descriptors_uploaded < total_descriptor_count) {
|
|
668
|
+
const chunk_data_start = descriptor_words[descriptors_uploaded * GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS + 3];
|
|
669
|
+
|
|
670
|
+
let chunk_count = 0;
|
|
671
|
+
let chunk_data_end = chunk_data_start;
|
|
672
|
+
|
|
673
|
+
while (
|
|
674
|
+
chunk_count < max_descriptors_per_chunk
|
|
675
|
+
&& descriptors_uploaded + chunk_count < total_descriptor_count
|
|
676
|
+
) {
|
|
677
|
+
const base = (descriptors_uploaded + chunk_count) * GPU_TABLE_PARTIAL_UPLOAD_DESCRIPTOR_WORDS;
|
|
678
|
+
const range_end = descriptor_words[base + 3] + descriptor_words[base + 2];
|
|
679
|
+
const next_data_end = Math.max(chunk_data_end, range_end);
|
|
680
|
+
|
|
681
|
+
// Always take one descriptor, however big its range — a range can't exceed a
|
|
682
|
+
// record, and a record can't exceed a page.
|
|
683
|
+
if (chunk_count > 0 && (next_data_end - chunk_data_start) * word_size > UPLOAD_CHUNK_SIZE) {
|
|
684
|
+
break;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
chunk_data_end = next_data_end;
|
|
688
|
+
chunk_count++;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
// A chunk whose descriptors were all retired reads no data at all, and a zero-sized
|
|
692
|
+
// transient buffer is not allocatable. Every descriptor appended at least one word, so
|
|
693
|
+
// one word is always there to bind.
|
|
694
|
+
const chunk_data_bytes = Math.max(word_size, (chunk_data_end - chunk_data_start) * word_size);
|
|
695
|
+
|
|
696
|
+
const settings = {
|
|
697
|
+
count: chunk_count,
|
|
698
|
+
record_size: table_descriptor.packed_element_size_bytes / word_size,
|
|
699
|
+
elements_per_page: table_descriptor.elements_per_page,
|
|
700
|
+
page_lookup_address: table_descriptor.page_lookup_address,
|
|
701
|
+
page_header_words: table_descriptor.page_header_words,
|
|
702
|
+
page_limit: table_descriptor.page_limit,
|
|
703
|
+
data_word_base: chunk_data_start,
|
|
704
|
+
};
|
|
705
|
+
|
|
706
|
+
const descriptor_buffer = encoder.allocateTransientBufferAndLoad(
|
|
707
|
+
descriptors.data,
|
|
708
|
+
GPUBufferUsage.STORAGE,
|
|
709
|
+
descriptors_uploaded * descriptor_stride,
|
|
710
|
+
chunk_count * descriptor_stride
|
|
711
|
+
);
|
|
712
|
+
|
|
713
|
+
const data_buffer = encoder.allocateTransientBufferAndLoad(
|
|
714
|
+
data.data,
|
|
715
|
+
GPUBufferUsage.STORAGE,
|
|
716
|
+
chunk_data_start * word_size,
|
|
717
|
+
chunk_data_bytes
|
|
718
|
+
);
|
|
719
|
+
|
|
720
|
+
gpu_table_partial_upload_shader.dispatchThreads({
|
|
721
|
+
encoder,
|
|
722
|
+
bindings: {
|
|
723
|
+
settings,
|
|
724
|
+
descriptors: descriptor_buffer,
|
|
725
|
+
data: data_buffer,
|
|
726
|
+
database: this.buffer,
|
|
727
|
+
},
|
|
728
|
+
thread_count_x: chunk_count,
|
|
729
|
+
});
|
|
730
|
+
|
|
731
|
+
descriptors_uploaded += chunk_count;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
table.rewind_partial_upload();
|
|
735
|
+
}
|
|
736
|
+
|
|
608
737
|
/**
|
|
609
738
|
* Build and upload the per-page GPU header for every page flagged in
|
|
610
739
|
* {@link GPUTypedTable.header_dirty_pages}. Header layout:
|
|
@@ -24,6 +24,26 @@ export class GPUTypedTable<T> {
|
|
|
24
24
|
* @type {BinaryBuffer}
|
|
25
25
|
*/
|
|
26
26
|
element_upload_buffer: BinaryBuffer;
|
|
27
|
+
/**
|
|
28
|
+
* Sub-record ranges waiting to be uploaded, as fixed-stride descriptors:
|
|
29
|
+
* `[u32 element_index, u32 word_offset, u32 word_count, u32 data_offset]`, where `word_offset`
|
|
30
|
+
* is relative to the start of the record and `data_offset` indexes {@link partial_upload_data}.
|
|
31
|
+
*
|
|
32
|
+
* Separate from {@link element_upload_buffer} because ranges are variable length, and the
|
|
33
|
+
* whole-record shader can only index its buffer by thread id while every record is the same
|
|
34
|
+
* size. See {@link set_bytes} for how the two streams stay out of each other's way.
|
|
35
|
+
*
|
|
36
|
+
* Consumed and rewound by {@link GPUDatabase.update}.
|
|
37
|
+
* @type {BinaryBuffer}
|
|
38
|
+
*/
|
|
39
|
+
partial_upload_descriptors: BinaryBuffer;
|
|
40
|
+
/**
|
|
41
|
+
* The words {@link partial_upload_descriptors} point at, appended in descriptor order — so a
|
|
42
|
+
* run of descriptors always owns a contiguous slice of this blob, which is what lets the
|
|
43
|
+
* upload be chunked.
|
|
44
|
+
* @type {BinaryBuffer}
|
|
45
|
+
*/
|
|
46
|
+
partial_upload_data: BinaryBuffer;
|
|
27
47
|
/**
|
|
28
48
|
* When a page is updated - it is marked as dirty.
|
|
29
49
|
*
|
|
@@ -96,8 +116,79 @@ export class GPUTypedTable<T> {
|
|
|
96
116
|
*/
|
|
97
117
|
set(element_index: number, value: T): void;
|
|
98
118
|
/**
|
|
99
|
-
*
|
|
100
|
-
*
|
|
119
|
+
* Overwrite one field (or sub-struct) of an existing record, leaving the rest of it untouched
|
|
120
|
+
* — on the CPU shadow and on the GPU alike.
|
|
121
|
+
*
|
|
122
|
+
* `byte_offset` says where the value lives inside the record; a caller takes it from the
|
|
123
|
+
* `offset` that its {@link WebGPUStruct} field already carries. Naming an offset rather than a
|
|
124
|
+
* field is deliberate: the table knows nothing about what its type means, and a caller
|
|
125
|
+
* updating several adjacent fields can hand over one covering range instead of three writes.
|
|
126
|
+
*
|
|
127
|
+
* @param {number} element_index row to patch; must already be occupied
|
|
128
|
+
* @param {number} byte_offset offset of the range within the record
|
|
129
|
+
* @param {*} value
|
|
130
|
+
* @param {WebGPUType} type type of `value` as it is laid out at `byte_offset`
|
|
131
|
+
*/
|
|
132
|
+
set_range(element_index: number, byte_offset: number, value: any, type: WebGPUType): void;
|
|
133
|
+
/**
|
|
134
|
+
* Overwrite a byte range of an existing record from raw bytes — the primitive
|
|
135
|
+
* {@link set_range} is built on.
|
|
136
|
+
*
|
|
137
|
+
* The range is written to the CPU shadow and queued for the GPU as a sub-record ("partial")
|
|
138
|
+
* upload: a descriptor in {@link partial_upload_descriptors} plus its words in
|
|
139
|
+
* {@link partial_upload_data}, applied by `gpu_table_partial_upload_shader`. Nothing outside
|
|
140
|
+
* `[byte_offset, byte_offset + byte_length)` is serialized, uploaded, or touched, which is the
|
|
141
|
+
* entire point — a caller that owns twelve words of a forty-four word record should pay for
|
|
142
|
+
* twelve.
|
|
143
|
+
*
|
|
144
|
+
* The range must be a whole number of u32 words at a 4-byte-aligned offset. The database
|
|
145
|
+
* buffer is an `array<u32>`, so anything finer would need a masked read-modify-write on the
|
|
146
|
+
* GPU; every WGSL field is at least 4-byte aligned, so the restriction costs a real caller
|
|
147
|
+
* nothing.
|
|
148
|
+
*
|
|
149
|
+
* The row must already be occupied. A partial write patches a record, it never creates one:
|
|
150
|
+
* allocating a page here would publish a row whose other fields nobody ever wrote.
|
|
151
|
+
*
|
|
152
|
+
* ## Ordering
|
|
153
|
+
*
|
|
154
|
+
* Within one update cycle a word of a row must end up with exactly one pending writer, or the
|
|
155
|
+
* writes race — each upload entry is consumed by its own thread within a single dispatch, and
|
|
156
|
+
* the GPU is free to retire threads in any order. In append order:
|
|
157
|
+
*
|
|
158
|
+
* - **partial after whole-record** — the pending whole record is patched in place and nothing
|
|
159
|
+
* is appended, so the row is not in both streams at once. This is the one case bounded by
|
|
160
|
+
* {@link UPLOAD_BUFFER_DEDUP_LOOKBACK}, since it borrows {@link set}'s backwards scan. A
|
|
161
|
+
* whole record further back than the window is missed and the range is queued beside it —
|
|
162
|
+
* still correct, because {@link GPUDatabase.update} dispatches a table's whole records
|
|
163
|
+
* before its ranges, so the range lands on top of the record exactly as append order said.
|
|
164
|
+
* - **whole-record after partial** — {@link set} retires the row's pending descriptors (blanks
|
|
165
|
+
* their word count, making those threads no-ops); the whole record supersedes them.
|
|
166
|
+
* - **partial after partial, the same range or a sub-range of a pending one** — the pending
|
|
167
|
+
* descriptor's words are patched in place.
|
|
168
|
+
* - **partial after partial, disjoint ranges** — both stay. Different words, different
|
|
169
|
+
* threads, no race. This is what keeps a caller updating three scattered fields cheap.
|
|
170
|
+
* - **partial after partial, overlapping without containment** — the overlapping descriptors
|
|
171
|
+
* are retired and one covering their union is appended, its words read back out of the CPU
|
|
172
|
+
* shadow, which is already correct by then.
|
|
173
|
+
*
|
|
174
|
+
* Every case but the first is exact rather than windowed: a row's pending descriptors are
|
|
175
|
+
* indexed by id, so they are found however long the stream has grown.
|
|
176
|
+
*
|
|
177
|
+
* @param {number} element_index row to patch; must already be occupied
|
|
178
|
+
* @param {number} byte_offset offset of the range within the record, 4-byte aligned
|
|
179
|
+
* @param {ArrayBuffer|ArrayBufferView} source
|
|
180
|
+
* @param {number} [source_offset] byte offset into `source`
|
|
181
|
+
* @param {number} [byte_length] length of the range, a whole number of u32 words
|
|
182
|
+
*/
|
|
183
|
+
set_bytes(element_index: number, byte_offset: number, source: ArrayBuffer | ArrayBufferView, source_offset?: number, byte_length?: number): void;
|
|
184
|
+
/**
|
|
185
|
+
* Drop the partial upload stream, its per-row index included. Called by
|
|
186
|
+
* {@link GPUDatabase.update} once the stream has been dispatched.
|
|
187
|
+
*/
|
|
188
|
+
rewind_partial_upload(): void;
|
|
189
|
+
/**
|
|
190
|
+
* Trim the upload buffers if they exceed the configured limit.
|
|
191
|
+
* Called after the upload buffers have been consumed during {@link GPUDatabase.update}.
|
|
101
192
|
*/
|
|
102
193
|
trim_upload_buffer(): void;
|
|
103
194
|
/**
|
|
@@ -163,6 +254,7 @@ export class GPUTypedTable<T> {
|
|
|
163
254
|
}
|
|
164
255
|
export type GPUTypedTableDescriptor = import("./GPUTypedTableDescriptor.js").GPUTypedTableDescriptor;
|
|
165
256
|
export type PageBufferPool = import("./PageBufferPool.js").PageBufferPool;
|
|
257
|
+
export type WebGPUType = import("../../shader/type/WebGPUType.js").WebGPUType;
|
|
166
258
|
import { GPUPageMetadata } from "./GPUPageMetadata.js";
|
|
167
259
|
import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
|
|
168
260
|
import { BitSet } from "../../../../core/binary/BitSet.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUTypedTable.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/GPUTypedTable.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUTypedTable.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/GPUTypedTable.js"],"names":[],"mappings":"AAoFA;;;GAGG;AACH;IAkGI;;;OAGG;IACH,wBAFW,uBAAuB,EASjC;IA3GD;;OAEG;IACH,YAFU,uBAAuB,CAEtB;IAEX;;;;OAIG;IACH,OAFU,IAAI,MAAM,EAAC,eAAe,CAAC,CAEnB;IAElB;;;;OAIG;IACH,uBAFU,YAAY,CAE6D;IAEnF;;;;;;;;;;;OAWG;IACH,4BAFU,YAAY,CAE6B;IAEnD;;;;;OAKG;IACH,qBAFU,YAAY,CAEsB;IA2B5C;;;;;OAKG;IACH,iBAFU,MAAM,CAEe;IAE/B;;;;OAIG;IACH,WAFU,MAAM,CAES;IAEzB;;;;;;OAMG;IACH,oBAFU,MAAM,CAEkB;IAElC;;;OAGG;IACH,kBAFU,cAAc,GAAC,SAAS,CAEjB;IAejB;;;;;OAKG;IACH,WAHW,CAAC,GACC,MAAM,CAQlB;IAED;;;;;OAKG;IACH,sBAFW,MAAM,QAkChB;IAED;;;;;;;;;;OAUG;IACH,cAcC;IAwED;;;;;;OAMG;IACH,mBAJW,MAAM,GACJ,CAAC,GAAC,SAAS,CA4BvB;IAgDD;;;OAGG;IACH,cAsBC;IA+BD;;;;OAIG;IACH,mBAHW,MAAM,SACN,CAAC,QAuFX;IAED;;;;;;;;;;;;;OAaG;IACH,yBALW,MAAM,eACN,MAAM,oBAEN,UAAU,QAqBpB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiDG;IACH,yBANW,MAAM,eACN,MAAM,UACN,WAAW,GAAC,eAAe,kBAC3B,MAAM,gBACN,MAAM,QAoEhB;IAiJD;;;OAGG;IACH,8BAMC;IAED;;;OAGG;IACH,2BAYC;IAED;;OAEG;IACH,oBAEC;IAED;;;;;;;;;;OAUG;IACH,+BAEC;IAED;;;;;;;;;;OAUG;IACH,mCAJW,WAAW,UACX,MAAM,GACL,MAAM,CAoBjB;IAED;;;;;;;;;;;;OAYG;IACH,kCAMC;IAED;;;;;;;;;;;;;;OAcG;IACH,mCAHW,MAAM,GACL,MAAM,CAKjB;IAED,mBAEC;;CACJ;sCA79BY,OAAO,8BAA8B,EAAE,uBAAuB;6BAC9D,OAAO,qBAAqB,EAAE,cAAc;yBAC5C,OAAO,iCAAiC,EAAE,UAAU;gCALjC,sBAAsB;6BATzB,yCAAyC;uBAC/C,mCAAmC"}
|