@woosh/meep-engine 3.24.0 → 3.26.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/shape/HeightMapShape3D.d.ts +59 -0
- package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/HeightMapShape3D.js +285 -0
- package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/PosedShape3D.js +57 -0
- package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/TransformedShape3D.js +102 -0
- package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.js +64 -0
- package/src/engine/graphics3/PickingSystem.d.ts +3 -3
- package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem.js +52 -55
- package/src/engine/graphics3/shader_picking_gather.d.ts +40 -0
- package/src/engine/graphics3/shader_picking_gather.d.ts.map +1 -0
- package/src/engine/graphics3/shader_picking_gather.js +120 -0
- package/src/engine/physics/cloth/MEASUREMENTS.md +1632 -0
- package/src/engine/physics/cloth/PLAN.md +738 -95
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +84 -17
- package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
- package/src/engine/physics/cloth/collider/ClothColliderIndex.js +451 -42
- package/src/engine/physics/cloth/ecs/ClothColliderSerializationAdapter.d.ts +52 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothColliderSerializationAdapter.js +70 -0
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts +12 -3
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothDynamics.js +340 -331
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +101 -29
- package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothInstance.js +110 -31
- package/src/engine/physics/cloth/ecs/ClothSerializationAdapter.d.ts +84 -0
- package/src/engine/physics/cloth/ecs/ClothSerializationAdapter.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothSerializationAdapter.js +141 -0
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +71 -81
- package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothSystem.js +135 -856
- package/src/engine/physics/cloth/ecs/ClothWorkerCore.d.ts +48 -0
- package/src/engine/physics/cloth/ecs/ClothWorkerCore.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothWorkerCore.js +107 -0
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts +323 -0
- package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/ClothWorld.js +1248 -0
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts +192 -0
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/WorkerClothSystem.js +578 -0
- package/src/engine/physics/cloth/ecs/cloth.worker.d.ts +2 -0
- package/src/engine/physics/cloth/ecs/cloth.worker.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth.worker.js +12 -0
- package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_build_rows.js +2 -1
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts +85 -3
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_dynamics_map.js +366 -271
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts +95 -12
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +170 -27
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +19 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +249 -201
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts +21 -0
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +62 -1
- package/src/engine/physics/cloth/ecs/cloth_worker_protocol.d.ts +29 -0
- package/src/engine/physics/cloth/ecs/cloth_worker_protocol.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/cloth_worker_protocol.js +78 -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 +18 -10
- package/src/engine/physics/cloth/ecs/makeClothWorker.d.ts +17 -0
- package/src/engine/physics/cloth/ecs/makeClothWorker.d.ts.map +1 -0
- package/src/engine/physics/cloth/ecs/makeClothWorker.js +18 -0
- package/src/engine/physics/cloth/playground/README.md +73 -2
- package/src/engine/physics/cloth/playground/collide_main.js +1 -1
- package/src/engine/physics/cloth/playground/wind.html +166 -0
- package/src/engine/physics/cloth/playground/wind_build.d.ts +81 -0
- package/src/engine/physics/cloth/playground/wind_build.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/wind_build.js +141 -0
- package/src/engine/physics/cloth/playground/wind_main.d.ts +2 -0
- package/src/engine/physics/cloth/playground/wind_main.d.ts.map +1 -0
- package/src/engine/physics/cloth/playground/wind_main.js +681 -0
- package/src/engine/physics/cloth/solver/ClothState.d.ts +134 -79
- package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/ClothState.js +273 -12
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts +29 -8
- package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_contact_find.js +37 -9
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +45 -2
- package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_solver_constants.js +46 -2
- package/src/engine/physics/cloth/solver/cloth_step.d.ts +21 -2
- package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/cloth_step.js +173 -4
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts +40 -0
- package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_step_instance.js +284 -0
- package/src/engine/physics/cloth/solver/cloth_wind_accelerate.d.ts +107 -0
- package/src/engine/physics/cloth/solver/cloth_wind_accelerate.d.ts.map +1 -0
- package/src/engine/physics/cloth/solver/cloth_wind_accelerate.js +263 -0
- package/src/engine/physics/cloth/solver/constraint/cloth_backstop_row.d.ts +9 -2
- package/src/engine/physics/cloth/solver/constraint/cloth_backstop_row.d.ts.map +1 -1
- package/src/engine/physics/cloth/solver/constraint/cloth_backstop_row.js +9 -2
- package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts +102 -0
- package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/AbstractClothWind.js +114 -0
- package/src/engine/physics/cloth/wind/ClothAmbientWind.d.ts +87 -0
- package/src/engine/physics/cloth/wind/ClothAmbientWind.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/ClothAmbientWind.js +185 -0
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +79 -0
- package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/ClothFluidWind.js +213 -0
- package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts +106 -0
- package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts.map +1 -0
- package/src/engine/physics/cloth/wind/cloth_sample_air.js +297 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/mock/texture_copy.d.ts.map +1 -1
- package/src/shade/device/mock/texture_copy.js +28 -0
- package/src/shade/playground/vgeo_runtime/README.md +94 -0
- package/src/shade/playground/vgeo_runtime/index.html +62 -0
- package/src/shade/playground/vgeo_runtime/main.d.ts +2 -0
- package/src/shade/playground/vgeo_runtime/main.d.ts.map +1 -0
- package/src/shade/playground/vgeo_runtime/main.js +399 -0
- package/src/shade/playground/vgeo_viewer/sample_asset.js +1 -1
- package/src/shade/renderer/camera/Camera.d.ts +14 -0
- package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
- package/src/shade/renderer/camera/Camera.js +7 -1
- package/src/shade/renderer/geometry/GEOMETRY_METADATA_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GEOMETRY_METADATA_STRUCT.js +16 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +29 -9
- package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts +10 -0
- package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryMetadata.js +13 -0
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +46 -18
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +70 -22
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +97 -19
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +12 -2
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +14 -3
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.d.ts +2 -2
- 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 +124 -6
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.d.ts +22 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.js +53 -0
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts +8 -1
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js +8 -1
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FEATURE_IGNORABLE_BOUNDED_PAGES.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FEATURE_IGNORABLE_BOUNDED_PAGES.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FEATURE_IGNORABLE_BOUNDED_PAGES.js +15 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_DEFAULT_PAGE_SIZE.d.ts +54 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_DEFAULT_PAGE_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_DEFAULT_PAGE_SIZE.js +53 -0
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +13 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +14 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +100 -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 +113 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.js +5 -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 +108 -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 +23 -0
- 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 +40 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +228 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +932 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +176 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +425 -0
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +241 -0
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +574 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +120 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +674 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts +287 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +976 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +42 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +96 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_CULL.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_CULL.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_FLAG_CULL.js +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +83 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_WORKGROUP_SIZE.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_WORKGROUP_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_WORKGROUP_SIZE.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +160 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +255 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_prepare.js +80 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +144 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts +3 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +530 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +39 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +54 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +41 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +56 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts +49 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +328 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.d.ts +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.js +51 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.d.ts +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.js +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT.js +99 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +27 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.js +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.js +35 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.js +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.js +36 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.js +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +54 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.js +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.d.ts +7 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.js +30 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.d.ts +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.js +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.d.ts +14 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.js +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.js +61 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_ITEM_WORDS.d.ts +13 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_ITEM_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_ITEM_WORDS.js +12 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_GROUP_BIT.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_GROUP_BIT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_QUEUE_TARGET_GROUP_BIT.js +8 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_WANT_WORDS.d.ts +20 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_WANT_WORDS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_WANT_WORDS.js +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts +23 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +70 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts +18 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_block_words.js +25 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.d.ts +35 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.js +41 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts +32 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_write_page_block.js +138 -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/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 +9 -0
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +12 -1
- 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 +12 -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 +10 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +18 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +647 -594
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts +35 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js +91 -0
- package/src/engine/graphics3/instantiate_scene_bundle.d.ts +0 -54
- package/src/engine/graphics3/instantiate_scene_bundle.d.ts.map +0 -1
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts +0 -39
- package/src/engine/graphics3/shade_node_to_entity_composition.d.ts.map +0 -1
- package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +0 -35
- package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +0 -1
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.d.ts +0 -96
- package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.d.ts.map +0 -1
- package/src/shade/renderer/animation/pose/pose_evaluate_world.d.ts +0 -20
- package/src/shade/renderer/animation/pose/pose_evaluate_world.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_bind_transform.d.ts +0 -25
- package/src/shade/renderer/animation/skin_bind_transform.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_frame_defect.d.ts +0 -34
- package/src/shade/renderer/animation/skin_frame_defect.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts +0 -24
- package/src/shade/renderer/animation/skin_joint_matrix.d.ts.map +0 -1
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts +0 -70
- package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +0 -1
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts +0 -96
- package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts.map +0 -1
- package/src/shade/renderer/scene/InstanceBatch.d.ts +0 -92
- package/src/shade/renderer/scene/InstanceBatch.d.ts.map +0 -1
- package/src/shade/renderer/scene/Mesh.d.ts +0 -55
- package/src/shade/renderer/scene/Mesh.d.ts.map +0 -1
- package/src/shade/renderer/scene/Node3D.d.ts +0 -159
- package/src/shade/renderer/scene/Node3D.d.ts.map +0 -1
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts +0 -59
- package/src/shade/renderer/scene/Node3DDirtyList.d.ts.map +0 -1
- package/src/shade/renderer/scene/SceneNodeBinding.d.ts +0 -52
- package/src/shade/renderer/scene/SceneNodeBinding.d.ts.map +0 -1
- package/src/shade/renderer/scene/SkinnedMesh.d.ts +0 -27
- package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +0 -1
- package/src/shade/renderer/scene/TransformAuthority.d.ts +0 -19
- package/src/shade/renderer/scene/TransformAuthority.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_FEEDBACK_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VGEO_CUT_STAT_COUNT } from "./VGEO_CUT_STAT_COUNT.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Word offsets in the feedback buffer — the one thing the cut hands back to the CPU, and the only
|
|
5
|
+
* place in the runtime where a GPU pass and a host frame meet.
|
|
6
|
+
*
|
|
7
|
+
* Header first, then the two lists, so a readback of the header alone tells a saturated frame how
|
|
8
|
+
* much of the rest is worth mapping. Design §6: the wants loop tolerates its transport — multi-frame
|
|
9
|
+
* `mapAsync` latency, a small in-flight cap, and frames where feedback is skipped entirely.
|
|
10
|
+
*
|
|
11
|
+
* @author Alex Goldring
|
|
12
|
+
* @copyright Company Named Limited (c) 2026
|
|
13
|
+
*/
|
|
14
|
+
export const VGEO_FEEDBACK_OFFSET = {
|
|
15
|
+
WANT_COUNT: 0,
|
|
16
|
+
TOUCH_COUNT: 1,
|
|
17
|
+
/**
|
|
18
|
+
* Counters live in the header so that a frame whose lists overflowed still says so.
|
|
19
|
+
*/
|
|
20
|
+
STATS: 2,
|
|
21
|
+
/**
|
|
22
|
+
* Where the want records begin. The lists themselves are sized by the caller's options and
|
|
23
|
+
* their bases travel in the params block, because a graph resource's size is a host-side
|
|
24
|
+
* decision and the kernel must not assume one.
|
|
25
|
+
*/
|
|
26
|
+
HEADER_WORDS: 2 + VGEO_CUT_STAT_COUNT,
|
|
27
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GEOMETRY_METADATA_STRUCT.vg_row` for a geometry that is not virtual — which is nearly all of
|
|
3
|
+
* them, and every one that existed before this field did.
|
|
4
|
+
*
|
|
5
|
+
* It is how a shader handed a list of visible mesh instances tells a VG instance from a static one,
|
|
6
|
+
* and it is the whole of what the engine's record formats had to learn about virtual geometry. The
|
|
7
|
+
* draw records, the meshlet metadata, the material buckets and the indirect draws are unchanged.
|
|
8
|
+
*
|
|
9
|
+
* @author Alex Goldring
|
|
10
|
+
* @copyright Company Named Limited (c) 2026
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const VGEO_GEOMETRY_ROW_NONE: number;
|
|
14
|
+
//# sourceMappingURL=VGEO_GEOMETRY_ROW_NONE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_GEOMETRY_ROW_NONE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_NONE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,qCAFU,MAAM,CAEiC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GEOMETRY_METADATA_STRUCT.vg_row` for a geometry that is not virtual — which is nearly all of
|
|
3
|
+
* them, and every one that existed before this field did.
|
|
4
|
+
*
|
|
5
|
+
* It is how a shader handed a list of visible mesh instances tells a VG instance from a static one,
|
|
6
|
+
* and it is the whole of what the engine's record formats had to learn about virtual geometry. The
|
|
7
|
+
* draw records, the meshlet metadata, the material buckets and the indirect draws are unchanged.
|
|
8
|
+
*
|
|
9
|
+
* @author Alex Goldring
|
|
10
|
+
* @copyright Company Named Limited (c) 2026
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const VGEO_GEOMETRY_ROW_NONE = 0xFFFFFFFF;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_GEOMETRY_ROW_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_OFFSET.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Word offsets within one VG geometry row.
|
|
3
|
+
*
|
|
4
|
+
* Read by the instance-collect pass and folded into each instance record, so the traversal kernel
|
|
5
|
+
* never binds this table at all — which is one of the reasons it fits inside the engine's
|
|
6
|
+
* ten-storage-buffer floor (`runtime/RUNTIME_PLAN.md` §4.9).
|
|
7
|
+
*
|
|
8
|
+
* @author Alex Goldring
|
|
9
|
+
* @copyright Company Named Limited (c) 2026
|
|
10
|
+
*/
|
|
11
|
+
export const VGEO_GEOMETRY_ROW_OFFSET = {
|
|
12
|
+
/**
|
|
13
|
+
* Page-table row of page 0, which is pinned and therefore always valid.
|
|
14
|
+
*/
|
|
15
|
+
ROOT_PAGE_ROW: 0,
|
|
16
|
+
/**
|
|
17
|
+
* Start of this geometry's page lookup in the arena: `PAGE_COUNT` words, container page index →
|
|
18
|
+
* page-table row or {@link VGEO_PAGE_ROW_NONE}.
|
|
19
|
+
*
|
|
20
|
+
* A lookup rather than a pointer stored in each referring cluster row, because the pointer
|
|
21
|
+
* makes an install a scatter over every cluster that refers into the arriving page — across
|
|
22
|
+
* pages, unbounded, and undone on eviction. One indirection in the shader is cheaper than that
|
|
23
|
+
* every time.
|
|
24
|
+
*/
|
|
25
|
+
LOOKUP_WORD_OFFSET: 1,
|
|
26
|
+
/**
|
|
27
|
+
* `total_pages` of the container — the lookup's extent.
|
|
28
|
+
*/
|
|
29
|
+
PAGE_COUNT: 2,
|
|
30
|
+
/**
|
|
31
|
+
* How wide one instance's slice of the claim bitmask has to be. The high-water mark of handed
|
|
32
|
+
* out ordinals, not the resident count: ordinals come from a free list and can be sparse.
|
|
33
|
+
*/
|
|
34
|
+
ORDINAL_CAPACITY: 3,
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_GEOMETRY_ROW_WORDS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GEOMETRY_ROW_WORDS.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,sCAFU,MAAM,CAEyB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The group is selectable: every one of its `parent_cluster_count` references is live —
|
|
3
|
+
* the referencing cluster's page installed and that cluster's own group selectable
|
|
4
|
+
* (`VGEO_FORMAT.md` §10).
|
|
5
|
+
*
|
|
6
|
+
* The cut rule's clamp reads *this*, not residency, and so does the predicate's own-group term.
|
|
7
|
+
* `runtime/RUNTIME_PLAN.md` §4.4: leaving the own-group term out draws a coarse stand-in and the
|
|
8
|
+
* fine surface it stands in for, both, a few microns apart.
|
|
9
|
+
*
|
|
10
|
+
* @author Alex Goldring
|
|
11
|
+
* @copyright Company Named Limited (c) 2026
|
|
12
|
+
* @type {number}
|
|
13
|
+
*/
|
|
14
|
+
export const VGEO_GROUP_FLAG_SELECTABLE: number;
|
|
15
|
+
//# sourceMappingURL=VGEO_GROUP_FLAG_SELECTABLE.d.ts.map
|
package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_GROUP_FLAG_SELECTABLE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_FLAG_SELECTABLE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,yCAFU,MAAM,CAE4B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The group is selectable: every one of its `parent_cluster_count` references is live —
|
|
3
|
+
* the referencing cluster's page installed and that cluster's own group selectable
|
|
4
|
+
* (`VGEO_FORMAT.md` §10).
|
|
5
|
+
*
|
|
6
|
+
* The cut rule's clamp reads *this*, not residency, and so does the predicate's own-group term.
|
|
7
|
+
* `runtime/RUNTIME_PLAN.md` §4.4: leaving the own-group term out draws a coarse stand-in and the
|
|
8
|
+
* fine surface it stands in for, both, a few microns apart.
|
|
9
|
+
*
|
|
10
|
+
* @author Alex Goldring
|
|
11
|
+
* @copyright Company Named Limited (c) 2026
|
|
12
|
+
* @type {number}
|
|
13
|
+
*/
|
|
14
|
+
export const VGEO_GROUP_FLAG_SELECTABLE = 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_GROUP_ROW_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_OFFSET.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Word offsets within one group row.
|
|
3
|
+
*
|
|
4
|
+
* The group is the atomic LOD decision unit (design §3) and the atomic *activation* unit
|
|
5
|
+
* (`VGEO_FORMAT.md` §10), so selectability lives here and nowhere else — a per-cluster copy would
|
|
6
|
+
* have to be scattered over every referring cluster on each install.
|
|
7
|
+
*
|
|
8
|
+
* @author Alex Goldring
|
|
9
|
+
* @copyright Company Named Limited (c) 2026
|
|
10
|
+
*/
|
|
11
|
+
export const VGEO_GROUP_ROW_OFFSET = {
|
|
12
|
+
/**
|
|
13
|
+
* First cluster of this group, as a row within its page's cluster block.
|
|
14
|
+
*/
|
|
15
|
+
CLUSTER_FIRST: 0,
|
|
16
|
+
CLUSTER_COUNT: 1,
|
|
17
|
+
/**
|
|
18
|
+
* @see VGEO_GROUP_FLAG_SELECTABLE
|
|
19
|
+
*/
|
|
20
|
+
FLAGS: 2,
|
|
21
|
+
/**
|
|
22
|
+
* How many clusters anywhere in the container refine into this group — the format's
|
|
23
|
+
* `group_parent_count`, copied in at install.
|
|
24
|
+
*
|
|
25
|
+
* It is here so that **this tier can answer its own activation question**. Selectability is
|
|
26
|
+
* "every parent reference is live", and which references are live depends on which pages are
|
|
27
|
+
* resident *in the tier asking* — so the RAM tier's answer is not the VRAM tier's, and the VRAM
|
|
28
|
+
* tier publishing the RAM tier's answer is REVIEW_LEDGER C1: a group drawn because its
|
|
29
|
+
* ancestors are in RAM, under a coarse stand-in drawn because one of them is not in VRAM.
|
|
30
|
+
*
|
|
31
|
+
* With this word, `VGeoRuntimeTables.refresh_selectable` computes the VRAM answer from the
|
|
32
|
+
* arena and the page lookup alone. No reader is consulted, which also means a page whose RAM
|
|
33
|
+
* copy has been evicted underneath this tier still has a correct answer.
|
|
34
|
+
*/
|
|
35
|
+
PARENT_COUNT: 3,
|
|
36
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Words in one group row. Four rather than three so a group block stays 16-byte aligned, which
|
|
3
|
+
* costs nothing — a page carries a handful of groups against hundreds of clusters.
|
|
4
|
+
*
|
|
5
|
+
* @author Alex Goldring
|
|
6
|
+
* @copyright Company Named Limited (c) 2026
|
|
7
|
+
* @type {number}
|
|
8
|
+
*/
|
|
9
|
+
export const VGEO_GROUP_ROW_WORDS: number;
|
|
10
|
+
//# sourceMappingURL=VGEO_GROUP_ROW_WORDS.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_GROUP_ROW_WORDS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_GROUP_ROW_WORDS.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,mCAFU,MAAM,CAEsB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Words in one group row. Four rather than three so a group block stays 16-byte aligned, which
|
|
3
|
+
* costs nothing — a page carries a handful of groups against hundreds of clusters.
|
|
4
|
+
*
|
|
5
|
+
* @author Alex Goldring
|
|
6
|
+
* @copyright Company Named Limited (c) 2026
|
|
7
|
+
* @type {number}
|
|
8
|
+
*/
|
|
9
|
+
export const VGEO_GROUP_ROW_WORDS = 4;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export namespace VGEO_INSTANCE_OFFSET {
|
|
2
|
+
let EYE: number;
|
|
3
|
+
let PROJECTION_K: number;
|
|
4
|
+
let FRUSTUM: number;
|
|
5
|
+
let MESH_INDEX: number;
|
|
6
|
+
let ROOT_PAGE_ROW: number;
|
|
7
|
+
let LOOKUP_WORD_OFFSET: number;
|
|
8
|
+
let CLAIM_BASE: number;
|
|
9
|
+
let ORDINAL_CAPACITY: number;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=VGEO_INSTANCE_OFFSET.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_INSTANCE_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Word offsets within one instance record — a visible VG instance, as the cut kernel sees it.
|
|
3
|
+
*
|
|
4
|
+
* Everything here is **object space**, and that is `MICRON_COMPARISON_2026_08_20.md` §2.7 as
|
|
5
|
+
* design §3.1 adopted it: multiply the camera's view-projection by the instance transform once,
|
|
6
|
+
* derive the frustum from the result, and run every cull and error test against untransformed
|
|
7
|
+
* cluster bounds. One matrix per instance instead of a transform per cluster, and with thousands
|
|
8
|
+
* of instances sharing one geometry that difference is the entire cost.
|
|
9
|
+
*
|
|
10
|
+
* The geometry's own fields are folded in here rather than looked up, so the traversal kernel does
|
|
11
|
+
* not bind the geometry table.
|
|
12
|
+
*
|
|
13
|
+
* @author Alex Goldring
|
|
14
|
+
* @copyright Company Named Limited (c) 2026
|
|
15
|
+
*/
|
|
16
|
+
export const VGEO_INSTANCE_OFFSET = {
|
|
17
|
+
/**
|
|
18
|
+
* The camera's position in this instance's object space.
|
|
19
|
+
*/
|
|
20
|
+
EYE: 0,
|
|
21
|
+
/**
|
|
22
|
+
* `screen_height / (2 * tan(fov_y / 2))`, times the scale correction below.
|
|
23
|
+
*
|
|
24
|
+
* Error and distance are both object-space, so a **uniform** instance scale cancels out of
|
|
25
|
+
* `r_e * k / d` exactly and needs no term at all. A non-uniform one does not cancel, and the
|
|
26
|
+
* correction is the ratio of the transform's singular values — σ_max / σ_min, not the ratio of
|
|
27
|
+
* its column lengths, which a shear leaves at 1 while stretching space without bound
|
|
28
|
+
* (REVIEW_LEDGER M4). It over-refines rather than under-refines, and it is exactly 1 for every
|
|
29
|
+
* instance that is not stretched.
|
|
30
|
+
*/
|
|
31
|
+
PROJECTION_K: 3,
|
|
32
|
+
/**
|
|
33
|
+
* Five object-space frustum planes, `xyzw` each, in the order left, right, bottom, top, near.
|
|
34
|
+
*
|
|
35
|
+
* Five and not six: the projection is infinite reverse-Z, so the far plane's row is degenerate
|
|
36
|
+
* and normalizing it produces nothing a test can use. Ordering it last is what makes "test the
|
|
37
|
+
* first five" true by construction rather than by knowing which one to skip.
|
|
38
|
+
*/
|
|
39
|
+
FRUSTUM: 4,
|
|
40
|
+
/**
|
|
41
|
+
* Which mesh row this instance is — the second half of every draw record it emits.
|
|
42
|
+
*/
|
|
43
|
+
MESH_INDEX: 24,
|
|
44
|
+
ROOT_PAGE_ROW: 25,
|
|
45
|
+
LOOKUP_WORD_OFFSET: 26,
|
|
46
|
+
/**
|
|
47
|
+
* First bit of this instance's slice of the claim bitmask.
|
|
48
|
+
*/
|
|
49
|
+
CLAIM_BASE: 27,
|
|
50
|
+
/**
|
|
51
|
+
* How many bits that slice runs to.
|
|
52
|
+
*/
|
|
53
|
+
ORDINAL_CAPACITY: 28,
|
|
54
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_INSTANCE_WORDS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_WORDS.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kCAFU,MAAM,CAEsB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set in a node row's `CHILD_COUNT_AND_FLAGS` when the children are groups rather than nodes.
|
|
3
|
+
*
|
|
4
|
+
* Above the fanout cap of 4 by a wide margin, so the count is readable as the low byte.
|
|
5
|
+
*
|
|
6
|
+
* @author Alex Goldring
|
|
7
|
+
* @copyright Company Named Limited (c) 2026
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/
|
|
10
|
+
export const VGEO_NODE_ROW_LEAF_BIT: number;
|
|
11
|
+
//# sourceMappingURL=VGEO_NODE_ROW_LEAF_BIT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_NODE_ROW_LEAF_BIT.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_LEAF_BIT.js"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qCAFU,MAAM,CAE4B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set in a node row's `CHILD_COUNT_AND_FLAGS` when the children are groups rather than nodes.
|
|
3
|
+
*
|
|
4
|
+
* Above the fanout cap of 4 by a wide margin, so the count is readable as the low byte.
|
|
5
|
+
*
|
|
6
|
+
* @author Alex Goldring
|
|
7
|
+
* @copyright Company Named Limited (c) 2026
|
|
8
|
+
* @type {number}
|
|
9
|
+
*/
|
|
10
|
+
export const VGEO_NODE_ROW_LEAF_BIT = 0x100;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_NODE_ROW_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_OFFSET.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Word offsets within one node row — the page's own tree over its own groups
|
|
3
|
+
* (`VGEO_FORMAT.md` §6.1).
|
|
4
|
+
*
|
|
5
|
+
* `min_self_error` is not carried. It ranks a prefetch, and the cut never asks it anything:
|
|
6
|
+
* see `runtime/RUNTIME_PLAN.md` §4.8.
|
|
7
|
+
*
|
|
8
|
+
* @author Alex Goldring
|
|
9
|
+
* @copyright Company Named Limited (c) 2026
|
|
10
|
+
*/
|
|
11
|
+
export const VGEO_NODE_ROW_OFFSET = {
|
|
12
|
+
/**
|
|
13
|
+
* Contains every `parent_sphere` under this node, so it bounds the subtree's geometry too.
|
|
14
|
+
*/
|
|
15
|
+
SPHERE: 0,
|
|
16
|
+
/**
|
|
17
|
+
* The coarsest parent error covered. A node whose largest parent error still projects to no
|
|
18
|
+
* more than τ has nothing drawable anywhere under it.
|
|
19
|
+
*/
|
|
20
|
+
MAX_PARENT_ERROR: 4,
|
|
21
|
+
/**
|
|
22
|
+
* A node index when interior, a group index when a leaf.
|
|
23
|
+
*/
|
|
24
|
+
CHILD_FIRST: 5,
|
|
25
|
+
/**
|
|
26
|
+
* `count | (leaf ? 0x100 : 0)`.
|
|
27
|
+
* @see VGEO_NODE_ROW_LEAF_BIT
|
|
28
|
+
*/
|
|
29
|
+
CHILD_COUNT_AND_FLAGS: 6,
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_NODE_ROW_WORDS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NODE_ROW_WORDS.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kCAFU,MAAM,CAEqB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A cluster row's `CHILD_PAGE_INDEX` when the cluster is a leaf — nothing refines it, and the cut
|
|
3
|
+
* takes it at any threshold.
|
|
4
|
+
*
|
|
5
|
+
* Distinct from {@link VGEO_PAGE_ROW_NONE}, which says a child exists and is not here. Conflating
|
|
6
|
+
* them would turn every leaf into a permanent want.
|
|
7
|
+
*
|
|
8
|
+
* @author Alex Goldring
|
|
9
|
+
* @copyright Company Named Limited (c) 2026
|
|
10
|
+
* @type {number}
|
|
11
|
+
*/
|
|
12
|
+
export const VGEO_NO_CHILD_PAGE: number;
|
|
13
|
+
//# sourceMappingURL=VGEO_NO_CHILD_PAGE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_NO_CHILD_PAGE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_NO_CHILD_PAGE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,iCAFU,MAAM,CAE6B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A cluster row's `CHILD_PAGE_INDEX` when the cluster is a leaf — nothing refines it, and the cut
|
|
3
|
+
* takes it at any threshold.
|
|
4
|
+
*
|
|
5
|
+
* Distinct from {@link VGEO_PAGE_ROW_NONE}, which says a child exists and is not here. Conflating
|
|
6
|
+
* them would turn every leaf into a permanent want.
|
|
7
|
+
*
|
|
8
|
+
* @author Alex Goldring
|
|
9
|
+
* @copyright Company Named Limited (c) 2026
|
|
10
|
+
* @type {number}
|
|
11
|
+
*/
|
|
12
|
+
export const VGEO_NO_CHILD_PAGE = 0xFFFFFFFF;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page-lookup entry for a page that is not VRAM-resident.
|
|
3
|
+
*
|
|
4
|
+
* A cluster whose child page reads this is **clamped**: it draws as it stands and records a want.
|
|
5
|
+
* That is the residency clamp (design §4), and it is the reason a cut can be taken at all before a
|
|
6
|
+
* file has finished arriving — the coarser cluster is not a fallback for a missing one, it is the
|
|
7
|
+
* correct surface over exactly the region the missing page would have refined.
|
|
8
|
+
*
|
|
9
|
+
* @author Alex Goldring
|
|
10
|
+
* @copyright Company Named Limited (c) 2026
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const VGEO_PAGE_ROW_NONE: number;
|
|
14
|
+
//# sourceMappingURL=VGEO_PAGE_ROW_NONE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_PAGE_ROW_NONE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_NONE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,iCAFU,MAAM,CAE6B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page-lookup entry for a page that is not VRAM-resident.
|
|
3
|
+
*
|
|
4
|
+
* A cluster whose child page reads this is **clamped**: it draws as it stands and records a want.
|
|
5
|
+
* That is the residency clamp (design §4), and it is the reason a cut can be taken at all before a
|
|
6
|
+
* file has finished arriving — the coarser cluster is not a fallback for a missing one, it is the
|
|
7
|
+
* correct surface over exactly the region the missing page would have refined.
|
|
8
|
+
*
|
|
9
|
+
* @author Alex Goldring
|
|
10
|
+
* @copyright Company Named Limited (c) 2026
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const VGEO_PAGE_ROW_NONE = 0xFFFFFFFF;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export namespace VGEO_PAGE_ROW_OFFSET {
|
|
2
|
+
let NODE_COUNT: number;
|
|
3
|
+
let GROUP_COUNT: number;
|
|
4
|
+
let CLUSTER_COUNT: number;
|
|
5
|
+
let MESHLET_BASE: number;
|
|
6
|
+
let PAGE_INDEX: number;
|
|
7
|
+
let ORDINAL: number;
|
|
8
|
+
let GEOMETRY_ROW: number;
|
|
9
|
+
let DECODED_SIZE: number;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=VGEO_PAGE_ROW_OFFSET.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_PAGE_ROW_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_OFFSET.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Word offsets within the **header of one page slot** — the first words of every fixed-stride slot
|
|
3
|
+
* in the arena, before that page's node, group and cluster rows.
|
|
4
|
+
*
|
|
5
|
+
* This is `VIRTUAL_GEOMETRY_DESIGN.md` §6's "fixed-size page-slot allocation" taken literally. A
|
|
6
|
+
* slot's address is `page row × VGEO_CUT_PARAMS.page_slot_words`: no allocator, no growth path, no
|
|
7
|
+
* ceiling to run into, and no second buffer to keep coherent with this one. What made that
|
|
8
|
+
* available is format §11.14 — `nominal_page_size` is a bound every page is within, announced by a
|
|
9
|
+
* feature bit, and `GPUVirtualGeometryPool.register` refuses a container that does not carry it.
|
|
10
|
+
*
|
|
11
|
+
* **The page header is inside the slot rather than in a table of its own**, and that is worth a
|
|
12
|
+
* sentence because the plan drew it the other way. A separate table costs a second storage binding
|
|
13
|
+
* in the traversal, which declares nine against the engine's floor of ten (RUNTIME_PLAN §4.9), and
|
|
14
|
+
* it costs a coherence question — a page row and its block written to two buffers, dirtied
|
|
15
|
+
* separately, uploaded separately. In one slot an install is one contiguous range and the header is
|
|
16
|
+
* where the reader of the block already is.
|
|
17
|
+
*
|
|
18
|
+
* There is no `ARENA_WORD_OFFSET` any more. It was the allocator's answer to "where is this page",
|
|
19
|
+
* and the answer is now a multiply.
|
|
20
|
+
*
|
|
21
|
+
* @author Alex Goldring
|
|
22
|
+
* @copyright Company Named Limited (c) 2026
|
|
23
|
+
*/
|
|
24
|
+
export const VGEO_PAGE_ROW_OFFSET = {
|
|
25
|
+
NODE_COUNT: 0,
|
|
26
|
+
GROUP_COUNT: 1,
|
|
27
|
+
CLUSTER_COUNT: 2,
|
|
28
|
+
/**
|
|
29
|
+
* Row of this page's cluster 0 in the meshlet **metadata** pool, so a draw record is
|
|
30
|
+
* `meshlet_base + local cluster` and downstream reads the buffer it already reads.
|
|
31
|
+
*
|
|
32
|
+
* The one field of a slot that moves without the page moving: `GPUMeshletManager` relocates
|
|
33
|
+
* batches when it compacts, and the pool republishes this from the batch's `changed` signal.
|
|
34
|
+
*/
|
|
35
|
+
MESHLET_BASE: 3,
|
|
36
|
+
/**
|
|
37
|
+
* The container's own page index — the frame ordinal. What a touch reports, and what a want
|
|
38
|
+
* dedups on.
|
|
39
|
+
*/
|
|
40
|
+
PAGE_INDEX: 4,
|
|
41
|
+
/**
|
|
42
|
+
* Dense index of this page *within its geometry*, which is what the per-instance claim bitmask
|
|
43
|
+
* is indexed by. Global page-table rows would make the claim `instances × pool capacity`, which
|
|
44
|
+
* does not fit; per-geometry ordinals make it `instances × that geometry's working set`.
|
|
45
|
+
*/
|
|
46
|
+
ORDINAL: 5,
|
|
47
|
+
/**
|
|
48
|
+
* Row in the VG geometry table.
|
|
49
|
+
*/
|
|
50
|
+
GEOMETRY_ROW: 6,
|
|
51
|
+
/**
|
|
52
|
+
* Decoded bytes this page cost the tier, held here rather than re-derived from the RAM reader
|
|
53
|
+
* at eviction time.
|
|
54
|
+
*
|
|
55
|
+
* The tier that charged the budget is the tier that has to refund it, and the RAM tier can drop
|
|
56
|
+
* a page the VRAM tier still holds — which made the refund zero and walked `resident_bytes`
|
|
57
|
+
* upward until the budget refused every install (REVIEW_LEDGER C4). A number the tier wrote
|
|
58
|
+
* down itself cannot drift.
|
|
59
|
+
*/
|
|
60
|
+
DECODED_SIZE: 7,
|
|
61
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_PAGE_ROW_WORDS.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/layout/VGEO_PAGE_ROW_WORDS.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,kCAFU,MAAM,CAEqB"}
|