@woosh/meep-engine 3.28.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/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/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/prefab/prefab_instantiate.js +230 -230
- package/src/shade/RENDERER_CONTRACT.md +12 -7
- 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 +5 -3
- package/src/shade/playground/vgeo_runtime/main.js +3 -2
- package/src/shade/playground/vgeo_runtime/sample_asset.d.ts +3 -3
- package/src/shade/playground/vgeo_runtime/sample_asset.d.ts.map +1 -1
- package/src/shade/playground/vgeo_runtime/sample_asset.js +3 -3
- package/src/shade/playground/vgeo_scene/README.md +103 -24
- package/src/shade/playground/vgeo_scene/main.js +525 -24
- 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 +2 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +23 -0
- 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 +69 -33
- 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/virtual/ATTRIBUTE_PLAN_2026_09_18.md +540 -0
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +155 -64
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +30 -13
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +3 -3
- package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +358 -0
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts +57 -7
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoBuildOptions.js +63 -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/VGeoLevelOptions.d.ts +19 -6
- package/src/shade/renderer/geometry/virtual/build/level/VGeoLevelOptions.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/VGeoLevelOptions.js +20 -7
- 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 +2 -27
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_levels.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_levels.js +120 -1564
- 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/mesh/VirtualGeometryMesh.d.ts +12 -7
- package/src/shade/renderer/geometry/virtual/build/mesh/VirtualGeometryMesh.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/VirtualGeometryMesh.js +33 -11
- 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 +24 -8
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_normals.js +250 -25
- package/src/shade/renderer/geometry/virtual/build/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 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_compute_vertex_tangents.js +58 -50
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.d.ts +8 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/mesh/vgeo_normalize_source.js +18 -3
- 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/partition/VGeoFaceGraph.d.ts +23 -5
- package/src/shade/renderer/geometry/virtual/build/partition/VGeoFaceGraph.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/partition/VGeoFaceGraph.js +28 -21
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set.js +1 -1
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.js +224 -60
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoGatheredFaces.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoGatheredFaces.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoGatheredFaces.js +17 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoSubmesh.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoSubmesh.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/submesh/VGeoSubmesh.js +19 -0
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_extract_submesh.d.ts +10 -1
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_extract_submesh.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_extract_submesh.js +103 -9
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_gather_faces.d.ts +14 -2
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_gather_faces.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/build/submesh/vgeo_gather_faces.js +38 -14
- 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 +28 -5
- 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_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_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 +4 -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 +8 -4
- 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 +111 -33
- 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 +112 -42
- 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 +51 -21
- package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +385 -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/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +34 -0
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_arena.js +18 -0
- 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 +47 -19
- 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/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/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/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/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/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/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/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +4 -8
- 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 +5 -8
- 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/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/main.d.ts.map +0 -1
- package/src/shade/playground/vgeo_viewer/sample_asset.d.ts +0 -18
- 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/renderer/geometry/virtual/build/VGeoFaceGraph.d.ts +0 -52
- 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/VGeoLevel.d.ts +0 -32
- package/src/shade/renderer/geometry/virtual/build/VGeoLevel.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoLevelOptions.d.ts +0 -59
- package/src/shade/renderer/geometry/virtual/build/VGeoLevelOptions.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/VGeoLevelSummary.d.ts +0 -44
- 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/VirtualGeometryMesh.d.ts +0 -73
- 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 +0 -13
- 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 +0 -12
- 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_page_nodes.d.ts +0 -13
- 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 +0 -19
- 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_tangents.d.ts +0 -31
- package/src/shade/renderer/geometry/virtual/build/vgeo_compute_vertex_tangents.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/build/vgeo_containing_sphere.d.ts +0 -18
- 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_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_graph_components.d.ts +0 -14
- 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 +0 -11
- 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 +0 -46
- 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 +0 -22
- 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 +0 -29
- 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 +0 -9
- 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 +0 -10
- 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 +0 -15
- package/src/shade/renderer/geometry/virtual/build/vgeo_split_face_set_packed.d.ts.map +0 -1
- 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/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/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/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/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/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
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many wedges a mesh still has — how many vertices it would ship.
|
|
3
|
+
*
|
|
4
|
+
* Not `vertices.count()`, and the difference is the whole of what a wedge is for: a vertex whose
|
|
5
|
+
* corners shade two ways is two vertices to anything that carries a value per vertex, which is every
|
|
6
|
+
* meshlet, every vertex buffer and every renderer ever written. A caller sizing against that limit
|
|
7
|
+
* has to ask this rather than the pool.
|
|
8
|
+
*
|
|
9
|
+
* Counted off the per-vertex lists rather than from {@link BtWedgeSet#count}, because that one
|
|
10
|
+
* includes every id ever handed out and a collapse merges them away. Vertices the pool has released
|
|
11
|
+
* are skipped, so a sweep that removed faceless vertices without touching the wedge set is accounted
|
|
12
|
+
* for.
|
|
13
|
+
*
|
|
14
|
+
* @param {BinaryTopology} mesh
|
|
15
|
+
* @param {BtWedgeSet} wedges
|
|
16
|
+
* @returns {number}
|
|
17
|
+
*
|
|
18
|
+
* @author Alex Goldring
|
|
19
|
+
* @copyright Company Named Limited (c) 2026
|
|
20
|
+
*/
|
|
21
|
+
export function bt_wedges_live_count(mesh: BinaryTopology, wedges: BtWedgeSet): number;
|
|
22
|
+
//# sourceMappingURL=bt_wedges_live_count.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bt_wedges_live_count.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_wedges_live_count.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,gFALa,MAAM,CA4BlB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { NULL_POINTER } from "../BinaryTopology.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* How many wedges a mesh still has — how many vertices it would ship.
|
|
5
|
+
*
|
|
6
|
+
* Not `vertices.count()`, and the difference is the whole of what a wedge is for: a vertex whose
|
|
7
|
+
* corners shade two ways is two vertices to anything that carries a value per vertex, which is every
|
|
8
|
+
* meshlet, every vertex buffer and every renderer ever written. A caller sizing against that limit
|
|
9
|
+
* has to ask this rather than the pool.
|
|
10
|
+
*
|
|
11
|
+
* Counted off the per-vertex lists rather than from {@link BtWedgeSet#count}, because that one
|
|
12
|
+
* includes every id ever handed out and a collapse merges them away. Vertices the pool has released
|
|
13
|
+
* are skipped, so a sweep that removed faceless vertices without touching the wedge set is accounted
|
|
14
|
+
* for.
|
|
15
|
+
*
|
|
16
|
+
* @param {BinaryTopology} mesh
|
|
17
|
+
* @param {BtWedgeSet} wedges
|
|
18
|
+
* @returns {number}
|
|
19
|
+
*
|
|
20
|
+
* @author Alex Goldring
|
|
21
|
+
* @copyright Company Named Limited (c) 2026
|
|
22
|
+
*/
|
|
23
|
+
export function bt_wedges_live_count(mesh, wedges) {
|
|
24
|
+
const vertex_pool = mesh.vertices;
|
|
25
|
+
|
|
26
|
+
const first_of_vertex = wedges.first_of_vertex;
|
|
27
|
+
const next_of_wedge = wedges.next_of_wedge;
|
|
28
|
+
|
|
29
|
+
let count = 0;
|
|
30
|
+
|
|
31
|
+
for (let vertex = 0; vertex < vertex_pool.size; vertex++) {
|
|
32
|
+
if (!vertex_pool.is_allocated(vertex)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
for (
|
|
37
|
+
let wedge = first_of_vertex[vertex];
|
|
38
|
+
wedge !== NULL_POINTER;
|
|
39
|
+
wedge = next_of_wedge[wedge]
|
|
40
|
+
) {
|
|
41
|
+
count++;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return count;
|
|
46
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wedge set of a mesh with no appearance seams: one wedge per vertex, and its id *is* the
|
|
3
|
+
* vertex id.
|
|
4
|
+
*
|
|
5
|
+
* The degenerate case, and worth having a name because it is what everything that does not carry
|
|
6
|
+
* appearance wants. A caller whose per-vertex arrays are indexed by vertex id can hand this to
|
|
7
|
+
* {@link bt_mesh_simplify_with_quadrics} and keep indexing them by vertex id, because here the two
|
|
8
|
+
* are the same number. Nothing requires wedge ids to be dense — only to be distinct — which is what
|
|
9
|
+
* lets that be true.
|
|
10
|
+
*
|
|
11
|
+
* @param {BinaryTopology} mesh
|
|
12
|
+
* @returns {BtWedgeSet}
|
|
13
|
+
*
|
|
14
|
+
* @author Alex Goldring
|
|
15
|
+
* @copyright Company Named Limited (c) 2026
|
|
16
|
+
*/
|
|
17
|
+
export function bt_wedges_per_vertex(mesh: BinaryTopology): BtWedgeSet;
|
|
18
|
+
import { BtWedgeSet } from "../BtWedgeSet.js";
|
|
19
|
+
//# sourceMappingURL=bt_wedges_per_vertex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bt_wedges_per_vertex.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/core/geom/3d/topology/struct/binary/io/bt_wedges_per_vertex.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AACH,4DALa,UAAU,CAkCtB;2BA/C0B,kBAAkB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { NULL_POINTER } from "../BinaryTopology.js";
|
|
2
|
+
import { BtWedgeSet } from "../BtWedgeSet.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The wedge set of a mesh with no appearance seams: one wedge per vertex, and its id *is* the
|
|
6
|
+
* vertex id.
|
|
7
|
+
*
|
|
8
|
+
* The degenerate case, and worth having a name because it is what everything that does not carry
|
|
9
|
+
* appearance wants. A caller whose per-vertex arrays are indexed by vertex id can hand this to
|
|
10
|
+
* {@link bt_mesh_simplify_with_quadrics} and keep indexing them by vertex id, because here the two
|
|
11
|
+
* are the same number. Nothing requires wedge ids to be dense — only to be distinct — which is what
|
|
12
|
+
* lets that be true.
|
|
13
|
+
*
|
|
14
|
+
* @param {BinaryTopology} mesh
|
|
15
|
+
* @returns {BtWedgeSet}
|
|
16
|
+
*
|
|
17
|
+
* @author Alex Goldring
|
|
18
|
+
* @copyright Company Named Limited (c) 2026
|
|
19
|
+
*/
|
|
20
|
+
export function bt_wedges_per_vertex(mesh) {
|
|
21
|
+
const vertex_pool = mesh.vertices;
|
|
22
|
+
const loop_pool = mesh.loops;
|
|
23
|
+
|
|
24
|
+
const result = new BtWedgeSet();
|
|
25
|
+
|
|
26
|
+
result.count = vertex_pool.size;
|
|
27
|
+
|
|
28
|
+
result.parent = new Uint32Array(vertex_pool.size);
|
|
29
|
+
result.next_of_wedge = new Uint32Array(vertex_pool.size).fill(NULL_POINTER);
|
|
30
|
+
result.first_of_vertex = new Uint32Array(vertex_pool.size).fill(NULL_POINTER);
|
|
31
|
+
|
|
32
|
+
for (let vertex = 0; vertex < vertex_pool.size; vertex++) {
|
|
33
|
+
result.parent[vertex] = vertex;
|
|
34
|
+
|
|
35
|
+
if (vertex_pool.is_allocated(vertex)) {
|
|
36
|
+
result.first_of_vertex[vertex] = vertex;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
result.of_loop = new Uint32Array(loop_pool.size).fill(NULL_POINTER);
|
|
41
|
+
|
|
42
|
+
for (let loop = 0; loop < loop_pool.size; loop++) {
|
|
43
|
+
if (loop_pool.is_allocated(loop)) {
|
|
44
|
+
result.of_loop[loop] = mesh.loop_read_vertex(loop);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every number the placement is allowed to be tuned by.
|
|
3
|
+
*
|
|
4
|
+
* They live in one place because they are not independent: the room a wire lane has in a column is
|
|
5
|
+
* set against the gap between two boxes, and the room every wire crossing a column boundary has to
|
|
6
|
+
* share is `layer_gap`. Somebody changing one of these needs to see the others.
|
|
7
|
+
*
|
|
8
|
+
* What is *not* here is anything about the thing being drawn. These are the spacings a drawing is
|
|
9
|
+
* laid out at — how far apart two boxes have to be before they read as separate — which is the one
|
|
10
|
+
* part of a layout the display legitimately decides. Everything else the layout works out for
|
|
11
|
+
* itself.
|
|
12
|
+
*
|
|
13
|
+
* @author Alex Goldring
|
|
14
|
+
* @copyright Company Named Limited (c) 2026
|
|
15
|
+
*/
|
|
16
|
+
export class BoxLayoutOptions {
|
|
17
|
+
/**
|
|
18
|
+
* @template {BoxLayoutOptions} T
|
|
19
|
+
* @this {function(new: T)}
|
|
20
|
+
* @param {Partial<T>} [overrides]
|
|
21
|
+
* @returns {T}
|
|
22
|
+
*/
|
|
23
|
+
static from<T extends BoxLayoutOptions>(this: new () => T, overrides?: Partial<T>): T;
|
|
24
|
+
/**
|
|
25
|
+
* Horizontal gap between one column of boxes and the next.
|
|
26
|
+
*
|
|
27
|
+
* This is the width of the channel every edge crossing that boundary has to share, so it is
|
|
28
|
+
* also what limits how many wires can run side by side without one of them having to detour.
|
|
29
|
+
*
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
layer_gap: number;
|
|
33
|
+
/**
|
|
34
|
+
* Vertical gap between two node boxes sharing a column.
|
|
35
|
+
* @type {number}
|
|
36
|
+
*/
|
|
37
|
+
node_gap: number;
|
|
38
|
+
/**
|
|
39
|
+
* Vertical room reserved for one wire passing through a column it does not stop at.
|
|
40
|
+
*
|
|
41
|
+
* An edge spanning several columns gets a lane of this height in each one it crosses, which is
|
|
42
|
+
* what keeps a long edge from being drawn over the boxes it passes.
|
|
43
|
+
*
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
wire_gap: number;
|
|
47
|
+
/**
|
|
48
|
+
* How far outside a box a wire is ever drawn, which is also the least room a lane needs beside
|
|
49
|
+
* one.
|
|
50
|
+
*
|
|
51
|
+
* A wire on the box boundary reads as touching it. For a caller that routes its wires this is
|
|
52
|
+
* the same line the router runs them along, and the first place a wire leaving a port may turn.
|
|
53
|
+
*
|
|
54
|
+
* @type {number}
|
|
55
|
+
*/
|
|
56
|
+
clearance: number;
|
|
57
|
+
/**
|
|
58
|
+
* Ordering passes over the columns.
|
|
59
|
+
* @type {number}
|
|
60
|
+
*/
|
|
61
|
+
order_sweeps: number;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=BoxLayoutOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxLayoutOptions.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/BoxLayoutOptions.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH;IA6CI;;;;;OAKG;IACH,sFAYC;IA7DD;;;;;;;OAOG;IACH,WAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;OAOG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;;OAQG;IACH,WAFU,MAAM,CAED;IAEf;;;OAGG;IACH,cAFU,MAAM,CAEC;CAqBpB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every number the placement is allowed to be tuned by.
|
|
3
|
+
*
|
|
4
|
+
* They live in one place because they are not independent: the room a wire lane has in a column is
|
|
5
|
+
* set against the gap between two boxes, and the room every wire crossing a column boundary has to
|
|
6
|
+
* share is `layer_gap`. Somebody changing one of these needs to see the others.
|
|
7
|
+
*
|
|
8
|
+
* What is *not* here is anything about the thing being drawn. These are the spacings a drawing is
|
|
9
|
+
* laid out at — how far apart two boxes have to be before they read as separate — which is the one
|
|
10
|
+
* part of a layout the display legitimately decides. Everything else the layout works out for
|
|
11
|
+
* itself.
|
|
12
|
+
*
|
|
13
|
+
* @author Alex Goldring
|
|
14
|
+
* @copyright Company Named Limited (c) 2026
|
|
15
|
+
*/
|
|
16
|
+
export class BoxLayoutOptions {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Horizontal gap between one column of boxes and the next.
|
|
20
|
+
*
|
|
21
|
+
* This is the width of the channel every edge crossing that boundary has to share, so it is
|
|
22
|
+
* also what limits how many wires can run side by side without one of them having to detour.
|
|
23
|
+
*
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
layer_gap = 140;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Vertical gap between two node boxes sharing a column.
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
node_gap = 44;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Vertical room reserved for one wire passing through a column it does not stop at.
|
|
36
|
+
*
|
|
37
|
+
* An edge spanning several columns gets a lane of this height in each one it crosses, which is
|
|
38
|
+
* what keeps a long edge from being drawn over the boxes it passes.
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
*/
|
|
42
|
+
wire_gap = 20;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* How far outside a box a wire is ever drawn, which is also the least room a lane needs beside
|
|
46
|
+
* one.
|
|
47
|
+
*
|
|
48
|
+
* A wire on the box boundary reads as touching it. For a caller that routes its wires this is
|
|
49
|
+
* the same line the router runs them along, and the first place a wire leaving a port may turn.
|
|
50
|
+
*
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
53
|
+
clearance = 24;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Ordering passes over the columns.
|
|
57
|
+
* @type {number}
|
|
58
|
+
*/
|
|
59
|
+
order_sweeps = 8;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @template {BoxLayoutOptions} T
|
|
63
|
+
* @this {function(new: T)}
|
|
64
|
+
* @param {Partial<T>} [overrides]
|
|
65
|
+
* @returns {T}
|
|
66
|
+
*/
|
|
67
|
+
static from(overrides) {
|
|
68
|
+
const r = new this();
|
|
69
|
+
|
|
70
|
+
if (overrides !== undefined) {
|
|
71
|
+
for (const key in overrides) {
|
|
72
|
+
if (key in r) {
|
|
73
|
+
r[key] = overrides[key];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return r;
|
|
79
|
+
}
|
|
80
|
+
}
|
package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/LayoutBoxGraph.d.ts
RENAMED
|
@@ -71,6 +71,41 @@ export class LayoutBoxGraph {
|
|
|
71
71
|
* @type {Uint8Array}
|
|
72
72
|
*/
|
|
73
73
|
box_kind: Uint8Array;
|
|
74
|
+
/**
|
|
75
|
+
* Links to something that is not in this graph at all, counted per box.
|
|
76
|
+
*
|
|
77
|
+
* A caller laying a drawing out in pieces — a group at a time, each piece entering its parent as
|
|
78
|
+
* a single box — has boxes joined to boxes in another piece. Such a link is not drawn here and
|
|
79
|
+
* cannot constrain anything here, but it is the only thing saying which side of the piece its box
|
|
80
|
+
* belongs near: a box read only from outside has nothing inside pulling it to the right, and
|
|
81
|
+
* without this it settles against whatever it happens to touch internally while the wire leaving
|
|
82
|
+
* it crosses the whole piece to get out.
|
|
83
|
+
*
|
|
84
|
+
* Layering reads them, as degrees — see {@link layout_assign_layers}. Cycle breaking deliberately
|
|
85
|
+
* does not: a box that nothing *here* depends on is a source here, whatever is waiting on it
|
|
86
|
+
* elsewhere.
|
|
87
|
+
*
|
|
88
|
+
* Zero unless the caller says otherwise, which is the whole graph in one piece.
|
|
89
|
+
*
|
|
90
|
+
* @type {Int32Array}
|
|
91
|
+
*/
|
|
92
|
+
box_external_in: Int32Array;
|
|
93
|
+
/**
|
|
94
|
+
* @type {Int32Array}
|
|
95
|
+
*/
|
|
96
|
+
box_external_out: Int32Array;
|
|
97
|
+
/**
|
|
98
|
+
* Extra room this box wants from whatever shares its column, beyond the gap its kind implies.
|
|
99
|
+
*
|
|
100
|
+
* Zero for an ordinary box: the gap between two boxes is what says how far apart they have to be
|
|
101
|
+
* before they read as separate, and it is the same everywhere. It is a box drawn as a *frame*
|
|
102
|
+
* around other boxes that needs more — two frames meeting at a hairline read as one region
|
|
103
|
+
* rather than as two that happen to be adjacent, and the padding inside a frame cannot say so,
|
|
104
|
+
* because it is inside.
|
|
105
|
+
*
|
|
106
|
+
* @type {Float64Array}
|
|
107
|
+
*/
|
|
108
|
+
box_margin: Float64Array;
|
|
74
109
|
/**
|
|
75
110
|
* @type {number}
|
|
76
111
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayoutBoxGraph.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/LayoutBoxGraph.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,8BAFU,MAAM,CAEiB;AAEjC;;;;;;;;GAQG;AACH,8BAFU,MAAM,CAEiB;AAEjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IA+HI;;;OAGG;IACH,wBAHW,MAAM,eACN,MAAM,EAIhB;IAnID;;OAEG;IACH,WAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,OAFU,YAAY,CAEhB;IAEN;;;OAGG;IACH,OAFU,YAAY,CAEhB;IAEN;;OAEG;IACH,OAFU,YAAY,CAEhB;IAEN;;OAEG;IACH,OAFU,YAAY,CAEhB;IAEN;;;OAGG;IACH,WAFU,UAAU,CAEV;IAEV;;;OAGG;IACH,UAFU,UAAU,CAEX;IAET;;;;;;;;;;;;;;;;;OAiBG;IACH,iBAFU,UAAU,CAEJ;IAEhB;;OAEG;IACH,kBAFU,UAAU,CAEH;IAEjB;;;;;;;;;;OAUG;IACH,YAFU,YAAY,CAEX;IAEX;;OAEG;IACH,YAFU,MAAM,CAED;IAEf;;OAEG;IACH,WAFU,UAAU,CAEV;IAEV;;OAEG;IACH,SAFU,UAAU,CAEZ;IAER;;;OAGG;IACH,aAFU,YAAY,CAEV;IAEZ;;;OAGG;IACH,WAFU,YAAY,CAEZ;IAEV;;;OAGG;IACH,YAFU,UAAU,CAET;IAEX;;OAEG;IACH,UAFU,UAAU,CAEX;IAET;;OAEG;IACH,WAFU,UAAU,CAEV;IAEV;;OAEG;IACH,SAFU,UAAU,CAEZ;IAUR;;;;;;;;;OASG;IACH,kBAJW,MAAM,cACN,MAAM,GACJ,IAAI,CAsChB;IAED;;;;;;OAMG;IACH,eANW,MAAM,SACN,MAAM,UACN,MAAM,QACN,MAAM,GACJ,IAAI,CAMhB;IAED;;;;;;;OAOG;IACH,gBAPW,MAAM,QACN,MAAM,MACN,MAAM,UACN,MAAM,QACN,MAAM,GACJ,IAAI,CAOhB;IAED;;;;;;;;OAQG;IACH,mBAFa,IAAI,CAsChB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,eAHW,MAAM,GACJ,MAAM,CAIlB;CACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { assert } from "
|
|
1
|
+
import { assert } from "../../../assert.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A box standing for a node of the graph.
|
|
@@ -78,6 +78,44 @@ export class LayoutBoxGraph {
|
|
|
78
78
|
*/
|
|
79
79
|
box_kind;
|
|
80
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Links to something that is not in this graph at all, counted per box.
|
|
83
|
+
*
|
|
84
|
+
* A caller laying a drawing out in pieces — a group at a time, each piece entering its parent as
|
|
85
|
+
* a single box — has boxes joined to boxes in another piece. Such a link is not drawn here and
|
|
86
|
+
* cannot constrain anything here, but it is the only thing saying which side of the piece its box
|
|
87
|
+
* belongs near: a box read only from outside has nothing inside pulling it to the right, and
|
|
88
|
+
* without this it settles against whatever it happens to touch internally while the wire leaving
|
|
89
|
+
* it crosses the whole piece to get out.
|
|
90
|
+
*
|
|
91
|
+
* Layering reads them, as degrees — see {@link layout_assign_layers}. Cycle breaking deliberately
|
|
92
|
+
* does not: a box that nothing *here* depends on is a source here, whatever is waiting on it
|
|
93
|
+
* elsewhere.
|
|
94
|
+
*
|
|
95
|
+
* Zero unless the caller says otherwise, which is the whole graph in one piece.
|
|
96
|
+
*
|
|
97
|
+
* @type {Int32Array}
|
|
98
|
+
*/
|
|
99
|
+
box_external_in;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @type {Int32Array}
|
|
103
|
+
*/
|
|
104
|
+
box_external_out;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Extra room this box wants from whatever shares its column, beyond the gap its kind implies.
|
|
108
|
+
*
|
|
109
|
+
* Zero for an ordinary box: the gap between two boxes is what says how far apart they have to be
|
|
110
|
+
* before they read as separate, and it is the same everywhere. It is a box drawn as a *frame*
|
|
111
|
+
* around other boxes that needs more — two frames meeting at a hairline read as one region
|
|
112
|
+
* rather than as two that happen to be adjacent, and the padding inside a frame cannot say so,
|
|
113
|
+
* because it is inside.
|
|
114
|
+
*
|
|
115
|
+
* @type {Float64Array}
|
|
116
|
+
*/
|
|
117
|
+
box_margin;
|
|
118
|
+
|
|
81
119
|
/**
|
|
82
120
|
* @type {number}
|
|
83
121
|
*/
|
|
@@ -148,12 +186,26 @@ export class LayoutBoxGraph {
|
|
|
148
186
|
assert.isNonNegativeInteger(box_count, 'box_count');
|
|
149
187
|
assert.isNonNegativeInteger(link_count, 'link_count');
|
|
150
188
|
|
|
189
|
+
const previous = this.box_count;
|
|
190
|
+
|
|
151
191
|
this.box_x = grow(this.box_x, box_count, Float64Array);
|
|
152
192
|
this.box_y = grow(this.box_y, box_count, Float64Array);
|
|
153
193
|
this.box_w = grow(this.box_w, box_count, Float64Array);
|
|
154
194
|
this.box_h = grow(this.box_h, box_count, Float64Array);
|
|
155
195
|
this.box_layer = grow(this.box_layer, box_count, Int32Array);
|
|
156
196
|
this.box_kind = grow(this.box_kind, box_count, Uint8Array);
|
|
197
|
+
this.box_external_in = grow(this.box_external_in, box_count, Int32Array);
|
|
198
|
+
this.box_external_out = grow(this.box_external_out, box_count, Int32Array);
|
|
199
|
+
this.box_margin = grow(this.box_margin, box_count, Float64Array);
|
|
200
|
+
|
|
201
|
+
// Nothing sets these per box the way `set_box` sets the others, so a box appearing here for
|
|
202
|
+
// the first time — a lane, when the layering stage grows the graph — has to arrive at zero
|
|
203
|
+
// rather than at whatever a longer previous use of the same arrays left behind.
|
|
204
|
+
if (box_count > previous) {
|
|
205
|
+
this.box_external_in.fill(0, previous, box_count);
|
|
206
|
+
this.box_external_out.fill(0, previous, box_count);
|
|
207
|
+
this.box_margin.fill(0, previous, box_count);
|
|
208
|
+
}
|
|
157
209
|
|
|
158
210
|
this.link_from = grow(this.link_from, link_count, Int32Array);
|
|
159
211
|
this.link_to = grow(this.link_to, link_count, Int32Array);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout_assign_coordinates.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/layout_assign_coordinates.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,8EAVW,MAAM,SACN,UAAU,QACV,UAAU,eACV,UAAU,oCAER;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAgC3C"}
|
|
@@ -347,13 +347,13 @@ function align(graph, layer_count, order, rank, layer_start, neighbours, marked,
|
|
|
347
347
|
* Push the blocks of one pass as far towards the top as the boxes below them allow, and read off a
|
|
348
348
|
* coordinate for every box.
|
|
349
349
|
*
|
|
350
|
-
* First place blocks relative to the sink of their class, then solve the separation constraints
|
|
351
|
-
* between classes. A class above another must carry that neighbour's final shift: treating a
|
|
352
|
-
* relative shift as absolute can move the lower class into the upper one. These constraints form
|
|
353
|
-
* a DAG, so a topological pass propagates every shift before the classes depending on it are placed.
|
|
354
|
-
* Both stages take linear time and preserve the port offsets within each block.
|
|
355
|
-
*
|
|
356
|
-
* @see https://arxiv.org/abs/2008.01252 — Brandes, Walter, Zink, correction to shift accumulation
|
|
350
|
+
* First place blocks relative to the sink of their class, then solve the separation constraints
|
|
351
|
+
* between classes. A class above another must carry that neighbour's final shift: treating a
|
|
352
|
+
* relative shift as absolute can move the lower class into the upper one. These constraints form
|
|
353
|
+
* a DAG, so a topological pass propagates every shift before the classes depending on it are placed.
|
|
354
|
+
* Both stages take linear time and preserve the port offsets within each block.
|
|
355
|
+
*
|
|
356
|
+
* @see https://arxiv.org/abs/2008.01252 — Brandes, Walter, Zink, correction to shift accumulation
|
|
357
357
|
*
|
|
358
358
|
* @param {LayoutBoxGraph} graph
|
|
359
359
|
* @param {Int32Array} order
|
|
@@ -394,7 +394,11 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
394
394
|
|
|
395
395
|
const gap = lanes === 2 ? options.wire_gap : lanes === 1 ? lane_to_box : options.node_gap;
|
|
396
396
|
|
|
397
|
-
|
|
397
|
+
// Either box may want more room than its kind implies, and the one that wants more wins: a
|
|
398
|
+
// margin says how much room that box needs to read as its own, not how much to add.
|
|
399
|
+
const margin = Math.max(graph.box_margin[above], graph.box_margin[below]);
|
|
400
|
+
|
|
401
|
+
return graph.box_h[above] + gap + margin;
|
|
398
402
|
}
|
|
399
403
|
|
|
400
404
|
/**
|
|
@@ -430,7 +434,7 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
430
434
|
if (place[u] + need > place[v]) {
|
|
431
435
|
place[v] = place[u] + need;
|
|
432
436
|
}
|
|
433
|
-
}
|
|
437
|
+
}
|
|
434
438
|
}
|
|
435
439
|
|
|
436
440
|
w = next[w];
|
|
@@ -446,62 +450,62 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
446
450
|
const y = new Float64Array(box_count);
|
|
447
451
|
|
|
448
452
|
for (let box = 0; box < box_count; box++) {
|
|
449
|
-
const r = root[box];
|
|
450
|
-
|
|
451
|
-
y[box] = place[r] + offset[box];
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
// Record every boundary between classes, directed from the lower class to the upper one.
|
|
455
|
-
// Use the position of the lower box in `order` as the edge index; its predecessor is `at - 1`.
|
|
456
|
-
// Parallel boundaries matter: different box heights and ports can make either one tighter.
|
|
457
|
-
const first_boundary = new Int32Array(box_count).fill(-1);
|
|
458
|
-
const next_boundary = new Int32Array(box_count);
|
|
459
|
-
const pending = new Int32Array(box_count);
|
|
460
|
-
|
|
461
|
-
for (let layer = 0; layer + 1 < layer_start.length; layer++) {
|
|
462
|
-
for (let at = layer_start[layer] + 1; at < layer_start[layer + 1]; at++) {
|
|
463
|
-
const upper = sink[root[order[at - 1]]];
|
|
464
|
-
const lower = sink[root[order[at]]];
|
|
465
|
-
|
|
466
|
-
if (upper !== lower) {
|
|
467
|
-
next_boundary[at] = first_boundary[lower];
|
|
468
|
-
first_boundary[lower] = at;
|
|
469
|
-
pending[upper]++;
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
const ready = new Int32Array(box_count);
|
|
475
|
-
let end = 0;
|
|
476
|
-
|
|
477
|
-
for (let box = 0; box < box_count; box++) {
|
|
478
|
-
if (root[box] === box && sink[box] === box && pending[box] === 0) {
|
|
479
|
-
shift[box] = 0;
|
|
480
|
-
ready[end++] = box;
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
for (let cursor = 0; cursor < end; cursor++) {
|
|
485
|
-
const lower = ready[cursor];
|
|
486
|
-
|
|
487
|
-
for (let at = first_boundary[lower]; at !== -1; at = next_boundary[at]) {
|
|
488
|
-
const above = order[at - 1];
|
|
489
|
-
const below = order[at];
|
|
490
|
-
const upper = sink[root[above]];
|
|
491
|
-
|
|
492
|
-
// y[above] + shift[upper] + separation <= y[below] + shift[lower]
|
|
493
|
-
const limit = shift[lower] + y[below] - y[above] - separation(above, below);
|
|
494
|
-
|
|
495
|
-
shift[upper] = Math.min(shift[upper], limit);
|
|
496
|
-
|
|
497
|
-
if (--pending[upper] === 0) {
|
|
498
|
-
ready[end++] = upper;
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
for (let box = 0; box < box_count; box++) {
|
|
504
|
-
y[box] += shift[sink[root[box]]];
|
|
453
|
+
const r = root[box];
|
|
454
|
+
|
|
455
|
+
y[box] = place[r] + offset[box];
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// Record every boundary between classes, directed from the lower class to the upper one.
|
|
459
|
+
// Use the position of the lower box in `order` as the edge index; its predecessor is `at - 1`.
|
|
460
|
+
// Parallel boundaries matter: different box heights and ports can make either one tighter.
|
|
461
|
+
const first_boundary = new Int32Array(box_count).fill(-1);
|
|
462
|
+
const next_boundary = new Int32Array(box_count);
|
|
463
|
+
const pending = new Int32Array(box_count);
|
|
464
|
+
|
|
465
|
+
for (let layer = 0; layer + 1 < layer_start.length; layer++) {
|
|
466
|
+
for (let at = layer_start[layer] + 1; at < layer_start[layer + 1]; at++) {
|
|
467
|
+
const upper = sink[root[order[at - 1]]];
|
|
468
|
+
const lower = sink[root[order[at]]];
|
|
469
|
+
|
|
470
|
+
if (upper !== lower) {
|
|
471
|
+
next_boundary[at] = first_boundary[lower];
|
|
472
|
+
first_boundary[lower] = at;
|
|
473
|
+
pending[upper]++;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
const ready = new Int32Array(box_count);
|
|
479
|
+
let end = 0;
|
|
480
|
+
|
|
481
|
+
for (let box = 0; box < box_count; box++) {
|
|
482
|
+
if (root[box] === box && sink[box] === box && pending[box] === 0) {
|
|
483
|
+
shift[box] = 0;
|
|
484
|
+
ready[end++] = box;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
for (let cursor = 0; cursor < end; cursor++) {
|
|
489
|
+
const lower = ready[cursor];
|
|
490
|
+
|
|
491
|
+
for (let at = first_boundary[lower]; at !== -1; at = next_boundary[at]) {
|
|
492
|
+
const above = order[at - 1];
|
|
493
|
+
const below = order[at];
|
|
494
|
+
const upper = sink[root[above]];
|
|
495
|
+
|
|
496
|
+
// y[above] + shift[upper] + separation <= y[below] + shift[lower]
|
|
497
|
+
const limit = shift[lower] + y[below] - y[above] - separation(above, below);
|
|
498
|
+
|
|
499
|
+
shift[upper] = Math.min(shift[upper], limit);
|
|
500
|
+
|
|
501
|
+
if (--pending[upper] === 0) {
|
|
502
|
+
ready[end++] = upper;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
for (let box = 0; box < box_count; box++) {
|
|
508
|
+
y[box] += shift[sink[root[box]]];
|
|
505
509
|
}
|
|
506
510
|
|
|
507
511
|
return y;
|
|
@@ -514,9 +518,9 @@ function compact(graph, order, rank, layer_start, block, options) {
|
|
|
514
518
|
* top edge, the ones biased towards the bottom by their bottom edge — against whichever of them
|
|
515
519
|
* came out shortest. Only then can they be compared box by box, and each box takes the average of
|
|
516
520
|
* the middle two of its four candidates: an average of all four is pulled about by whichever single
|
|
517
|
-
* pass went furthest astray, and the middle two are the ones the passes agree on.
|
|
518
|
-
* Each candidate must already satisfy every separation constraint. Taking the same order
|
|
519
|
-
* statistics for both ends of an inequality preserves it; balancing cannot repair an invalid pass.
|
|
521
|
+
* pass went furthest astray, and the middle two are the ones the passes agree on.
|
|
522
|
+
* Each candidate must already satisfy every separation constraint. Taking the same order
|
|
523
|
+
* statistics for both ends of an inequality preserves it; balancing cannot repair an invalid pass.
|
|
520
524
|
*
|
|
521
525
|
* @param {LayoutBoxGraph} graph mutated: `box_y` is written
|
|
522
526
|
* @param {Float64Array[]} candidates
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout_assign_layers.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/layout_assign_layers.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,sEAPW,UAAU,GAER,MAAM,CAsDlB"}
|
package/src/core/{model/node-graph/visual/layout → graph/layout/layered}/layout_assign_layers.js
RENAMED
|
@@ -113,8 +113,10 @@ function tighten(graph, order, layer_count) {
|
|
|
113
113
|
const out_start = graph.out_offset[box];
|
|
114
114
|
const out_end = graph.out_offset[box + 1];
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
// A link to a box outside this graph pulls as hard as one inside it: which end of its window
|
|
117
|
+
// a box belongs at is exactly the question such a link answers. See `box_external_in`.
|
|
118
|
+
const in_degree = in_end - in_start + graph.box_external_in[box];
|
|
119
|
+
const out_degree = out_end - out_start + graph.box_external_out[box];
|
|
118
120
|
|
|
119
121
|
if (in_degree === 0 && out_degree === 0) {
|
|
120
122
|
continue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout_break_cycles.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/layout_break_cycles.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,4DANa,UAAU,CAmOtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout_insert_lanes.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/layout_insert_lanes.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,yEARW,UAAU,GAGR,MAAM,CA8ElB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout_order_layers.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/layout_order_layers.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wEATW,MAAM,UACN,MAAM,GACJ;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAyJ7F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout_orient_links.d.ts","sourceRoot":"","sources":["../../../../../../src/core/graph/layout/layered/layout_orient_links.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qEANW,UAAU,GACR,MAAM,CAkClB"}
|