@woosh/meep-engine 3.26.0 → 3.27.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/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +542 -0
- package/src/core/binary/lz4/LZ4_LEVEL.d.ts +33 -0
- package/src/core/binary/lz4/LZ4_LEVEL.d.ts.map +1 -0
- package/src/core/binary/lz4/LZ4_LEVEL.js +32 -0
- package/src/core/binary/lz4/lz4_compress_block_at_level.d.ts +33 -0
- package/src/core/binary/lz4/lz4_compress_block_at_level.d.ts.map +1 -0
- package/src/core/binary/lz4/lz4_compress_block_at_level.js +47 -0
- package/src/core/binary/lz4/lz4_compress_block_hc.d.ts +40 -0
- package/src/core/binary/lz4/lz4_compress_block_hc.d.ts.map +1 -0
- package/src/core/binary/lz4/lz4_compress_block_hc.js +1382 -0
- package/src/core/binary/lz4/lz4_decompress_block.d.ts +2 -1
- package/src/core/binary/lz4/lz4_decompress_block.d.ts.map +1 -1
- package/src/core/binary/lz4/lz4_decompress_block.js +31 -6
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +14 -7
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +87 -78
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/vgeo_runtime/README.md +167 -22
- package/src/shade/playground/vgeo_runtime/index.html +112 -62
- package/src/shade/playground/vgeo_runtime/main.js +660 -83
- package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +1 -1
- package/src/shade/playground/vgeo_viewer/sample_asset.js +19 -2
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +11 -0
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +16 -8
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +16 -11
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +73 -5
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +26 -15
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +5 -3
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +18 -0
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +20 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.js +56 -9
- package/src/shade/renderer/geometry/virtual/build/vgeo_build.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_build.js +1 -0
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts +22 -0
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js +24 -0
- package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.d.ts +12 -0
- package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.js +13 -0
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.d.ts +8 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.js +11 -3
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.js +10 -1
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.d.ts +18 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.js +17 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.d.ts +8 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.js +7 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET.js +16 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.js +13 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.js +10 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +20 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +20 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +4 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +4 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +29 -3
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +81 -122
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +40 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +44 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.d.ts +69 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.js +236 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +15 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_byte_source_from_descriptor.d.ts +31 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_byte_source_from_descriptor.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_byte_source_from_descriptor.js +32 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +10 -0
- 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 +21 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_transfer.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_transfer.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_transfer.js +84 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.d.ts +22 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.js +96 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +55 -0
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +202 -13
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.js +147 -10
- package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +637 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +33 -36
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +109 -193
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +58 -28
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +77 -105
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +37 -0
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +105 -22
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +548 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +29 -50
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +47 -489
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +84 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +393 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +234 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +1363 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.d.ts +81 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidencyOptions.js +89 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts +53 -34
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +407 -124
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +100 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +219 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_EXPAND.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_EXPAND.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_EXPAND.js +47 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_COARSEN.d.ts +20 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_COARSEN.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_COARSEN.js +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -12
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +18 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.js +5 -15
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +77 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.js +186 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +20 -8
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +580 -188
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +15 -18
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +19 -28
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +45 -25
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.d.ts +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.js +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.js +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.d.ts +0 -1
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +12 -10
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.d.ts +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts +7 -2
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.js +8 -3
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.d.ts +2 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.js +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.js +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_OFFSET.d.ts +5 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_OFFSET.js +22 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_WORDS.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PARENT_ROW_WORDS.js +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_PARENT_BIT.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_PARENT_BIT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_PARENT_BIT.js +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_frontier_words.d.ts +23 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_frontier_words.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_frontier_words.js +28 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_page.worker.d.ts +2 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_page.worker.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_page.worker.js +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts +10 -5
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.js +15 -6
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts +6 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.js +38 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_evict.js +4 -3
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +6 -3
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +6 -3
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +12 -4
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +2 -0
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.js +58 -57
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_mesh_filter_2way.js +3 -5
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way_full.js +3 -4
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_extract_bucket.js +3 -4
- package/src/shade/renderer/rasterize/expand/pass0/pass_mesh_cull.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/pass0/pass_mesh_cull.js +7 -7
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +83 -78
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +7 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +7 -1
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +22 -2
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +59 -4
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +92 -16
- package/src/shade/renderer/view/GPUViewContext.d.ts +5 -0
- package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
- package/src/shade/renderer/view/GPUViewContext.js +21 -0
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +74 -3
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.js +0 -723
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.js +0 -50
- package/src/shade/renderer/shader/chunk/jobs/NOTES.md +0 -47
- package/src/shade/renderer/shader/chunk/jobs/chunk_job_system.js +0 -102
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("./header/VGeoLevelRecord.js").VGeoLevelRecord} VGeoLevelRecord
|
|
3
|
+
*/
|
|
1
4
|
/**
|
|
2
5
|
* Everything the `.vgeo` header carries that the page list does not.
|
|
3
6
|
*
|
|
@@ -17,6 +20,24 @@ export class VGeoWriteOptions {
|
|
|
17
20
|
* @type {number}
|
|
18
21
|
*/
|
|
19
22
|
codec: number;
|
|
23
|
+
/**
|
|
24
|
+
* How hard the codec looks for matches, from {@link LZ4_LEVEL}. Nine by default, which is the
|
|
25
|
+
* top of the reference's hash-chain levels.
|
|
26
|
+
*
|
|
27
|
+
* **It changes nothing about the file.** Every level writes the same LZ4 block format, so a
|
|
28
|
+
* container built at any of them reads in every build of the reader that exists; the level is
|
|
29
|
+
* how long the *encoder* spent, and that is all.
|
|
30
|
+
*
|
|
31
|
+
* Nine rather than twelve because the ladder above it is not worth its time on this payload:
|
|
32
|
+
* measured over 2,718 real pages, the whole run from 3 to 12 is 0.077 percentage points of
|
|
33
|
+
* ratio, and 10 to 12 cost 15-40% more time for the last thousandth of it. Nine rather than
|
|
34
|
+
* three for the same reason in the other direction — it is 0.077 points smaller for about 5%
|
|
35
|
+
* more time. Nine rather than one because the fast encoder gives up 2.5% of every page to save
|
|
36
|
+
* compression time that is a couple of percent of a build.
|
|
37
|
+
*
|
|
38
|
+
* @type {number}
|
|
39
|
+
*/
|
|
40
|
+
codec_level: number;
|
|
20
41
|
/**
|
|
21
42
|
* One per level, coarsest last. `level_count` is its length.
|
|
22
43
|
* @type {VGeoLevelRecord[]}
|
|
@@ -60,4 +81,5 @@ export class VGeoWriteOptions {
|
|
|
60
81
|
*/
|
|
61
82
|
nominal_page_size: number;
|
|
62
83
|
}
|
|
84
|
+
export type VGeoLevelRecord = import("./header/VGeoLevelRecord.js").VGeoLevelRecord;
|
|
63
85
|
//# sourceMappingURL=VGeoWriteOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VGeoWriteOptions.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VGeoWriteOptions.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js"],"names":[],"mappings":"AAGA;;GAEG;AAEH;;;;;GAKG;AACH;IACI;;;;;;;;;;OAUG;IACH,OAFU,MAAM,CAEO;IAEvB;;;;;;;;;;;;;;;;OAgBG;IACH,aAFU,MAAM,CAEmB;IAEnC;;;OAGG;IACH,QAFU,eAAe,EAAE,CAEf;IAEZ;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,uBAFU,MAAM,CAEU;IAE1B;;;;;;;;;;OAUG;IACH,mBAFU,MAAM,CAEM;CACzB;8BA1FY,OAAO,6BAA6B,EAAE,eAAe"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import { LZ4_LEVEL } from "../../../../../core/binary/lz4/LZ4_LEVEL.js";
|
|
1
2
|
import { VGEO_CODEC_LZ4 } from "./frame/VGEO_CODEC_LZ4.js";
|
|
2
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import("./header/VGeoLevelRecord.js").VGeoLevelRecord} VGeoLevelRecord
|
|
6
|
+
*/
|
|
7
|
+
|
|
3
8
|
/**
|
|
4
9
|
* Everything the `.vgeo` header carries that the page list does not.
|
|
5
10
|
*
|
|
@@ -20,6 +25,25 @@ export class VGeoWriteOptions {
|
|
|
20
25
|
*/
|
|
21
26
|
codec = VGEO_CODEC_LZ4;
|
|
22
27
|
|
|
28
|
+
/**
|
|
29
|
+
* How hard the codec looks for matches, from {@link LZ4_LEVEL}. Nine by default, which is the
|
|
30
|
+
* top of the reference's hash-chain levels.
|
|
31
|
+
*
|
|
32
|
+
* **It changes nothing about the file.** Every level writes the same LZ4 block format, so a
|
|
33
|
+
* container built at any of them reads in every build of the reader that exists; the level is
|
|
34
|
+
* how long the *encoder* spent, and that is all.
|
|
35
|
+
*
|
|
36
|
+
* Nine rather than twelve because the ladder above it is not worth its time on this payload:
|
|
37
|
+
* measured over 2,718 real pages, the whole run from 3 to 12 is 0.077 percentage points of
|
|
38
|
+
* ratio, and 10 to 12 cost 15-40% more time for the last thousandth of it. Nine rather than
|
|
39
|
+
* three for the same reason in the other direction — it is 0.077 points smaller for about 5%
|
|
40
|
+
* more time. Nine rather than one because the fast encoder gives up 2.5% of every page to save
|
|
41
|
+
* compression time that is a couple of percent of a build.
|
|
42
|
+
*
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
codec_level = LZ4_LEVEL.HC_DEFAULT;
|
|
46
|
+
|
|
23
47
|
/**
|
|
24
48
|
* One per level, coarsest last. `level_count` is its length.
|
|
25
49
|
* @type {VGeoLevelRecord[]}
|
|
@@ -49,6 +49,18 @@ export class VirtualGeometryCluster {
|
|
|
49
49
|
* @type {VirtualGeometryGroup|undefined}
|
|
50
50
|
*/
|
|
51
51
|
child_group: VirtualGeometryGroup | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Index of this cluster within its page's cluster table, assigned at write time.
|
|
54
|
+
*
|
|
55
|
+
* A cluster is named from two directions and the second one is why this exists: its own page
|
|
56
|
+
* addresses it by position, and every group it refines into names it back through the
|
|
57
|
+
* group-parent table (format §6.3). The count that table is sized by is a property of the
|
|
58
|
+
* *other* page, so the number has to be resolved once across the whole page set rather than
|
|
59
|
+
* rediscovered while a page is being written.
|
|
60
|
+
*
|
|
61
|
+
* @type {number}
|
|
62
|
+
*/
|
|
63
|
+
index_in_page: number;
|
|
52
64
|
/**
|
|
53
65
|
* @type {number}
|
|
54
66
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualGeometryCluster.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH;IACI;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,aAFU,YAAY,CAEY;IAElC;;;OAGG;IACH,YAFU,MAAM,CAED;IAEf;;;;OAIG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,cAFU,MAAM,CAEwB;IAExC;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,MAFU,YAAY,CAEK;IAE3B;;;;OAIG;IACH,aAFU,uBAAqB,SAAS,CAEhB;IAExB;;OAEG;IACH,cAFU,MAAM,CAEC;IAEjB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,SAFU,UAAU,CAEQ;CAC/B"}
|
|
1
|
+
{"version":3,"file":"VirtualGeometryCluster.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH;IACI;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;;OAIG;IACH,aAFU,YAAY,CAEY;IAElC;;;OAGG;IACH,YAFU,MAAM,CAED;IAEf;;;;OAIG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,cAFU,MAAM,CAEwB;IAExC;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,MAFU,YAAY,CAEK;IAE3B;;;;OAIG;IACH,aAFU,uBAAqB,SAAS,CAEhB;IAExB;;;;;;;;;;OAUG;IACH,eAFU,MAAM,CAEE;IAElB;;OAEG;IACH,cAFU,MAAM,CAEC;IAEjB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,SAFU,UAAU,CAEQ;CAC/B"}
|
|
@@ -57,6 +57,19 @@ export class VirtualGeometryCluster {
|
|
|
57
57
|
*/
|
|
58
58
|
child_group = undefined;
|
|
59
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Index of this cluster within its page's cluster table, assigned at write time.
|
|
62
|
+
*
|
|
63
|
+
* A cluster is named from two directions and the second one is why this exists: its own page
|
|
64
|
+
* addresses it by position, and every group it refines into names it back through the
|
|
65
|
+
* group-parent table (format §6.3). The count that table is sized by is a property of the
|
|
66
|
+
* *other* page, so the number has to be resolved once across the whole page set rather than
|
|
67
|
+
* rediscovered while a page is being written.
|
|
68
|
+
*
|
|
69
|
+
* @type {number}
|
|
70
|
+
*/
|
|
71
|
+
index_in_page = 0;
|
|
72
|
+
|
|
60
73
|
/**
|
|
61
74
|
* @type {number}
|
|
62
75
|
*/
|
|
@@ -12,13 +12,20 @@
|
|
|
12
12
|
* header's `decoded_size` is what {@link vgeo_decode_frame_blob} decodes against, and the frame's
|
|
13
13
|
* checksum is what proves the stored bytes arrived intact.
|
|
14
14
|
*
|
|
15
|
+
* The level is how hard the encoder looks for matches, and nothing else: every level writes the
|
|
16
|
+
* same LZ4 block format, so it is a build-time decision with no reader consequence at all. What it
|
|
17
|
+
* buys on a page of encoded geometry is about 2.5% over the fast encoder, almost all of which is
|
|
18
|
+
* already there at level 3; what it costs is roughly an order of magnitude of encoder throughput,
|
|
19
|
+
* which over a whole conversion comes to a couple of percent of the build.
|
|
20
|
+
*
|
|
15
21
|
* @param {Uint8Array} bytes the decoded page
|
|
16
22
|
* @param {number} codec the codec to attempt, one of {@link VGEO_CODEC_RAW} or {@link VGEO_CODEC_LZ4}
|
|
23
|
+
* @param {number} [level] how hard to look, one of {@link LZ4_LEVEL}'s; the raw codec ignores it
|
|
17
24
|
* @returns {VGeoFrameBlob}
|
|
18
25
|
*
|
|
19
26
|
* @author Alex Goldring
|
|
20
27
|
* @copyright Company Named Limited (c) 2026
|
|
21
28
|
*/
|
|
22
|
-
export function vgeo_encode_frame_blob(bytes: Uint8Array, codec: number): VGeoFrameBlob;
|
|
29
|
+
export function vgeo_encode_frame_blob(bytes: Uint8Array, codec: number, level?: number): VGeoFrameBlob;
|
|
23
30
|
import { VGeoFrameBlob } from "./VGeoFrameBlob.js";
|
|
24
31
|
//# sourceMappingURL=vgeo_encode_frame_blob.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vgeo_encode_frame_blob.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vgeo_encode_frame_blob.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,8CARW,UAAU,SACV,MAAM,UACN,MAAM,GACJ,aAAa,CAgCzB;8BAzD6B,oBAAoB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { assert } from "../../../../../../core/assert.js";
|
|
2
|
-
import {
|
|
2
|
+
import { LZ4_LEVEL } from "../../../../../../core/binary/lz4/LZ4_LEVEL.js";
|
|
3
|
+
import { lz4_compress_block_at_level } from "../../../../../../core/binary/lz4/lz4_compress_block_at_level.js";
|
|
3
4
|
import { lz4_compress_bound } from "../../../../../../core/binary/lz4/lz4_compress_bound.js";
|
|
4
5
|
import { VGEO_CODEC_LZ4 } from "./VGEO_CODEC_LZ4.js";
|
|
5
6
|
import { VGEO_CODEC_RAW } from "./VGEO_CODEC_RAW.js";
|
|
@@ -19,14 +20,21 @@ import { VGeoFrameBlob } from "./VGeoFrameBlob.js";
|
|
|
19
20
|
* header's `decoded_size` is what {@link vgeo_decode_frame_blob} decodes against, and the frame's
|
|
20
21
|
* checksum is what proves the stored bytes arrived intact.
|
|
21
22
|
*
|
|
23
|
+
* The level is how hard the encoder looks for matches, and nothing else: every level writes the
|
|
24
|
+
* same LZ4 block format, so it is a build-time decision with no reader consequence at all. What it
|
|
25
|
+
* buys on a page of encoded geometry is about 2.5% over the fast encoder, almost all of which is
|
|
26
|
+
* already there at level 3; what it costs is roughly an order of magnitude of encoder throughput,
|
|
27
|
+
* which over a whole conversion comes to a couple of percent of the build.
|
|
28
|
+
*
|
|
22
29
|
* @param {Uint8Array} bytes the decoded page
|
|
23
30
|
* @param {number} codec the codec to attempt, one of {@link VGEO_CODEC_RAW} or {@link VGEO_CODEC_LZ4}
|
|
31
|
+
* @param {number} [level] how hard to look, one of {@link LZ4_LEVEL}'s; the raw codec ignores it
|
|
24
32
|
* @returns {VGeoFrameBlob}
|
|
25
33
|
*
|
|
26
34
|
* @author Alex Goldring
|
|
27
35
|
* @copyright Company Named Limited (c) 2026
|
|
28
36
|
*/
|
|
29
|
-
export function vgeo_encode_frame_blob(bytes, codec) {
|
|
37
|
+
export function vgeo_encode_frame_blob(bytes, codec, level = LZ4_LEVEL.HC_DEFAULT) {
|
|
30
38
|
assert.defined(bytes, 'bytes');
|
|
31
39
|
|
|
32
40
|
const result = new VGeoFrameBlob();
|
|
@@ -42,7 +50,7 @@ export function vgeo_encode_frame_blob(bytes, codec) {
|
|
|
42
50
|
|
|
43
51
|
const scratch = new Uint8Array(lz4_compress_bound(bytes.length));
|
|
44
52
|
|
|
45
|
-
const end =
|
|
53
|
+
const end = lz4_compress_block_at_level(scratch, 0, scratch.length, bytes, 0, bytes.length, level);
|
|
46
54
|
|
|
47
55
|
if (end < bytes.length) {
|
|
48
56
|
result.codec = VGEO_CODEC_LZ4;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bumped only when the container layout itself changes. A new payload encoding is a per-asset
|
|
3
3
|
* capability gate instead, so it does not move this.
|
|
4
|
+
*
|
|
5
|
+
* 4 added the parent tables (§6.3, §6.4) — the format's first upward edge. {@link
|
|
6
|
+
* VGEO_MIN_READER_VERSION} deliberately did **not** move with it: the tables occupy bytes that were
|
|
7
|
+
* reserved and written as zero, and they sit between the cluster records and the payload, so every
|
|
8
|
+
* offset a version-3 reader computes still lands where it did and such a reader reads a version-4
|
|
9
|
+
* file correctly by ignoring them. A version-4 reader meeting a version-3 file finds
|
|
10
|
+
* `parent_table_offset` zero and takes the same absence as "this container has no upward edge",
|
|
11
|
+
* which is true.
|
|
12
|
+
*
|
|
4
13
|
* @type {number}
|
|
5
14
|
*/
|
|
6
15
|
export const VGEO_FORMAT_VERSION: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VGEO_FORMAT_VERSION.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"VGEO_FORMAT_VERSION.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,kCAFU,MAAM,CAEqB"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bumped only when the container layout itself changes. A new payload encoding is a per-asset
|
|
3
3
|
* capability gate instead, so it does not move this.
|
|
4
|
+
*
|
|
5
|
+
* 4 added the parent tables (§6.3, §6.4) — the format's first upward edge. {@link
|
|
6
|
+
* VGEO_MIN_READER_VERSION} deliberately did **not** move with it: the tables occupy bytes that were
|
|
7
|
+
* reserved and written as zero, and they sit between the cluster records and the payload, so every
|
|
8
|
+
* offset a version-3 reader computes still lands where it did and such a reader reads a version-4
|
|
9
|
+
* file correctly by ignoring them. A version-4 reader meeting a version-3 file finds
|
|
10
|
+
* `parent_table_offset` zero and takes the same absence as "this container has no upward edge",
|
|
11
|
+
* which is true.
|
|
12
|
+
*
|
|
4
13
|
* @type {number}
|
|
5
14
|
*/
|
|
6
|
-
export const VGEO_FORMAT_VERSION =
|
|
15
|
+
export const VGEO_FORMAT_VERSION = 4;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Most entries one page's group-parent table may hold, and therefore the largest `parent_first` the
|
|
3
|
+
* u16 in a group record can name.
|
|
4
|
+
*
|
|
5
|
+
* The cap exists because the arithmetic does not forbid overflow on its own: `parent_entry_count` is
|
|
6
|
+
* the sum of `parent_cluster_count` over a page's groups and `group_count` is itself a u16, so a
|
|
7
|
+
* dense enough page could in principle run past what `parent_first` can index. `child_ref` has no
|
|
8
|
+
* such problem — it indexes distinct child *pages*.
|
|
9
|
+
*
|
|
10
|
+
* It is a cap rather than a wider field because the measured distance is not close. Across 8,899
|
|
11
|
+
* pages of 30 converted Zorah containers the worst page carries **26** parent entries against a mean
|
|
12
|
+
* of 17.4, and the most parents any one group has is 5 — so this bound stands 2,521x above the worst
|
|
13
|
+
* real page, and paying a u32 for it would cost the group record its 8-byte size.
|
|
14
|
+
*
|
|
15
|
+
* @type {number}
|
|
16
|
+
*/
|
|
17
|
+
export const VGEO_MAX_PARENT_ENTRY_COUNT: number;
|
|
18
|
+
//# sourceMappingURL=VGEO_MAX_PARENT_ENTRY_COUNT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_MAX_PARENT_ENTRY_COUNT.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_ENTRY_COUNT.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,0CAFU,MAAM,CAEkC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Most entries one page's group-parent table may hold, and therefore the largest `parent_first` the
|
|
3
|
+
* u16 in a group record can name.
|
|
4
|
+
*
|
|
5
|
+
* The cap exists because the arithmetic does not forbid overflow on its own: `parent_entry_count` is
|
|
6
|
+
* the sum of `parent_cluster_count` over a page's groups and `group_count` is itself a u16, so a
|
|
7
|
+
* dense enough page could in principle run past what `parent_first` can index. `child_ref` has no
|
|
8
|
+
* such problem — it indexes distinct child *pages*.
|
|
9
|
+
*
|
|
10
|
+
* It is a cap rather than a wider field because the measured distance is not close. Across 8,899
|
|
11
|
+
* pages of 30 converted Zorah containers the worst page carries **26** parent entries against a mean
|
|
12
|
+
* of 17.4, and the most parents any one group has is 5 — so this bound stands 2,521x above the worst
|
|
13
|
+
* real page, and paying a u32 for it would cost the group record its 8-byte size.
|
|
14
|
+
*
|
|
15
|
+
* @type {number}
|
|
16
|
+
*/
|
|
17
|
+
export const VGEO_MAX_PARENT_ENTRY_COUNT = 0xFFFF;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Largest legal parent-page-table index, one below {@link VGEO_SAME_PAGE}, which a parent reference
|
|
3
|
+
* spends the same sentinel on that a child reference does.
|
|
4
|
+
*
|
|
5
|
+
* @type {number}
|
|
6
|
+
*/
|
|
7
|
+
export const VGEO_MAX_PARENT_REF: number;
|
|
8
|
+
//# sourceMappingURL=VGEO_MAX_PARENT_REF.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_MAX_PARENT_REF.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/page/VGEO_MAX_PARENT_REF.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,kCAFU,MAAM,CAE0B"}
|
|
@@ -12,6 +12,9 @@ export namespace VGEO_PAGE_OFFSET {
|
|
|
12
12
|
let PAYLOAD_OFFSET: number;
|
|
13
13
|
let PAYLOAD_SIZE: number;
|
|
14
14
|
let NODE_TABLE_OFFSET: number;
|
|
15
|
+
let PARENT_TABLE_OFFSET: number;
|
|
16
|
+
let PARENT_ENTRY_COUNT: number;
|
|
17
|
+
let PARENT_PAGE_COUNT: number;
|
|
15
18
|
let METRIC: number;
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=VGEO_PAGE_OFFSET.d.ts.map
|
|
@@ -12,5 +12,21 @@ export const VGEO_PAGE_OFFSET = {
|
|
|
12
12
|
PAYLOAD_OFFSET: 12,
|
|
13
13
|
PAYLOAD_SIZE: 16,
|
|
14
14
|
NODE_TABLE_OFFSET: 20,
|
|
15
|
+
/**
|
|
16
|
+
* Start of this page's parent section, which is the parent-page table immediately followed by
|
|
17
|
+
* the group-parent table. Zero means the page carries neither, which is what every container
|
|
18
|
+
* written before `format_version` 4 says: those bytes were reserved and written as zero, so the
|
|
19
|
+
* absence is self-describing and no version test is needed to read it.
|
|
20
|
+
*/
|
|
21
|
+
PARENT_TABLE_OFFSET: 24,
|
|
22
|
+
/**
|
|
23
|
+
* Entries in the group-parent table — the sum of `parent_cluster_count` over this page's
|
|
24
|
+
* groups, and the bound every `parent_first` plus its count must stay within.
|
|
25
|
+
*/
|
|
26
|
+
PARENT_ENTRY_COUNT: 28,
|
|
27
|
+
/**
|
|
28
|
+
* Entries in the parent-page table, which the group-parent table's `parent_ref` indexes.
|
|
29
|
+
*/
|
|
30
|
+
PARENT_PAGE_COUNT: 30,
|
|
15
31
|
METRIC: 32,
|
|
16
32
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bytes of one entry in a decoded page's group-parent table: `parent_ref u16`, then
|
|
3
|
+
* `parent_cluster u16`.
|
|
4
|
+
*
|
|
5
|
+
* Four rather than the child table's 48, because the two references are not symmetric. A child
|
|
6
|
+
* reference has to carry a fetch range and a metric, since the child may be absent and the decision
|
|
7
|
+
* to fetch it is made before it arrives. A parent of a group in the cut is resident already —
|
|
8
|
+
* `VGEO_GROUP_FLAG_SELECTABLE` is exactly "every parent reference is live" — so a parent reference
|
|
9
|
+
* has nothing to decide and needs only to say where.
|
|
10
|
+
*
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const VGEO_PARENT_ENTRY_SIZE: number;
|
|
14
|
+
//# sourceMappingURL=VGEO_PARENT_ENTRY_SIZE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_PARENT_ENTRY_SIZE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_ENTRY_SIZE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,qCAFU,MAAM,CAEwB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bytes of one entry in a decoded page's group-parent table: `parent_ref u16`, then
|
|
3
|
+
* `parent_cluster u16`.
|
|
4
|
+
*
|
|
5
|
+
* Four rather than the child table's 48, because the two references are not symmetric. A child
|
|
6
|
+
* reference has to carry a fetch range and a metric, since the child may be absent and the decision
|
|
7
|
+
* to fetch it is made before it arrives. A parent of a group in the cut is resident already —
|
|
8
|
+
* `VGEO_GROUP_FLAG_SELECTABLE` is exactly "every parent reference is live" — so a parent reference
|
|
9
|
+
* has nothing to decide and needs only to say where.
|
|
10
|
+
*
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const VGEO_PARENT_ENTRY_SIZE = 4;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bytes of one entry in a decoded page's parent-page table: `page_index u32`, the global frame
|
|
3
|
+
* ordinal of a page holding a parent of one of this page's groups.
|
|
4
|
+
*
|
|
5
|
+
* Deduplicated, so the group-parent table's `parent_ref` is an index into this and a page named by
|
|
6
|
+
* several groups is stored once — the same shape the child table has, for the same reason.
|
|
7
|
+
*
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/
|
|
10
|
+
export const VGEO_PARENT_PAGE_ENTRY_SIZE: number;
|
|
11
|
+
//# sourceMappingURL=VGEO_PARENT_PAGE_ENTRY_SIZE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_PARENT_PAGE_ENTRY_SIZE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/page/VGEO_PARENT_PAGE_ENTRY_SIZE.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,0CAFU,MAAM,CAE6B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bytes of one entry in a decoded page's parent-page table: `page_index u32`, the global frame
|
|
3
|
+
* ordinal of a page holding a parent of one of this page's groups.
|
|
4
|
+
*
|
|
5
|
+
* Deduplicated, so the group-parent table's `parent_ref` is an index into this and a page named by
|
|
6
|
+
* several groups is stored once — the same shape the child table has, for the same reason.
|
|
7
|
+
*
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/
|
|
10
|
+
export const VGEO_PARENT_PAGE_ENTRY_SIZE = 4;
|
|
@@ -82,6 +82,26 @@ export class VGeoByteSource {
|
|
|
82
82
|
* @type {number}
|
|
83
83
|
*/
|
|
84
84
|
bytes_read: number;
|
|
85
|
+
/**
|
|
86
|
+
* What another thread needs to open this source again: a URL with its length, a Blob, or the
|
|
87
|
+
* bytes. Set by the three constructors below and by `vgeo_fetch_byte_source`; `undefined` for
|
|
88
|
+
* a source built by hand, which then stays on the thread that built it.
|
|
89
|
+
*
|
|
90
|
+
* @type {{kind: 'url', url: string, byte_length: number, init?: object}
|
|
91
|
+
* | {kind: 'blob', blob: Blob} | {kind: 'memory', bytes: Uint8Array} | undefined}
|
|
92
|
+
*/
|
|
93
|
+
descriptor: {
|
|
94
|
+
kind: 'url';
|
|
95
|
+
url: string;
|
|
96
|
+
byte_length: number;
|
|
97
|
+
init?: object;
|
|
98
|
+
} | {
|
|
99
|
+
kind: 'blob';
|
|
100
|
+
blob: Blob;
|
|
101
|
+
} | {
|
|
102
|
+
kind: 'memory';
|
|
103
|
+
bytes: Uint8Array;
|
|
104
|
+
} | undefined;
|
|
85
105
|
/**
|
|
86
106
|
* @returns {string}
|
|
87
107
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VGeoByteSource.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;
|
|
1
|
+
{"version":3,"file":"VGeoByteSource.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;IAwHI;;;;;;;;;;OAUG;IACH,iBAJW,UAAU,GAAC,WAAW,SACtB,MAAM,GACJ,cAAc,CAc1B;IAED;;;;;;;;;;;;;;;OAeG;IACH,uBAJW,IAAI,SACJ,MAAM,GACJ,cAAc,CAc1B;IApID;;;;;;OAMG;IACH,yBANW,MAAM,eACG,MAAM,QAAE,MAAM,QAAE,WAAW,iBAAI,QAAQ,UAAU,CAAC,SAG3D,MAAM,EAUhB;IAvDD;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,eAFU,MAAM,CAEE;IAElB;;;;OAIG;IACH,YAFU,MAAM,CAED;IAEf;;;;;;;OAOG;IACH,YAHU;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,GAC/D;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAC,GAAG;QAAC,IAAI,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAC,GAAG,SAAS,CAE9D;IA8BvB;;OAEG;IACH,mBAEC;IAED;;;;;OAKG;IACH,uBAGC;IAED;;;;;;;OAOG;IACH,kBAPW,MAAM,eACN,MAAM,WACN,WAAW,GACT,QAAQ,UAAU,CAAC,CAsC/B;;CAwDJ"}
|
|
@@ -50,6 +50,16 @@ export class VGeoByteSource {
|
|
|
50
50
|
*/
|
|
51
51
|
bytes_read = 0;
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* What another thread needs to open this source again: a URL with its length, a Blob, or the
|
|
55
|
+
* bytes. Set by the three constructors below and by `vgeo_fetch_byte_source`; `undefined` for
|
|
56
|
+
* a source built by hand, which then stays on the thread that built it.
|
|
57
|
+
*
|
|
58
|
+
* @type {{kind: 'url', url: string, byte_length: number, init?: object}
|
|
59
|
+
* | {kind: 'blob', blob: Blob} | {kind: 'memory', bytes: Uint8Array} | undefined}
|
|
60
|
+
*/
|
|
61
|
+
descriptor = undefined;
|
|
62
|
+
|
|
53
63
|
/**
|
|
54
64
|
* @type {function(number, number, AbortSignal=): Promise<Uint8Array>}
|
|
55
65
|
*/
|
|
@@ -154,11 +164,15 @@ export class VGeoByteSource {
|
|
|
154
164
|
static of(bytes, name = 'a buffer in memory') {
|
|
155
165
|
const array = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
156
166
|
|
|
157
|
-
|
|
167
|
+
const source = new VGeoByteSource(
|
|
158
168
|
array.byteLength,
|
|
159
169
|
async (offset, length) => array.subarray(offset, offset + length),
|
|
160
170
|
name
|
|
161
171
|
);
|
|
172
|
+
|
|
173
|
+
source.descriptor = { kind: 'memory', bytes: array };
|
|
174
|
+
|
|
175
|
+
return source;
|
|
162
176
|
}
|
|
163
177
|
|
|
164
178
|
/**
|
|
@@ -178,12 +192,16 @@ export class VGeoByteSource {
|
|
|
178
192
|
* @returns {VGeoByteSource}
|
|
179
193
|
*/
|
|
180
194
|
static from_blob(blob, name = blob.name ?? 'a blob') {
|
|
181
|
-
|
|
195
|
+
const source = new VGeoByteSource(
|
|
182
196
|
blob.size,
|
|
183
197
|
async (offset, length) => new Uint8Array(
|
|
184
198
|
await blob.slice(offset, offset + length).arrayBuffer()
|
|
185
199
|
),
|
|
186
200
|
name
|
|
187
201
|
);
|
|
202
|
+
|
|
203
|
+
source.descriptor = { kind: 'blob', blob };
|
|
204
|
+
|
|
205
|
+
return source;
|
|
188
206
|
}
|
|
189
207
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../header/VGeoLevelRecord.js").VGeoLevelRecord} VGeoLevelRecord
|
|
3
|
+
*/
|
|
1
4
|
/**
|
|
2
5
|
* A `.vgeo` file's header and level table, decoded — the first 256 bytes plus `32 · level_count`
|
|
3
6
|
* after them, and nothing else.
|
|
@@ -130,4 +133,5 @@ export class VGeoContainerHeader {
|
|
|
130
133
|
*/
|
|
131
134
|
get head_size(): number;
|
|
132
135
|
}
|
|
136
|
+
export type VGeoLevelRecord = import("../header/VGeoLevelRecord.js").VGeoLevelRecord;
|
|
133
137
|
//# sourceMappingURL=VGeoContainerHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VGeoContainerHeader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH;IACI;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,oBAFU,MAAM,CAEO;IAEvB;;OAEG;IACH,kBAFU,MAAM,CAEK;IAErB;;;;;;OAMG;IACH,yBAFU,MAAM,CAEY;IAE5B;;;;OAIG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;OAKG;IACH,gBAFU,MAAM,CAEI;IAEpB;;;;OAIG;IACH,uBAFU,MAAM,CAEU;IAE1B;;OAEG;IACH,aAFU,MAAM,CAEA;IAEhB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;OAEG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,kBAFU,MAAM,CAEK;IAErB;;;;OAIG;IACH,sBAFU,MAAM,CAES;IAEzB;;;OAGG;IACH,wBAFU,MAAM,CAEW;IAE3B;;;OAGG;IACH,kBAFU,MAAM,CAEK;IAErB;;OAEG;IACH,4BAFU,MAAM,CAEe;IAE/B;;;;;;;OAOG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;OAEG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,QAFU,
|
|
1
|
+
{"version":3,"file":"VGeoContainerHeader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH;IACI;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;OAIG;IACH,oBAFU,MAAM,CAEO;IAEvB;;OAEG;IACH,kBAFU,MAAM,CAEK;IAErB;;;;;;OAMG;IACH,yBAFU,MAAM,CAEY;IAE5B;;;;OAIG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;OAKG;IACH,gBAFU,MAAM,CAEI;IAEpB;;;;OAIG;IACH,uBAFU,MAAM,CAEU;IAE1B;;OAEG;IACH,aAFU,MAAM,CAEA;IAEhB;;OAEG;IACH,gBAFU,MAAM,CAEG;IAEnB;;OAEG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,kBAFU,MAAM,CAEK;IAErB;;;;OAIG;IACH,sBAFU,MAAM,CAES;IAEzB;;;OAGG;IACH,wBAFU,MAAM,CAEW;IAE3B;;;OAGG;IACH,kBAFU,MAAM,CAEK;IAErB;;OAEG;IACH,4BAFU,MAAM,CAEe;IAE/B;;;;;;;OAOG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;OAEG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,QAFU,eAAe,EAAE,CAEf;IAEZ;;;;OAIG;IACH,wBAEC;CACJ;8BA7JY,OAAO,8BAA8B,EAAE,eAAe"}
|
|
@@ -69,7 +69,7 @@ export class VGeoContainerReader {
|
|
|
69
69
|
/**
|
|
70
70
|
* @returns {VGeoByteSource}
|
|
71
71
|
*/
|
|
72
|
-
get source(): VGeoByteSource;
|
|
72
|
+
get source(): import("./VGeoByteSource.js").VGeoByteSource;
|
|
73
73
|
/**
|
|
74
74
|
* @returns {VGeoReadOptions}
|
|
75
75
|
*/
|
|
@@ -133,7 +133,7 @@ export class VGeoContainerReader {
|
|
|
133
133
|
*
|
|
134
134
|
* @returns {VGeoPage}
|
|
135
135
|
*/
|
|
136
|
-
get root(): VGeoPage;
|
|
136
|
+
get root(): import("./VGeoPage.js").VGeoPage;
|
|
137
137
|
/**
|
|
138
138
|
* Every resident page, sorted by page index.
|
|
139
139
|
*
|
|
@@ -144,7 +144,7 @@ export class VGeoContainerReader {
|
|
|
144
144
|
*
|
|
145
145
|
* @returns {VGeoPage[]}
|
|
146
146
|
*/
|
|
147
|
-
get pages(): VGeoPage[];
|
|
147
|
+
get pages(): import("./VGeoPage.js").VGeoPage[];
|
|
148
148
|
/**
|
|
149
149
|
* Every resident page, in arrival order, allocating nothing.
|
|
150
150
|
*
|
|
@@ -277,6 +277,26 @@ export class VGeoContainerReader {
|
|
|
277
277
|
* @returns {number} how many were abandoned
|
|
278
278
|
*/
|
|
279
279
|
cancel_all(): number;
|
|
280
|
+
/**
|
|
281
|
+
* Take a page decoded elsewhere — on a worker, by `VGeoPageFetcher` — as resident.
|
|
282
|
+
*
|
|
283
|
+
* The one door into the page map for a page this reader did not fetch itself, and the same
|
|
284
|
+
* door its own fetches use. Idempotent: a page already here is returned rather than replaced,
|
|
285
|
+
* because residency is the accounting and two arrivals must cost one page.
|
|
286
|
+
*
|
|
287
|
+
* @param {VGeoPage} page
|
|
288
|
+
* @returns {VGeoPage} the resident page, which is the one given unless one was already here
|
|
289
|
+
*/
|
|
290
|
+
adopt(page: VGeoPage): VGeoPage;
|
|
291
|
+
/**
|
|
292
|
+
* Record that a page will not arrive from this source, so that it is not asked for again
|
|
293
|
+
* until {@link clear_quarantine}. What a fetch that ran elsewhere reports back.
|
|
294
|
+
*
|
|
295
|
+
* @param {number} page_index
|
|
296
|
+
* @param {string} reason
|
|
297
|
+
* @returns {void}
|
|
298
|
+
*/
|
|
299
|
+
quarantine_page(page_index: number, reason: string): void;
|
|
280
300
|
/**
|
|
281
301
|
* Install the page a want names.
|
|
282
302
|
*
|
|
@@ -371,5 +391,11 @@ export class VGeoContainerReader {
|
|
|
371
391
|
release_head(): number;
|
|
372
392
|
#private;
|
|
373
393
|
}
|
|
394
|
+
export type VGeoByteSource = import("./VGeoByteSource.js").VGeoByteSource;
|
|
395
|
+
export type VGeoContainerHeader = import("./VGeoContainerHeader.js").VGeoContainerHeader;
|
|
396
|
+
export type VGeoDefect = import("../VGeoDefect.js").VGeoDefect;
|
|
397
|
+
export type VGeoDirectory = import("./VGeoDirectory.js").VGeoDirectory;
|
|
398
|
+
export type VGeoPage = import("./VGeoPage.js").VGeoPage;
|
|
399
|
+
export type VGeoPageWant = import("./VGeoPageWant.js").VGeoPageWant;
|
|
374
400
|
import { VGeoReadOptions } from "./VGeoReadOptions.js";
|
|
375
401
|
//# sourceMappingURL=VGeoContainerReader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VGeoContainerReader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VGeoContainerReader.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH;IA8PI;;;;;;;;OAQG;IACH,oBANW,cAAc,YACd,eAAe,GACb,QAAQ,mBAAmB,CAAC,CAUxC;IAhJD;;;OAGG;IACH,oBAHW,cAAc,YACd,eAAe,EAOzB;IArID;;OAEG;IACH,QAFU,mBAAmB,CAEV;IAEnB;;;;OAIG;IACH,WAFU,aAAa,GAAC,SAAS,CAEX;IA6HtB;;OAEG;IACH,2DAEC;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,kCAEC;IAED;;;;;;;;;;;;;OAaG;IACH,6BAEC;IAED;;OAEG;IACH,iCAEC;IAED;;;;;;;;;OASG;IACH,2CAEC;IAED;;;;;OAKG;IACH,yBAEC;IAED;;;OAGG;IACH,qCAEC;IAED;;;;;;;;;;;;OAYG;IACH,6CAEC;IAED;;;;;;;;;OASG;IACH,gDAEC;IAED;;;;OAIG;IACH,kBAFa,iBAAiB,QAAQ,CAAC,CAItC;IA0FD;;;;;;;;OAQG;IACH,iBAHW,MAAM,GACJ,QAAQ,GAAC,SAAS,CAI9B;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;;;;OAWG;IACH,iCAHW,MAAM,GACJ,MAAM,CAoBlB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,0BAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAUnB;IAoOD;;;;;OAKG;IACH,2BAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;;;OASG;IACH,8BAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAI5B;IAED;;;OAGG;IACH,cAFa,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAI9C;IAED;;;;;;;;;;;;OAYG;IACH,8BAHW,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;;;;;;;;OAYG;IACH,oBAPW,MAAM,gBACN,MAAM,cACN,MAAM,GACJ,QAAQ,QAAQ,CAAC,CAoC7B;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,mBAHW,MAAM,GACJ,OAAO,CAYnB;IAED;;;OAGG;IACH,cAFa,MAAM,CAYlB;IA6CD;;;;;;;;;OASG;IACH,YAHW,QAAQ,GACN,QAAQ,CAqBpB;IAED;;;;;;;OAOG;IACH,4BAJW,MAAM,UACN,MAAM,GACJ,IAAI,CAMhB;IACD;;;;;OAKG;IACH,mBAHW,YAAY,GACV,QAAQ,QAAQ,CAAC,CAI7B;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,qBANW,YAAY,EAAE,UACd,MAAM,WAEN,WAAW,GACT,QAAQ,QAAQ,EAAE,CAAC,CA+D/B;IAED;;;;;;;;;;OAUG;IACH,kBAHW,MAAM,GACJ,OAAO,CAsDnB;IAED;;;;OAIG;IACH,aAFa,MAAM,CAYlB;IAED;;;;;;;;OAQG;IACH,kBAFa,QAAQ,aAAa,CAAC,CAkBlC;IAED;;;;;;;;OAQG;IACH,uCAHoB,MAAM,QAAE,MAAM,KAAG,IAAI,GAC5B,QAAQ,IAAI,CAAC,CAMzB;IAED;;;;;;;;;OASG;IACH,YAFa,QAAQ,UAAU,EAAE,CAAC,CAYjC;IAiCD;;;;;;;;;OASG;IACH,gBAFa,MAAM,CAQlB;;CA6BJ;6BAvvCY,OAAO,qBAAqB,EAAE,cAAc;kCAC5C,OAAO,0BAA0B,EAAE,mBAAmB;yBACtD,OAAO,kBAAkB,EAAE,UAAU;4BACrC,OAAO,oBAAoB,EAAE,aAAa;uBAC1C,OAAO,eAAe,EAAE,QAAQ;2BAChC,OAAO,mBAAmB,EAAE,YAAY;gCAXrB,sBAAsB"}
|