@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
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Both tiers of residency for every registered container, flat, and nothing per frame that scales
|
|
3
|
+
* with what is resident.
|
|
4
|
+
*
|
|
5
|
+
* `VIRTUAL_GEOMETRY_DESIGN.md` §6 names the tiers and the rules — RAM ⊇ VRAM, a byte budget each,
|
|
6
|
+
* LRU on last-touched under a protect window, never a page whose child is resident in the same
|
|
7
|
+
* tier, the root pinned, admission before the fetch. What this class changes is not a rule but the
|
|
8
|
+
* shape everything is kept in (RUNTIME_PLAN_2026_09_14 §4). Two owners kept the rules before it:
|
|
9
|
+
* `GPUVirtualGeometryPool` for VRAM, with a `Map` of touch stamps it walked once per install to
|
|
10
|
+
* find the coldest row, and `VGeoResidencyManager` for RAM, which built and sorted an array of
|
|
11
|
+
* every resident page of every reader whenever its budget bound. On the Zorah bdf6f961 container at
|
|
12
|
+
* 4,096 slots the first was 0.55 ms per refused install and the second the same defect in the tier
|
|
13
|
+
* above, and neither scaled with anything the host had chosen.
|
|
14
|
+
*
|
|
15
|
+
* So:
|
|
16
|
+
*
|
|
17
|
+
* - **One word per page**, beside the lookup and the same length, says where a page is — absent,
|
|
18
|
+
* fetching, quarantined, in RAM at a slot, in VRAM at a row. A want is dropped, promoted or
|
|
19
|
+
* fetched by one read of it, which is the whole of the cross-frame dedup.
|
|
20
|
+
* - **Struct-of-arrays per tier**, sized to a capacity the host stated: last use, bytes, the page,
|
|
21
|
+
* the key. No `Map` is walked per frame.
|
|
22
|
+
* - **Touches arrive as bits** and are folded into `last_used` per set bit; a page in RAM and not in
|
|
23
|
+
* VRAM cannot be touched, so its last use is the frame it left VRAM, written once.
|
|
24
|
+
* - **Eviction is CLOCK under a test budget.** A hand over each tier's array tests candidates in
|
|
25
|
+
* order and evicts the first that may go; a reading may run at most
|
|
26
|
+
* `max_eviction_tests_per_reading` tests across both tiers, after which it refuses what is left
|
|
27
|
+
* and the hand carries on next reading. A full tier therefore turns over at a rate the options
|
|
28
|
+
* chose, never at one the resident count chose. Not exact LRU, deliberately: the protect window
|
|
29
|
+
* already coarsens the order to "not recently", and an exact order costs an update per touch.
|
|
30
|
+
* - **Admission before the fetch**, against the RAM budget and a slot, out of the `decoded_size`
|
|
31
|
+
* the parent's child table carries (FORMAT §10) — a page that will not fit is never fetched.
|
|
32
|
+
* - **VRAM ⊆ RAM is enforced**: the RAM hand skips a page that is in VRAM, so the page a want was
|
|
33
|
+
* discovered through is in RAM whenever the want is valid, and its child table resolves the
|
|
34
|
+
* range. Before this nothing enforced it, and a want whose source the RAM tier had dropped was
|
|
35
|
+
* silently skipped.
|
|
36
|
+
*
|
|
37
|
+
* A registered reader is this class's: its page map is driven through `install` and `evict` from
|
|
38
|
+
* here, and a tool or a viewer driving the same reader alongside it is unsupported rather than
|
|
39
|
+
* reconciled per frame.
|
|
40
|
+
*
|
|
41
|
+
* @author Alex Goldring
|
|
42
|
+
* @copyright Company Named Limited (c) 2026
|
|
43
|
+
*/
|
|
44
|
+
export class VGeoResidency {
|
|
45
|
+
/**
|
|
46
|
+
* @param {Object} options
|
|
47
|
+
* @param {GPUVirtualGeometryPool} options.pool
|
|
48
|
+
* @param {VGeoResidencyOptions} [options.options]
|
|
49
|
+
* @param {ConcurrencyGate} [options.gate] a fetch gate shared with other residencies
|
|
50
|
+
* @param {VGeoPageFetcher} [options.fetcher] where pages are fetched and decoded; by default
|
|
51
|
+
* an in-process one, because only a host that can spawn a worker knows how
|
|
52
|
+
*/
|
|
53
|
+
constructor({ pool, options, gate, fetcher }: {
|
|
54
|
+
pool: GPUVirtualGeometryPool;
|
|
55
|
+
options?: VGeoResidencyOptions;
|
|
56
|
+
gate?: ConcurrencyGate;
|
|
57
|
+
fetcher?: VGeoPageFetcher;
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* @returns {VGeoResidencyOptions}
|
|
61
|
+
*/
|
|
62
|
+
get options(): VGeoResidencyOptions;
|
|
63
|
+
/**
|
|
64
|
+
* @returns {ConcurrencyGate}
|
|
65
|
+
*/
|
|
66
|
+
get gate(): ConcurrencyGate;
|
|
67
|
+
/**
|
|
68
|
+
* @returns {VGeoPageFetcher}
|
|
69
|
+
*/
|
|
70
|
+
get fetcher(): VGeoPageFetcher;
|
|
71
|
+
/**
|
|
72
|
+
* @returns {GPUVirtualGeometryPool}
|
|
73
|
+
*/
|
|
74
|
+
get pool(): import("./GPUVirtualGeometryPool.js").GPUVirtualGeometryPool;
|
|
75
|
+
/**
|
|
76
|
+
* The clock both tiers read: the pool's frame, which the runtime advances at `begin_frame`
|
|
77
|
+
* whether or not a reading is scheduled that frame.
|
|
78
|
+
* @returns {number}
|
|
79
|
+
*/
|
|
80
|
+
get frame(): number;
|
|
81
|
+
/**
|
|
82
|
+
* Decoded bytes the VRAM tier may hold: the option, or what the pool's slots hold at its page
|
|
83
|
+
* size. Read each time, so a host may move it.
|
|
84
|
+
* @returns {number}
|
|
85
|
+
*/
|
|
86
|
+
get vram_budget_bytes(): number;
|
|
87
|
+
get ram_budget_bytes(): number;
|
|
88
|
+
get ram_resident_bytes(): number;
|
|
89
|
+
get ram_page_count(): number;
|
|
90
|
+
get reader_count(): number;
|
|
91
|
+
get evicted_vram_count(): number;
|
|
92
|
+
get evicted_ram_count(): number;
|
|
93
|
+
/**
|
|
94
|
+
* Promotions the VRAM tier had no room for — no slot could be freed under the reading's test
|
|
95
|
+
* budget, or the page did not fit one.
|
|
96
|
+
* @returns {number}
|
|
97
|
+
*/
|
|
98
|
+
get refused_install_count(): number;
|
|
99
|
+
/**
|
|
100
|
+
* Fetches the RAM tier had no room for.
|
|
101
|
+
* @returns {number}
|
|
102
|
+
*/
|
|
103
|
+
get refused_fetch_count(): number;
|
|
104
|
+
/**
|
|
105
|
+
* Wants past a reading's promotion or fetch budget. Not a failure: the next cut asks again.
|
|
106
|
+
* @returns {number}
|
|
107
|
+
*/
|
|
108
|
+
get deferred_want_count(): number;
|
|
109
|
+
/**
|
|
110
|
+
* Wants for a page already in flight, or already in VRAM by the time the reading landed.
|
|
111
|
+
* @returns {number}
|
|
112
|
+
*/
|
|
113
|
+
get deduped_want_count(): number;
|
|
114
|
+
/**
|
|
115
|
+
* Records naming a page row that was refilled between the cut and the reading.
|
|
116
|
+
* @returns {number}
|
|
117
|
+
*/
|
|
118
|
+
get stale_record_count(): number;
|
|
119
|
+
/**
|
|
120
|
+
* Wants whose source page was not in RAM, which the RAM tier's hand is meant to make impossible.
|
|
121
|
+
* @returns {number}
|
|
122
|
+
*/
|
|
123
|
+
get lost_source_count(): number;
|
|
124
|
+
/**
|
|
125
|
+
* Records that named an empty row, an unregistered container, or a child reference the source
|
|
126
|
+
* page's table does not carry. The first is ordinary — a page evicted between the cut and the
|
|
127
|
+
* reading; the others a cut over a validated container does not produce.
|
|
128
|
+
* @returns {number}
|
|
129
|
+
*/
|
|
130
|
+
get moot_record_count(): number;
|
|
131
|
+
/**
|
|
132
|
+
* Readings in which every fetch dispatched for one container was quarantined.
|
|
133
|
+
* @returns {number}
|
|
134
|
+
*/
|
|
135
|
+
get failed_batch_count(): number;
|
|
136
|
+
get fetches_in_flight(): number;
|
|
137
|
+
get last_touch_count(): number;
|
|
138
|
+
get last_want_count(): number;
|
|
139
|
+
/**
|
|
140
|
+
* @returns {number}
|
|
141
|
+
*/
|
|
142
|
+
get quarantined_page_count(): number;
|
|
143
|
+
/**
|
|
144
|
+
* Take a container under both tiers: a geometry row and a lookup in the pool, its root page in
|
|
145
|
+
* RAM and VRAM, pinned in both.
|
|
146
|
+
*
|
|
147
|
+
* A refusal leaves nothing behind. Both ways this fails — a container built at another page
|
|
148
|
+
* size, and a tier with no room for another root — throw, and the pool's row is given back
|
|
149
|
+
* before they do; the message says what the tier holds.
|
|
150
|
+
*
|
|
151
|
+
* @param {VGeoContainerReader} reader open, with its root page resident
|
|
152
|
+
* @returns {number} the geometry row
|
|
153
|
+
*/
|
|
154
|
+
register(reader: VGeoContainerReader): number;
|
|
155
|
+
/**
|
|
156
|
+
* Give a container back: its rows, its lookup, its RAM slots, and the fetches it had on the
|
|
157
|
+
* wire. The decoded pages stay in the reader's map for the host to drop or keep.
|
|
158
|
+
*
|
|
159
|
+
* @param {VGeoContainerReader} reader
|
|
160
|
+
* @returns {boolean} whether it was registered
|
|
161
|
+
*/
|
|
162
|
+
unregister(reader: VGeoContainerReader): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* @param {VGeoContainerReader} reader
|
|
165
|
+
* @returns {boolean}
|
|
166
|
+
*/
|
|
167
|
+
is_registered(reader: VGeoContainerReader): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Where one page of a registered container is, by name — for a panel or a spec.
|
|
170
|
+
*
|
|
171
|
+
* @param {VGeoContainerReader} reader
|
|
172
|
+
* @param {number} page_index
|
|
173
|
+
* @returns {'absent'|'fetching'|'quarantined'|'ram'|'vram'|'unregistered'}
|
|
174
|
+
*/
|
|
175
|
+
where(reader: VGeoContainerReader, page_index: number): 'absent' | 'fetching' | 'quarantined' | 'ram' | 'vram' | 'unregistered';
|
|
176
|
+
/**
|
|
177
|
+
* Stop every fetch every registered container has on the wire.
|
|
178
|
+
*
|
|
179
|
+
* @returns {void}
|
|
180
|
+
*/
|
|
181
|
+
abort(): void;
|
|
182
|
+
/**
|
|
183
|
+
* Give up on everything: every fetch, every container.
|
|
184
|
+
*
|
|
185
|
+
* @returns {void}
|
|
186
|
+
*/
|
|
187
|
+
destroy(): void;
|
|
188
|
+
/**
|
|
189
|
+
* Let every quarantined page be asked for again.
|
|
190
|
+
*
|
|
191
|
+
* @returns {number} pages released
|
|
192
|
+
*/
|
|
193
|
+
clear_quarantines(): number;
|
|
194
|
+
/**
|
|
195
|
+
* Apply one frame's feedback: the touches to both tiers' clocks, and the wants to promotions and
|
|
196
|
+
* fetches, under the reading's budgets.
|
|
197
|
+
*
|
|
198
|
+
* @param {Uint32Array} words the feedback buffer, decoded with its own frame's layout
|
|
199
|
+
* @param {{touch_bits_base: number, touch_word_count: number, want_base: number,
|
|
200
|
+
* word_count: number}} layout
|
|
201
|
+
* @param {number} reading_frame the frame whose cut wrote these words
|
|
202
|
+
* @returns {void}
|
|
203
|
+
*/
|
|
204
|
+
apply(words: Uint32Array, layout: {
|
|
205
|
+
touch_bits_base: number;
|
|
206
|
+
touch_word_count: number;
|
|
207
|
+
want_base: number;
|
|
208
|
+
word_count: number;
|
|
209
|
+
}, reading_frame: number): void;
|
|
210
|
+
/**
|
|
211
|
+
* Whether a page row may be evicted from VRAM right now: resident, not pinned, outside the
|
|
212
|
+
* protect window, and with no child page resident in VRAM.
|
|
213
|
+
*
|
|
214
|
+
* @param {number} page_row
|
|
215
|
+
* @returns {boolean}
|
|
216
|
+
*/
|
|
217
|
+
evictable_vram(page_row: number): boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Whether a RAM slot's page may be evicted from RAM right now: occupied, not the root, not in
|
|
220
|
+
* VRAM, outside the protect window, and with no child page resident in either tier.
|
|
221
|
+
*
|
|
222
|
+
* @param {number} slot
|
|
223
|
+
* @returns {boolean}
|
|
224
|
+
*/
|
|
225
|
+
evictable_ram(slot: number): boolean;
|
|
226
|
+
#private;
|
|
227
|
+
}
|
|
228
|
+
export type VGeoContainerReader = import("../format/read/VGeoContainerReader.js").VGeoContainerReader;
|
|
229
|
+
export type VGeoPage = import("../format/read/VGeoPage.js").VGeoPage;
|
|
230
|
+
export type GPUVirtualGeometryPool = import("./GPUVirtualGeometryPool.js").GPUVirtualGeometryPool;
|
|
231
|
+
import { VGeoResidencyOptions } from "./VGeoResidencyOptions.js";
|
|
232
|
+
import { ConcurrencyGate } from "../../../../../core/process/ConcurrencyGate.js";
|
|
233
|
+
import { VGeoPageFetcher } from "./VGeoPageFetcher.js";
|
|
234
|
+
//# sourceMappingURL=VGeoResidency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGeoResidency.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js"],"names":[],"mappings":"AA+FA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH;IAwJI;;;;;;;OAOG;IACH;QAN2C,IAAI,EAApC,sBAAsB;QACS,OAAO,GAAtC,oBAAoB;QACM,IAAI,GAA9B,eAAe;QACW,OAAO,GAAjC,eAAe;OA8BzB;IAID;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,4BAEC;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,yEAEC;IAED;;;;OAIG;IACH,oBAEC;IAED;;;;OAIG;IACH,gCAGC;IAED,+BAEC;IAED,iCAEC;IAED,6BAEC;IAED,2BAEC;IAED,iCAEC;IAED,gCAEC;IAED;;;;OAIG;IACH,oCAEC;IAED;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,iCAEC;IAED;;;OAGG;IACH,iCAEC;IAED;;;OAGG;IACH,gCAEC;IAED;;;;;OAKG;IACH,gCAEC;IAED;;;OAGG;IACH,iCAEC;IAED,gCAEC;IAED,+BAEC;IAED,8BAEC;IAED;;OAEG;IACH,qCAQC;IAID;;;;;;;;;;OAUG;IACH,iBAHW,mBAAmB,GACjB,MAAM,CA8ClB;IAED;;;;;;OAMG;IACH,mBAHW,mBAAmB,GACjB,OAAO,CAgBnB;IAED;;;OAGG;IACH,sBAHW,mBAAmB,GACjB,OAAO,CAInB;IAED;;;;;;OAMG;IACH,cAJW,mBAAmB,cACnB,MAAM,GACJ,QAAQ,GAAC,UAAU,GAAC,aAAa,GAAC,KAAK,GAAC,MAAM,GAAC,cAAc,CAqBzE;IAgCD;;;;OAIG;IACH,SAFa,IAAI,CAOhB;IAED;;;;OAIG;IACH,WAFa,IAAI,CAUhB;IAED;;;;OAIG;IACH,qBAFa,MAAM,CAkBlB;IAID;;;;;;;;;OASG;IACH,aANW,WAAW,UACX;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAChF,UAAgB,EAAE,MAAM,CAAA;KAAC,iBACf,MAAM,GACJ,IAAI,CA6HhB;IA2FD;;;;;;OAMG;IACH,yBAHW,MAAM,GACJ,OAAO,CAgBnB;IAED;;;;;;OAMG;IACH,oBAHW,MAAM,GACJ,OAAO,CAoCnB;;CAiXJ;kCA5zCY,OAAO,uCAAuC,EAAE,mBAAmB;uBACnE,OAAO,4BAA4B,EAAE,QAAQ;qCAC7C,OAAO,6BAA6B,EAAE,sBAAsB;qCALpC,2BAA2B;gCALhC,gDAAgD;gCAIhD,sBAAsB"}
|