@woosh/meep-engine 3.27.0 → 3.29.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/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BitSet.d.ts +16 -0
- package/src/core/binary/BitSet.d.ts.map +1 -1
- package/src/core/binary/BitSet.js +159 -49
- package/src/core/binary/allocator/OffsetAllocator.d.ts +48 -0
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +208 -9
- package/src/core/binary/compression/compress_bytes.d.ts +20 -0
- package/src/core/binary/compression/compress_bytes.d.ts.map +1 -0
- package/src/core/binary/compression/compress_bytes.js +35 -0
- package/src/core/binary/compression/decompress_bytes_into.d.ts +30 -0
- package/src/core/binary/compression/decompress_bytes_into.d.ts.map +1 -0
- package/src/core/binary/compression/decompress_bytes_into.js +87 -0
- package/src/core/binary/compression/deflate_decompress_bound.d.ts +27 -0
- package/src/core/binary/compression/deflate_decompress_bound.d.ts.map +1 -0
- package/src/core/binary/compression/deflate_decompress_bound.js +32 -0
- package/src/core/geom/3d/mat4/m4_linear_determinant.d.ts +15 -0
- package/src/core/geom/3d/mat4/m4_linear_determinant.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_linear_determinant.js +24 -0
- package/src/core/geom/3d/mat4/m4_normal_matrix3.d.ts +4 -2
- package/src/core/geom/3d/mat4/m4_normal_matrix3.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_normal_matrix3.js +21 -11
- package/src/core/geom/3d/quadric/quadric_attribute_add.d.ts +24 -0
- package/src/core/geom/3d/quadric/quadric_attribute_add.d.ts.map +1 -0
- package/src/core/geom/3d/quadric/quadric_attribute_add.js +31 -0
- package/src/core/geom/3d/quadric/quadric_attribute_reduce.d.ts +46 -0
- package/src/core/geom/3d/quadric/quadric_attribute_reduce.d.ts.map +1 -0
- package/src/core/geom/3d/quadric/quadric_attribute_reduce.js +104 -0
- package/src/core/geom/3d/quadric/quadric_attribute_set_from_triangle.d.ts +62 -0
- package/src/core/geom/3d/quadric/quadric_attribute_set_from_triangle.d.ts.map +1 -0
- package/src/core/geom/3d/quadric/quadric_attribute_set_from_triangle.js +158 -0
- package/src/core/geom/3d/quadric/quadric_attribute_size.d.ts +21 -0
- package/src/core/geom/3d/quadric/quadric_attribute_size.d.ts.map +1 -0
- package/src/core/geom/3d/quadric/quadric_attribute_size.js +24 -0
- package/src/core/geom/3d/quadric/quadric_attribute_solve.d.ts +34 -0
- package/src/core/geom/3d/quadric/quadric_attribute_solve.d.ts.map +1 -0
- package/src/core/geom/3d/quadric/quadric_attribute_solve.js +55 -0
- package/src/core/geom/3d/quadric/quadric_attribute_sub.d.ts +28 -0
- package/src/core/geom/3d/quadric/quadric_attribute_sub.d.ts.map +1 -0
- package/src/core/geom/3d/quadric/quadric_attribute_sub.js +35 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryDataBlock.d.ts +15 -0
- package/src/core/geom/3d/topology/struct/binary/BinaryDataBlock.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/BinaryDataBlock.js +35 -0
- package/src/core/geom/3d/topology/struct/binary/BtWedgeSet.d.ts +93 -0
- package/src/core/geom/3d/topology/struct/binary/BtWedgeSet.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/BtWedgeSet.js +128 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_wedge_attribute_quadrics.d.ts +38 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_wedge_attribute_quadrics.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_compute_wedge_attribute_quadrics.js +113 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts +47 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_simplify.js +677 -8
- package/src/core/geom/3d/topology/struct/binary/io/bt_wedges_live_count.d.ts +22 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_wedges_live_count.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_wedges_live_count.js +46 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_wedges_per_vertex.d.ts +19 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_wedges_per_vertex.d.ts.map +1 -0
- package/src/core/geom/3d/topology/struct/binary/io/bt_wedges_per_vertex.js +49 -0
- package/src/core/graph/layout/layered/BoxLayoutOptions.d.ts +63 -0
- package/src/core/graph/layout/layered/BoxLayoutOptions.d.ts.map +1 -0
- package/src/core/graph/layout/layered/BoxLayoutOptions.js +80 -0
- package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/LayoutBoxGraph.d.ts +35 -0
- package/src/core/graph/layout/layered/LayoutBoxGraph.d.ts.map +1 -0
- package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/LayoutBoxGraph.js +53 -1
- package/src/core/graph/layout/layered/layout_assign_coordinates.d.ts.map +1 -0
- package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_assign_coordinates.js +72 -68
- package/src/core/graph/layout/layered/layout_assign_layers.d.ts.map +1 -0
- package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_assign_layers.js +4 -2
- package/src/core/graph/layout/layered/layout_break_cycles.d.ts.map +1 -0
- package/src/core/graph/layout/layered/layout_insert_lanes.d.ts.map +1 -0
- package/src/core/graph/layout/layered/layout_order_layers.d.ts.map +1 -0
- package/src/core/graph/layout/layered/layout_orient_links.d.ts.map +1 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +7 -51
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +8 -69
- package/src/core/model/node-graph/visual/layout/layout_build_problem.js +1 -1
- package/src/core/model/node-graph/visual/layout/layout_node_graph.js +6 -6
- package/src/core/model/node-graph/visual/layout/route_grid_build.js +1 -1
- package/src/engine/Engine.d.ts.map +1 -1
- package/src/engine/Engine.js +38 -1
- package/src/engine/graphics3/DebugDrawSystem.d.ts +7 -5
- package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DebugDrawSystem.js +206 -203
- package/src/engine/graphics3/DecalSystem.d.ts +4 -5
- package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
- package/src/engine/graphics3/DecalSystem.js +5 -5
- package/src/engine/graphics3/FogOfWarSystem.d.ts +7 -12
- package/src/engine/graphics3/FogOfWarSystem.d.ts.map +1 -1
- package/src/engine/graphics3/FogOfWarSystem.js +8 -12
- package/src/engine/graphics3/GraphicsEngine.d.ts +5 -1
- package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine.js +834 -830
- package/src/engine/graphics3/prefab/prefab_instantiate.js +230 -230
- package/src/shade/RENDERER_CONTRACT.md +31 -17
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +1 -1
- package/src/shade/playground/caldera/README.md +529 -0
- package/src/shade/playground/caldera/caldera_format.d.ts +151 -0
- package/src/shade/playground/caldera/caldera_format.d.ts.map +1 -0
- package/src/shade/playground/caldera/caldera_format.js +241 -0
- package/src/shade/playground/caldera/index.html +126 -0
- package/src/shade/playground/caldera/main.d.ts.map +1 -0
- package/src/shade/playground/caldera/main.js +1565 -0
- package/src/shade/playground/mesh_row_ceiling/README.md +85 -0
- package/src/shade/playground/mesh_row_ceiling/index.html +31 -0
- package/src/shade/playground/mesh_row_ceiling/main.d.ts +2 -0
- package/src/shade/playground/mesh_row_ceiling/main.d.ts.map +1 -0
- package/src/shade/playground/mesh_row_ceiling/main.js +389 -0
- package/src/shade/playground/vgeo_runtime/README.md +32 -16
- package/src/shade/playground/vgeo_runtime/main.js +21 -7
- package/src/shade/playground/{vgeo_viewer → vgeo_runtime}/sample_asset.d.ts +3 -3
- package/src/shade/playground/vgeo_runtime/sample_asset.d.ts.map +1 -0
- package/src/shade/playground/{vgeo_viewer → vgeo_runtime}/sample_asset.js +12 -11
- package/src/shade/playground/vgeo_scene/README.md +487 -0
- package/src/shade/playground/vgeo_scene/index.html +144 -0
- package/src/shade/playground/vgeo_scene/main.d.ts +2 -0
- package/src/shade/playground/vgeo_scene/main.d.ts.map +1 -0
- package/src/shade/playground/vgeo_scene/main.js +2217 -0
- package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
- package/src/shade/renderer/GraphicsContext.js +6 -0
- package/src/shade/renderer/Renderer.d.ts +6 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +28 -2
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
- package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +100 -8
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +70 -35
- package/src/shade/renderer/extension/RenderExtension.d.ts +15 -18
- package/src/shade/renderer/extension/RenderExtension.d.ts.map +1 -1
- package/src/shade/renderer/extension/RenderExtension.js +15 -19
- package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts +5 -5
- package/src/shade/renderer/extension/RenderExtensionRegistry.d.ts.map +1 -1
- package/src/shade/renderer/extension/RenderExtensionRegistry.js +29 -166
- package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/GPUGeometryManager.js +73 -16
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +18 -3
- package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +663 -0
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +100 -5
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +688 -81
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +3 -29
- package/src/shade/renderer/geometry/meshlet/encoding/ENCODED_ATTRIBUTE_DEFAULT_VALUES.d.ts +22 -0
- package/src/shade/renderer/geometry/meshlet/encoding/ENCODED_ATTRIBUTE_DEFAULT_VALUES.d.ts.map +1 -0
- package/src/shade/renderer/geometry/meshlet/encoding/ENCODED_ATTRIBUTE_DEFAULT_VALUES.js +49 -0
- package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +540 -0
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +159 -66
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +40 -21
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +15 -14
- package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +358 -0
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +58 -8
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +64 -10
- package/src/shade/renderer/geometry/virtual/build/gltf/gltf_open_document.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/gltf/gltf_open_document.js +5 -9
- package/src/shade/renderer/geometry/virtual/build/level/VGeoContribution.d.ts +40 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoContribution.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoContribution.js +24 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoFrontier.d.ts +91 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoFrontier.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoFrontier.js +91 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoGroupRepack.d.ts +24 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoGroupRepack.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoGroupRepack.js +25 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoGroupStep.d.ts +77 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoGroupStep.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoGroupStep.js +84 -0
- package/src/shade/renderer/geometry/virtual/build/level/VGeoLevel.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{VGeoLevelOptions.d.ts → level/VGeoLevelOptions.d.ts} +19 -6
- package/src/shade/renderer/geometry/virtual/build/level/VGeoLevelOptions.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{VGeoLevelOptions.js → level/VGeoLevelOptions.js} +20 -7
- package/src/shade/renderer/geometry/virtual/build/level/VGeoLevelSummary.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_cluster.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_cluster.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_cluster.js +58 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_cluster_graph.d.ts +18 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_cluster_graph.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_cluster_graph.js +116 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.d.ts +18 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.js +545 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.js +110 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_levels.d.ts +11 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_levels.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_levels.js +308 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_build_root_group.d.ts → level/vgeo_build_root_group.d.ts} +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_root_group.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_build_root_group.js → level/vgeo_build_root_group.js} +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_compute_group_boundary.d.ts +26 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_compute_group_boundary.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_compute_group_boundary.js +123 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_error_bands.d.ts +26 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_error_bands.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_error_bands.js +78 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.d.ts +24 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.js +337 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.d.ts +29 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.js +147 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_stitch_frontier.d.ts +37 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_stitch_frontier.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_stitch_frontier.js +243 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.d.ts +29 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.js +117 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_CREASE_ANGLE.d.ts +46 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_CREASE_ANGLE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_CREASE_ANGLE.js +45 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_DEFAULT_ATTRIBUTE_WEIGHT_RATIOS.d.ts +64 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_DEFAULT_ATTRIBUTE_WEIGHT_RATIOS.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/VGEO_DEFAULT_ATTRIBUTE_WEIGHT_RATIOS.js +68 -0
- package/src/shade/renderer/geometry/virtual/build/{VirtualGeometryMesh.d.ts → mesh/VirtualGeometryMesh.d.ts} +13 -8
- package/src/shade/renderer/geometry/virtual/build/mesh/VirtualGeometryMesh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{VirtualGeometryMesh.js → mesh/VirtualGeometryMesh.js} +40 -18
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_layout.d.ts +58 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_layout.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_layout.js +79 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_read.d.ts +39 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_read.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_read.js +68 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_write.d.ts +53 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_write.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_attribute_vector_write.js +243 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.d.ts +45 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.js +300 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_compute_vertex_tangents.d.ts → mesh/vgeo_compute_vertex_tangents.d.ts} +12 -8
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_tangents.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_tangents.js +151 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_normalize_source.d.ts → mesh/vgeo_normalize_source.d.ts} +8 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_normalize_source.js → mesh/vgeo_normalize_source.js} +27 -12
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_resolve_attribute_weights.d.ts +38 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_resolve_attribute_weights.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_resolve_attribute_weights.js +81 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_assemble_pages.d.ts → page/vgeo_assemble_pages.d.ts} +1 -1
- package/src/shade/renderer/geometry/virtual/build/page/vgeo_assemble_pages.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_assemble_pages.js → page/vgeo_assemble_pages.js} +9 -9
- package/src/shade/renderer/geometry/virtual/build/{vgeo_build_page_nodes.d.ts → page/vgeo_build_page_nodes.d.ts} +1 -1
- package/src/shade/renderer/geometry/virtual/build/page/vgeo_build_page_nodes.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_build_page_nodes.js → page/vgeo_build_page_nodes.js} +4 -4
- package/src/shade/renderer/geometry/virtual/build/page/vgeo_page_node_count.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_page_node_count.js → page/vgeo_page_node_count.js} +2 -2
- package/src/shade/renderer/geometry/virtual/build/{VGeoFaceGraph.d.ts → partition/VGeoFaceGraph.d.ts} +23 -5
- package/src/shade/renderer/geometry/virtual/build/partition/VGeoFaceGraph.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{VGeoFaceGraph.js → partition/VGeoFaceGraph.js} +28 -21
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_partition_graph.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_partition_graph.js → partition/vgeo_partition_graph.js} +2 -2
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_partition_subgraph.d.ts +41 -0
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_partition_subgraph.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_partition_subgraph.js +92 -0
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_split_face_set.js → partition/vgeo_split_face_set.js} +13 -56
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.js +371 -0
- package/src/shade/renderer/geometry/virtual/build/sphere/vgeo_bounding_sphere.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_bounding_sphere.js → sphere/vgeo_bounding_sphere.js} +3 -3
- package/src/shade/renderer/geometry/virtual/build/sphere/vgeo_containing_sphere.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_containing_sphere.js → sphere/vgeo_containing_sphere.js} +3 -3
- package/src/shade/renderer/geometry/virtual/build/sphere/vgeo_sphere_inflate_to_contain.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_sphere_inflate_to_contain.js → sphere/vgeo_sphere_inflate_to_contain.js} +1 -1
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoGatheredFaces.d.ts +39 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoGatheredFaces.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoGatheredFaces.js +42 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoSubmesh.d.ts +37 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoSubmesh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoSubmesh.js +39 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_extract_submesh.d.ts +23 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_extract_submesh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_extract_submesh.js +135 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_gather_faces.d.ts +24 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_gather_faces.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_gather_faces.js +95 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_narrow_indices.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/{vgeo_narrow_indices.js → submesh/vgeo_narrow_indices.js} +3 -3
- package/src/shade/renderer/geometry/virtual/build/vgeo_build.d.ts +6 -2
- package/src/shade/renderer/geometry/virtual/build/vgeo_build.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_build.js +37 -16
- package/src/shade/renderer/geometry/virtual/build/vgeo_subtree_bounds.d.ts +32 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_subtree_bounds.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/build/vgeo_subtree_bounds.js +93 -0
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts +20 -6
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/VGeoWriteOptions.js +22 -8
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_attributes_read.d.ts +8 -2
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_attributes_read.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_attributes_read.js +8 -2
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_copy_corner.d.ts +16 -0
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_copy_corner.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/attribute/{vgeo_layers_copy_vertex.js → vgeo_layers_copy_corner.js} +8 -8
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_declare.d.ts +18 -7
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_declare.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_declare.js +19 -8
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_like.d.ts +3 -3
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_like.js +3 -3
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_mesh_wedges.d.ts +27 -0
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_mesh_wedges.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_mesh_wedges.js +97 -0
- package/src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET.d.ts +7 -3
- package/src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET.js +21 -11
- package/src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET_V4.d.ts +21 -0
- package/src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET_V4.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET_V4.js +41 -0
- package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.d.ts +19 -1
- package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/dag/VirtualGeometryCluster.js +20 -1
- package/src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_DEFLATE.d.ts +25 -0
- package/src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_DEFLATE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_DEFLATE.js +24 -0
- package/src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_LZ4.d.ts +5 -0
- package/src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_LZ4.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_LZ4.js +5 -0
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_codec_name.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_codec_name.js +5 -0
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_decode_frame_blob.d.ts +10 -3
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_decode_frame_blob.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_decode_frame_blob.js +37 -3
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_encode_frame_blob.d.ts +21 -13
- 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 +37 -13
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_frame_decode_bound.d.ts +8 -2
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_frame_decode_bound.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/frame/vgeo_frame_decode_bound.js +14 -2
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_FORMAT_VERSION.d.ts +18 -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 +19 -1
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_HEADER_OFFSET.js +6 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_MAX_LEVEL_COUNT.d.ts +21 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_MAX_LEVEL_COUNT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_MAX_LEVEL_COUNT.js +20 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_MIN_READER_VERSION.d.ts +9 -0
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_MIN_READER_VERSION.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/header/VGEO_MIN_READER_VERSION.js +10 -1
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_GROUP_OFFSET.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_GROUP_OFFSET.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_GROUP_OFFSET.js +15 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET.d.ts +1 -2
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET.js +10 -3
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET_V5.d.ts +20 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET_V5.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/format/page/VGEO_PAGE_OFFSET_V5.js +43 -0
- package/src/shade/renderer/geometry/virtual/format/payload/vgeo_encode_cluster_payload.d.ts +32 -2
- package/src/shade/renderer/geometry/virtual/format/payload/vgeo_encode_cluster_payload.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/payload/vgeo_encode_cluster_payload.js +15 -7
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts +6 -4
- package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.js +6 -4
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +13 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +13 -2
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.d.ts +5 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/VGeoPageFetcherCore.js +14 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_page_worker_serve.js +1 -0
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts +4 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.js +53 -11
- 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 +7 -3
- package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts +12 -2
- 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 +120 -37
- package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts +6 -2
- 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 +130 -47
- package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts +2 -2
- 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 +60 -22
- package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +385 -0
- package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +21 -2
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +52 -2
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +97 -1
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +4 -4
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +9 -0
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +59 -34
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts +8 -8
- 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 +45 -88
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.js +116 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts +31 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +99 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_queue.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_queue.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_queue.js +39 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_reseed.js +7 -63
- 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 +13 -30
- 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 +53 -71
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.d.ts +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_OFFSET.js +22 -4
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.d.ts +7 -2
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CLUSTER_ROW_WORDS.js +8 -3
- 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 +10 -0
- package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_CUT_STAT_COUNT.js +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.d.ts +13 -11
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_page_slot_words.js +13 -11
- 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 +4 -0
- 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 +3 -4
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts +6 -2
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +90 -12
- package/src/shade/renderer/gpu_primitive/indirect/WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION.d.ts +22 -0
- package/src/shade/renderer/gpu_primitive/indirect/WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/indirect/WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION.js +21 -0
- package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
- package/src/shade/renderer/loader/gltf/load_gltf.js +0 -19
- package/src/shade/renderer/material/chunk_material_draw_side.d.ts +14 -0
- package/src/shade/renderer/material/chunk_material_draw_side.d.ts.map +1 -0
- package/src/shade/renderer/material/chunk_material_draw_side.js +34 -0
- package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.js +8 -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 +13 -8
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +3 -6
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +13 -1
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts +19 -5
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/construct_primitive_state.js +23 -5
- package/src/shade/renderer/rasterize/bucket/filter_materials_by_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/filter_materials_by_bucket.js +12 -5
- 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 +4 -12
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts +22 -0
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.js +36 -0
- package/src/shade/renderer/rasterize/bucket/shader_read_out_bucket.d.ts +0 -2
- 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 +4 -5
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.d.ts +15 -0
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/chunk_triangle_winding_is_reversed.js +35 -0
- 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 +5 -3
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/cull/hzb/shader_hzb_meshlet_filter_1way.js +11 -4
- 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 +4 -3
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.d.ts +10 -1
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js +38 -29
- package/src/shade/renderer/rasterize/expand/bucket/chunk_rasterization_material_bucket.d.ts +5 -0
- package/src/shade/renderer/rasterize/expand/bucket/chunk_rasterization_material_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/chunk_rasterization_material_bucket.js +63 -55
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js +3 -0
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_count_by_rasterization_bucket.js +94 -90
- 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 +13 -5
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/meshlet/shader_meshlets_rasterization_bucket_sort.js +96 -89
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.js +3 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_two_way.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_two_way.js +4 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +1 -0
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_mesh_expand_to_meshlets_prefix.js +100 -89
- package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js +31 -7
- 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 +1 -7
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/pass1/filter_meshlets.2-way.compute.js +161 -153
- 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 +2 -7
- 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 +44 -53
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.js +6 -2
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js +6 -2
- package/src/shade/renderer/rasterize/forward/vertex_shader_chunk.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/vertex_shader_chunk.js +19 -2
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +7 -4
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -2
- package/src/shade/renderer/rasterize/native/chunk_rasterize_triangle.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/chunk_rasterize_triangle.js +15 -4
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_alpha_tested_pass_descriptor.js +16 -5
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/depth/shadow_rasterization_pass_descriptor.js +16 -5
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +2 -1
- package/src/shade/renderer/rasterize/native/rasterization_shader_resources.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/rasterization_shader_resources.js +4 -0
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +16 -7
- 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 +81 -95
- 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 +26 -39
- package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +2 -0
- package/src/shade/renderer/scene/NODE3D_STRUCT.d.ts +19 -0
- package/src/shade/renderer/scene/NODE3D_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/scene/NODE3D_STRUCT.js +34 -0
- package/src/shade/renderer/scene/chunk_node3d_flags.d.ts +9 -0
- package/src/shade/renderer/scene/chunk_node3d_flags.d.ts.map +1 -0
- package/src/shade/renderer/scene/chunk_node3d_flags.js +23 -0
- package/src/shade/renderer/scene/chunk_scene_database_access.d.ts.map +1 -1
- package/src/shade/renderer/scene/chunk_scene_database_access.js +15 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
- package/src/shade/renderer/scene/rows/GPUSceneRows.js +9 -1
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.d.ts +7 -0
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_compute_normal_matrix_from_m4.js +16 -4
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.js +18 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_triangle_list_reverse_winding.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_triangle_list_reverse_winding.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/triangle/chunk_triangle_list_reverse_winding.js +33 -0
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts +25 -0
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts.map +1 -0
- package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js +24 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +10 -0
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +30 -21
- package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts.map +0 -1
- package/src/shade/playground/vgeo_viewer/README.md +0 -150
- package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts +0 -61
- package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts.map +0 -1
- package/src/shade/playground/vgeo_viewer/cut_geometry.js +0 -460
- package/src/shade/playground/vgeo_viewer/index.html +0 -77
- package/src/shade/playground/vgeo_viewer/main.d.ts.map +0 -1
- package/src/shade/playground/vgeo_viewer/main.js +0 -1343
- package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +0 -1
- package/src/shade/playground/vgeo_viewer/select_cut.d.ts +0 -173
- package/src/shade/playground/vgeo_viewer/select_cut.d.ts.map +0 -1
- package/src/shade/playground/vgeo_viewer/select_cut.js +0 -481
- package/src/shade/renderer/geometry/virtual/build/VGeoFaceGraph.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoGatheredFaces.d.ts +0 -24
- package/src/shade/renderer/geometry/virtual/build/VGeoGatheredFaces.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoGatheredFaces.js +0 -25
- package/src/shade/renderer/geometry/virtual/build/VGeoLevel.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoLevelOptions.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoLevelSummary.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoSubmesh.d.ts +0 -20
- package/src/shade/renderer/geometry/virtual/build/VGeoSubmesh.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoSubmesh.js +0 -20
- package/src/shade/renderer/geometry/virtual/build/VirtualGeometryMesh.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_assemble_pages.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_bounding_sphere.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_build_levels.d.ts +0 -36
- package/src/shade/renderer/geometry/virtual/build/vgeo_build_levels.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_build_levels.js +0 -1786
- package/src/shade/renderer/geometry/virtual/build/vgeo_build_page_nodes.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_build_root_group.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_compute_vertex_normals.d.ts +0 -29
- package/src/shade/renderer/geometry/virtual/build/vgeo_compute_vertex_normals.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_compute_vertex_normals.js +0 -75
- package/src/shade/renderer/geometry/virtual/build/vgeo_compute_vertex_tangents.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_compute_vertex_tangents.js +0 -143
- package/src/shade/renderer/geometry/virtual/build/vgeo_containing_sphere.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_extract_submesh.d.ts +0 -14
- package/src/shade/renderer/geometry/virtual/build/vgeo_extract_submesh.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_extract_submesh.js +0 -41
- package/src/shade/renderer/geometry/virtual/build/vgeo_gather_faces.d.ts +0 -12
- package/src/shade/renderer/geometry/virtual/build/vgeo_gather_faces.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_gather_faces.js +0 -71
- package/src/shade/renderer/geometry/virtual/build/vgeo_graph_components.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_narrow_indices.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_normalize_source.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_page_node_count.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_partition_graph.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_sphere_inflate_to_contain.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_split_face_set.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_split_face_set_packed.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_split_face_set_packed.js +0 -207
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_copy_vertex.d.ts +0 -16
- package/src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_copy_vertex.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.d.ts +0 -258
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyManager.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.d.ts +0 -49
- package/src/shade/renderer/geometry/virtual/residency/VGeoResidencyOptions.d.ts.map +0 -1
- package/src/shade/renderer/loader/gltf/fix_up_material_sides.d.ts +0 -10
- package/src/shade/renderer/loader/gltf/fix_up_material_sides.d.ts.map +0 -1
- package/src/shade/renderer/loader/gltf/fix_up_material_sides.js +0 -109
- package/src/shade/renderer/rasterize/expand/graph_triangles_filter_by_material_side.d.ts +0 -17
- package/src/shade/renderer/rasterize/expand/graph_triangles_filter_by_material_side.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/expand/graph_triangles_filter_by_material_side.js +0 -78
- package/src/shade/renderer/rasterize/expand/shader_filter_triangle_by_material_side.d.ts +0 -3
- package/src/shade/renderer/rasterize/expand/shader_filter_triangle_by_material_side.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/expand/shader_filter_triangle_by_material_side.js +0 -100
- package/src/shade/renderer/rasterize/forward/chunk_material_side_should_draw.d.ts +0 -8
- package/src/shade/renderer/rasterize/forward/chunk_material_side_should_draw.d.ts.map +0 -1
- package/src/shade/renderer/rasterize/forward/chunk_material_side_should_draw.js +0 -26
- package/src/shade/renderer/shader/chunk/jobs/chunk_job_system.d.ts +0 -3
- package/src/shade/renderer/shader/chunk/jobs/chunk_job_system.d.ts.map +0 -1
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_assign_coordinates.d.ts +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_assign_layers.d.ts +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_break_cycles.d.ts +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_break_cycles.js +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_insert_lanes.d.ts +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_insert_lanes.js +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_order_layers.d.ts +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_order_layers.js +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_orient_links.d.ts +0 -0
- /package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_orient_links.js +0 -0
- /package/src/shade/playground/{vgeo_viewer → caldera}/main.d.ts +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{VGeoLevel.d.ts → level/VGeoLevel.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{VGeoLevel.js → level/VGeoLevel.js} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{VGeoLevelSummary.d.ts → level/VGeoLevelSummary.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{VGeoLevelSummary.js → level/VGeoLevelSummary.js} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_page_node_count.d.ts → page/vgeo_page_node_count.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_graph_components.d.ts → partition/vgeo_graph_components.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_graph_components.js → partition/vgeo_graph_components.js} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_partition_graph.d.ts → partition/vgeo_partition_graph.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_split_face_set.d.ts → partition/vgeo_split_face_set.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_split_face_set_packed.d.ts → partition/vgeo_split_face_set_packed.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_bounding_sphere.d.ts → sphere/vgeo_bounding_sphere.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_containing_sphere.d.ts → sphere/vgeo_containing_sphere.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_sphere_inflate_to_contain.d.ts → sphere/vgeo_sphere_inflate_to_contain.d.ts} +0 -0
- /package/src/shade/renderer/geometry/virtual/build/{vgeo_narrow_indices.d.ts → submesh/vgeo_narrow_indices.d.ts} +0 -0
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Read one vertex's value for one channel, falling back to the format's default for a channel this
|
|
3
|
-
* geometry does not carry
|
|
4
|
-
*
|
|
3
|
+
* geometry does not carry.
|
|
4
|
+
*
|
|
5
|
+
* These are the **unencoded** defaults, for a caller that is going to encode what it reads.
|
|
6
|
+
* `vgeo_encode_cluster_payload` never reaches them: a channel the geometry lacks takes its
|
|
7
|
+
* `ENCODED_DEFAULTS` path instead, which emits Shade's encoded constant directly. The two are not
|
|
8
|
+
* everywhere the same value — colour's encoded default carries an alpha byte that
|
|
9
|
+
* `encode_colors_to_u32` does not write — so which of the two a caller wants is a real question,
|
|
10
|
+
* and the answer is: this one only when the value is about to be encoded from scratch.
|
|
5
11
|
*
|
|
6
12
|
* @param {Float32Array|number[]} target
|
|
7
13
|
* @param {number} target_offset
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vgeo_attributes_read.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/attribute/vgeo_attributes_read.js"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"vgeo_attributes_read.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/attribute/vgeo_attributes_read.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,6CATW,YAAY,GAAC,MAAM,EAAE,iBACrB,MAAM,UACN,CAAC,kBAAgB,IAAI,CAAC,EAAE,aACxB,MAAM,UACN,MAAM,QAmBhB"}
|
|
@@ -2,8 +2,14 @@ import { VGEO_ATTRIBUTES } from "./VGEO_ATTRIBUTES.js";
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Read one vertex's value for one channel, falling back to the format's default for a channel this
|
|
5
|
-
* geometry does not carry
|
|
6
|
-
*
|
|
5
|
+
* geometry does not carry.
|
|
6
|
+
*
|
|
7
|
+
* These are the **unencoded** defaults, for a caller that is going to encode what it reads.
|
|
8
|
+
* `vgeo_encode_cluster_payload` never reaches them: a channel the geometry lacks takes its
|
|
9
|
+
* `ENCODED_DEFAULTS` path instead, which emits Shade's encoded constant directly. The two are not
|
|
10
|
+
* everywhere the same value — colour's encoded default carries an alpha byte that
|
|
11
|
+
* `encode_colors_to_u32` does not write — so which of the two a caller wants is a real question,
|
|
12
|
+
* and the answer is: this one only when the value is about to be encoded from scratch.
|
|
7
13
|
*
|
|
8
14
|
* @param {Float32Array|number[]} target
|
|
9
15
|
* @param {number} target_offset
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy one corner's every channel between two meshes declared from the same template.
|
|
3
|
+
*
|
|
4
|
+
* One run of bytes, not one call per channel: the channels of a corner are one interleaved record,
|
|
5
|
+
* and {@link vgeo_layers_like} is what guarantees the two records line up.
|
|
6
|
+
*
|
|
7
|
+
* @param {BinaryTopology} target
|
|
8
|
+
* @param {BinaryTopology} source
|
|
9
|
+
* @param {number} source_loop
|
|
10
|
+
* @param {number} target_loop
|
|
11
|
+
*
|
|
12
|
+
* @author Alex Goldring
|
|
13
|
+
* @copyright Company Named Limited (c) 2026
|
|
14
|
+
*/
|
|
15
|
+
export function vgeo_layers_copy_corner(target: BinaryTopology, source: BinaryTopology, source_loop: number, target_loop: number): void;
|
|
16
|
+
//# sourceMappingURL=vgeo_layers_copy_corner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vgeo_layers_copy_corner.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_copy_corner.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qGANW,MAAM,eACN,MAAM,QAoBhB"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { assert } from "../../../../../../core/assert.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Copy one
|
|
4
|
+
* Copy one corner's every channel between two meshes declared from the same template.
|
|
5
5
|
*
|
|
6
|
-
* One run of bytes, not one call per channel: the channels of a
|
|
6
|
+
* One run of bytes, not one call per channel: the channels of a corner are one interleaved record,
|
|
7
7
|
* and {@link vgeo_layers_like} is what guarantees the two records line up.
|
|
8
8
|
*
|
|
9
9
|
* @param {BinaryTopology} target
|
|
10
10
|
* @param {BinaryTopology} source
|
|
11
|
-
* @param {number}
|
|
12
|
-
* @param {number}
|
|
11
|
+
* @param {number} source_loop
|
|
12
|
+
* @param {number} target_loop
|
|
13
13
|
*
|
|
14
14
|
* @author Alex Goldring
|
|
15
15
|
* @copyright Company Named Limited (c) 2026
|
|
16
16
|
*/
|
|
17
|
-
export function
|
|
18
|
-
const target_data = target.
|
|
17
|
+
export function vgeo_layers_copy_corner(target, source, source_loop, target_loop) {
|
|
18
|
+
const target_data = target.loop_data;
|
|
19
19
|
|
|
20
|
-
const source_data = source.
|
|
20
|
+
const source_data = source.loop_data;
|
|
21
21
|
|
|
22
22
|
if (target_data === null) {
|
|
23
23
|
// a geometry with position and nothing else — there is no record to move
|
|
@@ -28,5 +28,5 @@ export function vgeo_layers_copy_vertex(target, source, source_vertex, target_ve
|
|
|
28
28
|
|
|
29
29
|
assert.notNull(source_data, 'target was declared with channels the source does not carry');
|
|
30
30
|
|
|
31
|
-
target_data.copy_record(
|
|
31
|
+
target_data.copy_record(target_loop, source_data, source_loop);
|
|
32
32
|
}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Declare
|
|
2
|
+
* Declare loop data layers on a topology for the channels `carried` marks.
|
|
3
3
|
*
|
|
4
|
-
* The
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* The attributes a `.vgeo` carries live on the `BinaryTopology` the builder simplifies rather than
|
|
5
|
+
* beside it, because that is the only place a value can survive what the builder does to a mesh: a
|
|
6
|
+
* collapse frees vertices and kills faces, and the topology is what knows when. A layer is sized by
|
|
7
|
+
* its pool, so a channel is never a slot short of the mesh it describes and never has to be resized
|
|
8
|
+
* by hand.
|
|
9
|
+
*
|
|
10
|
+
* **On loops — corners — and not on vertices.** A vertex has one position and the surface has one
|
|
11
|
+
* shape there, but it does not have one *appearance*: a hard edge and a texture seam are both a
|
|
12
|
+
* single geometric vertex that shades two ways, and a per-vertex record cannot hold that. Welding
|
|
13
|
+
* the position is what the clusterer needs and splitting the appearance is what the artist authored,
|
|
14
|
+
* and those are different questions (`WEDGE_PLAN_2026_09_18.md` §2). `bt_loop_uv` reached the same
|
|
15
|
+
* place for the same reason, and `bt_mesh_compact` already compacts loop data with everything else.
|
|
16
|
+
*
|
|
17
|
+
* What a *loop* is rather than a vertex costs is duplication — three records per triangle against
|
|
18
|
+
* roughly one per two — and buys the only representation a seam has.
|
|
9
19
|
*
|
|
10
20
|
* Position is not among them. It lives in the topology's own vertex record, where the quadric solve
|
|
11
|
-
* moves it
|
|
21
|
+
* moves it — and it is the one value that genuinely is the vertex's, which is the whole distinction
|
|
22
|
+
* this storage is drawn along.
|
|
12
23
|
*
|
|
13
24
|
* The returned *channel set* is an array with one slot per {@link VGEO_ATTRIBUTES} entry, holding
|
|
14
25
|
* that channel's layer or null where the geometry does not carry it — the format has a fixed,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vgeo_layers_declare.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_declare.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"vgeo_layers_declare.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/attribute/vgeo_layers_declare.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,uEANW,OAAO,EAAE,GACP,CAAC,kBAAgB,IAAI,CAAC,EAAE,CAmBpC"}
|
|
@@ -3,16 +3,27 @@ import { VGEO_ATTRIBUTE } from "./VGEO_ATTRIBUTE.js";
|
|
|
3
3
|
import { VGEO_ATTRIBUTES } from "./VGEO_ATTRIBUTES.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Declare
|
|
6
|
+
* Declare loop data layers on a topology for the channels `carried` marks.
|
|
7
7
|
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
8
|
+
* The attributes a `.vgeo` carries live on the `BinaryTopology` the builder simplifies rather than
|
|
9
|
+
* beside it, because that is the only place a value can survive what the builder does to a mesh: a
|
|
10
|
+
* collapse frees vertices and kills faces, and the topology is what knows when. A layer is sized by
|
|
11
|
+
* its pool, so a channel is never a slot short of the mesh it describes and never has to be resized
|
|
12
|
+
* by hand.
|
|
13
|
+
*
|
|
14
|
+
* **On loops — corners — and not on vertices.** A vertex has one position and the surface has one
|
|
15
|
+
* shape there, but it does not have one *appearance*: a hard edge and a texture seam are both a
|
|
16
|
+
* single geometric vertex that shades two ways, and a per-vertex record cannot hold that. Welding
|
|
17
|
+
* the position is what the clusterer needs and splitting the appearance is what the artist authored,
|
|
18
|
+
* and those are different questions (`WEDGE_PLAN_2026_09_18.md` §2). `bt_loop_uv` reached the same
|
|
19
|
+
* place for the same reason, and `bt_mesh_compact` already compacts loop data with everything else.
|
|
20
|
+
*
|
|
21
|
+
* What a *loop* is rather than a vertex costs is duplication — three records per triangle against
|
|
22
|
+
* roughly one per two — and buys the only representation a seam has.
|
|
13
23
|
*
|
|
14
24
|
* Position is not among them. It lives in the topology's own vertex record, where the quadric solve
|
|
15
|
-
* moves it
|
|
25
|
+
* moves it — and it is the one value that genuinely is the vertex's, which is the whole distinction
|
|
26
|
+
* this storage is drawn along.
|
|
16
27
|
*
|
|
17
28
|
* The returned *channel set* is an array with one slot per {@link VGEO_ATTRIBUTES} entry, holding
|
|
18
29
|
* that channel's layer or null where the geometry does not carry it — the format has a fixed,
|
|
@@ -37,7 +48,7 @@ export function vgeo_layers_declare(topology, carried) {
|
|
|
37
48
|
continue;
|
|
38
49
|
}
|
|
39
50
|
|
|
40
|
-
result[attribute] = topology.
|
|
51
|
+
result[attribute] = topology.loop_data_add_layer(
|
|
41
52
|
BinaryDataType.Float32, VGEO_ATTRIBUTES[attribute].components
|
|
42
53
|
);
|
|
43
54
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Declare the same channels `template` holds on another topology.
|
|
3
3
|
*
|
|
4
|
-
* Used wherever the builder rebuilds a
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Used wherever the builder rebuilds a mesh — extracting a group, stitching a level — and needs
|
|
5
|
+
* somewhere to copy the old values into. Because the declarations are the same, in the same order,
|
|
6
|
+
* the two blocks share a record layout and a corner can be moved across as one run of bytes.
|
|
7
7
|
*
|
|
8
8
|
* @param {BinaryTopology} topology receives the layers
|
|
9
9
|
* @param {(BinaryDataLayer|null)[]} template channel set to mirror
|
|
@@ -3,9 +3,9 @@ import { vgeo_layers_declare } from "./vgeo_layers_declare.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Declare the same channels `template` holds on another topology.
|
|
5
5
|
*
|
|
6
|
-
* Used wherever the builder rebuilds a
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Used wherever the builder rebuilds a mesh — extracting a group, stitching a level — and needs
|
|
7
|
+
* somewhere to copy the old values into. Because the declarations are the same, in the same order,
|
|
8
|
+
* the two blocks share a record layout and a corner can be moved across as one run of bytes.
|
|
9
9
|
*
|
|
10
10
|
* @param {BinaryTopology} topology receives the layers
|
|
11
11
|
* @param {(BinaryDataLayer|null)[]} template channel set to mirror
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a mesh's wedges off the values its corners already carry.
|
|
3
|
+
*
|
|
4
|
+
* **The values are the wedge.** A wedge is a set of corners at one vertex that shade the same, so
|
|
5
|
+
* the partition is not an extra fact to be stored and kept in step — it is a fact about the records,
|
|
6
|
+
* recoverable from them, and this is the one place in the builder that recovers it. Everywhere else
|
|
7
|
+
* wedges travel by provenance, because everywhere else the answer is already known and re-deriving
|
|
8
|
+
* it would be re-deciding it.
|
|
9
|
+
*
|
|
10
|
+
* Here is where the source gets to decide. A hard edge and a texture-chart boundary reach the
|
|
11
|
+
* builder as exactly this — corners of one vertex holding different records — and the weld in
|
|
12
|
+
* {@link vgeo_normalize_source} deliberately no longer flattens them.
|
|
13
|
+
*
|
|
14
|
+
* Grouped on **byte equality of the whole record**, which makes the partition an equivalence
|
|
15
|
+
* relation and so independent of the order corners are visited in. A tolerance would not be: it is
|
|
16
|
+
* not transitive, and two runs over one mesh could disagree about the same vertex. Tolerance belongs
|
|
17
|
+
* where a *decision* is made — the collapse — and not where a fact is read.
|
|
18
|
+
*
|
|
19
|
+
* @param {BinaryTopology} topology
|
|
20
|
+
* @returns {BtWedgeSet}
|
|
21
|
+
*
|
|
22
|
+
* @author Alex Goldring
|
|
23
|
+
* @copyright Company Named Limited (c) 2026
|
|
24
|
+
*/
|
|
25
|
+
export function vgeo_mesh_wedges(topology: BinaryTopology): BtWedgeSet;
|
|
26
|
+
import { BtWedgeSet } from "../../../../../../core/geom/3d/topology/struct/binary/BtWedgeSet.js";
|
|
27
|
+
//# sourceMappingURL=vgeo_mesh_wedges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vgeo_mesh_wedges.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/attribute/vgeo_mesh_wedges.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,4DALa,UAAU,CAuEtB;2BA/F0B,qEAAqE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { NULL_POINTER } from "../../../../../../core/geom/3d/topology/struct/binary/BinaryTopology.js";
|
|
2
|
+
import { BtWedgeSet } from "../../../../../../core/geom/3d/topology/struct/binary/BtWedgeSet.js";
|
|
3
|
+
import {
|
|
4
|
+
bt_wedges_per_vertex
|
|
5
|
+
} from "../../../../../../core/geom/3d/topology/struct/binary/io/bt_wedges_per_vertex.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Read a mesh's wedges off the values its corners already carry.
|
|
9
|
+
*
|
|
10
|
+
* **The values are the wedge.** A wedge is a set of corners at one vertex that shade the same, so
|
|
11
|
+
* the partition is not an extra fact to be stored and kept in step — it is a fact about the records,
|
|
12
|
+
* recoverable from them, and this is the one place in the builder that recovers it. Everywhere else
|
|
13
|
+
* wedges travel by provenance, because everywhere else the answer is already known and re-deriving
|
|
14
|
+
* it would be re-deciding it.
|
|
15
|
+
*
|
|
16
|
+
* Here is where the source gets to decide. A hard edge and a texture-chart boundary reach the
|
|
17
|
+
* builder as exactly this — corners of one vertex holding different records — and the weld in
|
|
18
|
+
* {@link vgeo_normalize_source} deliberately no longer flattens them.
|
|
19
|
+
*
|
|
20
|
+
* Grouped on **byte equality of the whole record**, which makes the partition an equivalence
|
|
21
|
+
* relation and so independent of the order corners are visited in. A tolerance would not be: it is
|
|
22
|
+
* not transitive, and two runs over one mesh could disagree about the same vertex. Tolerance belongs
|
|
23
|
+
* where a *decision* is made — the collapse — and not where a fact is read.
|
|
24
|
+
*
|
|
25
|
+
* @param {BinaryTopology} topology
|
|
26
|
+
* @returns {BtWedgeSet}
|
|
27
|
+
*
|
|
28
|
+
* @author Alex Goldring
|
|
29
|
+
* @copyright Company Named Limited (c) 2026
|
|
30
|
+
*/
|
|
31
|
+
export function vgeo_mesh_wedges(topology) {
|
|
32
|
+
const loop_data = topology.loop_data;
|
|
33
|
+
|
|
34
|
+
if (loop_data === null) {
|
|
35
|
+
// Position and nothing else: there is no record to disagree about, so every vertex shades
|
|
36
|
+
// one way and the degenerate set is the whole answer.
|
|
37
|
+
return bt_wedges_per_vertex(topology);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const loop_pool = topology.loops;
|
|
41
|
+
const vertex_pool = topology.vertices;
|
|
42
|
+
|
|
43
|
+
const of_loop = new Uint32Array(loop_pool.size).fill(NULL_POINTER);
|
|
44
|
+
const first_of_vertex = new Uint32Array(vertex_pool.size).fill(NULL_POINTER);
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* One representative corner per wedge, which is what a candidate is compared against.
|
|
48
|
+
* @type {number[]}
|
|
49
|
+
*/
|
|
50
|
+
const corner_of_wedge = [];
|
|
51
|
+
|
|
52
|
+
const parent = [];
|
|
53
|
+
const next_of_wedge = [];
|
|
54
|
+
|
|
55
|
+
for (let loop = 0; loop < loop_pool.size; loop++) {
|
|
56
|
+
if (!loop_pool.is_allocated(loop)) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const vertex = topology.loop_read_vertex(loop);
|
|
61
|
+
|
|
62
|
+
let wedge = first_of_vertex[vertex];
|
|
63
|
+
|
|
64
|
+
while (wedge !== NULL_POINTER) {
|
|
65
|
+
if (loop_data.record_equal(corner_of_wedge[wedge], loop)) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
wedge = next_of_wedge[wedge];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (wedge === NULL_POINTER) {
|
|
73
|
+
// A scan of the vertex's wedges rather than a hash of the record: on smooth geometry
|
|
74
|
+
// that list has one entry, on a crease two or three, and a key built per corner would
|
|
75
|
+
// cost more than the comparison it saves.
|
|
76
|
+
wedge = parent.length;
|
|
77
|
+
|
|
78
|
+
parent.push(wedge);
|
|
79
|
+
corner_of_wedge.push(loop);
|
|
80
|
+
|
|
81
|
+
next_of_wedge.push(first_of_vertex[vertex]);
|
|
82
|
+
first_of_vertex[vertex] = wedge;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
of_loop[loop] = wedge;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const wedges = new BtWedgeSet();
|
|
89
|
+
|
|
90
|
+
wedges.count = parent.length;
|
|
91
|
+
wedges.parent = Uint32Array.from(parent);
|
|
92
|
+
wedges.next_of_wedge = Uint32Array.from(next_of_wedge);
|
|
93
|
+
wedges.first_of_vertex = first_of_vertex;
|
|
94
|
+
wedges.of_loop = of_loop;
|
|
95
|
+
|
|
96
|
+
return wedges;
|
|
97
|
+
}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cluster record field offsets, relative to the record's own start.
|
|
2
|
+
* Cluster record field offsets, relative to the record's own start — `format_version` 5.
|
|
3
|
+
*
|
|
4
|
+
* {@link VGEO_CLUSTER_OFFSET_V4 } is what this was, and every field from offset 40 on has moved:
|
|
5
|
+
* `subtree_aabb` took the twenty-four bytes that `bounds_sphere` and `cone_reserved` were spending
|
|
6
|
+
* on a sphere nothing at runtime read and a column that was always zero. The record is still 112
|
|
7
|
+
* bytes.
|
|
3
8
|
*/
|
|
4
9
|
export type VGEO_CLUSTER_OFFSET = number;
|
|
5
10
|
export namespace VGEO_CLUSTER_OFFSET {
|
|
@@ -7,11 +12,10 @@ export namespace VGEO_CLUSTER_OFFSET {
|
|
|
7
12
|
let SELF_ERROR: number;
|
|
8
13
|
let PARENT_ERROR: number;
|
|
9
14
|
let PARENT_SPHERE: number;
|
|
10
|
-
let
|
|
15
|
+
let SUBTREE_AABB: number;
|
|
11
16
|
let AABB: number;
|
|
12
17
|
let CHILD_REF: number;
|
|
13
18
|
let CHILD_GROUP: number;
|
|
14
|
-
let CONE_RESERVED: number;
|
|
15
19
|
let ENCODING_FLAGS: number;
|
|
16
20
|
let PAYLOAD_OFFSET: number;
|
|
17
21
|
let PAYLOAD_SIZE: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VGEO_CLUSTER_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VGEO_CLUSTER_OFFSET.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET.js"],"names":[],"mappings":";;;;;;;;kCAQU,MAAM"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Cluster record field offsets, relative to the record's own start.
|
|
2
|
+
* Cluster record field offsets, relative to the record's own start — `format_version` 5.
|
|
3
|
+
*
|
|
4
|
+
* {@link VGEO_CLUSTER_OFFSET_V4} is what this was, and every field from offset 40 on has moved:
|
|
5
|
+
* `subtree_aabb` took the twenty-four bytes that `bounds_sphere` and `cone_reserved` were spending
|
|
6
|
+
* on a sphere nothing at runtime read and a column that was always zero. The record is still 112
|
|
7
|
+
* bytes.
|
|
8
|
+
*
|
|
3
9
|
* @enum {number}
|
|
4
10
|
*/
|
|
5
11
|
export const VGEO_CLUSTER_OFFSET = {
|
|
@@ -7,14 +13,18 @@ export const VGEO_CLUSTER_OFFSET = {
|
|
|
7
13
|
SELF_ERROR: 16,
|
|
8
14
|
PARENT_ERROR: 20,
|
|
9
15
|
PARENT_SPHERE: 24,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Object-space AABB of this cluster's own vertices **and of every cluster reachable below it**
|
|
18
|
+
* through child groups — what the cut's per-cluster frustum test needs, because culling a
|
|
19
|
+
* cluster removes its whole subtree from the descent (CULL_PLAN_2026_09_16 §3.1).
|
|
20
|
+
*/
|
|
21
|
+
SUBTREE_AABB: 40,
|
|
22
|
+
AABB: 64,
|
|
23
|
+
CHILD_REF: 88,
|
|
24
|
+
CHILD_GROUP: 90,
|
|
25
|
+
ENCODING_FLAGS: 92,
|
|
26
|
+
PAYLOAD_OFFSET: 96,
|
|
27
|
+
PAYLOAD_SIZE: 100,
|
|
28
|
+
VERTEX_COUNT: 104,
|
|
29
|
+
TRIANGLE_COUNT: 105,
|
|
20
30
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* *
|
|
3
|
+
*/
|
|
4
|
+
export type VGEO_CLUSTER_OFFSET_V4 = number;
|
|
5
|
+
export namespace VGEO_CLUSTER_OFFSET_V4 {
|
|
6
|
+
let SELF_SPHERE: number;
|
|
7
|
+
let SELF_ERROR: number;
|
|
8
|
+
let PARENT_ERROR: number;
|
|
9
|
+
let PARENT_SPHERE: number;
|
|
10
|
+
let BOUNDS_SPHERE: number;
|
|
11
|
+
let AABB: number;
|
|
12
|
+
let CHILD_REF: number;
|
|
13
|
+
let CHILD_GROUP: number;
|
|
14
|
+
let CONE_RESERVED: number;
|
|
15
|
+
let ENCODING_FLAGS: number;
|
|
16
|
+
let PAYLOAD_OFFSET: number;
|
|
17
|
+
let PAYLOAD_SIZE: number;
|
|
18
|
+
let VERTEX_COUNT: number;
|
|
19
|
+
let TRIANGLE_COUNT: number;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=VGEO_CLUSTER_OFFSET_V4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_CLUSTER_OFFSET_V4.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/cluster/VGEO_CLUSTER_OFFSET_V4.js"],"names":[],"mappings":";;;qCAaU,MAAM"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cluster record field offsets as `format_version` 4 and earlier laid them out, kept so that the
|
|
3
|
+
* reader can still take the containers that exist.
|
|
4
|
+
*
|
|
5
|
+
* Version 5 dropped `bounds_sphere` and `cone_reserved` and put {@link
|
|
6
|
+
* VGEO_CLUSTER_OFFSET.SUBTREE_AABB} in their place, which moved every field from offset 40 on. A
|
|
7
|
+
* version-4 record read by the version-5 sequence hands back a `child_ref` taken out of the middle
|
|
8
|
+
* of a bounding box, so the decoder branches on the container's version rather than trusting one
|
|
9
|
+
* layout — and this is the other branch. Nothing but {@link vgeo_read_page} should need it.
|
|
10
|
+
*
|
|
11
|
+
* The writer and the validator have no such branch: one writes the current version and the other
|
|
12
|
+
* refuses anything else.
|
|
13
|
+
*
|
|
14
|
+
* @enum {number}
|
|
15
|
+
*
|
|
16
|
+
* @author Alex Goldring
|
|
17
|
+
* @copyright Company Named Limited (c) 2026
|
|
18
|
+
*/
|
|
19
|
+
export const VGEO_CLUSTER_OFFSET_V4 = {
|
|
20
|
+
SELF_SPHERE: 0,
|
|
21
|
+
SELF_ERROR: 16,
|
|
22
|
+
PARENT_ERROR: 20,
|
|
23
|
+
PARENT_SPHERE: 24,
|
|
24
|
+
/**
|
|
25
|
+
* The cluster's own miniball. Version 5 has no such field: nothing at runtime read it, and the
|
|
26
|
+
* builder keeps its own copy.
|
|
27
|
+
*/
|
|
28
|
+
BOUNDS_SPHERE: 40,
|
|
29
|
+
AABB: 56,
|
|
30
|
+
CHILD_REF: 80,
|
|
31
|
+
CHILD_GROUP: 82,
|
|
32
|
+
/**
|
|
33
|
+
* Always zero, for a cone cull that was declined outright. Version 5 reclaimed it.
|
|
34
|
+
*/
|
|
35
|
+
CONE_RESERVED: 84,
|
|
36
|
+
ENCODING_FLAGS: 88,
|
|
37
|
+
PAYLOAD_OFFSET: 92,
|
|
38
|
+
PAYLOAD_SIZE: 96,
|
|
39
|
+
VERTEX_COUNT: 100,
|
|
40
|
+
TRIANGLE_COUNT: 101,
|
|
41
|
+
};
|
|
@@ -34,7 +34,13 @@ export class VirtualGeometryCluster {
|
|
|
34
34
|
*/
|
|
35
35
|
parent_error: number;
|
|
36
36
|
/**
|
|
37
|
-
* This cluster's own tight bounding sphere
|
|
37
|
+
* This cluster's own tight bounding sphere.
|
|
38
|
+
*
|
|
39
|
+
* **Build-time only — the container does not carry it.** Nothing at runtime ever read it, and
|
|
40
|
+
* `format_version` 5 spent its bytes on {@link subtree_aabb}. It stays here because the build
|
|
41
|
+
* does use it: the header's `object_sphere`, the page assembler's group centroids, the cluster
|
|
42
|
+
* adjacency graph and a leaf's own `self_sphere` are all built from it.
|
|
43
|
+
*
|
|
38
44
|
* @type {Float32Array}
|
|
39
45
|
*/
|
|
40
46
|
bounds_sphere: Float32Array;
|
|
@@ -43,6 +49,18 @@ export class VirtualGeometryCluster {
|
|
|
43
49
|
* @type {Float32Array}
|
|
44
50
|
*/
|
|
45
51
|
aabb: Float32Array;
|
|
52
|
+
/**
|
|
53
|
+
* {@link aabb} unioned with the `subtree_aabb` of every cluster of this one's child group, so it
|
|
54
|
+
* contains every vertex anywhere below this cluster in the DAG.
|
|
55
|
+
*
|
|
56
|
+
* It is what the cut's per-cluster frustum test reads, and the reason it has to bound the whole
|
|
57
|
+
* subtree rather than this cluster is that culling a cluster removes everything under it from the
|
|
58
|
+
* descent — the child group is only ever reached *through* it (CULL_PLAN_2026_09_16 §1, §3.1).
|
|
59
|
+
* A leaf's equals its {@link aabb}.
|
|
60
|
+
*
|
|
61
|
+
* @type {Float32Array}
|
|
62
|
+
*/
|
|
63
|
+
subtree_aabb: Float32Array;
|
|
46
64
|
/**
|
|
47
65
|
* The group this cluster refines into, or `undefined` when it is a leaf and refines into
|
|
48
66
|
* nothing.
|
|
@@ -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
|
|
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;;;;;;;;;OASG;IACH,eAFU,YAAY,CAEc;IAEpC;;;OAGG;IACH,MAFU,YAAY,CAEK;IAE3B;;;;;;;;;;OAUG;IACH,cAFU,YAAY,CAEa;IAEnC;;;;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"}
|
|
@@ -39,7 +39,13 @@ export class VirtualGeometryCluster {
|
|
|
39
39
|
parent_error = Number.POSITIVE_INFINITY;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
* This cluster's own tight bounding sphere
|
|
42
|
+
* This cluster's own tight bounding sphere.
|
|
43
|
+
*
|
|
44
|
+
* **Build-time only — the container does not carry it.** Nothing at runtime ever read it, and
|
|
45
|
+
* `format_version` 5 spent its bytes on {@link subtree_aabb}. It stays here because the build
|
|
46
|
+
* does use it: the header's `object_sphere`, the page assembler's group centroids, the cluster
|
|
47
|
+
* adjacency graph and a leaf's own `self_sphere` are all built from it.
|
|
48
|
+
*
|
|
43
49
|
* @type {Float32Array}
|
|
44
50
|
*/
|
|
45
51
|
bounds_sphere = new Float32Array(4);
|
|
@@ -50,6 +56,19 @@ export class VirtualGeometryCluster {
|
|
|
50
56
|
*/
|
|
51
57
|
aabb = new Float32Array(6);
|
|
52
58
|
|
|
59
|
+
/**
|
|
60
|
+
* {@link aabb} unioned with the `subtree_aabb` of every cluster of this one's child group, so it
|
|
61
|
+
* contains every vertex anywhere below this cluster in the DAG.
|
|
62
|
+
*
|
|
63
|
+
* It is what the cut's per-cluster frustum test reads, and the reason it has to bound the whole
|
|
64
|
+
* subtree rather than this cluster is that culling a cluster removes everything under it from the
|
|
65
|
+
* descent — the child group is only ever reached *through* it (CULL_PLAN_2026_09_16 §1, §3.1).
|
|
66
|
+
* A leaf's equals its {@link aabb}.
|
|
67
|
+
*
|
|
68
|
+
* @type {Float32Array}
|
|
69
|
+
*/
|
|
70
|
+
subtree_aabb = new Float32Array(6);
|
|
71
|
+
|
|
53
72
|
/**
|
|
54
73
|
* The group this cluster refines into, or `undefined` when it is a leaf and refines into
|
|
55
74
|
* nothing.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codec` value for a blob stored as one raw DEFLATE stream (RFC 1951), no zlib or gzip wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Bare for the same reason {@link VGEO_CODEC_LZ4} is a bare block: both wrappers carry a magic, a
|
|
5
|
+
* length and a checksum that the frame header already carries better — `decoded_size` is what the
|
|
6
|
+
* stream is decoded against and the identity-seeded `checksum` is what proves the stored bytes
|
|
7
|
+
* arrived. A zlib header would be two bytes of restating and a gzip one eighteen.
|
|
8
|
+
*
|
|
9
|
+
* This is the hosted codec: `CompressionStream`/`DecompressionStream` are the platform's own zlib,
|
|
10
|
+
* so it costs no bytes of library and runs off the JS thread — and it is *asynchronous*, which is
|
|
11
|
+
* why everything from {@link vgeo_decode_frame_blob} up to {@link vgeo_build} is.
|
|
12
|
+
*
|
|
13
|
+
* What it is worth, measured over the 44 pages of a 240x120 torus: **1.369x** against LZ4's 1.295x
|
|
14
|
+
* on the same pages, for a decode of every page that cost 16.9 ms against LZ4's 3.8 ms — 126 MB/s
|
|
15
|
+
* of decoded output against 562.
|
|
16
|
+
*
|
|
17
|
+
* **This is what the builder and the converter write by default.** An asset is built once and
|
|
18
|
+
* fetched forever, so the denser side of that trade is the one worth taking without being asked;
|
|
19
|
+
* {@link VGEO_CODEC_LZ4} is a deliberate choice for a container whose pages arrive while someone is
|
|
20
|
+
* looking at it, where the decode is a page's arrival cost rather than a build's.
|
|
21
|
+
*
|
|
22
|
+
* @type {number}
|
|
23
|
+
*/
|
|
24
|
+
export const VGEO_CODEC_DEFLATE: number;
|
|
25
|
+
//# sourceMappingURL=VGEO_CODEC_DEFLATE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VGEO_CODEC_DEFLATE.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/format/frame/VGEO_CODEC_DEFLATE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iCAFU,MAAM,CAEoB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codec` value for a blob stored as one raw DEFLATE stream (RFC 1951), no zlib or gzip wrapper.
|
|
3
|
+
*
|
|
4
|
+
* Bare for the same reason {@link VGEO_CODEC_LZ4} is a bare block: both wrappers carry a magic, a
|
|
5
|
+
* length and a checksum that the frame header already carries better — `decoded_size` is what the
|
|
6
|
+
* stream is decoded against and the identity-seeded `checksum` is what proves the stored bytes
|
|
7
|
+
* arrived. A zlib header would be two bytes of restating and a gzip one eighteen.
|
|
8
|
+
*
|
|
9
|
+
* This is the hosted codec: `CompressionStream`/`DecompressionStream` are the platform's own zlib,
|
|
10
|
+
* so it costs no bytes of library and runs off the JS thread — and it is *asynchronous*, which is
|
|
11
|
+
* why everything from {@link vgeo_decode_frame_blob} up to {@link vgeo_build} is.
|
|
12
|
+
*
|
|
13
|
+
* What it is worth, measured over the 44 pages of a 240x120 torus: **1.369x** against LZ4's 1.295x
|
|
14
|
+
* on the same pages, for a decode of every page that cost 16.9 ms against LZ4's 3.8 ms — 126 MB/s
|
|
15
|
+
* of decoded output against 562.
|
|
16
|
+
*
|
|
17
|
+
* **This is what the builder and the converter write by default.** An asset is built once and
|
|
18
|
+
* fetched forever, so the denser side of that trade is the one worth taking without being asked;
|
|
19
|
+
* {@link VGEO_CODEC_LZ4} is a deliberate choice for a container whose pages arrive while someone is
|
|
20
|
+
* looking at it, where the decode is a page's arrival cost rather than a build's.
|
|
21
|
+
*
|
|
22
|
+
* @type {number}
|
|
23
|
+
*/
|
|
24
|
+
export const VGEO_CODEC_DEFLATE = 2;
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
* its identity-seeded `checksum` covers the stored bytes. So the blob is the bare block, and the
|
|
7
7
|
* frame header is what tells a decoder how much to expect out of it.
|
|
8
8
|
*
|
|
9
|
+
* Not the builder's default — {@link VGEO_CODEC_DEFLATE} is, because it stores a container in fewer
|
|
10
|
+
* bytes and a build happens once where a fetch happens forever. This is what to set for a container
|
|
11
|
+
* whose pages arrive during play: it decodes at 562 MB/s against deflate's 126, and that decode is
|
|
12
|
+
* a page's arrival cost on the residency path.
|
|
13
|
+
*
|
|
9
14
|
* @type {number}
|
|
10
15
|
*/
|
|
11
16
|
export const VGEO_CODEC_LZ4: number;
|