@woosh/meep-engine 3.15.0 → 3.16.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.
Files changed (952) hide show
  1. package/editor/Editor.js +7 -7
  2. package/editor/actions/concrete/TransformModifyAction.d.ts +4 -4
  3. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
  4. package/editor/actions/concrete/TransformModifyAction.js +4 -4
  5. package/editor/camera/camera_framing.js +7 -7
  6. package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts +20 -0
  7. package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts.map +1 -0
  8. package/editor/ecs/component/editors/ecs/Transform64Editor.js +70 -0
  9. package/editor/ecs/component/prototypeObjectEditor.js +2 -2
  10. package/editor/ecs/component/registerEngineComponentEditors.js +3 -3
  11. package/editor/particles/effect/ParticleEffectDocument.d.ts +396 -0
  12. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -0
  13. package/editor/particles/effect/ParticleEffectDocument.js +989 -0
  14. package/editor/particles/effect/ParticleReferenceSimulation.d.ts +113 -0
  15. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -0
  16. package/editor/particles/effect/ParticleReferenceSimulation.js +377 -0
  17. package/editor/particles/effect/actions/ParticleGroupDefineAction.d.ts +35 -0
  18. package/editor/particles/effect/actions/ParticleGroupDefineAction.d.ts.map +1 -0
  19. package/editor/particles/effect/actions/ParticleGroupDefineAction.js +45 -0
  20. package/editor/particles/effect/make_starter_particle_effect.d.ts +23 -0
  21. package/editor/particles/effect/make_starter_particle_effect.d.ts.map +1 -0
  22. package/editor/particles/effect/make_starter_particle_effect.js +177 -0
  23. package/editor/persistence/buildNewSceneDataset.d.ts.map +1 -1
  24. package/editor/persistence/buildNewSceneDataset.js +10 -8
  25. package/editor/process/symbolic/AudioEmitterSymbolicDisplay.js +67 -67
  26. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  27. package/editor/process/symbolic/GridPositionSymbolicDisplay.js +6 -6
  28. package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
  29. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +1 -1
  30. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +6 -3
  31. package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.js +6 -6
  32. package/editor/selection/editor_pick.js +130 -130
  33. package/editor/templates/entity_templates.js +7 -7
  34. package/editor/tools/TransformToolV2.d.ts +3 -3
  35. package/editor/tools/TransformToolV2.d.ts.map +1 -1
  36. package/editor/tools/TransformToolV2.js +58 -25
  37. package/editor/tools/paint/TerrainHeightPaintTool.d.ts.map +1 -1
  38. package/editor/tools/paint/TerrainHeightPaintTool.js +11 -9
  39. package/editor/tools/v2/GizmoNode.js +2 -2
  40. package/editor/tools/v2/TransformControls.d.ts +3 -3
  41. package/editor/tools/v2/TransformControls.d.ts.map +1 -1
  42. package/editor/tools/v2/TransformControls.js +1003 -971
  43. package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
  44. package/editor/tools/v2/handle/gizmo_drag_plane.js +6 -1
  45. package/editor/view/ecs/components/common/AutoCanvasView.js +17 -0
  46. package/editor/view/node-graph/NodeGraphEditorView.d.ts +143 -2
  47. package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
  48. package/editor/view/node-graph/NodeGraphEditorView.js +358 -6
  49. package/editor/view/node-graph/NodeGraphMinimapView.d.ts +120 -0
  50. package/editor/view/node-graph/NodeGraphMinimapView.d.ts.map +1 -0
  51. package/editor/view/node-graph/NodeGraphMinimapView.js +859 -0
  52. package/editor/view/node-graph/NodeGraphPaletteView.d.ts +112 -0
  53. package/editor/view/node-graph/NodeGraphPaletteView.d.ts.map +1 -0
  54. package/editor/view/node-graph/NodeGraphPaletteView.js +352 -0
  55. package/editor/view/node-graph/NodeGraphSearchMenuView.d.ts +76 -0
  56. package/editor/view/node-graph/NodeGraphSearchMenuView.d.ts.map +1 -0
  57. package/editor/view/node-graph/NodeGraphSearchMenuView.js +247 -0
  58. package/editor/view/node-graph/NodeGraphView.d.ts +147 -5
  59. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  60. package/editor/view/node-graph/NodeGraphView.js +809 -76
  61. package/editor/view/node-graph/NodeIconView.d.ts +33 -0
  62. package/editor/view/node-graph/NodeIconView.d.ts.map +1 -0
  63. package/editor/view/node-graph/NodeIconView.js +54 -0
  64. package/editor/view/node-graph/NodeView.d.ts +71 -1
  65. package/editor/view/node-graph/NodeView.d.ts.map +1 -1
  66. package/editor/view/node-graph/NodeView.js +318 -17
  67. package/editor/view/node-graph/PortView.d.ts +41 -1
  68. package/editor/view/node-graph/PortView.d.ts.map +1 -1
  69. package/editor/view/node-graph/PortView.js +121 -69
  70. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts +16 -3
  71. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -1
  72. package/editor/view/node-graph/actions/ConnectionDeleteAction.js +29 -3
  73. package/editor/view/node-graph/actions/NodeCreateAction.d.ts +65 -0
  74. package/editor/view/node-graph/actions/NodeCreateAction.d.ts.map +1 -0
  75. package/editor/view/node-graph/actions/NodeCreateAction.js +108 -0
  76. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts +6 -0
  77. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -1
  78. package/editor/view/node-graph/actions/NodeDeleteAction.js +24 -2
  79. package/editor/view/node-graph/connection_wire_geometry.d.ts +34 -0
  80. package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -1
  81. package/editor/view/node-graph/connection_wire_geometry.js +79 -3
  82. package/editor/view/node-graph/node-graph.css +678 -0
  83. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts +37 -0
  84. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -0
  85. package/editor/view/particles/effect/ParticleCodeEditorView.js +479 -0
  86. package/editor/view/particles/effect/ParticleEffectEditorView.d.ts +61 -0
  87. package/editor/view/particles/effect/ParticleEffectEditorView.d.ts.map +1 -0
  88. package/editor/view/particles/effect/ParticleEffectEditorView.js +223 -0
  89. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts +25 -0
  90. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -0
  91. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +606 -0
  92. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +156 -0
  93. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -0
  94. package/editor/view/particles/effect/ParticleGraphEditorView.js +1636 -0
  95. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts +22 -0
  96. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -0
  97. package/editor/view/particles/effect/ParticleNodeParametersView.js +520 -0
  98. package/editor/view/particles/effect/ParticlePreviewView.d.ts +52 -0
  99. package/editor/view/particles/effect/ParticlePreviewView.d.ts.map +1 -0
  100. package/editor/view/particles/effect/ParticlePreviewView.js +533 -0
  101. package/editor/view/particles/effect/particle-editor.css +556 -0
  102. package/editor/view/prepareMeshLibrary.d.ts.map +1 -1
  103. package/editor/view/prepareMeshLibrary.js +8 -4
  104. package/package.json +1 -1
  105. package/samples/engine/first-scene/main.js +152 -152
  106. package/samples/generation/generators/mir_generator_place_bases.js +3 -3
  107. package/src/core/assert.d.ts +28 -24
  108. package/src/core/assert.d.ts.map +1 -1
  109. package/src/core/assert.js +34 -26
  110. package/src/core/geom/3d/shape/PosedShape3D.d.ts +17 -0
  111. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  112. package/src/core/geom/3d/shape/PosedShape3D.js +34 -2
  113. package/src/core/graph/format/graphviz/graphviz_escape_html_label.d.ts +17 -0
  114. package/src/core/graph/format/graphviz/graphviz_escape_html_label.d.ts.map +1 -0
  115. package/src/core/graph/format/graphviz/graphviz_escape_html_label.js +25 -0
  116. package/src/core/graph/format/graphviz/graphviz_escape_quoted.d.ts +16 -0
  117. package/src/core/graph/format/graphviz/graphviz_escape_quoted.d.ts.map +1 -0
  118. package/src/core/graph/format/graphviz/graphviz_escape_quoted.js +24 -0
  119. package/src/core/model/node-graph/NodeGraph.d.ts +12 -0
  120. package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
  121. package/src/core/model/node-graph/NodeGraph.js +21 -6
  122. package/src/core/model/node-graph/node/NodeDescription.d.ts +36 -0
  123. package/src/core/model/node-graph/node/NodeDescription.d.ts.map +1 -1
  124. package/src/core/model/node-graph/node/NodeDescription.js +41 -0
  125. package/src/core/model/node-graph/visual/ConnectionVisualData.d.ts +119 -0
  126. package/src/core/model/node-graph/visual/ConnectionVisualData.d.ts.map +1 -0
  127. package/src/core/model/node-graph/visual/ConnectionVisualData.js +317 -0
  128. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.d.ts +4 -0
  129. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.d.ts.map +1 -1
  130. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.js +125 -22
  131. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +91 -2
  132. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
  133. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +164 -113
  134. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts +162 -0
  135. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts.map +1 -0
  136. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.js +288 -0
  137. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +109 -0
  138. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -0
  139. package/src/core/model/node-graph/visual/layout/LayoutProblem.js +141 -0
  140. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +149 -0
  141. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -0
  142. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +175 -0
  143. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +137 -0
  144. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -0
  145. package/src/core/model/node-graph/visual/layout/RouteGrid.js +242 -0
  146. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +114 -0
  147. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -0
  148. package/src/core/model/node-graph/visual/layout/RouteSearch.js +300 -0
  149. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +86 -0
  150. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -0
  151. package/src/core/model/node-graph/visual/layout/RouteSet.js +168 -0
  152. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts +48 -0
  153. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -0
  154. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +555 -0
  155. package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts +34 -0
  156. package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts.map +1 -0
  157. package/src/core/model/node-graph/visual/layout/layout_assign_layers.js +202 -0
  158. package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts +34 -0
  159. package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts.map +1 -0
  160. package/src/core/model/node-graph/visual/layout/layout_break_cycles.js +254 -0
  161. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts +29 -0
  162. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -0
  163. package/src/core/model/node-graph/visual/layout/layout_build_problem.js +184 -0
  164. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +29 -0
  165. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -0
  166. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +95 -0
  167. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +56 -0
  168. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -0
  169. package/src/core/model/node-graph/visual/layout/layout_node_graph.js +131 -0
  170. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +36 -0
  171. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -0
  172. package/src/core/model/node-graph/visual/layout/layout_order_layers.js +415 -0
  173. package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts +21 -0
  174. package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts.map +1 -0
  175. package/src/core/model/node-graph/visual/layout/layout_orient_links.js +49 -0
  176. package/src/core/model/node-graph/visual/layout/route_connections.d.ts +41 -0
  177. package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -0
  178. package/src/core/model/node-graph/visual/layout/route_connections.js +309 -0
  179. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +33 -0
  180. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -0
  181. package/src/core/model/node-graph/visual/layout/route_grid_build.js +237 -0
  182. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +25 -0
  183. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -0
  184. package/src/core/model/node-graph/visual/layout/route_nudge.js +220 -0
  185. package/src/core/model/node-graph/visual/layout/route_to_spline.d.ts +29 -0
  186. package/src/core/model/node-graph/visual/layout/route_to_spline.d.ts.map +1 -0
  187. package/src/core/model/node-graph/visual/layout/route_to_spline.js +120 -0
  188. package/src/engine/EngineHarness.d.ts.map +1 -1
  189. package/src/engine/EngineHarness.js +593 -586
  190. package/src/engine/EntityCreator.js +116 -116
  191. package/src/engine/achievements/AchievementManager.js +437 -437
  192. package/src/engine/animation/AnimatedActions.js +111 -111
  193. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  194. package/src/engine/animation/AnimationUtils.js +246 -234
  195. package/src/engine/animation/Animations.d.ts +1 -0
  196. package/src/engine/animation/Animations.d.ts.map +1 -1
  197. package/src/engine/animation/Animations.js +13 -5
  198. package/src/engine/animation/clip/bind_property_writer.d.ts.map +1 -1
  199. package/src/engine/animation/clip/bind_property_writer.js +12 -5
  200. package/src/engine/animation/curve/binding/BoundTransform64Writer.d.ts +29 -0
  201. package/src/engine/animation/curve/binding/BoundTransform64Writer.d.ts.map +1 -0
  202. package/src/engine/animation/curve/binding/BoundTransform64Writer.js +80 -0
  203. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +4 -4
  204. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +1 -1
  205. package/src/engine/asset/loaders/gltf_test_fixtures.js +5 -4
  206. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +12 -12
  207. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  208. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +77 -44
  209. package/src/engine/control/first-person/abilities/LedgeGrab.js +1 -1
  210. package/src/engine/control/first-person/abilities/Mantle.js +1 -1
  211. package/src/engine/control/first-person/abilities/Slide.js +1 -1
  212. package/src/engine/control/first-person/collision/KinematicMover.d.ts +5 -9
  213. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  214. package/src/engine/control/first-person/collision/KinematicMover.js +59 -29
  215. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +2 -2
  216. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  217. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +7 -7
  218. package/src/engine/ecs/EventType.d.ts +1 -0
  219. package/src/engine/ecs/EventType.js +35 -10
  220. package/src/engine/ecs/dynamic_actions/actions/definition/SendRequestActionDescription.d.ts.map +1 -1
  221. package/src/engine/ecs/dynamic_actions/actions/definition/SendRequestActionDescription.js +12 -4
  222. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts +4 -4
  223. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  224. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +10 -11
  225. package/src/engine/ecs/grid/pick.js +1 -1
  226. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +1 -1
  227. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +13 -13
  228. package/src/engine/ecs/gui/hud/testHudEdgeStick.js +3 -3
  229. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +10 -10
  230. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
  231. package/src/engine/ecs/ik/InverseKinematicsSystem.js +8 -8
  232. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  233. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +120 -97
  234. package/src/engine/ecs/ik/ik_bone_chain.d.ts +16 -5
  235. package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
  236. package/src/engine/ecs/ik/ik_bone_chain.js +16 -4
  237. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +7 -3
  238. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -1
  239. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +20 -16
  240. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +18 -0
  241. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -0
  242. package/src/engine/ecs/ik/ik_write_local_rotation.js +30 -0
  243. package/src/engine/ecs/parent/EntityNode.d.ts +24 -6
  244. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  245. package/src/engine/ecs/parent/EntityNode.js +54 -42
  246. package/src/engine/ecs/parent/EntityNodeFlags.d.ts +0 -1
  247. package/src/engine/ecs/parent/EntityNodeFlags.js +7 -8
  248. package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
  249. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  250. package/src/engine/ecs/speaker/VoiceSystem.js +4 -4
  251. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  252. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +2 -0
  253. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +5 -2
  254. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  255. package/src/engine/ecs/terrain/ecs/Terrain.js +7 -4
  256. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +3 -3
  257. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts +7 -7
  258. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  259. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +84 -36
  260. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +513 -0
  261. package/src/engine/ecs/transform/Transform64.d.ts +48 -11
  262. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  263. package/src/engine/ecs/transform/Transform64.js +54 -15
  264. package/src/engine/ecs/transform/Transform64SerializationAdapter.d.ts +37 -0
  265. package/src/engine/ecs/transform/Transform64SerializationAdapter.d.ts.map +1 -0
  266. package/src/engine/ecs/transform/Transform64SerializationAdapter.js +75 -0
  267. package/src/engine/ecs/transform/__probe.d.ts +4 -0
  268. package/src/engine/ecs/transform/__probe.d.ts.map +1 -0
  269. package/src/engine/ecs/transform/t64_allocation_probe.d.ts +31 -0
  270. package/src/engine/ecs/transform/t64_allocation_probe.d.ts.map +1 -0
  271. package/src/engine/ecs/transform/t64_allocation_probe.js +78 -0
  272. package/src/engine/ecs/transform/t64_announce_change.d.ts +33 -0
  273. package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -0
  274. package/src/engine/ecs/transform/t64_announce_change.js +39 -0
  275. package/src/engine/ecs/transform/t64_equals_components.d.ts +30 -0
  276. package/src/engine/ecs/transform/t64_equals_components.d.ts.map +1 -0
  277. package/src/engine/ecs/transform/t64_equals_components.js +59 -0
  278. package/src/engine/ecs/transform/t64_read_rotation.d.ts +13 -0
  279. package/src/engine/ecs/transform/t64_read_rotation.d.ts.map +1 -0
  280. package/src/engine/ecs/transform/t64_read_rotation.js +16 -0
  281. package/src/engine/ecs/transform/t64_read_translation.d.ts +14 -0
  282. package/src/engine/ecs/transform/t64_read_translation.d.ts.map +1 -0
  283. package/src/engine/ecs/transform/t64_read_translation.js +17 -0
  284. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +5 -5
  285. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  286. package/src/engine/ecs/transform-attachment/TransformAttachment.js +4 -4
  287. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +10 -10
  288. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  289. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +71 -20
  290. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  291. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
  292. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +5 -4
  293. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  294. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +8 -3
  295. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +6 -6
  296. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  297. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +25 -13
  298. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLanderSystem.js +1 -1
  299. package/src/engine/graphics/ecs/mesh/setMesh.js +2 -2
  300. package/src/engine/graphics/ecs/path/entity/EntityPath.d.ts.map +1 -1
  301. package/src/engine/graphics/ecs/path/entity/EntityPath.js +21 -7
  302. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts +4 -4
  303. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts.map +1 -1
  304. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.js +4 -4
  305. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +2 -2
  306. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  307. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +145 -135
  308. package/src/engine/graphics/geometry/MikkT/Build4RuleGroups.js +2 -2
  309. package/src/engine/graphics/geometry/MikkT/DegenEpilogue.js +1 -1
  310. package/src/engine/graphics/geometry/MikkT/DegenPrologue.js +1 -1
  311. package/src/engine/graphics/geometry/MikkT/EvalTspace.js +1 -1
  312. package/src/engine/graphics/geometry/MikkT/GenerateTSpaces.js +3 -3
  313. package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +659 -0
  314. package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +21 -5
  315. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts +45 -0
  316. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  317. package/src/engine/graphics/render/frame_graph/FrameGraph.js +282 -60
  318. package/src/engine/graphics/render/frame_graph/FramePassBuilder.d.ts.map +1 -1
  319. package/src/engine/graphics/render/frame_graph/FramePassBuilder.js +20 -9
  320. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts +12 -0
  321. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts.map +1 -1
  322. package/src/engine/graphics/render/frame_graph/FramePassNode.js +13 -0
  323. package/src/engine/graphics/render/frame_graph/FramePassResources.d.ts.map +1 -1
  324. package/src/engine/graphics/render/frame_graph/FramePassResources.js +5 -0
  325. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts +19 -1
  326. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts.map +1 -1
  327. package/src/engine/graphics/render/frame_graph/ResourceEntry.js +23 -1
  328. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.d.ts +15 -1
  329. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.d.ts.map +1 -1
  330. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.js +33 -16
  331. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.d.ts.map +1 -1
  332. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.js +19 -1
  333. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +6 -6
  334. package/src/engine/graphics3/CameraSystem.d.ts +6 -6
  335. package/src/engine/graphics3/CameraSystem.d.ts.map +1 -1
  336. package/src/engine/graphics3/CameraSystem.js +170 -170
  337. package/src/engine/graphics3/DecalSystem.d.ts +6 -6
  338. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  339. package/src/engine/graphics3/DecalSystem.js +449 -449
  340. package/src/engine/graphics3/LightSystem.d.ts +6 -6
  341. package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
  342. package/src/engine/graphics3/LightSystem.js +234 -221
  343. package/src/engine/graphics3/MeshSystem.d.ts +6 -6
  344. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
  345. package/src/engine/graphics3/MeshSystem.js +53 -22
  346. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +20 -15
  347. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
  348. package/src/engine/graphics3/ParticipatingMediaSystem.js +198 -184
  349. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +6 -6
  350. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
  351. package/src/engine/graphics3/ParticleEmitterSystem.js +310 -289
  352. package/src/engine/graphics3/PickingSystem.d.ts +6 -6
  353. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
  354. package/src/engine/graphics3/PickingSystem.js +273 -273
  355. package/src/engine/graphics3/ShadedGeometrySystem.d.ts +6 -6
  356. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
  357. package/src/engine/graphics3/ShadedGeometrySystem.js +180 -169
  358. package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
  359. package/src/engine/graphics3/TerrainSystem.js +565 -566
  360. package/src/engine/graphics3/Trail3DSystem.d.ts +6 -6
  361. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
  362. package/src/engine/graphics3/Trail3DSystem.js +221 -221
  363. package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
  364. package/src/engine/graphics3/camera_sync_from_transform.d.ts.map +1 -1
  365. package/src/engine/graphics3/camera_sync_from_transform.js +2 -1
  366. package/src/engine/graphics3/debug/gizmo_view_from_camera.js +4 -4
  367. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +6 -0
  368. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +1 -1
  369. package/src/engine/graphics3/particles/GPUParticularRenderer.js +82 -53
  370. package/src/engine/graphics3/particles/particle_gpu_records.d.ts +12 -8
  371. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
  372. package/src/engine/graphics3/particles/particle_gpu_records.js +53 -45
  373. package/src/engine/graphics3/preview/make_model_preview_scene.js +1 -1
  374. package/src/engine/graphics3/shade_camera_projection_ray.js +4 -4
  375. package/src/engine/graphics3/shade_node_to_entity_composition.d.ts.map +1 -1
  376. package/src/engine/graphics3/shade_node_to_entity_composition.js +88 -84
  377. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts +7 -7
  378. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
  379. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +8 -8
  380. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +9 -8
  381. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
  382. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +29 -8
  383. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  384. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.d.ts.map +1 -1
  385. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +35 -21
  386. package/src/engine/intelligence/behavior/util/RotationBehavior.js +5 -5
  387. package/src/engine/intelligence/mcts/StateNode.js +1 -1
  388. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts +7 -7
  389. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
  390. package/src/engine/interpolation/TransformPoseSerializationAdapter.js +14 -15
  391. package/src/engine/interpolation/pose_interpoland.d.ts +2 -2
  392. package/src/engine/interpolation/pose_interpoland.js +4 -4
  393. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts +4 -4
  394. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  395. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +39 -14
  396. package/src/engine/network/adapters/TransformReplicationAdapter.d.ts +7 -7
  397. package/src/engine/network/adapters/TransformReplicationAdapter.d.ts.map +1 -1
  398. package/src/engine/network/adapters/TransformReplicationAdapter.js +19 -20
  399. package/src/engine/network/replication/Replicator.d.ts +5 -3
  400. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  401. package/src/engine/network/replication/Replicator.js +65 -16
  402. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +3 -3
  403. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  404. package/src/engine/physics/ccd/linear_sweep.js +9 -3
  405. package/src/engine/physics/constraint/solve_constraints.js +10 -10
  406. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +8 -8
  407. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -1
  408. package/src/engine/physics/ecs/ColliderObserverSystem.js +6 -6
  409. package/src/engine/physics/ecs/PhysicsSystem.d.ts +22 -32
  410. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  411. package/src/engine/physics/ecs/PhysicsSystem.js +2337 -2310
  412. package/src/engine/physics/ecs/find_non_finite_physics_state.js +6 -6
  413. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +7 -7
  414. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  415. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +16 -8
  416. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +4 -4
  417. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  418. package/src/engine/physics/fluid/ecs/FluidSystem.js +6 -6
  419. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +2 -2
  420. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts.map +1 -1
  421. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +4 -4
  422. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +7 -7
  423. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +4 -4
  424. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +7 -7
  425. package/src/engine/physics/inertia/world_inverse_inertia.js +1 -1
  426. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  427. package/src/engine/physics/integration/integrate_position.js +13 -12
  428. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
  429. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +23 -5
  430. package/src/engine/physics/narrowphase/compute_penetration.js +18 -14
  431. package/src/engine/physics/narrowphase/convex_convex_manifold.js +2 -2
  432. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +9 -9
  433. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  434. package/src/engine/physics/narrowphase/narrowphase_step.js +95 -68
  435. package/src/engine/physics/narrowphase/refine_ray_concave.js +1 -1
  436. package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -3
  437. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  438. package/src/engine/physics/queries/overlap_shape.js +19 -7
  439. package/src/engine/physics/queries/raycast.js +3 -3
  440. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  441. package/src/engine/physics/queries/shape_cast.js +628 -620
  442. package/src/engine/physics/solver/solve_contacts.js +10 -10
  443. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +6 -5
  444. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  445. package/src/engine/physics/vehicle/RaycastVehicle.js +10 -5
  446. package/src/engine/sound/ecs/SoundListenerSystem.d.ts +16 -4
  447. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  448. package/src/engine/sound/ecs/SoundListenerSystem.js +70 -11
  449. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +7 -7
  450. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  451. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +343 -338
  452. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +2 -2
  453. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  454. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +356 -345
  455. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +23 -2
  456. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
  457. package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +174 -140
  458. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +6 -6
  459. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
  460. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +185 -184
  461. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +1 -1
  462. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts +2 -1
  463. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts.map +1 -1
  464. package/src/engine/sound/simulation/core/AcousticRegionIndex.js +4 -3
  465. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts +3 -2
  466. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts.map +1 -1
  467. package/src/engine/sound/simulation/core/AcousticVolumeRegion.js +6 -4
  468. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +10 -6
  469. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
  470. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +32 -7
  471. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts +7 -7
  472. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts.map +1 -1
  473. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.js +6 -6
  474. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  475. package/src/engine/sound/sopra/runtime/EventInstance.js +8 -2
  476. package/src/format/scene/gltf/gltf_component_type.d.ts.map +1 -1
  477. package/src/format/scene/gltf/gltf_component_type.js +3 -1
  478. package/src/format/texture/ktx2/ktx2_read.d.ts.map +1 -1
  479. package/src/format/texture/ktx2/ktx2_read.js +2 -1
  480. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  481. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +8 -1
  482. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +4 -4
  483. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  484. package/src/generation/markers/GridCellActionPlaceMarker.js +16 -6
  485. package/src/generation/markers/MarkerNode.d.ts +3 -3
  486. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  487. package/src/generation/markers/MarkerNode.js +3 -3
  488. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts +4 -4
  489. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts.map +1 -1
  490. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +7 -7
  491. package/src/generation/markers/actions/MarkerNodeActionImaginary.d.ts.map +1 -1
  492. package/src/generation/markers/actions/MarkerNodeActionImaginary.js +20 -2
  493. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  494. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  495. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +13 -3
  496. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts.map +1 -1
  497. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.js +11 -1
  498. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  499. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +8 -4
  500. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  501. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +13 -5
  502. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  503. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +8 -2
  504. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  505. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +16 -2
  506. package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
  507. package/src/shade/device/graph/BufferResourceDescriptor.js +193 -184
  508. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  509. package/src/shade/device/graph/TextureResourceDescriptor.js +12 -0
  510. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  511. package/src/shade/device/mock/SoftwareGPUDevice.js +8 -0
  512. package/src/shade/playground/avboit/main.js +3 -3
  513. package/src/shade/playground/basis_textures/main.js +1 -1
  514. package/src/shade/playground/ground_seam/main.js +1 -1
  515. package/src/shade/playground/particle_editor/README.md +175 -0
  516. package/src/shade/playground/particle_editor/index.html +76 -0
  517. package/src/shade/playground/particle_editor/main.d.ts +2 -0
  518. package/src/shade/playground/particle_editor/main.d.ts.map +1 -0
  519. package/src/shade/playground/particle_editor/main.js +139 -0
  520. package/src/shade/playground/particle_system/README.md +92 -62
  521. package/src/shade/playground/particle_system/index.html +67 -21
  522. package/src/shade/playground/particle_system/main.js +247 -102
  523. package/src/shade/{renderer/particles → playground/particle_system}/particle_prototype.d.ts +21 -18
  524. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -0
  525. package/src/shade/{renderer/particles → playground/particle_system}/particle_prototype.js +197 -181
  526. package/src/shade/playground/particle_system/particle_scene.d.ts +136 -20
  527. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  528. package/src/shade/playground/particle_system/particle_scene.js +487 -670
  529. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
  530. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
  531. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +2 -1
  532. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  533. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +2 -1
  534. package/src/shade/playground/sponza_path_trace/main.js +1 -1
  535. package/src/shade/playground/volumetrics_froxel/main.js +917 -917
  536. package/src/shade/playground/volumetrics_froxel/measure.js +559 -559
  537. package/src/shade/renderer/Renderer.d.ts +28 -0
  538. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  539. package/src/shade/renderer/Renderer.js +140 -8
  540. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  541. package/src/shade/renderer/atmosphere/GPUSky.js +4 -2
  542. package/src/shade/renderer/buffer/graph_read_buffer.d.ts.map +1 -1
  543. package/src/shade/renderer/buffer/graph_read_buffer.js +8 -1
  544. package/src/shade/renderer/buffer/table/GPUTypedTable.js +1 -1
  545. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +30 -0
  546. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  547. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +84 -0
  548. package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts +27 -0
  549. package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts.map +1 -0
  550. package/src/shade/renderer/buffer/table/gpu_database_words.d.ts +24 -0
  551. package/src/shade/renderer/buffer/table/gpu_database_words.d.ts.map +1 -0
  552. package/src/shade/renderer/buffer/table/gpu_database_words.js +92 -0
  553. package/src/shade/renderer/camera/Camera.d.ts +2 -2
  554. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  555. package/src/shade/renderer/camera/Camera.js +11 -5
  556. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  557. package/src/shade/renderer/camera/GPUCameraContext.js +2 -1
  558. package/src/shade/renderer/camera/OrbitalCameraController.d.ts +3 -3
  559. package/src/shade/renderer/camera/OrbitalCameraController.d.ts.map +1 -1
  560. package/src/shade/renderer/camera/OrbitalCameraController.js +31 -16
  561. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +2 -2
  562. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  563. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +4 -3
  564. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +10 -5
  565. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
  566. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +8 -4
  567. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  568. package/src/shade/renderer/extension/FrameContext.js +5 -0
  569. package/src/shade/renderer/extension/FrameRecord.d.ts +16 -0
  570. package/src/shade/renderer/extension/FrameRecord.d.ts.map +1 -1
  571. package/src/shade/renderer/extension/FrameRecord.js +31 -0
  572. package/src/shade/renderer/extension/GBufferTextures.d.ts +11 -0
  573. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  574. package/src/shade/renderer/extension/GBufferTextures.js +14 -0
  575. package/src/shade/renderer/geometry/attribute/gpu_vertex_buffer_layout_from_spec.js +1 -1
  576. package/src/shade/renderer/geometry/util/geometry_stripify.js +6 -6
  577. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +8 -8
  578. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
  579. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +14 -5
  580. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.d.ts.map +1 -1
  581. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +17 -9
  582. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts +2 -1
  583. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts.map +1 -1
  584. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.js +4 -1
  585. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts +2 -1
  586. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  587. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +11 -1
  588. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.d.ts +1 -1
  589. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.d.ts.map +1 -1
  590. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.js +4 -2
  591. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  592. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +5 -1
  593. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  594. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +35 -11
  595. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  596. package/src/shade/renderer/particles/DESIGN.md +271 -112
  597. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +251 -86
  598. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  599. package/src/shade/renderer/particles/GPUParticleSystem.js +822 -146
  600. package/src/shade/renderer/particles/ParticleConstants.d.ts +96 -3
  601. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  602. package/src/shade/renderer/particles/ParticleConstants.js +103 -4
  603. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +5 -4
  604. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  605. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +11 -15
  606. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts +2 -2
  607. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -1
  608. package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +20 -15
  609. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +7 -8
  610. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  611. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +7 -17
  612. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts +56 -0
  613. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts.map +1 -0
  614. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.js +68 -0
  615. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +39 -0
  616. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -0
  617. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +52 -0
  618. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +83 -0
  619. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -0
  620. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +166 -0
  621. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts +21 -5
  622. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts.map +1 -1
  623. package/src/shade/renderer/particles/data/chunk_particle_emitter.js +44 -85
  624. package/src/shade/renderer/particles/data/particle_header.d.ts +62 -0
  625. package/src/shade/renderer/particles/data/particle_header.d.ts.map +1 -0
  626. package/src/shade/renderer/particles/data/particle_header.js +103 -0
  627. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +179 -0
  628. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -0
  629. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -0
  630. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +120 -1
  631. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
  632. package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +90 -1
  633. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts +283 -0
  634. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -0
  635. package/src/shade/renderer/particles/graph/ParticleNodeGroup.js +419 -0
  636. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +44 -2
  637. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  638. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +476 -40
  639. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +188 -0
  640. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -0
  641. package/src/shade/renderer/particles/graph/ParticleValueType.js +287 -0
  642. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +16 -9
  643. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
  644. package/src/shade/renderer/particles/graph/compile_particle_graph.js +464 -205
  645. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts +11 -0
  646. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -0
  647. package/src/shade/renderer/particles/graph/flatten_particle_graph.js +213 -0
  648. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts +27 -0
  649. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -0
  650. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +75 -0
  651. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +83 -0
  652. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -0
  653. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +319 -0
  654. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts +22 -0
  655. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -0
  656. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +517 -0
  657. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.d.ts +70 -0
  658. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.d.ts.map +1 -0
  659. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.js +161 -0
  660. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts +8 -0
  661. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -0
  662. package/src/shade/renderer/particles/graph/groups/simplex_reference.js +159 -0
  663. package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts +88 -0
  664. package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts.map +1 -0
  665. package/src/shade/renderer/particles/graph/infer_particle_graph_types.js +234 -0
  666. package/src/shade/renderer/particles/graph/make_particle_group.d.ts +98 -0
  667. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -0
  668. package/src/shade/renderer/particles/graph/make_particle_group.js +427 -0
  669. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +11 -4
  670. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
  671. package/src/shade/renderer/particles/graph/particle_graph_authoring.js +121 -108
  672. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +38 -0
  673. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -0
  674. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +25 -0
  675. package/src/shade/renderer/particles/graph/particle_graph_distributions.d.ts +29 -0
  676. package/src/shade/renderer/particles/graph/particle_graph_distributions.d.ts.map +1 -0
  677. package/src/shade/renderer/particles/graph/particle_graph_distributions.js +170 -0
  678. package/src/shade/renderer/particles/graph/particle_graph_json.d.ts +87 -0
  679. package/src/shade/renderer/particles/graph/particle_graph_json.d.ts.map +1 -0
  680. package/src/shade/renderer/particles/graph/particle_graph_json.js +196 -0
  681. package/src/shade/renderer/particles/graph/particle_group_json.d.ts +86 -0
  682. package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -0
  683. package/src/shade/renderer/particles/graph/particle_group_json.js +182 -0
  684. package/src/shade/renderer/particles/graph/particle_group_library.d.ts +33 -0
  685. package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -0
  686. package/src/shade/renderer/particles/graph/particle_group_library.js +75 -0
  687. package/src/shade/renderer/particles/graph/particle_node_library.d.ts +37 -0
  688. package/src/shade/renderer/particles/graph/particle_node_library.d.ts.map +1 -0
  689. package/src/shade/renderer/particles/graph/particle_node_library.js +64 -0
  690. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +146 -0
  691. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -0
  692. package/src/shade/renderer/particles/graph/particle_node_parameters.js +234 -0
  693. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts +30 -0
  694. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -0
  695. package/src/shade/renderer/particles/graph/particle_node_presentation.js +286 -0
  696. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +66 -0
  697. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -0
  698. package/src/shade/renderer/particles/graph/validate_particle_graph.js +439 -0
  699. package/src/shade/renderer/particles/graph_particles.d.ts +143 -68
  700. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  701. package/src/shade/renderer/particles/graph_particles.js +424 -71
  702. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +107 -0
  703. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -0
  704. package/src/shade/renderer/particles/graph_particles_avboit.js +312 -0
  705. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +41 -8
  706. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  707. package/src/shade/renderer/particles/isa/InstructionStream.js +111 -33
  708. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts +13 -10
  709. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts.map +1 -1
  710. package/src/shade/renderer/particles/isa/ParticleAssembler.js +30 -26
  711. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +27 -15
  712. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
  713. package/src/shade/renderer/particles/isa/ParticleProgram.js +139 -34
  714. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +117 -9
  715. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  716. package/src/shade/renderer/particles/isa/ParticleVMISA.js +296 -37
  717. package/src/shade/renderer/particles/isa/particle_assembly.d.ts +149 -0
  718. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -0
  719. package/src/shade/renderer/particles/isa/particle_assembly.js +999 -0
  720. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +25 -3
  721. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  722. package/src/shade/renderer/particles/layout/ParticleLayout.js +33 -5
  723. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +160 -0
  724. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -0
  725. package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +478 -0
  726. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +291 -0
  727. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -0
  728. package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +647 -0
  729. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +95 -0
  730. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -0
  731. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +213 -0
  732. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +16 -0
  733. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -0
  734. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +223 -0
  735. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +121 -0
  736. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -0
  737. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +206 -0
  738. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +11 -0
  739. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -0
  740. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +197 -0
  741. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts +4 -0
  742. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -0
  743. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.js +51 -0
  744. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +4 -0
  745. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -0
  746. package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +561 -0
  747. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts +4 -0
  748. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -0
  749. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +72 -0
  750. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts +4 -0
  751. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -0
  752. package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +86 -0
  753. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts +4 -0
  754. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -0
  755. package/src/shade/renderer/particles/optimizer/pass_peephole.js +271 -0
  756. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts +4 -0
  757. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -0
  758. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +268 -0
  759. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts +4 -0
  760. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -0
  761. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +151 -0
  762. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +131 -0
  763. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -0
  764. package/src/shade/renderer/particles/particle_test_fixtures.js +203 -0
  765. package/src/shade/renderer/particles/runtime/Emitter.d.ts +219 -0
  766. package/src/shade/renderer/particles/runtime/Emitter.d.ts.map +1 -0
  767. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +128 -60
  768. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  769. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +286 -117
  770. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +264 -0
  771. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -0
  772. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +404 -0
  773. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +49 -15
  774. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +1 -1
  775. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +51 -18
  776. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
  777. package/src/shade/renderer/particles/runtime/ProgramArena.js +72 -32
  778. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +4 -4
  779. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  780. package/src/shade/renderer/particles/runtime/create_particle_effect.js +4 -4
  781. package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts +15 -0
  782. package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts.map +1 -0
  783. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts +17 -0
  784. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -0
  785. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +75 -0
  786. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +20 -0
  787. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -0
  788. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +94 -0
  789. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +15 -5
  790. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +1 -1
  791. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +1 -2
  792. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +1 -1
  793. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +1 -2
  794. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +11 -0
  795. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +1 -0
  796. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +13 -0
  797. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.d.ts +17 -0
  798. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.d.ts.map +1 -0
  799. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.js +22 -0
  800. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts +14 -0
  801. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts.map +1 -0
  802. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +23 -0
  803. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +1 -1
  804. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.d.ts +18 -0
  805. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.d.ts.map +1 -0
  806. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.js +24 -0
  807. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts +26 -0
  808. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts.map +1 -0
  809. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.js +59 -0
  810. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +14 -0
  811. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -0
  812. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +153 -0
  813. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts +3 -0
  814. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -0
  815. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +124 -0
  816. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts +19 -0
  817. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -0
  818. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +147 -0
  819. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +18 -8
  820. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  821. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +72 -37
  822. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts +5 -0
  823. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -0
  824. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +216 -0
  825. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  826. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +7 -3
  827. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  828. package/src/shade/renderer/particles/shaders/shader_particle_render.js +132 -197
  829. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  830. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +78 -24
  831. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.d.ts +26 -0
  832. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.d.ts.map +1 -0
  833. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.js +66 -0
  834. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +1 -1
  835. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  836. package/src/shade/renderer/particles/sort/shader_particle_sort.js +21 -36
  837. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +2 -2
  838. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  839. package/src/shade/renderer/particles/vm/ParticleVMReference.js +100 -90
  840. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  841. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +270 -138
  842. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +1 -2
  843. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
  844. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +0 -3
  845. package/src/shade/renderer/postprocess/dof/gather/DepthOfFieldU.js +1 -1
  846. package/src/shade/renderer/postprocess/dof/raymarch/DepthOfField.js +1 -1
  847. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  848. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  849. package/src/shade/renderer/postprocess/nss/NSS.js +3 -2
  850. package/src/shade/renderer/postprocess/nss/generate_NSS_WEIGHTS_ACTUAL.js +3 -2
  851. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +87 -0
  852. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -0
  853. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +61 -0
  854. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +179 -0
  855. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +27 -2
  856. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts +9 -2
  857. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  858. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +12 -3
  859. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts +18 -0
  860. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts.map +1 -0
  861. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js +58 -0
  862. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +25 -1
  863. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  864. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +69 -10
  865. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -1
  866. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +10 -4
  867. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
  868. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +4 -39
  869. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +7 -2
  870. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  871. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +16 -2
  872. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +3 -3
  873. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
  874. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +29 -23
  875. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts +2 -2
  876. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts.map +1 -1
  877. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js +3 -3
  878. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +4 -4
  879. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
  880. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +2 -2
  881. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.d.ts +2 -2
  882. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.d.ts.map +1 -1
  883. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.js +2 -2
  884. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.d.ts +7 -7
  885. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.d.ts.map +1 -1
  886. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.js +79 -71
  887. package/src/shade/renderer/shader/chunk/math/chunk_lower_bound_branchless.d.ts.map +1 -1
  888. package/src/shade/renderer/shader/chunk/math/chunk_lower_bound_branchless.js +3 -1
  889. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.d.ts +13 -3
  890. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.d.ts.map +1 -1
  891. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.js +15 -5
  892. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.d.ts +8 -0
  893. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.d.ts.map +1 -1
  894. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.js +15 -5
  895. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.d.ts +7 -0
  896. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.d.ts.map +1 -1
  897. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.js +17 -7
  898. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.d.ts +17 -0
  899. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.d.ts.map +1 -0
  900. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.js +26 -0
  901. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.d.ts +15 -0
  902. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.d.ts.map +1 -0
  903. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.js +26 -0
  904. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  905. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +8 -2
  906. package/src/shade/renderer/shadow/map/PointLightShadowmap.d.ts.map +1 -1
  907. package/src/shade/renderer/shadow/map/PointLightShadowmap.js +7 -2
  908. package/src/shade/renderer/shadow/map/SpotLightShadowmap.d.ts.map +1 -1
  909. package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +3 -15
  910. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.d.ts.map +1 -1
  911. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +10 -4
  912. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
  913. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +7 -2
  914. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +2 -2
  915. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +3 -3
  916. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  917. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +3 -3
  918. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  919. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -5
  920. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  921. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +35 -4
  922. package/src/view/minimap/Minimap.d.ts.map +1 -1
  923. package/src/view/minimap/Minimap.js +227 -225
  924. package/src/view/minimap/MinimapCanvasView.js +3 -3
  925. package/src/view/minimap/MinimapMarker.d.ts +45 -0
  926. package/src/view/minimap/MinimapMarker.d.ts.map +1 -0
  927. package/src/view/minimap/MinimapMarker.js +80 -0
  928. package/src/view/minimap/MinimapMarkerCollection.d.ts +6 -5
  929. package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
  930. package/src/view/minimap/MinimapMarkerCollection.js +6 -6
  931. package/src/view/minimap/MinimapMarkerSerializationAdapter.d.ts +19 -0
  932. package/src/view/minimap/MinimapMarkerSerializationAdapter.d.ts.map +1 -0
  933. package/src/view/minimap/MinimapMarkerSerializationAdapter.js +42 -0
  934. package/src/view/minimap/dom/MinimapCameraView.d.ts +1 -1
  935. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  936. package/src/view/minimap/dom/MinimapCameraView.js +23 -4
  937. package/src/view/minimap/dom/MinimapMarkerView.js +3 -3
  938. package/src/view/minimap/gl/MarkerGL.js +3 -3
  939. package/src/view/util/DomLayoutFrame.d.ts +53 -0
  940. package/src/view/util/DomLayoutFrame.d.ts.map +1 -0
  941. package/src/view/util/DomLayoutFrame.js +122 -0
  942. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.js +0 -19
  943. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.js +0 -241
  944. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.js +0 -40
  945. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.js +0 -28
  946. package/src/engine/ecs/util/hideEntityGracefully.js +0 -196
  947. package/src/shade/renderer/particles/cull/chunk_particle_cull.js +0 -38
  948. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js +0 -214
  949. package/src/shade/renderer/particles/particle_prototype.d.ts.map +0 -1
  950. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.js +0 -86
  951. package/src/shade/renderer/particles/runtime/spawn_request_encoding.js +0 -52
  952. package/src/shade/renderer/particles/shaders/chunk_particle_context.js +0 -58
@@ -0,0 +1,309 @@
1
+ import { LAYOUT_SIDE_BOTTOM, LAYOUT_SIDE_LEFT, LAYOUT_SIDE_RIGHT, LAYOUT_SIDE_TOP } from "./LayoutProblem.js";
2
+ import { NodeGraphLayoutOptions } from "./NodeGraphLayoutOptions.js";
3
+ import { ROUTE_AXIS_H, ROUTE_AXIS_V, RouteSearch } from "./RouteSearch.js";
4
+ import { RouteSet } from "./RouteSet.js";
5
+
6
+ /**
7
+ * Route every wire, letting them argue over the space until they stop.
8
+ *
9
+ * This is negotiated congestion routing — PathFinder. Every wire is routed as if the lines other
10
+ * wires are on merely cost a little extra rather than being forbidden, and then the whole set is
11
+ * ripped up and routed again with the price raised. A wire that had somewhere else to go moves; a
12
+ * wire with nowhere else stays and the others give way around it. Repeat until nothing is shared.
13
+ *
14
+ * The reason to do it this way rather than routing wires one at a time and forbidding what is
15
+ * already taken is that forbidding makes the *order* decide the drawing. The first wire routed gets
16
+ * the straight line through the middle and everything after it detours, whether or not it was the
17
+ * one that needed it. Negotiation asks each wire how much it wants the space, by seeing which of
18
+ * them finds an alternative when the price goes up, and that question has an answer that does not
19
+ * depend on who was asked first.
20
+ *
21
+ * **History is what makes it settle.** Charging only for what is currently occupied makes two wires
22
+ * swap routes every round for ever, each taking the one the other has just left. A line that has
23
+ * been fought over stays expensive after it is vacated, so the second time round the pair separates
24
+ * instead of trading.
25
+ *
26
+ * **Only the wires in an argument are asked again.** After the first round, a wire whose route
27
+ * shares nothing with anybody has already got what it wanted and is left alone; the rounds after
28
+ * the first cost what the remaining conflicts cost rather than what the whole graph costs. Without
29
+ * this a graph whose wires nearly all fit spends five further rounds re-deriving the same routes,
30
+ * and the work grows as the square of the graph rather than with the trouble in it.
31
+ *
32
+ * @see McMurchie, Ebeling — *PathFinder: A Negotiation-Based Performance-Driven Router for FPGAs*
33
+ * (1995)
34
+ *
35
+ * @param {LayoutProblem} problem placement must be finished
36
+ * @param {RouteGrid} grid
37
+ * @param {NodeGraphLayoutOptions} options
38
+ * @returns {RouteSet}
39
+ *
40
+ * @author Alex Goldring
41
+ * @copyright Company Named Limited (c) 2026
42
+ */
43
+ export function route_connections(problem, grid, options) {
44
+ const count = problem.connection_count;
45
+
46
+ const routes = new RouteSet(count);
47
+
48
+ if (count === 0) {
49
+ return routes;
50
+ }
51
+
52
+ const search = new RouteSearch(grid);
53
+
54
+ // present cost rises between rounds, and the caller's options are not ours to change
55
+ const working = NodeGraphLayoutOptions.from(options);
56
+
57
+ const start_vertex = new Int32Array(count);
58
+ const start_axis = new Uint8Array(count);
59
+ const goal_vertex = new Int32Array(count);
60
+ const goal_axis = new Uint8Array(count);
61
+
62
+ const port_x = new Float64Array(count * 2);
63
+ const port_y = new Float64Array(count * 2);
64
+
65
+ const escape_x = new Float64Array(count * 2);
66
+ const escape_y = new Float64Array(count * 2);
67
+
68
+ const terminal = { port_x, port_y, escape_x, escape_y };
69
+
70
+ for (let i = 0; i < count; i++) {
71
+ write_terminal(problem, grid, options, i, true, start_vertex, start_axis, terminal);
72
+ write_terminal(problem, grid, options, i, false, goal_vertex, goal_axis, terminal);
73
+ }
74
+
75
+ // Grid vertices of each route as it currently stands, so that a wire can be taken off the grid
76
+ // before being routed again. Corner points alone are not enough for that — what has to be given
77
+ // back is every line the wire occupies.
78
+ const held = [];
79
+
80
+ for (let i = 0; i < count; i++) {
81
+ held.push(null);
82
+ }
83
+
84
+ // Which wires are worth asking again. Everything, to begin with, because nothing is routed yet.
85
+ const contested = new Uint8Array(count).fill(1);
86
+
87
+ for (let round = 0; round < options.congestion_iterations; round++) {
88
+ for (let i = 0; i < count; i++) {
89
+ if (contested[i] === 0) {
90
+ continue;
91
+ }
92
+
93
+ if (held[i] !== null) {
94
+ occupy(grid, held[i], -1);
95
+ }
96
+
97
+ const found = search.find(start_vertex[i], start_axis[i], goal_vertex[i], goal_axis[i], working);
98
+
99
+ if (!found) {
100
+ held[i] = null;
101
+
102
+ continue;
103
+ }
104
+
105
+ const path = search.path.slice(0, search.path_length);
106
+
107
+ held[i] = path;
108
+
109
+ occupy(grid, path, 1);
110
+ }
111
+
112
+ if (mark_contested(grid, held, contested) === 0) {
113
+ break;
114
+ }
115
+
116
+ remember(grid, options.history_rate);
117
+
118
+ working.present_cost *= options.present_growth;
119
+ }
120
+
121
+ for (let i = 0; i < count; i++) {
122
+ routes.begin(i);
123
+
124
+ routes.push(port_x[i * 2], port_y[i * 2]);
125
+
126
+ const path = held[i];
127
+
128
+ if (path !== null) {
129
+ for (let k = 0; k < path.length; k++) {
130
+ routes.push(grid.xs[path[k] % grid.nx], grid.ys[(path[k] / grid.nx) | 0]);
131
+ }
132
+ } else {
133
+ // Nothing was found — the wire is boxed in, or the search ran out of room to look. It
134
+ // still has to be drawn, and going out of one port and into the other the way every
135
+ // other wire does is a better failure than a line through the middle of a node.
136
+ routes.push(escape_x[i * 2], escape_y[i * 2]);
137
+ routes.push(escape_x[i * 2 + 1], escape_y[i * 2 + 1]);
138
+ }
139
+
140
+ routes.push(port_x[i * 2 + 1], port_y[i * 2 + 1]);
141
+
142
+ routes.end(i);
143
+ }
144
+
145
+ return routes;
146
+ }
147
+
148
+ /**
149
+ * Work out where one end of a wire meets the grid.
150
+ *
151
+ * A wire does not start at its port, it starts a clearance away from the box on the side the port
152
+ * is on — the piece between the two is a straight stub, which is what makes it obvious which port
153
+ * the wire belongs to. That stub is also where the wire's direction comes from: a port on the right
154
+ * of a box is left horizontally, whatever the wire does afterwards.
155
+ *
156
+ * @param {LayoutProblem} problem
157
+ * @param {RouteGrid} grid
158
+ * @param {NodeGraphLayoutOptions} options
159
+ * @param {number} index connection
160
+ * @param {boolean} leaving
161
+ * @param {Int32Array} vertex written
162
+ * @param {Uint8Array} axis written
163
+ * @param {{port_x: Float64Array, port_y: Float64Array, escape_x: Float64Array, escape_y: Float64Array}} terminal
164
+ * written, two entries per connection
165
+ * @returns {void}
166
+ */
167
+ function write_terminal(problem, grid, options, index, leaving, vertex, axis, terminal) {
168
+ const boxes = problem.boxes;
169
+
170
+ const box = leaving ? problem.from_box[index] : problem.to_box[index];
171
+ const side = leaving ? problem.from_side[index] : problem.to_side[index];
172
+
173
+ const x = boxes.box_x[box] + (leaving ? problem.from_dx[index] : problem.to_dx[index]);
174
+ const y = boxes.box_y[box] + (leaving ? problem.from_dy[index] : problem.to_dy[index]);
175
+
176
+ const at = index * 2 + (leaving ? 0 : 1);
177
+
178
+ terminal.port_x[at] = x;
179
+ terminal.port_y[at] = y;
180
+
181
+ const clearance = options.clearance;
182
+
183
+ let escape_x = x;
184
+ let escape_y = y;
185
+
186
+ switch (side) {
187
+ case LAYOUT_SIDE_LEFT:
188
+ escape_x = boxes.box_x[box] - clearance;
189
+ break;
190
+ case LAYOUT_SIDE_RIGHT:
191
+ escape_x = boxes.box_x[box] + boxes.box_w[box] + clearance;
192
+ break;
193
+ case LAYOUT_SIDE_TOP:
194
+ escape_y = boxes.box_y[box] - clearance;
195
+ break;
196
+ case LAYOUT_SIDE_BOTTOM:
197
+ escape_y = boxes.box_y[box] + boxes.box_h[box] + clearance;
198
+ break;
199
+ }
200
+
201
+ terminal.escape_x[at] = escape_x;
202
+ terminal.escape_y[at] = escape_y;
203
+
204
+ vertex[index] = grid.nearest_x(escape_x) + grid.nearest_y(escape_y) * grid.nx;
205
+
206
+ axis[index] = side === LAYOUT_SIDE_TOP || side === LAYOUT_SIDE_BOTTOM ? ROUTE_AXIS_V : ROUTE_AXIS_H;
207
+ }
208
+
209
+ /**
210
+ * Claim, or give back, every line a route runs along.
211
+ *
212
+ * Only what is on the grid is claimed. The stub between a port and the grid is not on it and is
213
+ * never charged, which is what lets several wires leave one port: they share that stub whatever it
214
+ * would cost, having no say in where their own port is, and they are only asked to separate once
215
+ * they are somewhere they could have chosen.
216
+ *
217
+ * @param {RouteGrid} grid
218
+ * @param {Int32Array} path grid vertices
219
+ * @param {number} delta 1 to claim, -1 to give back
220
+ * @returns {void}
221
+ */
222
+ function occupy(grid, path, delta) {
223
+ const nx = grid.nx;
224
+
225
+ for (let i = 0; i + 1 < path.length; i++) {
226
+ const a = path[i];
227
+ const b = path[i + 1];
228
+
229
+ if (b === a + 1) {
230
+ grid.use_h[a] += delta;
231
+ } else if (a === b + 1) {
232
+ grid.use_h[b] += delta;
233
+ } else if (b === a + nx) {
234
+ grid.use_v[a] += delta;
235
+ } else {
236
+ grid.use_v[b] += delta;
237
+ }
238
+ }
239
+ }
240
+
241
+ /**
242
+ * Say which wires are still sharing a line with somebody, and how many wires that is.
243
+ *
244
+ * A wire is asked to look again only when some part of its own route is contested. One that is
245
+ * clear of everybody has already found what it wanted, and re-deriving it costs a full search to
246
+ * arrive back where it started.
247
+ *
248
+ * @param {RouteGrid} grid
249
+ * @param {(Int32Array|null)[]} held
250
+ * @param {Uint8Array} contested written
251
+ * @returns {number} wires still sharing a line
252
+ */
253
+ function mark_contested(grid, held, contested) {
254
+ const nx = grid.nx;
255
+
256
+ let total = 0;
257
+
258
+ for (let i = 0; i < held.length; i++) {
259
+ const path = held[i];
260
+
261
+ if (path === null) {
262
+ // No route was found for it. Congestion is not what it is waiting for, but the grid it
263
+ // failed on is not the grid the next round presents, so it gets asked again rather than
264
+ // being written off on the strength of one attempt.
265
+ contested[i] = 1;
266
+
267
+ continue;
268
+ }
269
+
270
+ contested[i] = 0;
271
+
272
+ for (let k = 0; k + 1 < path.length; k++) {
273
+ const a = path[k];
274
+ const b = path[k + 1];
275
+
276
+ const shared = b === a + 1 ? grid.use_h[a] > 1
277
+ : a === b + 1 ? grid.use_h[b] > 1
278
+ : b === a + nx ? grid.use_v[a] > 1
279
+ : grid.use_v[b] > 1;
280
+
281
+ if (shared) {
282
+ contested[i] = 1;
283
+
284
+ total++;
285
+
286
+ break;
287
+ }
288
+ }
289
+ }
290
+
291
+ return total;
292
+ }
293
+
294
+ /**
295
+ * @param {RouteGrid} grid
296
+ * @param {number} rate
297
+ * @returns {void}
298
+ */
299
+ function remember(grid, rate) {
300
+ for (let i = 0; i < grid.vertex_count; i++) {
301
+ if (grid.use_h[i] > 1) {
302
+ grid.history_h[i] += rate * (grid.use_h[i] - 1);
303
+ }
304
+
305
+ if (grid.use_v[i] > 1) {
306
+ grid.history_v[i] += rate * (grid.use_v[i] - 1);
307
+ }
308
+ }
309
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Work out which lines wires are allowed to travel along, and mark the boxes solid.
3
+ *
4
+ * The lines come from four places, and each of them answers a different question:
5
+ *
6
+ * - **Around every box**, a line a clearance outside each of its four edges. This is how a wire
7
+ * gets past a box, and how it runs alongside one without appearing to touch it.
8
+ * - **At every port**, a line at the height it sits at. This is what lets a wire arrive at a port
9
+ * horizontally instead of sloping into it, and it is most of the reason the grid is as tall as
10
+ * it is.
11
+ * - **At every lane** the layout reserved. A wire crossing a column it does not stop at was
12
+ * promised empty space there; this is the line running through it.
13
+ * - **Across every channel**, a few evenly spaced tracks. Without them the only places a wire can
14
+ * turn in a channel are the box edges either side of it, so every wire turning in that channel
15
+ * turns in the same place and they are drawn on top of each other.
16
+ *
17
+ * Plus a margin all the way round, which is where a wire running against the flow goes to get past
18
+ * everything in its way.
19
+ *
20
+ * When all of that comes to more grid than the budget allows, the port lines are the ones dropped:
21
+ * they are the most numerous by far, and losing them costs a short sloped approach at each end
22
+ * rather than a route that cannot be found.
23
+ *
24
+ * @param {LayoutProblem} problem
25
+ * @param {NodeGraphLayoutOptions} options
26
+ * @returns {RouteGrid}
27
+ *
28
+ * @author Alex Goldring
29
+ * @copyright Company Named Limited (c) 2026
30
+ */
31
+ export function route_grid_build(problem: LayoutProblem, options: NodeGraphLayoutOptions): RouteGrid;
32
+ import { RouteGrid } from "./RouteGrid.js";
33
+ //# sourceMappingURL=route_grid_build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route_grid_build.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/route_grid_build.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,2FALa,SAAS,CA6GrB;0BAlJyB,gBAAgB"}
@@ -0,0 +1,237 @@
1
+ import { LAYOUT_BOX_LANE } from "./LayoutBoxGraph.js";
2
+ import { number_compare_ascending } from "../../../../primitives/numbers/number_compare_ascending.js";
3
+ import { LAYOUT_SIDE_BOTTOM, LAYOUT_SIDE_TOP } from "./LayoutProblem.js";
4
+ import { RouteGrid } from "./RouteGrid.js";
5
+
6
+ /**
7
+ * Coordinates nearer than this to one already collected are the same coordinate.
8
+ *
9
+ * Two lines a fraction of a unit apart are one line to anybody looking at the drawing, and keeping
10
+ * both of them costs a whole row or column of the grid.
11
+ *
12
+ * @type {number}
13
+ */
14
+ const COORDINATE_EPSILON = 0.5;
15
+
16
+ /**
17
+ * Work out which lines wires are allowed to travel along, and mark the boxes solid.
18
+ *
19
+ * The lines come from four places, and each of them answers a different question:
20
+ *
21
+ * - **Around every box**, a line a clearance outside each of its four edges. This is how a wire
22
+ * gets past a box, and how it runs alongside one without appearing to touch it.
23
+ * - **At every port**, a line at the height it sits at. This is what lets a wire arrive at a port
24
+ * horizontally instead of sloping into it, and it is most of the reason the grid is as tall as
25
+ * it is.
26
+ * - **At every lane** the layout reserved. A wire crossing a column it does not stop at was
27
+ * promised empty space there; this is the line running through it.
28
+ * - **Across every channel**, a few evenly spaced tracks. Without them the only places a wire can
29
+ * turn in a channel are the box edges either side of it, so every wire turning in that channel
30
+ * turns in the same place and they are drawn on top of each other.
31
+ *
32
+ * Plus a margin all the way round, which is where a wire running against the flow goes to get past
33
+ * everything in its way.
34
+ *
35
+ * When all of that comes to more grid than the budget allows, the port lines are the ones dropped:
36
+ * they are the most numerous by far, and losing them costs a short sloped approach at each end
37
+ * rather than a route that cannot be found.
38
+ *
39
+ * @param {LayoutProblem} problem
40
+ * @param {NodeGraphLayoutOptions} options
41
+ * @returns {RouteGrid}
42
+ *
43
+ * @author Alex Goldring
44
+ * @copyright Company Named Limited (c) 2026
45
+ */
46
+ export function route_grid_build(problem, options) {
47
+ const boxes = problem.boxes;
48
+
49
+ const clearance = options.clearance;
50
+
51
+ const xs = [];
52
+ const ys = [];
53
+
54
+ let min_x = Infinity;
55
+ let min_y = Infinity;
56
+ let max_x = -Infinity;
57
+ let max_y = -Infinity;
58
+
59
+ for (let box = 0; box < boxes.box_count; box++) {
60
+ const x0 = boxes.box_x[box];
61
+ const y0 = boxes.box_y[box];
62
+ const x1 = x0 + boxes.box_w[box];
63
+ const y1 = y0 + boxes.box_h[box];
64
+
65
+ if (x0 < min_x) {
66
+ min_x = x0;
67
+ }
68
+
69
+ if (y0 < min_y) {
70
+ min_y = y0;
71
+ }
72
+
73
+ if (x1 > max_x) {
74
+ max_x = x1;
75
+ }
76
+
77
+ if (y1 > max_y) {
78
+ max_y = y1;
79
+ }
80
+
81
+ if (boxes.box_kind[box] === LAYOUT_BOX_LANE) {
82
+ // A lane is a point, not an obstacle: it is the promise of empty space, so all it
83
+ // contributes is the line through it.
84
+ ys.push(y0);
85
+
86
+ continue;
87
+ }
88
+
89
+ xs.push(x0 - clearance, x1 + clearance);
90
+ ys.push(y0 - clearance, y1 + clearance);
91
+ }
92
+
93
+ if (boxes.box_count === 0) {
94
+ min_x = 0;
95
+ min_y = 0;
96
+ max_x = 0;
97
+ max_y = 0;
98
+ }
99
+
100
+ const margin_x = options.layer_gap;
101
+ const margin_y = options.node_gap + options.wire_gap;
102
+
103
+ xs.push(min_x - margin_x, max_x + margin_x);
104
+ ys.push(min_y - margin_y, max_y + margin_y);
105
+
106
+ add_channel_tracks(xs, boxes, options);
107
+
108
+ const port_ys = [];
109
+
110
+ for (let i = 0; i < problem.connection_count; i++) {
111
+ port_ys.push(boxes.box_y[problem.from_box[i]] + problem.from_dy[i]);
112
+ port_ys.push(boxes.box_y[problem.to_box[i]] + problem.to_dy[i]);
113
+
114
+ // A port on the top or bottom edge is left going up or down, so what it needs is a line
115
+ // along its x rather than its y. There are few of these — a node's inputs and outputs are
116
+ // on its sides — so they go in unconditionally.
117
+ if (problem.from_side[i] === LAYOUT_SIDE_TOP || problem.from_side[i] === LAYOUT_SIDE_BOTTOM) {
118
+ xs.push(boxes.box_x[problem.from_box[i]] + problem.from_dx[i]);
119
+ }
120
+
121
+ if (problem.to_side[i] === LAYOUT_SIDE_TOP || problem.to_side[i] === LAYOUT_SIDE_BOTTOM) {
122
+ xs.push(boxes.box_x[problem.to_box[i]] + problem.to_dx[i]);
123
+ }
124
+ }
125
+
126
+ const x_axis = sorted_unique(xs);
127
+
128
+ let y_axis = sorted_unique(ys.concat(port_ys));
129
+
130
+ if (x_axis.length * y_axis.length > options.max_grid_vertices) {
131
+ y_axis = sorted_unique(ys);
132
+ }
133
+
134
+ const grid = new RouteGrid(x_axis, y_axis);
135
+
136
+ for (let box = 0; box < boxes.box_count; box++) {
137
+ if (boxes.box_kind[box] === LAYOUT_BOX_LANE) {
138
+ continue;
139
+ }
140
+
141
+ grid.block_rectangle(
142
+ boxes.box_x[box] - clearance,
143
+ boxes.box_y[box] - clearance,
144
+ boxes.box_x[box] + boxes.box_w[box] + clearance,
145
+ boxes.box_y[box] + boxes.box_h[box] + clearance
146
+ );
147
+ }
148
+
149
+ return grid;
150
+ }
151
+
152
+ /**
153
+ * Put a few evenly spaced vertical lines in the gap between each pair of neighbouring columns.
154
+ *
155
+ * The gap is measured from the boxes rather than taken from the options, because a column is as
156
+ * wide as its widest box and the narrow ones in it leave more room than the gap alone suggests.
157
+ *
158
+ * @param {number[]} xs appended to
159
+ * @param {LayoutBoxGraph} boxes
160
+ * @param {NodeGraphLayoutOptions} options
161
+ * @returns {void}
162
+ */
163
+ function add_channel_tracks(xs, boxes, options) {
164
+ let layer_count = 0;
165
+
166
+ for (let box = 0; box < boxes.box_count; box++) {
167
+ if (boxes.box_layer[box] + 1 > layer_count) {
168
+ layer_count = boxes.box_layer[box] + 1;
169
+ }
170
+ }
171
+
172
+ if (layer_count < 2) {
173
+ return;
174
+ }
175
+
176
+ const left = new Float64Array(layer_count).fill(Infinity);
177
+ const right = new Float64Array(layer_count).fill(-Infinity);
178
+
179
+ for (let box = 0; box < boxes.box_count; box++) {
180
+ if (boxes.box_kind[box] === LAYOUT_BOX_LANE) {
181
+ continue;
182
+ }
183
+
184
+ const layer = boxes.box_layer[box];
185
+
186
+ if (boxes.box_x[box] < left[layer]) {
187
+ left[layer] = boxes.box_x[box];
188
+ }
189
+
190
+ const edge = boxes.box_x[box] + boxes.box_w[box];
191
+
192
+ if (edge > right[layer]) {
193
+ right[layer] = edge;
194
+ }
195
+ }
196
+
197
+ const tracks = options.channel_tracks;
198
+
199
+ for (let i = 0; i + 1 < layer_count; i++) {
200
+ const start = right[i];
201
+ const end = left[i + 1];
202
+
203
+ if (!(start < end)) {
204
+ // a column with no real boxes in it, or columns that touch; nothing to divide
205
+ continue;
206
+ }
207
+
208
+ for (let k = 1; k <= tracks; k++) {
209
+ xs.push(start + (end - start) * k / (tracks + 1));
210
+ }
211
+ }
212
+ }
213
+
214
+ /**
215
+ * @param {number[]} values
216
+ * @returns {Float64Array}
217
+ */
218
+ function sorted_unique(values) {
219
+ values.sort(number_compare_ascending);
220
+
221
+ const packed = new Float64Array(values.length);
222
+
223
+ let count = 0;
224
+
225
+ for (let i = 0; i < values.length; i++) {
226
+ const value = values[i];
227
+
228
+ if (count > 0 && value - packed[count - 1] < COORDINATE_EPSILON) {
229
+ continue;
230
+ }
231
+
232
+ packed[count++] = value;
233
+ }
234
+
235
+ // a copy rather than a view, so that the room the duplicates took is given back
236
+ return packed.slice(0, count);
237
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Pull apart wires that ended up drawn on top of each other.
3
+ *
4
+ * The router does most of this itself — negotiating over the lines is exactly the business of not
5
+ * sharing them — but it cannot always finish. Two wires that genuinely have one route between them
6
+ * both take it, and what the drawing then shows is one wire where there are two. Congestion has no
7
+ * answer to that, because there is no second route to move to; the answer is to stop insisting they
8
+ * are on a line at all and spread them a few units either side of it.
9
+ *
10
+ * **Which one goes on which side** is not a free choice. Wires arriving at a shared run from above
11
+ * and leaving it above have to stay above, or the two of them cross twice for nothing — once to
12
+ * swap and once to swap back. So a group is ordered by where its members come from and where they
13
+ * go, and gets spread in that order.
14
+ *
15
+ * Only the middle of a wire moves. The two ends meet ports, and a port is where it is.
16
+ *
17
+ * @param {RouteSet} routes mutated in place
18
+ * @param {NodeGraphLayoutOptions} options
19
+ * @returns {number} how many runs were moved
20
+ *
21
+ * @author Alex Goldring
22
+ * @copyright Company Named Limited (c) 2026
23
+ */
24
+ export function route_nudge(routes: RouteSet, options: NodeGraphLayoutOptions): number;
25
+ //# sourceMappingURL=route_nudge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route_nudge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/route_nudge.js"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,gFALa,MAAM,CAiElB"}