@woosh/meep-engine 3.21.0 → 3.22.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 (1596) hide show
  1. package/README.md +96 -213
  2. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  3. package/editor/particles/effect/ParticleEffectDocument.js +0 -3
  4. package/editor/particles/effect/ParticleReferenceSimulation.js +1 -1
  5. package/editor/persistence/SceneMetadata.d.ts +9 -4
  6. package/editor/persistence/SceneMetadata.d.ts.map +1 -1
  7. package/editor/persistence/SceneMetadata.js +4 -3
  8. package/editor/tools/TransformToolV2.d.ts +2 -1
  9. package/editor/tools/TransformToolV2.d.ts.map +1 -1
  10. package/editor/tools/engine/Tool.d.ts +1 -1
  11. package/editor/tools/engine/Tool.d.ts.map +1 -1
  12. package/editor/tools/engine/ToolEngine.d.ts +1 -1
  13. package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
  14. package/editor/view/ecs/EntityEditor.d.ts +3 -2
  15. package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
  16. package/editor/view/ecs/EntityList.d.ts +7 -3
  17. package/editor/view/ecs/EntityList.d.ts.map +1 -1
  18. package/editor/view/ecs/EntityList.js +3 -2
  19. package/editor/view/ecs/components/common/NumericIntervalController.d.ts +8 -3
  20. package/editor/view/ecs/components/common/NumericIntervalController.d.ts.map +1 -1
  21. package/editor/view/ecs/components/common/NumericIntervalController.js +3 -2
  22. package/editor/view/ecs/components/common/TextController.d.ts +7 -3
  23. package/editor/view/ecs/components/common/TextController.d.ts.map +1 -1
  24. package/editor/view/ecs/components/common/TextController.js +3 -2
  25. package/editor/view/library/MeshLibraryView.d.ts.map +1 -1
  26. package/editor/view/library/MeshLibraryView.js +3 -2
  27. package/editor/view/node-graph/NodeIconView.d.ts +5 -2
  28. package/editor/view/node-graph/NodeIconView.d.ts.map +1 -1
  29. package/editor/view/node-graph/NodeIconView.js +2 -1
  30. package/editor/view/node-graph/PortView.d.ts +9 -4
  31. package/editor/view/node-graph/PortView.d.ts.map +1 -1
  32. package/editor/view/node-graph/PortView.js +4 -3
  33. package/editor/view/particles/ColorLutGradientView.d.ts +7 -3
  34. package/editor/view/particles/ColorLutGradientView.d.ts.map +1 -1
  35. package/editor/view/particles/ColorLutGradientView.js +3 -2
  36. package/editor/view/particles/ScalarLutCurveView.d.ts +9 -4
  37. package/editor/view/particles/ScalarLutCurveView.d.ts.map +1 -1
  38. package/editor/view/particles/ScalarLutCurveView.js +4 -3
  39. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
  40. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +0 -1
  41. package/editor/view/tools/ToolView.d.ts +7 -3
  42. package/editor/view/tools/ToolView.d.ts.map +1 -1
  43. package/editor/view/tools/ToolView.js +3 -2
  44. package/package.json +2 -1
  45. package/src/core/binary/allocator/OffsetAllocator.d.ts +24 -1
  46. package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
  47. package/src/core/binary/allocator/OffsetAllocator.js +101 -1
  48. package/src/core/binary/type/Field.d.ts +5 -1
  49. package/src/core/binary/type/Field.d.ts.map +1 -1
  50. package/src/core/binary/type/Field.js +4 -0
  51. package/src/core/binary/type/Type.d.ts +4 -0
  52. package/src/core/binary/type/Type.d.ts.map +1 -1
  53. package/src/core/binary/type/Type.js +4 -0
  54. package/src/core/cache/Cache.d.ts +15 -7
  55. package/src/core/cache/Cache.d.ts.map +1 -1
  56. package/src/core/cache/Cache.js +7 -6
  57. package/src/core/cache/wtinylfu/CacheRegionWTinylfu.d.ts +5 -2
  58. package/src/core/cache/wtinylfu/CacheRegionWTinylfu.d.ts.map +1 -1
  59. package/src/core/cache/wtinylfu/CacheRegionWTinylfu.js +2 -1
  60. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts +20 -10
  61. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts.map +1 -1
  62. package/src/core/cache/wtinylfu/CacheWTinylfu.js +9 -8
  63. package/src/core/collection/CuckooFilter.d.ts +8 -4
  64. package/src/core/collection/CuckooFilter.d.ts.map +1 -1
  65. package/src/core/collection/CuckooFilter.js +3 -2
  66. package/src/core/collection/list/List.d.ts +0 -1
  67. package/src/core/collection/list/List.d.ts.map +1 -1
  68. package/src/core/collection/list/List.js +0 -1
  69. package/src/core/collection/map/HashMap.d.ts +12 -7
  70. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  71. package/src/core/collection/map/HashMap.js +5 -5
  72. package/src/core/collection/map/ObservedMap.d.ts +1 -2
  73. package/src/core/collection/map/ObservedMap.d.ts.map +1 -1
  74. package/src/core/collection/map/ObservedMap.js +0 -1
  75. package/src/core/collection/table/RowFirstTable.d.ts +1 -0
  76. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  77. package/src/core/collection/table/RowFirstTable.js +4 -0
  78. package/src/core/color/Color.d.ts +1 -2
  79. package/src/core/color/Color.d.ts.map +1 -1
  80. package/src/core/color/Color.js +5 -4
  81. package/src/core/color/hsv/hsv2rgb_float.d.ts +23 -1
  82. package/src/core/color/hsv/hsv2rgb_float.d.ts.map +1 -1
  83. package/src/core/color/hsv/hsv2rgb_float.js +31 -3
  84. package/src/core/color/hsv/hsv_to_rgb.d.ts +20 -9
  85. package/src/core/color/hsv/hsv_to_rgb.d.ts.map +1 -1
  86. package/src/core/color/hsv/hsv_to_rgb.js +30 -10
  87. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -1
  88. package/src/core/color/hsv/hsv_to_rgb_uint8.js +10 -5
  89. package/src/core/function/FunctionCompiler.d.ts +9 -4
  90. package/src/core/function/FunctionCompiler.d.ts.map +1 -1
  91. package/src/core/function/FunctionCompiler.js +8 -6
  92. package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts +41 -0
  93. package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts.map +1 -0
  94. package/src/core/geom/3d/quaternion/quat3_shortest_arc.js +94 -0
  95. package/src/core/geom/3d/ray/Ray3.d.ts +5 -5
  96. package/src/core/geom/3d/ray/Ray3.d.ts.map +1 -1
  97. package/src/core/geom/3d/ray/Ray3.js +3 -3
  98. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +1 -0
  99. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  100. package/src/core/geom/3d/shape/AbstractShape3D.js +4 -0
  101. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +2 -4
  102. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  103. package/src/core/geom/3d/shape/ConvexHullShape3D.js +0 -2
  104. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +1 -2
  105. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  106. package/src/core/geom/3d/shape/TransformedShape3D.js +0 -1
  107. package/src/core/geom/3d/topology/struct/binary/BinaryDataBlock.d.ts +6 -0
  108. package/src/core/geom/3d/topology/struct/binary/BinaryDataBlock.d.ts.map +1 -1
  109. package/src/core/geom/3d/topology/struct/binary/BinaryDataBlock.js +5 -0
  110. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts +2 -0
  111. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.d.ts.map +1 -1
  112. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.js +5 -0
  113. package/src/core/geom/Quaternion.d.ts +1 -0
  114. package/src/core/geom/Quaternion.d.ts.map +1 -1
  115. package/src/core/geom/Quaternion.js +4 -0
  116. package/src/core/geom/Vector1.d.ts +8 -0
  117. package/src/core/geom/Vector1.d.ts.map +1 -1
  118. package/src/core/geom/Vector1.js +6 -0
  119. package/src/core/geom/Vector3.d.ts +6 -0
  120. package/src/core/geom/Vector3.d.ts.map +1 -1
  121. package/src/core/geom/Vector3.js +5 -0
  122. package/src/core/geom/Vector4.d.ts +10 -2
  123. package/src/core/geom/Vector4.d.ts.map +1 -1
  124. package/src/core/geom/Vector4.js +6 -1
  125. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts +4 -4
  126. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.d.ts.map +1 -1
  127. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.js +1 -1
  128. package/src/core/graph/convert_graph_to_dot_string.d.ts +7 -3
  129. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  130. package/src/core/graph/convert_graph_to_dot_string.js +3 -2
  131. package/src/core/localization/Localization.d.ts +3 -2
  132. package/src/core/localization/Localization.d.ts.map +1 -1
  133. package/src/core/localization/Localization.js +4 -0
  134. package/src/core/math/noise/create_simplex_noise_2d.js +6 -6
  135. package/src/core/model/ObservedValue.d.ts +8 -6
  136. package/src/core/model/ObservedValue.d.ts.map +1 -1
  137. package/src/core/model/ObservedValue.js +3 -1
  138. package/src/core/model/node-graph/Connection.d.ts +1 -0
  139. package/src/core/model/node-graph/Connection.d.ts.map +1 -1
  140. package/src/core/model/node-graph/Connection.js +4 -0
  141. package/src/core/model/node-graph/NodeGraph.d.ts +8 -5
  142. package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
  143. package/src/core/model/node-graph/NodeGraph.js +3 -3
  144. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +9 -4
  145. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts.map +1 -1
  146. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +4 -3
  147. package/src/core/model/node-graph/node/NodeDescription.d.ts +12 -4
  148. package/src/core/model/node-graph/node/NodeDescription.d.ts.map +1 -1
  149. package/src/core/model/node-graph/node/NodeDescription.js +10 -3
  150. package/src/core/model/node-graph/node/NodeInstance.d.ts +5 -2
  151. package/src/core/model/node-graph/node/NodeInstance.d.ts.map +1 -1
  152. package/src/core/model/node-graph/node/NodeInstance.js +6 -0
  153. package/src/core/model/node-graph/node/NodeInstancePortReference.d.ts +5 -2
  154. package/src/core/model/node-graph/node/NodeInstancePortReference.d.ts.map +1 -1
  155. package/src/core/model/node-graph/node/NodeInstancePortReference.js +6 -0
  156. package/src/core/model/node-graph/node/NodeRegistry.d.ts +2 -1
  157. package/src/core/model/node-graph/node/NodeRegistry.d.ts.map +1 -1
  158. package/src/core/model/node-graph/node/NodeRegistry.js +4 -0
  159. package/src/core/model/node-graph/node/Port.d.ts +12 -5
  160. package/src/core/model/node-graph/node/Port.d.ts.map +1 -1
  161. package/src/core/model/node-graph/node/Port.js +9 -4
  162. package/src/core/model/node-graph/util/convert_node_graph_to_dot_string.d.ts +5 -2
  163. package/src/core/model/node-graph/util/convert_node_graph_to_dot_string.d.ts.map +1 -1
  164. package/src/core/model/node-graph/util/convert_node_graph_to_dot_string.js +2 -1
  165. package/src/core/model/node-graph/util/graph_clone_by_node_subset.d.ts +5 -2
  166. package/src/core/model/node-graph/util/graph_clone_by_node_subset.d.ts.map +1 -1
  167. package/src/core/model/node-graph/util/graph_clone_by_node_subset.js +2 -1
  168. package/src/core/model/node-graph/util/graph_collect_connections_amongst_nodes.d.ts +5 -2
  169. package/src/core/model/node-graph/util/graph_collect_connections_amongst_nodes.d.ts.map +1 -1
  170. package/src/core/model/node-graph/util/graph_collect_connections_amongst_nodes.js +2 -1
  171. package/src/core/primitives/Class.d.ts +15 -0
  172. package/src/core/primitives/Class.d.ts.map +1 -0
  173. package/src/core/primitives/Class.js +18 -0
  174. package/src/core/primitives/TypedArray.d.ts +15 -0
  175. package/src/core/primitives/TypedArray.d.ts.map +1 -0
  176. package/src/core/primitives/TypedArray.js +27 -0
  177. package/src/core/process/buildPromiseChain.d.ts +9 -4
  178. package/src/core/process/buildPromiseChain.d.ts.map +1 -1
  179. package/src/core/process/buildPromiseChain.js +4 -3
  180. package/src/core/process/executor/ConcurrentExecutor.d.ts +2 -0
  181. package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
  182. package/src/core/process/executor/ConcurrentExecutor.js +5 -0
  183. package/src/core/process/task/Task.d.ts +17 -7
  184. package/src/core/process/task/Task.d.ts.map +1 -1
  185. package/src/core/process/task/Task.js +12 -6
  186. package/src/engine/Engine.d.ts +17 -7
  187. package/src/engine/Engine.d.ts.map +1 -1
  188. package/src/engine/Engine.js +9 -4
  189. package/src/engine/EngineConfiguration.d.ts +33 -9
  190. package/src/engine/EngineConfiguration.d.ts.map +1 -1
  191. package/src/engine/EngineConfiguration.js +22 -4
  192. package/src/engine/EngineHarness.d.ts +22 -10
  193. package/src/engine/EngineHarness.d.ts.map +1 -1
  194. package/src/engine/EngineHarness.js +13 -8
  195. package/src/engine/EntityCreator.d.ts +26 -11
  196. package/src/engine/EntityCreator.d.ts.map +1 -1
  197. package/src/engine/EntityCreator.js +16 -13
  198. package/src/engine/animation/EntityAnimation.d.ts +1 -1
  199. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  200. package/src/engine/animation/curve/actionProcessorOperations/curveActions.d.ts +28 -18
  201. package/src/engine/animation/curve/actionProcessorOperations/curveActions.d.ts.map +1 -1
  202. package/src/engine/animation/curve/actionProcessorOperations/curveActions.js +9 -8
  203. package/src/engine/animation/curve/draw/build_plot_entity_from_array.d.ts +18 -8
  204. package/src/engine/animation/curve/draw/build_plot_entity_from_array.d.ts.map +1 -1
  205. package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +8 -7
  206. package/src/engine/animation/curve/editor/CurveEditorView.d.ts +22 -11
  207. package/src/engine/animation/curve/editor/CurveEditorView.d.ts.map +1 -1
  208. package/src/engine/animation/curve/editor/CurveEditorView.js +7 -6
  209. package/src/engine/animation/curve/editor/DragHandler.d.ts +12 -7
  210. package/src/engine/animation/curve/editor/DragHandler.d.ts.map +1 -1
  211. package/src/engine/animation/curve/editor/DragHandler.js +4 -3
  212. package/src/engine/animation/curve/editor/KeyframeStateManager.d.ts +3 -2
  213. package/src/engine/animation/curve/editor/KeyframeStateManager.d.ts.map +1 -1
  214. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts +21 -10
  215. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.d.ts.map +1 -1
  216. package/src/engine/animation/curve/editor/canvas2dDrawWorldAxisLabels.js +10 -9
  217. package/src/engine/animation/curve/editor/canvas2dPlotCurveLine.d.ts +20 -9
  218. package/src/engine/animation/curve/editor/canvas2dPlotCurveLine.d.ts.map +1 -1
  219. package/src/engine/animation/curve/editor/canvas2dPlotCurveLine.js +9 -8
  220. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts +15 -7
  221. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.d.ts.map +1 -1
  222. package/src/engine/animation/curve/editor/canvas2dPlotCurvePoints.js +7 -6
  223. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.d.ts +39 -18
  224. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.d.ts.map +1 -1
  225. package/src/engine/animation/curve/editor/createKeyframeDraggableAspect.js +18 -17
  226. package/src/engine/animation/curve/editor/createPanTool.d.ts +13 -5
  227. package/src/engine/animation/curve/editor/createPanTool.d.ts.map +1 -1
  228. package/src/engine/animation/curve/editor/createPanTool.js +5 -4
  229. package/src/engine/animation/curve/editor/createSelectionBoxTool.d.ts +19 -8
  230. package/src/engine/animation/curve/editor/createSelectionBoxTool.d.ts.map +1 -1
  231. package/src/engine/animation/curve/editor/createSelectionBoxTool.js +8 -7
  232. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts +6 -2
  233. package/src/engine/animation/keyed2/AnimationTrackPlayback.d.ts.map +1 -1
  234. package/src/engine/animation/keyed2/AnimationTrackPlayback.js +4 -0
  235. package/src/engine/animation/removeEntityGenericEffect.d.ts +13 -6
  236. package/src/engine/animation/removeEntityGenericEffect.d.ts.map +1 -1
  237. package/src/engine/animation/removeEntityGenericEffect.js +6 -5
  238. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts +11 -5
  239. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +1 -1
  240. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +5 -4
  241. package/src/engine/asset/Asset.d.ts +6 -3
  242. package/src/engine/asset/Asset.d.ts.map +1 -1
  243. package/src/engine/asset/Asset.js +4 -1
  244. package/src/engine/asset/AssetManager.d.ts +42 -21
  245. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  246. package/src/engine/asset/AssetManager.js +20 -12
  247. package/src/engine/asset/AssetRequest.d.ts +4 -2
  248. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  249. package/src/engine/asset/AssetRequest.js +5 -0
  250. package/src/engine/asset/AssetRequestScope.d.ts +1 -0
  251. package/src/engine/asset/AssetRequestScope.d.ts.map +1 -1
  252. package/src/engine/asset/AssetRequestScope.js +4 -0
  253. package/src/engine/asset/AssetTransformer.d.ts +7 -1
  254. package/src/engine/asset/AssetTransformer.d.ts.map +1 -1
  255. package/src/engine/asset/AssetTransformer.js +5 -0
  256. package/src/engine/asset/PendingAsset.d.ts +8 -0
  257. package/src/engine/asset/PendingAsset.d.ts.map +1 -1
  258. package/src/engine/asset/PendingAsset.js +6 -0
  259. package/src/engine/asset/loaders/ArrayBufferLoader.d.ts +6 -3
  260. package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
  261. package/src/engine/asset/loaders/ArrayBufferLoader.js +2 -1
  262. package/src/engine/asset/loaders/AssetLoader.d.ts +8 -2
  263. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  264. package/src/engine/asset/loaders/AssetLoader.js +5 -0
  265. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts +10 -0
  266. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts.map +1 -1
  267. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts +5 -2
  268. package/src/engine/asset/loaders/image/ImageRGBADataLoader.d.ts.map +1 -1
  269. package/src/engine/asset/loaders/image/ImageRGBADataLoader.js +2 -1
  270. package/src/engine/asset/preloader/AssetPreloader.d.ts +2 -1
  271. package/src/engine/asset/preloader/AssetPreloader.d.ts.map +1 -1
  272. package/src/engine/asset/preloader/AssetPreloader.js +4 -0
  273. package/src/engine/development/performance/MetricCollection.d.ts +11 -3
  274. package/src/engine/development/performance/MetricCollection.d.ts.map +1 -1
  275. package/src/engine/development/performance/MetricCollection.js +7 -2
  276. package/src/engine/ecs/Entity.d.ts +3 -2
  277. package/src/engine/ecs/Entity.d.ts.map +1 -1
  278. package/src/engine/ecs/Entity.js +9 -1
  279. package/src/engine/ecs/EntityComponentDataset.d.ts +8 -6
  280. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  281. package/src/engine/ecs/EntityComponentDataset.js +9 -0
  282. package/src/engine/ecs/EntityManager.d.ts +2 -1
  283. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  284. package/src/engine/ecs/EntityManager.js +5 -0
  285. package/src/engine/ecs/EntityObserver.d.ts +4 -0
  286. package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
  287. package/src/engine/ecs/EntityObserver.js +4 -0
  288. package/src/engine/ecs/EntityReference.d.ts +4 -0
  289. package/src/engine/ecs/EntityReference.d.ts.map +1 -1
  290. package/src/engine/ecs/EntityReference.js +4 -0
  291. package/src/engine/ecs/System.d.ts +11 -2
  292. package/src/engine/ecs/System.d.ts.map +1 -1
  293. package/src/engine/ecs/System.js +6 -0
  294. package/src/engine/ecs/async/WorkerSystem.d.ts +10 -0
  295. package/src/engine/ecs/async/WorkerSystem.d.ts.map +1 -1
  296. package/src/engine/ecs/dynamic_actions/actions/definition/SpeakLineActionDescription.d.ts +7 -3
  297. package/src/engine/ecs/dynamic_actions/actions/definition/SpeakLineActionDescription.d.ts.map +1 -1
  298. package/src/engine/ecs/dynamic_actions/actions/definition/SpeakLineActionDescription.js +3 -2
  299. package/src/engine/ecs/dynamic_actions/actions/definition/WriteToBlackboardActionDescription.d.ts +7 -3
  300. package/src/engine/ecs/dynamic_actions/actions/definition/WriteToBlackboardActionDescription.d.ts.map +1 -1
  301. package/src/engine/ecs/dynamic_actions/actions/definition/WriteToBlackboardActionDescription.js +3 -2
  302. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +36 -17
  303. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts.map +1 -1
  304. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +17 -16
  305. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts +7 -3
  306. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.d.ts.map +1 -1
  307. package/src/engine/ecs/gui/parallax/GuiElementParallaxSystem.js +3 -2
  308. package/src/engine/ecs/ik/InverseKinematics.d.ts +17 -8
  309. package/src/engine/ecs/ik/InverseKinematics.d.ts.map +1 -1
  310. package/src/engine/ecs/ik/InverseKinematics.js +8 -7
  311. package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.d.ts +9 -0
  312. package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.d.ts.map +1 -1
  313. package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.js +9 -0
  314. package/src/engine/ecs/storage/binary/BinaryClassUpgrader.d.ts +4 -0
  315. package/src/engine/ecs/storage/binary/BinaryClassUpgrader.d.ts.map +1 -1
  316. package/src/engine/ecs/storage/binary/BinaryClassUpgrader.js +4 -0
  317. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts +10 -4
  318. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
  319. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +5 -0
  320. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts +5 -2
  321. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
  322. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.js +2 -1
  323. package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.d.ts +7 -3
  324. package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.d.ts.map +1 -1
  325. package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.js +3 -2
  326. package/src/engine/ecs/system/SystemExecutionPhase.d.ts +9 -0
  327. package/src/engine/ecs/system/SystemExecutionPhase.d.ts.map +1 -0
  328. package/src/engine/ecs/systems/ScriptSystem.d.ts +1 -0
  329. package/src/engine/ecs/systems/ScriptSystem.d.ts.map +1 -1
  330. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +7 -2
  331. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  332. package/src/engine/ecs/terrain/ecs/Terrain.js +8 -0
  333. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationUpgrader_0_1.d.ts +6 -0
  334. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationUpgrader_0_1.d.ts.map +1 -1
  335. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts +3 -1
  336. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.d.ts.map +1 -1
  337. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.js +5 -0
  338. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts +3 -1
  339. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  340. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +5 -0
  341. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts +4 -0
  342. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  343. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +4 -0
  344. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts +7 -2
  345. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  346. package/src/engine/ecs/terrain/tiles/TerrainTile.js +1 -1
  347. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +6 -2
  348. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  349. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +6 -1
  350. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts +9 -4
  351. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
  352. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +4 -3
  353. package/src/engine/ecs/transform/Transform64.d.ts +4 -0
  354. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  355. package/src/engine/ecs/transform/Transform64.js +4 -0
  356. package/src/engine/graphics/camera/CameraShakeBehavior.d.ts +20 -10
  357. package/src/engine/graphics/camera/CameraShakeBehavior.d.ts.map +1 -1
  358. package/src/engine/graphics/camera/CameraShakeBehavior.js +9 -8
  359. package/src/engine/graphics/camera/CameraShakeTraumaBehavior.d.ts +8 -4
  360. package/src/engine/graphics/camera/CameraShakeTraumaBehavior.d.ts.map +1 -1
  361. package/src/engine/graphics/camera/CameraShakeTraumaBehavior.js +3 -2
  362. package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts +11 -5
  363. package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
  364. package/src/engine/graphics/camera/makeOrbitalCameraController.js +5 -4
  365. package/src/engine/graphics/canvas/canvas2d_draw_grid.d.ts +19 -9
  366. package/src/engine/graphics/canvas/canvas2d_draw_grid.d.ts.map +1 -1
  367. package/src/engine/graphics/canvas/canvas2d_draw_grid.js +9 -8
  368. package/src/engine/graphics/canvas/canvas2d_draw_label.d.ts +17 -8
  369. package/src/engine/graphics/canvas/canvas2d_draw_label.d.ts.map +1 -1
  370. package/src/engine/graphics/canvas/canvas2d_draw_label.js +8 -7
  371. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.d.ts +21 -10
  372. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.d.ts.map +1 -1
  373. package/src/engine/graphics/canvas/canvas2d_draw_linear_scale.js +10 -9
  374. package/src/engine/graphics/canvas/canvas2d_plot_data_line.d.ts +18 -8
  375. package/src/engine/graphics/canvas/canvas2d_plot_data_line.d.ts.map +1 -1
  376. package/src/engine/graphics/canvas/canvas2d_plot_data_line.js +8 -7
  377. package/src/engine/graphics/ecs/camera/Camera.d.ts +4 -0
  378. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  379. package/src/engine/graphics/ecs/camera/Camera.js +4 -0
  380. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.d.ts +11 -5
  381. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.d.ts.map +1 -1
  382. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +5 -4
  383. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +1 -1
  384. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  385. package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +5 -5
  386. package/src/engine/graphics/ecs/particles/ParticleEffect.js +5 -5
  387. package/src/engine/graphics/ecs/trail3d/make_gradient_stroke.d.ts +19 -9
  388. package/src/engine/graphics/ecs/trail3d/make_gradient_stroke.d.ts.map +1 -1
  389. package/src/engine/graphics/ecs/trail3d/make_gradient_stroke.js +9 -8
  390. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +3 -0
  391. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  392. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +3 -0
  393. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +9 -4
  394. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +1 -1
  395. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +4 -3
  396. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts +7 -1
  397. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  398. package/src/engine/graphics/render/frame_graph/FrameGraph.js +5 -0
  399. package/src/engine/graphics/render/frame_graph/FrameGraphNode.d.ts +4 -0
  400. package/src/engine/graphics/render/frame_graph/FrameGraphNode.d.ts.map +1 -1
  401. package/src/engine/graphics/render/frame_graph/FrameGraphNode.js +4 -0
  402. package/src/engine/graphics/render/frame_graph/FramePassBuilder.d.ts +9 -1
  403. package/src/engine/graphics/render/frame_graph/FramePassBuilder.d.ts.map +1 -1
  404. package/src/engine/graphics/render/frame_graph/FramePassBuilder.js +6 -0
  405. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts +6 -0
  406. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts.map +1 -1
  407. package/src/engine/graphics/render/frame_graph/FramePassNode.js +5 -0
  408. package/src/engine/graphics/render/frame_graph/FramePassResources.d.ts +7 -1
  409. package/src/engine/graphics/render/frame_graph/FramePassResources.d.ts.map +1 -1
  410. package/src/engine/graphics/render/frame_graph/FramePassResources.js +5 -0
  411. package/src/engine/graphics/render/frame_graph/IFrameGraphContext.d.ts +6 -2
  412. package/src/engine/graphics/render/frame_graph/IFrameGraphContext.d.ts.map +1 -1
  413. package/src/engine/graphics/render/frame_graph/IFrameGraphContext.js +4 -0
  414. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts +13 -5
  415. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts.map +1 -1
  416. package/src/engine/graphics/render/frame_graph/ResourceEntry.js +7 -1
  417. package/src/engine/graphics/render/frame_graph/ResourceNode.d.ts +9 -3
  418. package/src/engine/graphics/render/frame_graph/ResourceNode.d.ts.map +1 -1
  419. package/src/engine/graphics/render/frame_graph/ResourceNode.js +6 -1
  420. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.d.ts +5 -1
  421. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.d.ts.map +1 -1
  422. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.js +4 -0
  423. package/src/engine/graphics/render/frame_graph/resource/ResourceDescriptor.d.ts +7 -3
  424. package/src/engine/graphics/render/frame_graph/resource/ResourceDescriptor.d.ts.map +1 -1
  425. package/src/engine/graphics/render/frame_graph/resource/ResourceDescriptor.js +6 -2
  426. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts +5 -2
  427. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.d.ts.map +1 -1
  428. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +2 -1
  429. package/src/engine/graphics/texture/atlas/TextureAtlasDebugger.d.ts +9 -4
  430. package/src/engine/graphics/texture/atlas/TextureAtlasDebugger.d.ts.map +1 -1
  431. package/src/engine/graphics/texture/atlas/TextureAtlasDebugger.js +4 -3
  432. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +4 -0
  433. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  434. package/src/engine/graphics/texture/sampler/Sampler2D.js +4 -0
  435. package/src/engine/graphics/texture/sampler/debug/prototypeSamplerFiltering.js +3 -2
  436. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +0 -5
  437. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  438. package/src/engine/graphics3/GraphicsEngine.d.ts +6 -0
  439. package/src/engine/graphics3/GraphicsEngine.d.ts.map +1 -1
  440. package/src/engine/graphics3/GraphicsEngine.js +9 -0
  441. package/src/engine/graphics3/ParticipatingMedia.d.ts +9 -4
  442. package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
  443. package/src/engine/graphics3/ParticipatingMedia.js +4 -3
  444. package/src/engine/graphics3/ShadeCameraAdapter.d.ts +5 -1
  445. package/src/engine/graphics3/ShadeCameraAdapter.d.ts.map +1 -1
  446. package/src/engine/graphics3/ShadeCameraAdapter.js +4 -0
  447. package/src/engine/graphics3/TooltipComponentSystem.d.ts +13 -6
  448. package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -1
  449. package/src/engine/graphics3/TooltipComponentSystem.js +6 -5
  450. package/src/engine/graphics3/VolumetricLightMap.d.ts +5 -2
  451. package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -1
  452. package/src/engine/graphics3/VolumetricLightMap.js +2 -1
  453. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  454. package/src/engine/input/devices/PointerDevice.js +7 -6
  455. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts +4 -0
  456. package/src/engine/input/devices/gamepad/GamepadHandle.d.ts.map +1 -1
  457. package/src/engine/input/devices/gamepad/GamepadHandle.js +4 -0
  458. package/src/engine/input/devices/touch/observePinch.d.ts +17 -8
  459. package/src/engine/input/devices/touch/observePinch.d.ts.map +1 -1
  460. package/src/engine/input/devices/touch/observePinch.js +8 -7
  461. package/src/engine/input/ecs/components/InputBinding.d.ts +11 -5
  462. package/src/engine/input/ecs/components/InputBinding.d.ts.map +1 -1
  463. package/src/engine/input/ecs/components/InputBinding.js +5 -4
  464. package/src/engine/input/ecs/ism/InputMapSystem.d.ts +4 -0
  465. package/src/engine/input/ecs/ism/InputMapSystem.d.ts.map +1 -1
  466. package/src/engine/input/ecs/systems/InputControllerSystem.d.ts +1 -1
  467. package/src/engine/input/ecs/systems/InputControllerSystem.d.ts.map +1 -1
  468. package/src/engine/input/ecs/util/TerrainCameraTargetSampler.d.ts +5 -2
  469. package/src/engine/input/ecs/util/TerrainCameraTargetSampler.d.ts.map +1 -1
  470. package/src/engine/input/ecs/util/TerrainCameraTargetSampler.js +2 -1
  471. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.d.ts +9 -4
  472. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.d.ts.map +1 -1
  473. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +4 -3
  474. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts +9 -4
  475. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  476. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.js +4 -3
  477. package/src/engine/intelligence/behavior/util/syncExecuteBehaviorToCompletion.d.ts +9 -4
  478. package/src/engine/intelligence/behavior/util/syncExecuteBehaviorToCompletion.d.ts.map +1 -1
  479. package/src/engine/intelligence/behavior/util/syncExecuteBehaviorToCompletion.js +4 -3
  480. package/src/engine/intelligence/mcts/MonteCarlo.d.ts +19 -9
  481. package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
  482. package/src/engine/intelligence/mcts/MonteCarlo.js +9 -8
  483. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +13 -6
  484. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
  485. package/src/engine/intelligence/optimization/RandomOptimizer.js +6 -5
  486. package/src/engine/interpolation/InterpolationSystem.d.ts +4 -0
  487. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  488. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts +5 -2
  489. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  490. package/src/engine/knowledge/database/StaticKnowledgeDataTable.js +6 -0
  491. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.d.ts +6 -2
  492. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.d.ts.map +1 -1
  493. package/src/engine/knowledge/database/StaticKnowledgeDataTableDescriptor.js +4 -0
  494. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts +7 -4
  495. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
  496. package/src/engine/knowledge/database/StaticKnowledgeDatabase.js +6 -0
  497. package/src/engine/makeSimpleTaskProgressView.d.ts +10 -4
  498. package/src/engine/makeSimpleTaskProgressView.d.ts.map +1 -1
  499. package/src/engine/makeSimpleTaskProgressView.js +4 -3
  500. package/src/engine/navigation/mesh/build/navmesh_build_topology.d.ts +20 -9
  501. package/src/engine/navigation/mesh/build/navmesh_build_topology.d.ts.map +1 -1
  502. package/src/engine/navigation/mesh/build/navmesh_build_topology.js +9 -8
  503. package/src/engine/network/sim/ActionLog.d.ts +1 -2
  504. package/src/engine/network/sim/ActionLog.d.ts.map +1 -1
  505. package/src/engine/network/sim/ActionLog.js +0 -1
  506. package/src/engine/network/state/InputRing.d.ts +1 -2
  507. package/src/engine/network/state/InputRing.d.ts.map +1 -1
  508. package/src/engine/network/state/InputRing.js +0 -1
  509. package/src/engine/notify/Notification.d.ts +15 -9
  510. package/src/engine/notify/Notification.d.ts.map +1 -1
  511. package/src/engine/notify/Notification.js +5 -4
  512. package/src/engine/options/OptionAbstract.d.ts +4 -0
  513. package/src/engine/options/OptionAbstract.d.ts.map +1 -1
  514. package/src/engine/options/OptionAbstract.js +4 -0
  515. package/src/engine/options/OptionsView.d.ts +10 -4
  516. package/src/engine/options/OptionsView.d.ts.map +1 -1
  517. package/src/engine/options/OptionsView.js +4 -3
  518. package/src/engine/physics/ccd/linear_sweep.d.ts +4 -7
  519. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  520. package/src/engine/physics/ccd/linear_sweep.js +3 -1
  521. package/src/engine/physics/cloth/MEASUREMENTS.md +956 -0
  522. package/src/engine/physics/cloth/PLAN.md +1581 -0
  523. package/src/engine/physics/cloth/ecs/Cloth.d.ts +145 -0
  524. package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -0
  525. package/src/engine/physics/cloth/ecs/Cloth.js +212 -0
  526. package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts +208 -0
  527. package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -0
  528. package/src/engine/physics/cloth/ecs/ClothDynamics.js +331 -0
  529. package/src/engine/physics/cloth/ecs/ClothDynamicsFlags.d.ts +10 -0
  530. package/src/engine/physics/cloth/ecs/ClothDynamicsFlags.d.ts.map +1 -0
  531. package/src/engine/physics/cloth/ecs/ClothDynamicsFlags.js +57 -0
  532. package/src/engine/physics/cloth/ecs/ClothExclude.d.ts +45 -0
  533. package/src/engine/physics/cloth/ecs/ClothExclude.d.ts.map +1 -0
  534. package/src/engine/physics/cloth/ecs/ClothExclude.js +59 -0
  535. package/src/engine/physics/cloth/ecs/ClothFlags.d.ts +10 -0
  536. package/src/engine/physics/cloth/ecs/ClothFlags.d.ts.map +1 -0
  537. package/src/engine/physics/cloth/ecs/ClothFlags.js +47 -0
  538. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +321 -0
  539. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -0
  540. package/src/engine/physics/cloth/ecs/ClothInstance.js +363 -0
  541. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +149 -0
  542. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -0
  543. package/src/engine/physics/cloth/ecs/ClothSystem.js +773 -0
  544. package/src/engine/physics/cloth/ecs/cloth_dynamics_library.d.ts +157 -0
  545. package/src/engine/physics/cloth/ecs/cloth_dynamics_library.d.ts.map +1 -0
  546. package/src/engine/physics/cloth/ecs/cloth_dynamics_library.js +254 -0
  547. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts +235 -0
  548. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts.map +1 -0
  549. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.js +271 -0
  550. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts +114 -0
  551. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -0
  552. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +645 -0
  553. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts +9 -0
  554. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -0
  555. package/src/engine/physics/cloth/ecs/cloth_write_back.js +449 -0
  556. package/src/engine/physics/cloth/playground/README.md +185 -0
  557. package/src/engine/physics/cloth/playground/cloth_playground_build.d.ts +58 -0
  558. package/src/engine/physics/cloth/playground/cloth_playground_build.d.ts.map +1 -0
  559. package/src/engine/physics/cloth/playground/cloth_playground_build.js +333 -0
  560. package/src/engine/physics/cloth/playground/cloth_playground_draw.d.ts +79 -0
  561. package/src/engine/physics/cloth/playground/cloth_playground_draw.d.ts.map +1 -0
  562. package/src/engine/physics/cloth/playground/cloth_playground_draw.js +519 -0
  563. package/src/engine/physics/cloth/playground/index.html +200 -0
  564. package/src/engine/physics/cloth/playground/main.d.ts +2 -0
  565. package/src/engine/physics/cloth/playground/main.d.ts.map +1 -0
  566. package/src/engine/physics/cloth/playground/main.js +876 -0
  567. package/src/engine/physics/cloth/playground/rig.html +187 -0
  568. package/src/engine/physics/cloth/playground/rig_build.d.ts +81 -0
  569. package/src/engine/physics/cloth/playground/rig_build.d.ts.map +1 -0
  570. package/src/engine/physics/cloth/playground/rig_build.js +296 -0
  571. package/src/engine/physics/cloth/playground/rig_main.d.ts +2 -0
  572. package/src/engine/physics/cloth/playground/rig_main.d.ts.map +1 -0
  573. package/src/engine/physics/cloth/playground/rig_main.js +955 -0
  574. package/src/engine/physics/cloth/solver/ClothState.d.ts +323 -0
  575. package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -0
  576. package/src/engine/physics/cloth/solver/ClothState.js +673 -0
  577. package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts +67 -0
  578. package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts.map +1 -0
  579. package/src/engine/physics/cloth/solver/cloth_color_particles.js +220 -0
  580. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts +13 -0
  581. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -0
  582. package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +201 -0
  583. package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts +97 -0
  584. package/src/engine/physics/cloth/solver/cloth_solver_constants.d.ts.map +1 -0
  585. package/src/engine/physics/cloth/solver/cloth_solver_constants.js +102 -0
  586. package/src/engine/physics/cloth/solver/cloth_step.d.ts +91 -0
  587. package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -0
  588. package/src/engine/physics/cloth/solver/cloth_step.js +289 -0
  589. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts +54 -0
  590. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts.map +1 -0
  591. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.js +56 -0
  592. package/src/engine/physics/cloth/solver/constraint/cloth_bend_row.d.ts +125 -0
  593. package/src/engine/physics/cloth/solver/constraint/cloth_bend_row.d.ts.map +1 -0
  594. package/src/engine/physics/cloth/solver/constraint/cloth_bend_row.js +383 -0
  595. package/src/engine/physics/cloth/solver/constraint/cloth_leash_row.d.ts +112 -0
  596. package/src/engine/physics/cloth/solver/constraint/cloth_leash_row.d.ts.map +1 -0
  597. package/src/engine/physics/cloth/solver/constraint/cloth_leash_row.js +346 -0
  598. package/src/engine/physics/cloth/solver/constraint/cloth_stretch_row.d.ts +94 -0
  599. package/src/engine/physics/cloth/solver/constraint/cloth_stretch_row.d.ts.map +1 -0
  600. package/src/engine/physics/cloth/solver/constraint/cloth_stretch_row.js +383 -0
  601. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts +27 -0
  602. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts.map +1 -0
  603. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.js +104 -0
  604. package/src/engine/physics/ecs/PhysicsSystem.d.ts +5 -7
  605. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  606. package/src/engine/physics/ecs/PhysicsSystem.js +4 -1
  607. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts +6 -0
  608. package/src/engine/physics/ecs/RigidBodySerializationUpgrader_0_1.d.ts.map +1 -1
  609. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  610. package/src/engine/physics/narrowphase/compute_penetration.d.ts +26 -23
  611. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  612. package/src/engine/physics/narrowphase/compute_penetration.js +25 -4
  613. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +16 -23
  614. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  615. package/src/engine/physics/narrowphase/narrowphase_step.js +15 -4
  616. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +4 -6
  617. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
  618. package/src/engine/physics/narrowphase/refine_ray_concave.js +3 -1
  619. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +6 -6
  620. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
  621. package/src/engine/physics/narrowphase/refine_ray_hit.js +5 -1
  622. package/src/engine/physics/queries/shape_cast.d.ts +9 -7
  623. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  624. package/src/engine/physics/queries/shape_cast.js +8 -1
  625. package/src/engine/platform/EnginePlatform.d.ts +4 -0
  626. package/src/engine/platform/EnginePlatform.d.ts.map +1 -1
  627. package/src/engine/platform/EnginePlatform.js +4 -0
  628. package/src/engine/plugin/EnginePlugin.d.ts +9 -0
  629. package/src/engine/plugin/EnginePlugin.d.ts.map +1 -1
  630. package/src/engine/plugin/EnginePlugin.js +9 -0
  631. package/src/engine/plugin/EnginePluginManager.d.ts +13 -2
  632. package/src/engine/plugin/EnginePluginManager.d.ts.map +1 -1
  633. package/src/engine/plugin/EnginePluginManager.js +10 -0
  634. package/src/engine/save/StorageBackedList.d.ts +8 -4
  635. package/src/engine/save/StorageBackedList.d.ts.map +1 -1
  636. package/src/engine/save/StorageBackedList.js +3 -2
  637. package/src/engine/scene/Scene.d.ts +10 -0
  638. package/src/engine/scene/Scene.d.ts.map +1 -1
  639. package/src/engine/scene/Scene.js +7 -0
  640. package/src/engine/scene/SceneManager.d.ts +4 -0
  641. package/src/engine/scene/SceneManager.d.ts.map +1 -1
  642. package/src/engine/scene/SceneManager.js +4 -0
  643. package/src/engine/scene/SerializedScene.d.ts +8 -4
  644. package/src/engine/scene/SerializedScene.d.ts.map +1 -1
  645. package/src/engine/scene/SerializedScene.js +3 -2
  646. package/src/engine/scene/transitionToScene.d.ts +11 -5
  647. package/src/engine/scene/transitionToScene.d.ts.map +1 -1
  648. package/src/engine/scene/transitionToScene.js +5 -4
  649. package/src/engine/simulation/Ticker.d.ts +5 -2
  650. package/src/engine/simulation/Ticker.d.ts.map +1 -1
  651. package/src/engine/simulation/Ticker.js +2 -1
  652. package/src/engine/sound/SoundEngine.d.ts +4 -0
  653. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  654. package/src/engine/sound/SoundEngine.js +4 -0
  655. package/src/engine/sound/material/concrete/json/deserializeSoundMaterialFromJSON.d.ts +7 -3
  656. package/src/engine/sound/material/concrete/json/deserializeSoundMaterialFromJSON.d.ts.map +1 -1
  657. package/src/engine/sound/material/concrete/json/deserializeSoundMaterialFromJSON.js +3 -2
  658. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +10 -0
  659. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
  660. package/src/engine/sound/sopra/SopraEngine.d.ts +5 -0
  661. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
  662. package/src/engine/sound/sopra/SopraEngine.js +8 -0
  663. package/src/engine/sound/sopra/definition/BusDefinition.d.ts +4 -0
  664. package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
  665. package/src/engine/sound/sopra/definition/BusDefinition.js +4 -0
  666. package/src/engine/sound/sopra/definition/EventDescription.d.ts +1 -0
  667. package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
  668. package/src/engine/sound/sopra/definition/EventDescription.js +4 -0
  669. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts +6 -0
  670. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.d.ts.map +1 -1
  671. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +5 -0
  672. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts +1 -1
  673. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts +1 -0
  674. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.d.ts.map +1 -1
  675. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +1 -1
  676. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts +10 -2
  677. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
  678. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +7 -0
  679. package/src/engine/sound/sopra/definition/clip/SequenceContainerAudioClip.d.ts +1 -1
  680. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
  681. package/src/engine/sound/sopra/runtime/BusGraph.d.ts +4 -0
  682. package/src/engine/sound/sopra/runtime/BusGraph.d.ts.map +1 -1
  683. package/src/engine/sound/sopra/runtime/BusGraph.js +4 -0
  684. package/src/engine/sound/sopra/runtime/EventInstance.d.ts +9 -1
  685. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  686. package/src/engine/sound/sopra/runtime/EventInstance.js +11 -0
  687. package/src/engine/sound/sopra/runtime/VoiceManager.d.ts +2 -0
  688. package/src/engine/sound/sopra/runtime/VoiceManager.d.ts.map +1 -1
  689. package/src/engine/sound/sopra/runtime/VoiceManager.js +5 -0
  690. package/src/engine/ui/DraggableAspect.d.ts +14 -6
  691. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  692. package/src/engine/ui/DraggableAspect.js +6 -5
  693. package/src/engine/ui/GUIEngine.d.ts +73 -26
  694. package/src/engine/ui/GUIEngine.d.ts.map +1 -1
  695. package/src/engine/ui/GUIEngine.js +37 -19
  696. package/src/engine/ui/bindings/DomElementBindingDescription.d.ts +7 -3
  697. package/src/engine/ui/bindings/DomElementBindingDescription.d.ts.map +1 -1
  698. package/src/engine/ui/bindings/DomElementBindingDescription.js +3 -2
  699. package/src/engine/ui/modal/ModalStack.d.ts +4 -0
  700. package/src/engine/ui/modal/ModalStack.d.ts.map +1 -1
  701. package/src/engine/ui/modal/ModalStack.js +4 -0
  702. package/src/engine/ui/notification/AnimatedObjectEmitter.d.ts +4 -0
  703. package/src/engine/ui/notification/AnimatedObjectEmitter.d.ts.map +1 -1
  704. package/src/engine/ui/notification/AnimatedObjectEmitter.js +4 -0
  705. package/src/engine/ui/notification/NotificationManager.d.ts +21 -8
  706. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  707. package/src/engine/ui/notification/NotificationManager.js +10 -3
  708. package/src/engine/ui/notification/ViewEmitter.d.ts +8 -2
  709. package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
  710. package/src/engine/ui/notification/ViewEmitter.js +6 -1
  711. package/src/engine/ui/scene/SceneGUIContext.d.ts +4 -0
  712. package/src/engine/ui/scene/SceneGUIContext.d.ts.map +1 -1
  713. package/src/engine/ui/scene/SceneGUIContext.js +4 -0
  714. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts +9 -4
  715. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.d.ts.map +1 -1
  716. package/src/generation/filtering/numeric/util/populateSampler2DFromCellFilter.js +4 -3
  717. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts +9 -4
  718. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  719. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.js +4 -3
  720. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts +9 -4
  721. package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
  722. package/src/generation/grid/generation/GridTaskApplyActionToCells.js +4 -3
  723. package/src/generation/grid/generation/discrete/GridTaskActionRuleSet.d.ts +9 -4
  724. package/src/generation/grid/generation/discrete/GridTaskActionRuleSet.d.ts.map +1 -1
  725. package/src/generation/grid/generation/discrete/GridTaskActionRuleSet.js +4 -3
  726. package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts +11 -5
  727. package/src/generation/grid/generation/grid/select/CellSupplierBestN.d.ts.map +1 -1
  728. package/src/generation/grid/generation/grid/select/CellSupplierBestN.js +5 -4
  729. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts +9 -4
  730. package/src/generation/grid/generation/road/GridTaskGenerateRoads.d.ts.map +1 -1
  731. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +12 -10
  732. package/src/generation/grid/generation/util/buildDistanceMapToObjective.d.ts +19 -9
  733. package/src/generation/grid/generation/util/buildDistanceMapToObjective.d.ts.map +1 -1
  734. package/src/generation/grid/generation/util/buildDistanceMapToObjective.js +9 -8
  735. package/src/generation/grid/generation/util/buildPathFromDistanceMap.d.ts +17 -8
  736. package/src/generation/grid/generation/util/buildPathFromDistanceMap.d.ts.map +1 -1
  737. package/src/generation/grid/generation/util/buildPathFromDistanceMap.js +8 -7
  738. package/src/generation/markers/GridActionRuleSet.d.ts +11 -5
  739. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  740. package/src/generation/markers/GridActionRuleSet.js +5 -4
  741. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts +9 -4
  742. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts.map +1 -1
  743. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +4 -3
  744. package/src/generation/markers/actions/MarkerNodeActionImaginary.d.ts +9 -4
  745. package/src/generation/markers/actions/MarkerNodeActionImaginary.d.ts.map +1 -1
  746. package/src/generation/markers/actions/MarkerNodeActionImaginary.js +4 -3
  747. package/src/generation/markers/actions/MarkerProcessingRule.d.ts +11 -5
  748. package/src/generation/markers/actions/MarkerProcessingRule.d.ts.map +1 -1
  749. package/src/generation/markers/actions/MarkerProcessingRule.js +5 -4
  750. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts +5 -2
  751. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  752. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +2 -1
  753. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts +13 -6
  754. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.d.ts.map +1 -1
  755. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +6 -5
  756. package/src/generation/markers/emitter/MarkerNodeEmitterPredicated.d.ts +7 -3
  757. package/src/generation/markers/emitter/MarkerNodeEmitterPredicated.d.ts.map +1 -1
  758. package/src/generation/markers/emitter/MarkerNodeEmitterPredicated.js +3 -2
  759. package/src/generation/placement/GridCellPlacementRule.d.ts +15 -7
  760. package/src/generation/placement/GridCellPlacementRule.d.ts.map +1 -1
  761. package/src/generation/placement/GridCellPlacementRule.js +7 -6
  762. package/src/shade/descriptor/ObjectDescriptorBase.d.ts +8 -3
  763. package/src/shade/descriptor/ObjectDescriptorBase.d.ts.map +1 -1
  764. package/src/shade/descriptor/ObjectDescriptorBase.js +7 -2
  765. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.d.ts +12 -0
  766. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.d.ts.map +1 -1
  767. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +8 -0
  768. package/src/shade/descriptor/binding/BufferBindingLayout.d.ts +11 -6
  769. package/src/shade/descriptor/binding/BufferBindingLayout.d.ts.map +1 -1
  770. package/src/shade/descriptor/binding/BufferBindingLayout.js +5 -4
  771. package/src/shade/descriptor/binding/SamplerBindingLayout.d.ts +2 -2
  772. package/src/shade/descriptor/binding/SamplerBindingLayout.d.ts.map +1 -1
  773. package/src/shade/descriptor/binding/SamplerBindingLayout.js +1 -1
  774. package/src/shade/descriptor/binding/StorageTextureBindingLayout.d.ts +2 -2
  775. package/src/shade/descriptor/binding/StorageTextureBindingLayout.d.ts.map +1 -1
  776. package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +1 -1
  777. package/src/shade/descriptor/binding/TextureBindingLayout.d.ts +4 -4
  778. package/src/shade/descriptor/binding/TextureBindingLayout.d.ts.map +1 -1
  779. package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
  780. package/src/shade/descriptor/blend/BlendComponent.d.ts +6 -6
  781. package/src/shade/descriptor/blend/BlendComponent.d.ts.map +1 -1
  782. package/src/shade/descriptor/blend/BlendComponent.js +3 -3
  783. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts +12 -0
  784. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.d.ts.map +1 -1
  785. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +8 -0
  786. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts +18 -5
  787. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.d.ts.map +1 -1
  788. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +14 -4
  789. package/src/shade/descriptor/pipeline/render/DepthStencilState.d.ts +4 -1
  790. package/src/shade/descriptor/pipeline/render/DepthStencilState.d.ts.map +1 -1
  791. package/src/shade/descriptor/pipeline/render/DepthStencilState.js +3 -0
  792. package/src/shade/descriptor/pipeline/render/FragmentState.d.ts +5 -2
  793. package/src/shade/descriptor/pipeline/render/FragmentState.d.ts.map +1 -1
  794. package/src/shade/descriptor/pipeline/render/FragmentState.js +4 -1
  795. package/src/shade/descriptor/pipeline/render/PrimitiveState.d.ts +8 -8
  796. package/src/shade/descriptor/pipeline/render/PrimitiveState.d.ts.map +1 -1
  797. package/src/shade/descriptor/pipeline/render/PrimitiveState.js +4 -4
  798. package/src/shade/descriptor/pipeline/render/StencilFaceState.d.ts +16 -4
  799. package/src/shade/descriptor/pipeline/render/StencilFaceState.d.ts.map +1 -1
  800. package/src/shade/descriptor/pipeline/render/StencilFaceState.js +12 -0
  801. package/src/shade/descriptor/pipeline/render/VertexState.d.ts +5 -2
  802. package/src/shade/descriptor/pipeline/render/VertexState.d.ts.map +1 -1
  803. package/src/shade/descriptor/pipeline/render/VertexState.js +4 -1
  804. package/src/shade/descriptor/texture/SamplerDescriptor.d.ts +24 -6
  805. package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
  806. package/src/shade/descriptor/texture/SamplerDescriptor.js +18 -0
  807. package/src/shade/descriptor/texture/TextureDescriptor.d.ts +2 -2
  808. package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
  809. package/src/shade/descriptor/texture/TextureDescriptor.js +1 -1
  810. package/src/shade/device/ShadeGPUCommandContext.d.ts +46 -12
  811. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  812. package/src/shade/device/ShadeGPUCommandContext.js +28 -8
  813. package/src/shade/device/graph/GraphicsExecutionContext.d.ts +6 -0
  814. package/src/shade/device/graph/GraphicsExecutionContext.d.ts.map +1 -1
  815. package/src/shade/device/graph/GraphicsExecutionContext.js +5 -0
  816. package/src/shade/device/graph/TextureResourceDescriptor.d.ts +13 -6
  817. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  818. package/src/shade/device/graph/TextureResourceDescriptor.js +6 -5
  819. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +6 -0
  820. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -1
  821. package/src/shade/device/pass/ShadeGPUComputePassEncoder.js +5 -0
  822. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +6 -0
  823. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -1
  824. package/src/shade/device/pass/ShadeGPURenderPassEncoder.js +5 -0
  825. package/src/shade/device/pipeline/ComputePipelineManager.d.ts +9 -1
  826. package/src/shade/device/pipeline/ComputePipelineManager.d.ts.map +1 -1
  827. package/src/shade/device/pipeline/ComputePipelineManager.js +6 -0
  828. package/src/shade/device/pipeline/PipelineLayoutManager.d.ts +6 -0
  829. package/src/shade/device/pipeline/PipelineLayoutManager.d.ts.map +1 -1
  830. package/src/shade/device/pipeline/PipelineLayoutManager.js +5 -0
  831. package/src/shade/device/pipeline/RenderPipelineManager.d.ts +7 -1
  832. package/src/shade/device/pipeline/RenderPipelineManager.d.ts.map +1 -1
  833. package/src/shade/device/pipeline/RenderPipelineManager.js +5 -0
  834. package/src/shade/device/shader/ShaderModuleCompiler.d.ts +4 -0
  835. package/src/shade/device/shader/ShaderModuleCompiler.d.ts.map +1 -1
  836. package/src/shade/device/shader/ShaderModuleCompiler.js +4 -0
  837. package/src/shade/device/timing/profile/GPUFrameRecorder.d.ts +6 -0
  838. package/src/shade/device/timing/profile/GPUFrameRecorder.d.ts.map +1 -1
  839. package/src/shade/device/timing/profile/GPUFrameRecorder.js +5 -0
  840. package/src/shade/device/timing/profile/GPUProfileFrame.d.ts +6 -0
  841. package/src/shade/device/timing/profile/GPUProfileFrame.d.ts.map +1 -1
  842. package/src/shade/device/timing/profile/GPUProfileFrame.js +5 -0
  843. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +1 -0
  844. package/src/shade/device/timing/profile/GPUProfileSession.d.ts.map +1 -1
  845. package/src/shade/device/timing/profile/GPUProfileSession.js +4 -0
  846. package/src/shade/device/timing/profile/GPUProfileSpan.d.ts +4 -0
  847. package/src/shade/device/timing/profile/GPUProfileSpan.d.ts.map +1 -1
  848. package/src/shade/device/timing/profile/GPUProfileSpan.js +4 -0
  849. package/src/shade/playground/add_random_meshes.d.ts +19 -8
  850. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  851. package/src/shade/playground/add_random_meshes.js +8 -7
  852. package/src/shade/playground/ground_seam/capture_scene_color.d.ts +4 -0
  853. package/src/shade/playground/ground_seam/capture_scene_color.d.ts.map +1 -1
  854. package/src/shade/playground/particle_ecs/index.html +0 -2
  855. package/src/shade/playground/particle_ecs/main.js +8 -29
  856. package/src/shade/playground/particle_system/main.js +8 -21
  857. package/src/shade/playground/particle_system/particle_prototype.js +8 -8
  858. package/src/shade/playground/particle_system/particle_scene.d.ts +0 -61
  859. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  860. package/src/shade/playground/particle_system/particle_scene.js +0 -57
  861. package/src/shade/playground/ssr_variance/reference.d.ts +1 -1
  862. package/src/shade/playground/ssr_variance/reference.d.ts.map +1 -1
  863. package/src/shade/playground/vgeo_viewer/README.md +11 -2
  864. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts.map +1 -1
  865. package/src/shade/playground/vgeo_viewer/cut_geometry.js +3 -40
  866. package/src/shade/playground/vgeo_viewer/main.js +14 -0
  867. package/src/shade/playground/vgeo_viewer/select_cut.d.ts +19 -0
  868. package/src/shade/playground/vgeo_viewer/select_cut.d.ts.map +1 -1
  869. package/src/shade/playground/vgeo_viewer/select_cut.js +53 -9
  870. package/src/shade/renderer/GPUSamplerManager.d.ts +4 -0
  871. package/src/shade/renderer/GPUSamplerManager.d.ts.map +1 -1
  872. package/src/shade/renderer/GPUSamplerManager.js +4 -0
  873. package/src/shade/renderer/GraphicsContext.d.ts +2 -0
  874. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  875. package/src/shade/renderer/GraphicsContext.js +5 -0
  876. package/src/shade/renderer/Renderer.d.ts +14 -4
  877. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  878. package/src/shade/renderer/Renderer.js +70 -67
  879. package/src/shade/renderer/ResourceManager.d.ts +10 -0
  880. package/src/shade/renderer/ResourceManager.d.ts.map +1 -1
  881. package/src/shade/renderer/ResourceManager.js +7 -0
  882. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +18 -11
  883. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  884. package/src/shade/renderer/animation/GPUAnimationManager.js +2063 -1958
  885. package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts +2 -0
  886. package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts.map +1 -1
  887. package/src/shade/renderer/animation/ShadeAnimationChannel.js +5 -0
  888. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +4 -0
  889. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
  890. package/src/shade/renderer/animation/ShadeAnimationClip.js +4 -0
  891. package/src/shade/renderer/animation/Skin.d.ts +6 -0
  892. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  893. package/src/shade/renderer/animation/Skin.js +5 -0
  894. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +48 -0
  895. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  896. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +201 -14
  897. package/src/shade/renderer/binding/BindGroupDescriptor.d.ts +2 -1
  898. package/src/shade/renderer/binding/BindGroupDescriptor.d.ts.map +1 -1
  899. package/src/shade/renderer/binding/BindGroupDescriptor.js +4 -0
  900. package/src/shade/renderer/binding/BindGroupManager.d.ts +1 -0
  901. package/src/shade/renderer/binding/BindGroupManager.d.ts.map +1 -1
  902. package/src/shade/renderer/binding/BindGroupManager.js +4 -0
  903. package/src/shade/renderer/buffer/GPUBufferAllocatorNative.d.ts +4 -0
  904. package/src/shade/renderer/buffer/GPUBufferAllocatorNative.d.ts.map +1 -1
  905. package/src/shade/renderer/buffer/GPUBufferAllocatorNative.js +4 -0
  906. package/src/shade/renderer/buffer/GPUTypedBuffer.d.ts +20 -8
  907. package/src/shade/renderer/buffer/GPUTypedBuffer.d.ts.map +1 -1
  908. package/src/shade/renderer/buffer/GPUTypedBuffer.js +11 -6
  909. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.d.ts +15 -7
  910. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.d.ts.map +1 -1
  911. package/src/shade/renderer/buffer/graph_inspect_gpu_buffer.js +7 -6
  912. package/src/shade/renderer/buffer/inspect_gpu_buffer.d.ts +26 -12
  913. package/src/shade/renderer/buffer/inspect_gpu_buffer.d.ts.map +1 -1
  914. package/src/shade/renderer/buffer/inspect_gpu_buffer.js +12 -10
  915. package/src/shade/renderer/buffer/inspect_gpu_buffer_typed.d.ts +13 -6
  916. package/src/shade/renderer/buffer/inspect_gpu_buffer_typed.d.ts.map +1 -1
  917. package/src/shade/renderer/buffer/inspect_gpu_buffer_typed.js +6 -5
  918. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +13 -5
  919. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  920. package/src/shade/renderer/buffer/table/GPUDatabase.js +10 -4
  921. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +3 -1
  922. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  923. package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -0
  924. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +4 -0
  925. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  926. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +4 -0
  927. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts +11 -4
  928. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  929. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +9 -3
  930. package/src/shade/renderer/camera/CameraManager.d.ts +4 -0
  931. package/src/shade/renderer/camera/CameraManager.d.ts.map +1 -1
  932. package/src/shade/renderer/camera/CameraManager.js +4 -0
  933. package/src/shade/renderer/camera/GPUCameraContext.d.ts +4 -2
  934. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  935. package/src/shade/renderer/camera/GPUCameraContext.js +5 -0
  936. package/src/shade/renderer/extension/FrameContext.d.ts +15 -5
  937. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  938. package/src/shade/renderer/extension/FrameContext.js +7 -0
  939. package/src/shade/renderer/extension/FrameRecord.d.ts +7 -1
  940. package/src/shade/renderer/extension/FrameRecord.d.ts.map +1 -1
  941. package/src/shade/renderer/extension/FrameRecord.js +5 -0
  942. package/src/shade/renderer/extension/RenderExtension.d.ts +4 -0
  943. package/src/shade/renderer/extension/RenderExtension.d.ts.map +1 -1
  944. package/src/shade/renderer/extension/RenderExtension.js +4 -0
  945. package/src/shade/renderer/geometry/Attribute.d.ts +2 -2
  946. package/src/shade/renderer/geometry/Attribute.d.ts.map +1 -1
  947. package/src/shade/renderer/geometry/Attribute.js +1 -1
  948. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts +30 -2
  949. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  950. package/src/shade/renderer/geometry/GPUGeometryManager.js +642 -591
  951. package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts +4 -0
  952. package/src/shade/renderer/geometry/GPUGeometryMetadata.d.ts.map +1 -1
  953. package/src/shade/renderer/geometry/GPUGeometryMetadata.js +4 -0
  954. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts +7 -3
  955. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts.map +1 -1
  956. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +3 -2
  957. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +4 -0
  958. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  959. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +4 -0
  960. package/src/shade/renderer/geometry/bvh/bvh_to_gpu_buffer.d.ts +11 -5
  961. package/src/shade/renderer/geometry/bvh/bvh_to_gpu_buffer.d.ts.map +1 -1
  962. package/src/shade/renderer/geometry/bvh/bvh_to_gpu_buffer.js +5 -4
  963. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +12 -4
  964. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  965. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +10 -3
  966. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +1 -0
  967. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
  968. package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +4 -0
  969. package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts +13 -6
  970. package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts.map +1 -1
  971. package/src/shade/renderer/geometry/meshlet_batch_to_bvh.js +6 -5
  972. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +2 -0
  973. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  974. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +5 -0
  975. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts +13 -6
  976. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  977. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +6 -5
  978. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +31 -0
  979. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -1
  980. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +345 -0
  981. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts +11 -5
  982. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts.map +1 -1
  983. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.js +5 -4
  984. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts +12 -5
  985. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts.map +1 -1
  986. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.js +5 -4
  987. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts +11 -5
  988. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  989. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +5 -4
  990. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts +5 -1
  991. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts.map +1 -1
  992. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.js +4 -0
  993. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +4 -0
  994. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
  995. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.js +4 -0
  996. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts +7 -1
  997. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  998. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +5 -0
  999. package/src/shade/renderer/global_illumination/lpv/graph_bake_irradiance_lookup_2d.d.ts +11 -5
  1000. package/src/shade/renderer/global_illumination/lpv/graph_bake_irradiance_lookup_2d.d.ts.map +1 -1
  1001. package/src/shade/renderer/global_illumination/lpv/graph_bake_irradiance_lookup_2d.js +5 -4
  1002. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts +9 -4
  1003. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
  1004. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +4 -3
  1005. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts +9 -4
  1006. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
  1007. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +4 -3
  1008. package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts +7 -3
  1009. package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts.map +1 -1
  1010. package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.js +3 -2
  1011. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.d.ts +28 -8
  1012. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.d.ts.map +1 -1
  1013. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +17 -6
  1014. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts +13 -6
  1015. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts.map +1 -1
  1016. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.js +6 -5
  1017. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts +15 -7
  1018. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.d.ts.map +1 -1
  1019. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lpv_store_sh.js +7 -6
  1020. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts +17 -8
  1021. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  1022. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +8 -7
  1023. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts +17 -8
  1024. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  1025. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +8 -7
  1026. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts +15 -7
  1027. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  1028. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +7 -6
  1029. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +19 -9
  1030. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -1
  1031. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +9 -8
  1032. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts +9 -4
  1033. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.d.ts.map +1 -1
  1034. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdldf.js +4 -3
  1035. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +11 -5
  1036. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -1
  1037. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +5 -4
  1038. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +9 -1
  1039. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  1040. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +6 -0
  1041. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts +11 -5
  1042. package/src/shade/renderer/hiz/generate_downsampler_code.d.ts.map +1 -1
  1043. package/src/shade/renderer/hiz/generate_downsampler_code.js +5 -4
  1044. package/src/shade/renderer/hiz/graph_build_hzb.d.ts +13 -6
  1045. package/src/shade/renderer/hiz/graph_build_hzb.d.ts.map +1 -1
  1046. package/src/shade/renderer/hiz/graph_build_hzb.js +6 -5
  1047. package/src/shade/renderer/light/GPULightCollection.d.ts +4 -1
  1048. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  1049. package/src/shade/renderer/light/GPULightCollection.js +6 -0
  1050. package/src/shade/renderer/light/LightCollection.d.ts +9 -3
  1051. package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
  1052. package/src/shade/renderer/light/LightCollection.js +5 -0
  1053. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts +11 -5
  1054. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  1055. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +17 -14
  1056. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts +13 -6
  1057. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
  1058. package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +6 -5
  1059. package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts +13 -6
  1060. package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts.map +1 -1
  1061. package/src/shade/renderer/light/cluster/graph_build_light_clusters.js +6 -5
  1062. package/src/shade/renderer/light/environment/graph_filter_environment_map.d.ts +7 -3
  1063. package/src/shade/renderer/light/environment/graph_filter_environment_map.d.ts.map +1 -1
  1064. package/src/shade/renderer/light/environment/graph_filter_environment_map.js +3 -2
  1065. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts +11 -5
  1066. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  1067. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +5 -4
  1068. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  1069. package/src/shade/renderer/material/GPUMaterialContext.d.ts +17 -1
  1070. package/src/shade/renderer/material/GPUMaterialContext.d.ts.map +1 -1
  1071. package/src/shade/renderer/material/GPUMaterialContext.js +10 -0
  1072. package/src/shade/renderer/material/GPUMaterialManager.d.ts +19 -5
  1073. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  1074. package/src/shade/renderer/material/GPUMaterialManager.js +19 -4
  1075. package/src/shade/renderer/material/ShadeMaterial.d.ts +2 -1
  1076. package/src/shade/renderer/material/ShadeMaterial.d.ts.map +1 -1
  1077. package/src/shade/renderer/material/ShadeMaterial.js +4 -0
  1078. package/src/shade/renderer/material/StandardShadeMaterial.d.ts +6 -0
  1079. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  1080. package/src/shade/renderer/material/StandardShadeMaterial.js +5 -0
  1081. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -0
  1082. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  1083. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +8 -0
  1084. package/src/shade/renderer/particles/DESIGN.md +82 -69
  1085. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +93 -48
  1086. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  1087. package/src/shade/renderer/particles/GPUParticleSystem.js +117 -176
  1088. package/src/shade/renderer/particles/ParticleConstants.d.ts +6 -12
  1089. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  1090. package/src/shade/renderer/particles/ParticleConstants.js +6 -13
  1091. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +4 -4
  1092. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +6 -6
  1093. package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts +2 -1
  1094. package/src/shade/renderer/particles/coherence/particle_program_buckets.d.ts.map +1 -1
  1095. package/src/shade/renderer/particles/coherence/particle_program_buckets.js +6 -8
  1096. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -1
  1097. package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +4 -3
  1098. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +10 -14
  1099. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  1100. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +10 -14
  1101. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +6 -5
  1102. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
  1103. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +6 -5
  1104. package/src/shade/renderer/particles/graph_particles.d.ts +19 -32
  1105. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  1106. package/src/shade/renderer/particles/graph_particles.js +18 -25
  1107. package/src/shade/renderer/particles/graph_particles_avboit.js +16 -16
  1108. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +3 -2
  1109. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  1110. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +31 -27
  1111. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +4 -4
  1112. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +4 -4
  1113. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +4 -4
  1114. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +7 -6
  1115. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
  1116. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +7 -6
  1117. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +4 -3
  1118. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  1119. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +4 -3
  1120. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +2 -2
  1121. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +10 -10
  1122. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +3 -3
  1123. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -1
  1124. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +2 -1
  1125. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  1126. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +13 -16
  1127. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  1128. package/src/shade/renderer/particles/shaders/shader_particle_render.js +22 -19
  1129. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts +10 -3
  1130. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  1131. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +12 -2
  1132. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts +7 -3
  1133. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  1134. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +3 -2
  1135. package/src/shade/renderer/postprocess/bloom/graph_bloom_downsample.d.ts +11 -5
  1136. package/src/shade/renderer/postprocess/bloom/graph_bloom_downsample.d.ts.map +1 -1
  1137. package/src/shade/renderer/postprocess/bloom/graph_bloom_downsample.js +5 -4
  1138. package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts +13 -6
  1139. package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.d.ts.map +1 -1
  1140. package/src/shade/renderer/postprocess/bloom/graph_postprocess_bloom.js +11 -9
  1141. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +31 -15
  1142. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  1143. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +15 -14
  1144. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +21 -10
  1145. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
  1146. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +10 -9
  1147. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts +17 -8
  1148. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.d.ts.map +1 -1
  1149. package/src/shade/renderer/postprocess/denoise/graph_atorus_denoise_luma.js +8 -7
  1150. package/src/shade/renderer/postprocess/dof/gather/DepthOfFieldU.d.ts +6 -0
  1151. package/src/shade/renderer/postprocess/dof/gather/DepthOfFieldU.d.ts.map +1 -1
  1152. package/src/shade/renderer/postprocess/dof/gather/DepthOfFieldU.js +5 -0
  1153. package/src/shade/renderer/postprocess/dof/raymarch/DepthOfField.d.ts +6 -0
  1154. package/src/shade/renderer/postprocess/dof/raymarch/DepthOfField.d.ts.map +1 -1
  1155. package/src/shade/renderer/postprocess/dof/raymarch/DepthOfField.js +5 -0
  1156. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +14 -6
  1157. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  1158. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +6 -4
  1159. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts +13 -6
  1160. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.d.ts.map +1 -1
  1161. package/src/shade/renderer/postprocess/gtao/graph_build_depth_mipmap.js +6 -5
  1162. package/src/shade/renderer/postprocess/gtao/render_copy_texture.d.ts +28 -13
  1163. package/src/shade/renderer/postprocess/gtao/render_copy_texture.d.ts.map +1 -1
  1164. package/src/shade/renderer/postprocess/gtao/render_copy_texture.js +13 -11
  1165. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts +4 -0
  1166. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.d.ts.map +1 -1
  1167. package/src/shade/renderer/postprocess/motion_blur/MotionBlur.js +4 -0
  1168. package/src/shade/renderer/postprocess/nss/NSS.d.ts +7 -1
  1169. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  1170. package/src/shade/renderer/postprocess/nss/NSS.js +5 -0
  1171. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts +9 -4
  1172. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.d.ts.map +1 -1
  1173. package/src/shade/renderer/postprocess/ssr/graph_build_depth_max_pyramid.js +4 -3
  1174. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts +13 -6
  1175. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts.map +1 -1
  1176. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js +6 -5
  1177. package/src/shade/renderer/postprocess/taa/TAA.d.ts +15 -7
  1178. package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
  1179. package/src/shade/renderer/postprocess/taa/TAA.js +7 -6
  1180. package/src/shade/renderer/postprocess/velocity/graph_add_camera_velocity.d.ts +13 -6
  1181. package/src/shade/renderer/postprocess/velocity/graph_add_camera_velocity.d.ts.map +1 -1
  1182. package/src/shade/renderer/postprocess/velocity/graph_add_camera_velocity.js +6 -5
  1183. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts +11 -5
  1184. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.d.ts.map +1 -1
  1185. package/src/shade/renderer/rasterize/compute/graph_mesh_frustum_cull.js +5 -4
  1186. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts +11 -5
  1187. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.d.ts.map +1 -1
  1188. package/src/shade/renderer/rasterize/compute/graph_mesh_sphere_cull.js +5 -4
  1189. package/src/shade/renderer/rasterize/execute_rasterization_jobs.d.ts +12 -5
  1190. package/src/shade/renderer/rasterize/execute_rasterization_jobs.d.ts.map +1 -1
  1191. package/src/shade/renderer/rasterize/execute_rasterization_jobs.js +5 -4
  1192. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts +2 -0
  1193. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  1194. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +5 -0
  1195. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts +11 -5
  1196. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
  1197. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +5 -4
  1198. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.d.ts +9 -4
  1199. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.d.ts.map +1 -1
  1200. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.js +4 -3
  1201. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts +11 -5
  1202. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.d.ts.map +1 -1
  1203. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_sort_meshlets_by_bucket_id.js +5 -4
  1204. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts +15 -7
  1205. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.d.ts.map +1 -1
  1206. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_one_way.js +7 -6
  1207. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_two_way.d.ts +15 -7
  1208. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_two_way.d.ts.map +1 -1
  1209. package/src/shade/renderer/rasterize/expand/graph_mesh_filter_two_way.js +7 -6
  1210. package/src/shade/renderer/rasterize/expand/graph_meshlets_expand.d.ts +13 -6
  1211. package/src/shade/renderer/rasterize/expand/graph_meshlets_expand.d.ts.map +1 -1
  1212. package/src/shade/renderer/rasterize/expand/graph_meshlets_expand.js +6 -5
  1213. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts +17 -8
  1214. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.d.ts.map +1 -1
  1215. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_one_way.js +8 -7
  1216. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_two_way.d.ts +13 -6
  1217. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_two_way.d.ts.map +1 -1
  1218. package/src/shade/renderer/rasterize/expand/graph_meshlets_filter_two_way.js +6 -5
  1219. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +21 -10
  1220. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
  1221. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +10 -9
  1222. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_by_material_side.d.ts +13 -6
  1223. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_by_material_side.d.ts.map +1 -1
  1224. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_by_material_side.js +6 -5
  1225. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_one_way.d.ts +17 -8
  1226. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_one_way.d.ts.map +1 -1
  1227. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_one_way.js +8 -7
  1228. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_two_way.d.ts +13 -6
  1229. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_two_way.d.ts.map +1 -1
  1230. package/src/shade/renderer/rasterize/expand/graph_triangles_filter_two_way.js +6 -5
  1231. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts +15 -7
  1232. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.d.ts.map +1 -1
  1233. package/src/shade/renderer/rasterize/expand/mesh/graph_expand_meshes_to_meshlets.js +7 -6
  1234. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts +11 -5
  1235. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.d.ts.map +1 -1
  1236. package/src/shade/renderer/rasterize/fast/graph_extract_meshes_from_bucket.js +5 -4
  1237. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts +9 -4
  1238. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
  1239. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +4 -3
  1240. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +80 -37
  1241. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  1242. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +37 -33
  1243. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts +28 -13
  1244. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
  1245. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +13 -12
  1246. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
  1247. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +12 -11
  1248. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  1249. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +5 -4
  1250. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +9 -4
  1251. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  1252. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +4 -3
  1253. package/src/shade/renderer/restir/di/ReSTIRDI.d.ts +10 -0
  1254. package/src/shade/renderer/restir/di/ReSTIRDI.d.ts.map +1 -1
  1255. package/src/shade/renderer/restir/di/ReSTIRDI.js +7 -0
  1256. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +2 -0
  1257. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  1258. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +5 -0
  1259. package/src/shade/renderer/scene/GPUSceneContext.d.ts +4 -0
  1260. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  1261. package/src/shade/renderer/scene/GPUSceneContext.js +15 -0
  1262. package/src/shade/renderer/scene/InstanceBatch.d.ts +11 -3
  1263. package/src/shade/renderer/scene/InstanceBatch.d.ts.map +1 -1
  1264. package/src/shade/renderer/scene/InstanceBatch.js +6 -0
  1265. package/src/shade/renderer/scene/Mesh.d.ts +8 -2
  1266. package/src/shade/renderer/scene/Mesh.d.ts.map +1 -1
  1267. package/src/shade/renderer/scene/Mesh.js +6 -1
  1268. package/src/shade/renderer/scene/SceneManager.d.ts +6 -0
  1269. package/src/shade/renderer/scene/SceneManager.d.ts.map +1 -1
  1270. package/src/shade/renderer/scene/SceneManager.js +5 -0
  1271. package/src/shade/renderer/scene/SkinnedMesh.d.ts +4 -0
  1272. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  1273. package/src/shade/renderer/scene/SkinnedMesh.js +4 -0
  1274. package/src/shade/renderer/scene/serialization/serialize_scene.d.ts +7 -3
  1275. package/src/shade/renderer/scene/serialization/serialize_scene.d.ts.map +1 -1
  1276. package/src/shade/renderer/scene/serialization/serialize_scene.js +3 -2
  1277. package/src/shade/renderer/shader/ComputeShader.d.ts +64 -29
  1278. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  1279. package/src/shade/renderer/shader/ComputeShader.js +29 -23
  1280. package/src/shade/renderer/shader/ImageShader.d.ts +9 -4
  1281. package/src/shade/renderer/shader/ImageShader.d.ts.map +1 -1
  1282. package/src/shade/renderer/shader/ImageShader.js +4 -3
  1283. package/src/shade/renderer/shader/ShaderDescriptor.d.ts +10 -4
  1284. package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
  1285. package/src/shade/renderer/shader/ShaderDescriptor.js +4 -3
  1286. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.d.ts +7 -3
  1287. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.d.ts.map +1 -1
  1288. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.js +6 -4
  1289. package/src/shade/renderer/shader/fullscreen/create_full_quad_pipeline_descriptor.d.ts +13 -6
  1290. package/src/shade/renderer/shader/fullscreen/create_full_quad_pipeline_descriptor.d.ts.map +1 -1
  1291. package/src/shade/renderer/shader/fullscreen/create_full_quad_pipeline_descriptor.js +6 -5
  1292. package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.d.ts +13 -6
  1293. package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.d.ts.map +1 -1
  1294. package/src/shade/renderer/shader/graph/compute/graph_compute_indirect_pass.js +6 -5
  1295. package/src/shade/renderer/shader/graph/compute/graph_compute_pass.d.ts +13 -6
  1296. package/src/shade/renderer/shader/graph/compute/graph_compute_pass.d.ts.map +1 -1
  1297. package/src/shade/renderer/shader/graph/compute/graph_compute_pass.js +6 -5
  1298. package/src/shade/renderer/shader/graph/graph_image_pass.d.ts +27 -13
  1299. package/src/shade/renderer/shader/graph/graph_image_pass.d.ts.map +1 -1
  1300. package/src/shade/renderer/shader/graph/graph_image_pass.js +13 -12
  1301. package/src/shade/renderer/shader/graph/graph_import_raw_buffer.d.ts +15 -7
  1302. package/src/shade/renderer/shader/graph/graph_import_raw_buffer.d.ts.map +1 -1
  1303. package/src/shade/renderer/shader/graph/graph_import_raw_buffer.js +7 -6
  1304. package/src/shade/renderer/shader/graph/graph_import_typed_buffer.d.ts +13 -6
  1305. package/src/shade/renderer/shader/graph/graph_import_typed_buffer.d.ts.map +1 -1
  1306. package/src/shade/renderer/shader/graph/graph_import_typed_buffer.js +6 -5
  1307. package/src/shade/renderer/shader/pass/RenderPassColorAttachmentDescriptor.d.ts +7 -3
  1308. package/src/shade/renderer/shader/pass/RenderPassColorAttachmentDescriptor.d.ts.map +1 -1
  1309. package/src/shade/renderer/shader/pass/RenderPassColorAttachmentDescriptor.js +3 -2
  1310. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +49 -23
  1311. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  1312. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +23 -20
  1313. package/src/shade/renderer/shader/resource/ShaderResourceDescriptor.d.ts +6 -0
  1314. package/src/shade/renderer/shader/resource/ShaderResourceDescriptor.d.ts.map +1 -1
  1315. package/src/shade/renderer/shader/resource/ShaderResourceDescriptor.js +9 -0
  1316. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +11 -2
  1317. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
  1318. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +7 -1
  1319. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts +10 -3
  1320. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  1321. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +9 -2
  1322. package/src/shade/renderer/shader/type/WGSLAttribute.d.ts +2 -2
  1323. package/src/shade/renderer/shader/type/WGSLAttribute.d.ts.map +1 -1
  1324. package/src/shade/renderer/shader/type/WGSLAttribute.js +1 -1
  1325. package/src/shade/renderer/shader/type/WGSLStructField.d.ts +6 -2
  1326. package/src/shade/renderer/shader/type/WGSLStructField.d.ts.map +1 -1
  1327. package/src/shade/renderer/shader/type/WGSLStructField.js +5 -1
  1328. package/src/shade/renderer/shader/type/WebGPUArray.d.ts +0 -2
  1329. package/src/shade/renderer/shader/type/WebGPUArray.d.ts.map +1 -1
  1330. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts +2 -4
  1331. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  1332. package/src/shade/renderer/shader/type/WebGPUStruct.js +1 -1
  1333. package/src/shade/renderer/shader/type/WebGPUType.d.ts +5 -1
  1334. package/src/shade/renderer/shader/type/WebGPUType.d.ts.map +1 -1
  1335. package/src/shade/renderer/shader/type/WebGPUType.js +4 -0
  1336. package/src/shade/renderer/shadow/evsm/graph_evsm_render_cascade.d.ts +7 -3
  1337. package/src/shade/renderer/shadow/evsm/graph_evsm_render_cascade.d.ts.map +1 -1
  1338. package/src/shade/renderer/shadow/evsm/graph_evsm_render_cascade.js +3 -2
  1339. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +7 -0
  1340. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  1341. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +10 -0
  1342. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +12 -0
  1343. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  1344. package/src/shade/renderer/shadow/map/Shadowmap.js +8 -0
  1345. package/src/shade/renderer/shadow/map/SpotLightShadowmap.d.ts +2 -2
  1346. package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.d.ts +7 -3
  1347. package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.d.ts.map +1 -1
  1348. package/src/shade/renderer/shadow/map/csm/graph_csm_setup_cascades.js +3 -2
  1349. package/src/shade/renderer/shadow/map/csm_debug_draw_preview.d.ts +11 -5
  1350. package/src/shade/renderer/shadow/map/csm_debug_draw_preview.d.ts.map +1 -1
  1351. package/src/shade/renderer/shadow/map/csm_debug_draw_preview.js +5 -4
  1352. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts +13 -6
  1353. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts.map +1 -1
  1354. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +6 -5
  1355. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts +9 -4
  1356. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.d.ts.map +1 -1
  1357. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +4 -3
  1358. package/src/shade/renderer/shadow/sdf/brixelizer/Brixelizer.d.ts +11 -5
  1359. package/src/shade/renderer/shadow/sdf/brixelizer/Brixelizer.d.ts.map +1 -1
  1360. package/src/shade/renderer/shadow/sdf/brixelizer/Brixelizer.js +5 -4
  1361. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts +1 -0
  1362. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  1363. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +4 -0
  1364. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts +13 -6
  1365. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  1366. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +6 -5
  1367. package/src/shade/renderer/texture/GPUTextureAllocator.d.ts +4 -0
  1368. package/src/shade/renderer/texture/GPUTextureAllocator.d.ts.map +1 -1
  1369. package/src/shade/renderer/texture/GPUTextureAllocator.js +4 -0
  1370. package/src/shade/renderer/texture/GPUTextureContext.d.ts +1 -0
  1371. package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
  1372. package/src/shade/renderer/texture/GPUTextureContext.js +4 -0
  1373. package/src/shade/renderer/texture/RenderTarget.d.ts +7 -3
  1374. package/src/shade/renderer/texture/RenderTarget.d.ts.map +1 -1
  1375. package/src/shade/renderer/texture/RenderTarget.js +3 -2
  1376. package/src/shade/renderer/texture/ShadeTexture.d.ts +2 -1
  1377. package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
  1378. package/src/shade/renderer/texture/ShadeTexture.js +4 -0
  1379. package/src/shade/renderer/texture/TextureManager.d.ts +1 -0
  1380. package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
  1381. package/src/shade/renderer/texture/TextureManager.js +4 -0
  1382. package/src/shade/renderer/texture/debug_draw_texture.d.ts +9 -4
  1383. package/src/shade/renderer/texture/debug_draw_texture.d.ts.map +1 -1
  1384. package/src/shade/renderer/texture/debug_draw_texture.js +4 -3
  1385. package/src/shade/renderer/texture/download_texture_data.d.ts +17 -6
  1386. package/src/shade/renderer/texture/download_texture_data.d.ts.map +1 -1
  1387. package/src/shade/renderer/texture/download_texture_data.js +10 -5
  1388. package/src/shade/renderer/texture/draw_texture_as_rgba.d.ts +26 -12
  1389. package/src/shade/renderer/texture/draw_texture_as_rgba.d.ts.map +1 -1
  1390. package/src/shade/renderer/texture/draw_texture_as_rgba.js +12 -10
  1391. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.d.ts.map +1 -1
  1392. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +5 -4
  1393. package/src/shade/renderer/texture/source/ShadeImage.d.ts +4 -2
  1394. package/src/shade/renderer/texture/source/ShadeImage.d.ts.map +1 -1
  1395. package/src/shade/renderer/texture/source/ShadeImage.js +5 -0
  1396. package/src/shade/renderer/texture/source/ShadeImageSerializationAdapter.d.ts +12 -0
  1397. package/src/shade/renderer/texture/source/ShadeImageSerializationAdapter.d.ts.map +1 -1
  1398. package/src/shade/renderer/texture/util/make_checkers_texture.d.ts +12 -5
  1399. package/src/shade/renderer/texture/util/make_checkers_texture.d.ts.map +1 -1
  1400. package/src/shade/renderer/texture/util/make_checkers_texture.js +5 -4
  1401. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts +7 -2
  1402. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  1403. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +8 -0
  1404. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts +2 -0
  1405. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts.map +1 -1
  1406. package/src/shade/renderer/util/Uint32BufferSamplingStats.js +5 -0
  1407. package/src/shade/renderer/view/GPUViewContext.d.ts +4 -1
  1408. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  1409. package/src/shade/renderer/view/GPUViewContext.js +11 -5
  1410. package/src/shade/renderer/view/View.d.ts +6 -0
  1411. package/src/shade/renderer/view/View.d.ts.map +1 -1
  1412. package/src/shade/renderer/view/View.js +5 -0
  1413. package/src/shade/renderer/view/ViewManager.d.ts +11 -1
  1414. package/src/shade/renderer/view/ViewManager.d.ts.map +1 -1
  1415. package/src/shade/renderer/view/ViewManager.js +7 -0
  1416. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +6 -0
  1417. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  1418. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +5 -0
  1419. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +15 -6
  1420. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  1421. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +11 -5
  1422. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +5 -5
  1423. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  1424. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +1 -1
  1425. package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +4 -0
  1426. package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
  1427. package/src/shade/renderer/volumetrics/SceneVolumetrics.js +4 -0
  1428. package/src/shade/renderer/volumetrics/build_volumetrics_sun_shadow_transform.d.ts +23 -11
  1429. package/src/shade/renderer/volumetrics/build_volumetrics_sun_shadow_transform.d.ts.map +1 -1
  1430. package/src/shade/renderer/volumetrics/build_volumetrics_sun_shadow_transform.js +11 -10
  1431. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +37 -18
  1432. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  1433. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +30 -26
  1434. package/src/view/View.d.ts +8 -3
  1435. package/src/view/View.d.ts.map +1 -1
  1436. package/src/view/View.js +7 -2
  1437. package/src/view/asset/AssetLoaderStatusView.d.ts +7 -3
  1438. package/src/view/asset/AssetLoaderStatusView.d.ts.map +1 -1
  1439. package/src/view/asset/AssetLoaderStatusView.js +3 -2
  1440. package/src/view/common/ListView.d.ts +21 -15
  1441. package/src/view/common/ListView.d.ts.map +1 -1
  1442. package/src/view/common/ListView.js +8 -7
  1443. package/src/view/common/LocalizedLabelView.d.ts +15 -7
  1444. package/src/view/common/LocalizedLabelView.d.ts.map +1 -1
  1445. package/src/view/common/LocalizedLabelView.js +7 -6
  1446. package/src/view/common/TabbedView.d.ts +14 -6
  1447. package/src/view/common/TabbedView.d.ts.map +1 -1
  1448. package/src/view/common/TabbedView.js +6 -4
  1449. package/src/view/controller/controls/BooleanVector3Control.d.ts +1 -1
  1450. package/src/view/controller/controls/BooleanVector3Control.d.ts.map +1 -1
  1451. package/src/view/controller/controls/GuiControl.d.ts +1 -1
  1452. package/src/view/controller/controls/GuiControl.d.ts.map +1 -1
  1453. package/src/view/controller/controls/NativeListController.d.ts +15 -7
  1454. package/src/view/controller/controls/NativeListController.d.ts.map +1 -1
  1455. package/src/view/controller/controls/NativeListController.js +7 -6
  1456. package/src/view/controller/controls/Vector1Control.d.ts +1 -1
  1457. package/src/view/controller/controls/Vector1Control.d.ts.map +1 -1
  1458. package/src/view/currency/CompositeCurrencyLabelView.d.ts +10 -5
  1459. package/src/view/currency/CompositeCurrencyLabelView.d.ts.map +1 -1
  1460. package/src/view/currency/CompositeCurrencyLabelView.js +4 -3
  1461. package/src/view/currency/CurrencyDenominationLabelView.d.ts +7 -3
  1462. package/src/view/currency/CurrencyDenominationLabelView.d.ts.map +1 -1
  1463. package/src/view/currency/CurrencyDenominationLabelView.js +3 -2
  1464. package/src/view/elements/CheckboxView.d.ts +7 -3
  1465. package/src/view/elements/CheckboxView.d.ts.map +1 -1
  1466. package/src/view/elements/CheckboxView.js +3 -2
  1467. package/src/view/elements/DropDownSelectionView.d.ts +9 -4
  1468. package/src/view/elements/DropDownSelectionView.d.ts.map +1 -1
  1469. package/src/view/elements/DropDownSelectionView.js +3 -2
  1470. package/src/view/elements/EmptyView.d.ts +29 -13
  1471. package/src/view/elements/EmptyView.d.ts.map +1 -1
  1472. package/src/view/elements/EmptyView.js +13 -11
  1473. package/src/view/elements/SimpleWindow.d.ts +1 -1
  1474. package/src/view/elements/SimpleWindow.d.ts.map +1 -1
  1475. package/src/view/elements/button/ButtonView.d.ts +15 -7
  1476. package/src/view/elements/button/ButtonView.d.ts.map +1 -1
  1477. package/src/view/elements/button/ButtonView.js +7 -6
  1478. package/src/view/elements/image/ImageView.d.ts +7 -3
  1479. package/src/view/elements/image/ImageView.d.ts.map +1 -1
  1480. package/src/view/elements/image/ImageView.js +3 -2
  1481. package/src/view/elements/image/SvgImageView.d.ts +5 -2
  1482. package/src/view/elements/image/SvgImageView.d.ts.map +1 -1
  1483. package/src/view/elements/image/SvgImageView.js +2 -1
  1484. package/src/view/elements/label/LabeledValueView.d.ts +14 -7
  1485. package/src/view/elements/label/LabeledValueView.d.ts.map +1 -1
  1486. package/src/view/elements/label/LabeledValueView.js +6 -5
  1487. package/src/view/elements/progress/SmoothProgressBar.d.ts +14 -7
  1488. package/src/view/elements/progress/SmoothProgressBar.d.ts.map +1 -1
  1489. package/src/view/elements/progress/SmoothProgressBar.js +6 -5
  1490. package/src/view/elements/progress/segmented/SegmentedResourceBarView.d.ts +9 -4
  1491. package/src/view/elements/progress/segmented/SegmentedResourceBarView.d.ts.map +1 -1
  1492. package/src/view/elements/progress/segmented/SegmentedResourceBarView.js +4 -3
  1493. package/src/view/elements/radial/RadialMenu.d.ts +19 -9
  1494. package/src/view/elements/radial/RadialMenu.d.ts.map +1 -1
  1495. package/src/view/elements/radial/RadialMenu.js +9 -8
  1496. package/src/view/elements/radial/RadialMenuElementDefinition.d.ts +63 -31
  1497. package/src/view/elements/radial/RadialMenuElementDefinition.d.ts.map +1 -1
  1498. package/src/view/elements/radial/RadialMenuElementDefinition.js +30 -28
  1499. package/src/view/elements/radial/RadialProgressView.d.ts +1 -1
  1500. package/src/view/elements/radial/RadialProgressView.d.ts.map +1 -1
  1501. package/src/view/elements/radial/RadialText.d.ts +18 -10
  1502. package/src/view/elements/radial/RadialText.d.ts.map +1 -1
  1503. package/src/view/elements/radial/RadialText.js +7 -6
  1504. package/src/view/elements/tiles2d/Tile.d.ts +12 -6
  1505. package/src/view/elements/tiles2d/Tile.d.ts.map +1 -1
  1506. package/src/view/elements/tiles2d/Tile.js +4 -3
  1507. package/src/view/elements/tiles2d/TileGrid.d.ts +23 -10
  1508. package/src/view/elements/tiles2d/TileGrid.d.ts.map +1 -1
  1509. package/src/view/elements/tiles2d/TileGrid.js +10 -9
  1510. package/src/view/elements/video/VideoView.d.ts +7 -3
  1511. package/src/view/elements/video/VideoView.d.ts.map +1 -1
  1512. package/src/view/elements/video/VideoView.js +3 -2
  1513. package/src/view/game/achievements/AchievementNotificationView.d.ts +7 -3
  1514. package/src/view/game/achievements/AchievementNotificationView.d.ts.map +1 -1
  1515. package/src/view/game/achievements/AchievementNotificationView.js +3 -2
  1516. package/src/view/graphics/GraphicsContextFailureView.d.ts +11 -5
  1517. package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -1
  1518. package/src/view/graphics/GraphicsContextFailureView.js +5 -4
  1519. package/src/view/interaction/InteractionCommand.d.ts +11 -5
  1520. package/src/view/interaction/InteractionCommand.d.ts.map +1 -1
  1521. package/src/view/interaction/InteractionCommand.js +5 -4
  1522. package/src/view/interaction/InterfaceCommand.d.ts +32 -15
  1523. package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
  1524. package/src/view/interaction/InterfaceCommand.js +15 -13
  1525. package/src/view/interaction/createInterfaceCommandButton.d.ts +9 -4
  1526. package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
  1527. package/src/view/interaction/createInterfaceCommandButton.js +4 -3
  1528. package/src/view/layout/DockPanel.d.ts +11 -5
  1529. package/src/view/layout/DockPanel.d.ts.map +1 -1
  1530. package/src/view/layout/DockPanel.js +5 -4
  1531. package/src/view/layout/DrawerView.d.ts +7 -3
  1532. package/src/view/layout/DrawerView.d.ts.map +1 -1
  1533. package/src/view/layout/DrawerView.js +3 -2
  1534. package/src/view/layout/FloatingPanelView.d.ts +7 -3
  1535. package/src/view/layout/FloatingPanelView.d.ts.map +1 -1
  1536. package/src/view/layout/FloatingPanelView.js +3 -2
  1537. package/src/view/layout/SplitView.d.ts +11 -5
  1538. package/src/view/layout/SplitView.d.ts.map +1 -1
  1539. package/src/view/layout/SplitView.js +5 -4
  1540. package/src/view/math/FunctionGraphView.d.ts +8 -4
  1541. package/src/view/math/FunctionGraphView.d.ts.map +1 -1
  1542. package/src/view/math/FunctionGraphView.js +3 -2
  1543. package/src/view/minimap/MinimapCanvasView.d.ts +10 -4
  1544. package/src/view/minimap/MinimapCanvasView.d.ts.map +1 -1
  1545. package/src/view/minimap/MinimapCanvasView.js +4 -3
  1546. package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -1
  1547. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  1548. package/src/view/minimap/dom/MinimapMarkerView.d.ts +31 -9
  1549. package/src/view/minimap/dom/MinimapMarkerView.d.ts.map +1 -1
  1550. package/src/view/minimap/dom/MinimapTerrainView.d.ts +9 -4
  1551. package/src/view/minimap/dom/MinimapTerrainView.d.ts.map +1 -1
  1552. package/src/view/minimap/dom/MinimapTerrainView.js +3 -2
  1553. package/src/view/task/TaskProgressView.d.ts +7 -3
  1554. package/src/view/task/TaskProgressView.d.ts.map +1 -1
  1555. package/src/view/task/TaskProgressView.js +3 -2
  1556. package/src/view/tooltip/DomTooltipManager.d.ts +6 -0
  1557. package/src/view/tooltip/DomTooltipManager.d.ts.map +1 -1
  1558. package/src/view/tooltip/DomTooltipManager.js +5 -0
  1559. package/src/view/tooltip/DomTooltipObserver.d.ts +4 -0
  1560. package/src/view/tooltip/DomTooltipObserver.d.ts.map +1 -1
  1561. package/src/view/tooltip/DomTooltipObserver.js +4 -0
  1562. package/src/view/tooltip/TooltipManager.d.ts +6 -0
  1563. package/src/view/tooltip/TooltipManager.d.ts.map +1 -1
  1564. package/src/view/tooltip/TooltipManager.js +5 -0
  1565. package/src/view/tooltip/TooltipView.d.ts +7 -3
  1566. package/src/view/tooltip/TooltipView.d.ts.map +1 -1
  1567. package/src/view/tooltip/TooltipView.js +5 -1
  1568. package/src/view/tooltip/VisualTip.d.ts +6 -0
  1569. package/src/view/tooltip/VisualTip.d.ts.map +1 -1
  1570. package/src/view/tooltip/VisualTip.js +5 -0
  1571. package/src/view/tooltip/gml/GMLEngine.d.ts +14 -2
  1572. package/src/view/tooltip/gml/GMLEngine.d.ts.map +1 -1
  1573. package/src/view/tooltip/gml/GMLEngine.js +8 -0
  1574. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.d.ts +10 -0
  1575. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.d.ts.map +1 -1
  1576. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.js +7 -0
  1577. package/src/view/util/DomSizeObserver.d.ts +9 -2
  1578. package/src/view/util/DomSizeObserver.d.ts.map +1 -1
  1579. package/src/view/util/DomSizeObserver.js +6 -1
  1580. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.d.ts +0 -395
  1581. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.d.ts.map +0 -1
  1582. package/src/shade/renderer/particles/ParticleRenderMode.d.ts +0 -19
  1583. package/src/shade/renderer/particles/ParticleRenderMode.d.ts.map +0 -1
  1584. package/src/shade/renderer/particles/ParticleRenderMode.js +0 -33
  1585. package/src/shade/renderer/particles/graph_particles_billboard.d.ts +0 -37
  1586. package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +0 -1
  1587. package/src/shade/renderer/particles/graph_particles_billboard.js +0 -93
  1588. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +0 -55
  1589. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +0 -1
  1590. package/src/shade/renderer/particles/sort/graph_particle_sort.js +0 -130
  1591. package/src/shade/renderer/particles/sort/particle_counting_sort.d.ts +0 -26
  1592. package/src/shade/renderer/particles/sort/particle_counting_sort.d.ts.map +0 -1
  1593. package/src/shade/renderer/particles/sort/particle_counting_sort.js +0 -51
  1594. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +0 -14
  1595. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +0 -1
  1596. package/src/shade/renderer/particles/sort/shader_particle_sort.js +0 -223
@@ -0,0 +1,956 @@
1
+ # Cloth — measurements
2
+
3
+ > Two milestones, appended in order. §1–§8 are **M0**, the solver core; §9–§15
4
+ > are **M1**, the component and the system. Nothing above a milestone boundary
5
+ > is edited by the milestone below it — a measurement that turned out to be
6
+ > incomplete is corrected by a later section saying so, not by a rewrite.
7
+
8
+ ---
9
+
10
+ # Cloth — M0 measurements
11
+
12
+ > What the solver core actually does, measured. Written 2026-09-10, against the
13
+ > M0 implementation in `solver/`.
14
+ >
15
+ > Every number here is reproducible from two scripts, both runnable directly
16
+ > under node (through vitest, imported bindings become getters and the
17
+ > cross-module calls that make up the inner loop stop inlining — which is
18
+ > exactly what is being measured):
19
+ >
20
+ > ```
21
+ > node src/engine/physics/cloth/solver/__fixtures__/cloth_constants_sweep.mjs
22
+ > node src/engine/physics/cloth/solver/__fixtures__/cloth_bench.mjs
23
+ > ```
24
+ >
25
+ > There is also a playground, which is where the §6 finding came from:
26
+ > `npm run dev --workspace @woosh/meep-engine`, then
27
+ > `/src/engine/physics/cloth/playground/`. Its presets are the interesting rows
28
+ > of this document, one click each.
29
+
30
+ ---
31
+
32
+ ## 1. What M0 proved wrong in PLAN.md
33
+
34
+ Six things, in the order they were found. Each is folded back into the design
35
+ document; this is the evidence.
36
+
37
+ | # | The design said | The measurement said |
38
+ |---|---|---|
39
+ | 0 | §6 — a stretch row carries a material stiffness `k_stretch` | A *penalty* stiffer than about `8·(m/h²)` makes the step **add** energy — measured at +6.8 J on a sheet whose whole potential is 1.2 J — and no iteration count removes it. Cloth's stretch rows have to be hard. §6 below. |
40
+ | 1 | §5.3 — an SPD Hessian means "no update can increase the local energy" | SPD buys a descent **direction**. A full Newton step of 1 overshoots and climbs where the model stops resembling the energy. §5.3 below. |
41
+ | 2 | §5.2 — drop the geometric-stiffness term `fc·∂²C/∂x²` entirely | Its PSD half is what stops the update overshooting sideways. Keep it; the NSD half is still dropped. §5.1 |
42
+ | 3 | §5.2 — the multiplier and the penalty band apply to every row | They apply only to **hard** rows. On a soft row the multiplier drives `C → 0` and makes a 1 kN/m spring 100× stiffer than Hooke. §3 |
43
+ | 4 | §5.2 — `k_min` and `k_max` are stiffnesses | They are only meaningful as **ratios of the row's own `m/h²`** — the same ratio works across five decades of particle mass; a fixed stiffness does not. §4 |
44
+ | 5 | §5.2 — the 3×3 solve "never fails" | The *cofactor* solve fails: a determinant of −4.8e8 on a matrix with eigenvalues 0.12, 0.12, 5.4e8. LDLᵀ does not. §5.2 |
45
+ | 6 | §17 — under 2 ms per frame per character | **3.50 ms** best case, 4.42 ms median, for 1,024 particles at 2×4. Over by 1.75×. And gathering neighbours is *not* what dominates. §7 |
46
+
47
+ A seventh is a gap rather than an error: §7 P5's jitter mechanism (`γ` decaying
48
+ warm-started duals) only reaches hard rows, because a soft row has no multiplier
49
+ to decay. §6.
50
+
51
+ ---
52
+
53
+ ## 2. The constants
54
+
55
+ ```
56
+ α = 0.25 γ = 1 β = 1e5 (unexercised) k_min = k_max = 8·(m/h²)
57
+ ```
58
+
59
+ `cloth_solver_constants.js` carries them and says why. The short version:
60
+
61
+ - **α and γ act only through their product.** At a fixed `α·γ` the answer does
62
+ not move at all between `γ = 0.3` and `γ = 1`. `γ` sits at 1 because its
63
+ second job — decaying the penalty — has nothing to do while the band is a
64
+ single point.
65
+ - **`α·γ ≥ 0.5` diverges.** 0.25 is a factor of two clear.
66
+ - **`k_min = k_max` disables the ramp**, which measured as good as any ramped
67
+ alternative for M0's persistent rows and removes a scale-dependence that a
68
+ live ramp reintroduces. The ramp exists for *transient* rows — a contact that
69
+ should arrive soft rather than shock the mesh on its first frame — and M0 has
70
+ none, so **β cannot be chosen from M0 data and M2 must measure it.**
71
+
72
+ ### α·γ against the penalty ceiling — 20-link hard chain
73
+
74
+ Cells are `worst |C|/L₀` / `kinetic energy after 400 steps, J`. The kinetic
75
+ column is the one to read: past `α·γ = 0.3` the chain stops settling long before
76
+ it stops being finite.
77
+
78
+ ```
79
+ k_max/(m/h²) α·γ=0 α·γ=0.1 α·γ=0.2 α·γ=0.25 α·γ=0.3 α·γ=0.4 α·γ=0.5 α·γ=0.6
80
+ 1 3.6e-1/3e-7 3.1e-1/2e-7 2.8e-1/1e-7 2.6e-1/4e-7 2.4e-1/1e-6 2.2e-1/3e-6 1.7e-1/2e-3 8.5e-1/5e-3
81
+ 2 1.9e-1/1e-10 1.7e-1/2e-11 1.5e-1/3e-10 1.4e-1/2e-9 1.3e-1/5e-11 1.0e-1/1e-7 9.7e-2/3e-3 diverged
82
+ 4 1.0e-1/1e-13 9.1e-2/1e-13 7.9e-2/1e-12 7.3e-2/2e-12 6.7e-2/3e-12 5.7e-2/3e-7 2.8e-1/3e-2 diverged
83
+ 8 5.6e-2/2e-13 4.9e-2/3e-14 4.1e-2/3e-13 3.8e-2/1e-11 3.5e-2/2e-9 6.6e-2/3e-4 diverged diverged
84
+ 16 4.9e-2/1e-5 2.5e-2/1e-10 2.1e-2/1e-6 4.1e-2/7e-5 3.3e-2/2e-4 2.7e-2/1e-3 diverged diverged
85
+ 32 5.5e-2/5e-5 4.9e-2/5e-5 4.4e-2/4e-5 4.1e-2/4e-5 3.9e-2/4e-5 7.6e-2/1e-3 diverged diverged
86
+ 128 7.0e-2/3e-4 6.4e-2/2e-4 5.9e-2/2e-4 5.7e-2/2e-4 5.5e-2/2e-4 5.0e-2/2e-4 diverged diverged
87
+ 1024 1.3e-1/2e-3 7.3e-2/3e-4 7.6e-2/5e-4 7.3e-2/4e-4 7.1e-2/4e-4 6.6e-2/4e-4 diverged diverged
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 3. Soft rows must not carry a multiplier
93
+
94
+ The first thing the sweep established, and it reshaped everything after it.
95
+
96
+ A row whose material stiffness is finite is representable as a plain penalty,
97
+ and **a plain penalty at the material stiffness is the material law**. There is
98
+ nothing for a multiplier to add, and adding one anyway is not a small error:
99
+ `λ ← λ + k·C` is an augmented Lagrangian on the equality `C = 0`, so it drives
100
+ `C` to zero whatever `k` is. A 0.05 kg mass on a 1 kN/m spring, whose analytic
101
+ extension is 0.49 mm, settled at **4.8 µm — a hundred times stiffer than it was
102
+ authored as.**
103
+
104
+ The fix is that a row is **hard** exactly when its stiffness is `Infinity`,
105
+ which makes §6's table literal rather than introducing a threshold. A hard row
106
+ gets the augmented Lagrangian; a soft row is a pure penalty and carries no
107
+ multiplier. Afterwards a soft row reads exactly Hooke, and reads it whatever the
108
+ five constants are doing:
109
+
110
+ ```
111
+ chosen extension/Hooke = 1.0000
112
+ α=0 extension/Hooke = 1.0000
113
+ α=1 γ=1 extension/Hooke = 1.0000
114
+ β=0 extension/Hooke = 1.0000
115
+ band ×1024 extension/Hooke = 1.0000
116
+ ```
117
+
118
+ That insensitivity is what makes α, β, γ and the band honest as *global* solver
119
+ internals rather than things an author would eventually have to reach for.
120
+
121
+ ### What the multiplier actually buys
122
+
123
+ Not a smaller residual. Measured across chain depths of 5 to 40 and stiffnesses
124
+ from 1e2 to 1e9 at the same budget, a hard row and a stiff penalty give
125
+ comparable `|C|/L₀`, and which wins depends on the phase of the oscillation the
126
+ snapshot catches. What it buys is **settling**: a hard 20-link chain comes to
127
+ rest at 1e-14 J where the same chain on a penalty of any stiffness sits in a
128
+ limit cycle at 1e-4 J. Ten orders of magnitude, and it is §7 P5 rather than P2.
129
+
130
+ ---
131
+
132
+ ## 4. The penalty band is a ratio, not a stiffness
133
+
134
+ Same 20-link hard chain, `α·γ = 0.25`, with `k_max` held at a fixed **multiple**
135
+ of the row's own `m/h²` while the particle mass moves across five decades. The
136
+ residual column repeats exactly; against a fixed stiffness in N/m it does not.
137
+
138
+ ```
139
+ mass (kg) m/h² ×0.3 ×1 ×2 ×4 ×8 ×16 ×64 ×256
140
+ 5e-6 7.2e-2 7.4e-1/4e-6 2.6e-1/4e-9 1.4e-1/2e-11 7.3e-2/2e-14 3.8e-2/1e-13 4.1e-2/7e-7 4.8e-2/1e-6 6.5e-2/3e-6
141
+ 5e-4 7.2e+0 7.4e-1/4e-4 2.6e-1/4e-7 1.4e-1/2e-9 7.3e-2/2e-12 3.8e-2/1e-11 4.1e-2/7e-5 4.8e-2/1e-4 6.5e-2/3e-4
142
+ 5e-2 7.2e+2 7.4e-1/4e-2 2.6e-1/4e-5 1.4e-1/2e-7 7.3e-2/2e-10 3.8e-2/1e-9 4.1e-2/7e-3 4.8e-2/1e-2 6.5e-2/3e-2
143
+ 5e+0 7.2e+4 7.4e-1/4e+0 2.6e-1/4e-3 1.4e-1/2e-5 7.3e-2/2e-8 3.8e-2/2e-7 4.1e-2/7e-1 4.8e-2/1e+0 6.5e-2/3e+0
144
+ ```
145
+
146
+ §5.2's own prose already names `k_max/(m/h²)` as the quantity that matters. It
147
+ stopped one step short of making the ratio the parameter.
148
+
149
+ The optimum is ×8: below it the row is too soft to converge, above it the chain
150
+ stops settling (the kinetic column climbs by four orders of magnitude between
151
+ ×8 and ×16). The row's scale is its **effective** inertia along the constraint,
152
+ `1/((wᵢ + wⱼ)·h²)`, so a row with one pinned end sees the free particle's own
153
+ `m/h²` and an interior row sees half of it.
154
+
155
+ ---
156
+
157
+ ## 5. The vertex update
158
+
159
+ ### 5.1 The geometric-stiffness term, half of it
160
+
161
+ For a distance row `∂²C/∂x² = (I − g gᵀ)/L`, which is positive semidefinite
162
+ exactly when the row is in tension. Dropping the whole term — §5.2's
163
+ instruction — leaves `H` underestimating the curvature perpendicular to the row
164
+ by `fc/L`, so the update overshoots sideways once that passes the mass term.
165
+ One free particle between two anchors, stepping the tension up:
166
+
167
+ ```
168
+ m/h² fc/L ratio ΔE/E with the term dropped with its PSD half kept
169
+ 1.44e+2 1.06e+2 7.33e-1 −65.6% −62.9%
170
+ 1.44e+2 5.53e+2 3.84e+0 +21.9% −30.1%
171
+ 1.44e+2 5.53e+4 3.84e+2 +80.8% −33.9%
172
+ 1.44e+2 1.45e+6 1.01e+4 +718.0% −22.6%
173
+ 1.44e+2 9.94e+6 6.90e+4 +4140.0% −19.1%
174
+ ```
175
+
176
+ The crossover is exactly where the theory puts it, at `fc/L ≈ m/h²`. Keeping the
177
+ PSD half costs nothing structurally: every term in `H` is still positive
178
+ semidefinite on top of a positive definite mass term, so the SPD-by-construction
179
+ argument is intact and there is still no threshold. The compression half stays
180
+ dropped, and dropping it there is conservative — it makes the step shorter than
181
+ Newton, not longer.
182
+
183
+ The term is added whether or not the row is at a clamp. A saturated row applies
184
+ a force of constant *magnitude*, but that force still swings as the row rotates,
185
+ so its geometric curvature is real even though its penalty curvature is gone.
186
+
187
+ ### 5.2 LDLᵀ, not a cofactor inverse
188
+
189
+ The two agree in exact arithmetic. In `Float64` they do not. A vertex carrying
190
+ one very stiff row against a small mass term assembles
191
+
192
+ ```
193
+ H = [[1.7099e+8, −2.1651e+8, 1.2729e+8],
194
+ [ , 2.7415e+8, −1.6118e+8],
195
+ [ , , 9.4759e+7]]
196
+
197
+ eigenvalues 1.198e−1, 1.198e−1, 5.399e+8 (all positive; condition 4.5e9)
198
+ true determinant 7.752e+6
199
+ cofactor determinant −4.828e+8 ← wrong sign
200
+ LDLᵀ pivots 1.710e+8, 3.120e−1, 1.453e−1 (product 7.752e+6, exact)
201
+ ```
202
+
203
+ The determinant is a sum of triple products that has to cancel by the condition
204
+ number squared; the factorisation never forms them. The dev-build assertion
205
+ checks the three pivots, which *is* positive definiteness rather than a proxy
206
+ for it, and it held across every update in the fuzz.
207
+
208
+ ### 5.3 A descent direction is not a monotone step
209
+
210
+ `Δ = H⁻¹f` with `H` positive definite gives `f·Δ = fᵀH⁻¹f > 0`. That guarantees
211
+ the energy falls for a *small enough* step. The update takes a full step of 1,
212
+ and where the quadratic model stops resembling the energy, a full step climbs.
213
+ Walking one such step:
214
+
215
+ ```
216
+ t E(x₀ + t·Δ) ΔE
217
+ 0 −1.9122412072e+7 0
218
+ 1e−9 −1.9122412098e+7 −2.6e−2 falling
219
+ 1e−7 −1.9122414636e+7 −2.6e+0 falling
220
+ 1e−5 −1.9122668457e+7 −2.6e+2 falling
221
+ 1e−3 −1.9133645206e+7 −1.1e+4 falling — this is the minimum
222
+ 1e−2 −1.8901856618e+7 +2.2e+5 past it
223
+ 0.5 −3.1478025715e+6 +1.6e+7
224
+ 1 +1.9273328443e+7 +3.8e+7 the step the solver takes
225
+ ```
226
+
227
+ The direction is right; the length is a thousand times too long. So the step is
228
+ capped at the **shortest row incident on the particle** — the distance over
229
+ which "the direction to a neighbour" means anything. That radius is the mesh's
230
+ own geometry rather than a tuned constant, it is already in hand from the
231
+ accumulation, and for cloth in any ordinary motion it never binds.
232
+
233
+ With all three corrections in place:
234
+
235
+ | | fraction of updates that climb | worst, relative to the local energy scale |
236
+ |---|---|---|
237
+ | realistic cape, hard rows | 0.0040% | 8.6e−2 |
238
+ | realistic cape, soft rows | 0.0041% | 1.5e−1 |
239
+ | absurd fuzz, 3.0M updates | 1.52% | 1.00 |
240
+
241
+ Those are the thresholds the standing gate in `cloth_solve_vertex.spec.js` holds
242
+ the solver to.
243
+
244
+ ---
245
+
246
+ ## 6. Settling, and the gap in P5
247
+
248
+ At the chosen constants a **hard** chain settles hard: a 20-link chain reaches
249
+ 1e-11 J and an 80-link one 1e-9 J, and the residual falls monotonically with the
250
+ iteration budget with nothing diverging at any depth.
251
+
252
+ ```
253
+ iterations n=1 n=2 n=5 n=10 n=20 n=40 n=80
254
+ 1 3.2e-3/0e+0 6.4e-3/1e-16 4.6e-2/3e-5 9.5e-2/6e-7 1.3e-1/2e-3 1.2e+0/2e-2 9.6e-1/3e-1
255
+ 2 3.2e-4/0e+0 4.2e-3/0e+0 1.4e-2/2e-16 3.4e-2/1e-6 1.4e-1/6e-4 1.2e-1/7e-3 8.9e-1/1e-2
256
+ 4 3.9e-6/0e+0 4.1e-4/0e+0 6.8e-3/1e-16 1.7e-2/2e-15 3.8e-2/1e-11 9.0e-2/3e-5 1.4e-1/7e-3
257
+ 8 0.0e+0/0e+0 2.9e-5/1e-17 1.7e-3/1e-16 7.2e-3/1e-15 1.7e-2/9e-14 3.8e-2/8e-13 8.0e-2/1e-4
258
+ 16 0.0e+0/0e+0 2.8e-7/0e+0 4.1e-4/5e-16 2.1e-3/1e-15 6.9e-3/3e-14 1.6e-2/2e-13 3.6e-2/9e-10
259
+ ```
260
+
261
+ A **soft** row above a certain stiffness does not settle at all, and the reason
262
+ is worse than "nothing is damping it".
263
+
264
+ The threshold is the same ratio §4 turns up: **`k/(m/h²)`**. Below about 8 the
265
+ step is dissipative and the cloth comes to rest; above it the cloth sustains a
266
+ limit cycle for as long as you run it. Measured on a 16×20 sheet, 0.3 kg, hung
267
+ from the top edge at 60 Hz × 2 substeps × 4 iterations, over 1,500 steps:
268
+
269
+ ```
270
+ row k/(m/h²) final kinetic energy
271
+ hard (AL, k pinned at ×8) 8 1.9e-12 J settles
272
+ soft, 1e2 N/m 7.4 7.4e-09 J settles
273
+ soft, 1e3 N/m 74 1.9e-02 J does not
274
+ soft, 1e4 N/m 740 7.4e-03 J does not
275
+ soft, 1e5 N/m 7400 2.9e-02 J does not
276
+ soft, 1e4 at 16 iterations 740 3.3e-03 J does not
277
+ soft, 1e4 at 8 substeps 740 1.4e-03 J does not
278
+ ```
279
+
280
+ More iterations and more substeps shrink it; neither removes it.
281
+
282
+ And the step is **adding energy**, not merely failing to remove it. Tracking the
283
+ full mechanical energy — kinetic plus gravitational plus elastic — from the rest
284
+ configuration:
285
+
286
+ ```
287
+ soft 1e2 (ratio 7) −0.016 J, and flat from step 300 onwards dissipative
288
+ soft 1e4 (ratio 740) +6.8 J, wandering between +1 and +7 J creating it
289
+ ```
290
+
291
+ For scale, that sheet's entire gravitational potential over its own length is
292
+ about 1.2 J, so at ratio 740 the solve manufactures several times the whole
293
+ system's energy budget and then holds it there. It stays bounded — the SPD
294
+ Hessian and the trust region cap every individual step — but bounded is not
295
+ rest.
296
+
297
+ Two consequences.
298
+
299
+ **§7 P5's mechanism covers hard rows only.** `γ` decays a multiplier and a soft
300
+ row has none, so no value of any solver constant reaches this. What does reach
301
+ it is `ClothDynamics#damping`, which arrives with the component in M1 — which
302
+ means damping is load-bearing for P5 rather than a taste control, and M1's spec
303
+ has to gate on a soft cloth actually settling.
304
+
305
+ **§6's assignment of stretch to a soft material stiffness does not survive.**
306
+ Real fabric wants a stretch stiffness far above `8·(m/h²)` — for a half-gram
307
+ particle at 60 Hz × 2 substeps that boundary is around 60 N/m, which is a rubber
308
+ band, not a fabric. So a cloth's stretch rows have to be **hard**, and the
309
+ augmented Lagrangian is not an optional refinement over a stiff penalty: it is
310
+ the only formulation of that row that rests. That is the same conclusion §3
311
+ reaches from the other direction, and it is why the playground defaults to hard
312
+ rows.
313
+
314
+ ### Iteration-count insensitivity
315
+
316
+ §5.1 claims that adding iterations converges towards the *same* answer rather
317
+ than changing which answer it is. On the cape (20×30 at 2 cm, inextensible, hung
318
+ from its top edge and dropped through 90°), the hem across the budget:
319
+
320
+ ```
321
+ iterations= 1 hem=−0.6450 m residual=7.2e-1
322
+ iterations= 2 hem=−0.6201 m residual=2.0e-1
323
+ iterations= 4 hem=−0.5993 m residual=7.5e-2
324
+ iterations= 8 hem=−0.5466 m residual=7.2e-2
325
+ iterations=16 hem=−0.5626 m residual=1.4e-2
326
+ iterations=32 hem=−0.5459 m residual=8.0e-3
327
+ ```
328
+
329
+ The sheet is 0.58 m long, so the answer moves 18% of its own length between 1
330
+ iteration and 32, and the residual moves by two orders of magnitude. The claim
331
+ holds in the sense that matters — the answer converges rather than changing
332
+ character, and one iteration is stable rather than broken — but "insensitive" is
333
+ too strong for a mesh 30 rows deep at this budget. §7 P2's tether row is what
334
+ closes that gap, and it lands in M1.
335
+
336
+ ### Hostile regimes
337
+
338
+ All eight survive at the chosen constants.
339
+
340
+ ```
341
+ stiff + 5 fps ok 1 kg particles on 1e8 N/m rows, 1 substep, 1 iteration
342
+ light + 240 fps ok 10 mg particles, 4 substeps, 8 iterations
343
+ 10 m spacing ok a 6×6 sheet with 10 m between particles at 15 fps
344
+ a thousand g ok gravity at −9810 m/s²
345
+ soft as water ok 1e−2 N/m rows (sags 123 m, which is correct)
346
+ zero g, 100 m/s ok no gravity, particles thrown at 100 m/s
347
+ inextensible ok stiffness Infinity
348
+ inextensible cape ok 600 particles, stiffness Infinity
349
+ ```
350
+
351
+ ---
352
+
353
+ ## 7. The performance budget
354
+
355
+ §17 budgets **under 2 ms per frame per character**, for about 1,000 particles at
356
+ 2 substeps × 4 iterations, and says the figure is an estimate to be replaced by
357
+ a measurement. Replaced:
358
+
359
+ ```
360
+ # 1024 particles (32×32 patch at 2 cm, 0.5 kg), 2 substeps × 4 iterations
361
+ # 2945 stretch rows, 2821 bend rows, 4 colours, 370.4 KiB of state
362
+ # 8192 vertex updates per frame, 16.8 row incidences per particle
363
+ # Node v24.15.0 on win32/x64, 1200 warm-up frames then 1500 measured, 4 rounds
364
+
365
+ round minima 3.504 3.506 3.644 3.484 best 3.48 ms, spread ±5%
366
+ ```
367
+
368
+ **3.48 ms against a 2.000 ms budget — over by 1.74×**, and 3.55 ms when the
369
+ benchmark runs the same configuration alongside its four variants. The minimum is the
370
+ headline because it is what varies least between runs; a cloth's median moves by
371
+ a factor of two depending on whether it is still swinging, and the mean and p95
372
+ move with whatever else the machine is doing.
373
+
374
+ ### What the frame is made of
375
+
376
+ Deleting the workload piece by piece, all five variants in one run so the
377
+ comparison is internally consistent:
378
+
379
+ ```
380
+ variant MIN ms median share of the frame
381
+ everything 3.552 5.023
382
+ no bend rows 2.688 3.267 bend rows 0.864 ms 24.3%
383
+ no stretch rows 1.133 2.055 stretch rows 2.419 ms 68.1%
384
+ no rows at all 0.253 0.490 everything else 7.1%
385
+ shuffled within each colour 3.563 4.771 locality +0.3%
386
+ ```
387
+
388
+ The rows are the frame; predict, warm start, the dual updates and integrate
389
+ together are 7% of it, and the cost is close to linear in both particles and
390
+ sweeps. The split between the two row kinds moves by a few points between runs
391
+ — bend read 18% in one run and 24% in another — so treat it as "stretch is most
392
+ of it, bend is most of the rest".
393
+
394
+ Two things this table does **not** license, and an earlier draft of this
395
+ document claimed both.
396
+
397
+ It does not say a stretch row costs four times what a bend row costs *per
398
+ visit*. The three variants are in different physical states — a cloth with no
399
+ stretch rows is in free fall rather than draping — so the split measures what
400
+ each row kind *causes* in a running step, not the arithmetic in its accumulate.
401
+
402
+ And it does not license attributing the stretch share to any particular part of
403
+ that accumulate. See below.
404
+
405
+ ### A warning, because M2, M4 and M5 are told to re-measure
406
+
407
+ **An isolated loop over one accumulate measures the wrong workload.** Without
408
+ `predict` and `integrate` around it, the solve converges after a few passes and
409
+ the positions stop changing; from then on the loop reads a static array with
410
+ perfectly predictable branches, and every number it produces is of a cloth that
411
+ has stopped moving.
412
+
413
+ The size of the error, measured both ways on the same mesh:
414
+
415
+ ```
416
+ isolated loop by deletion, in the running step
417
+ bend accumulate 0.72 ms 0.70 ms agree
418
+ stretch accumulate 0.47 ms 2.64 ms disagree, 5.6×
419
+ both 1.19 ms 3.34 ms
420
+ ```
421
+
422
+ Bend agrees; stretch does not, and the gap is most of the frame. The dev-build
423
+ assertion machinery is not the explanation — the non-finite tripwire and the
424
+ pivot assertion's message together are 0.118 ms, 3.4% of the step. Nor is it
425
+ `cloth_solve_vertex`'s own arithmetic: the eight colour sweeps called exactly as
426
+ `cloth_step` calls them come to 1.88 ms, and driven on their own — with no
427
+ predict to disturb the cloth — they too are measuring a converged mesh.
428
+
429
+ The honest statement is that **only the end-to-end figures here are
430
+ trustworthy**, and the per-row breakdown an earlier draft gave has been removed
431
+ rather than reconciled. Whoever re-measures at M2 should keep the whole step
432
+ running and vary one thing at a time.
433
+
434
+ ### Gathering neighbours is not what dominates
435
+
436
+ §17 predicted it would. The controlled test is to **move every particle to a
437
+ different slot inside its own colour range**. The colouring is untouched — a
438
+ particle's colour *is* which range it sits in, and every particle stays in its
439
+ own — so the sweep does the same work in the same order over the same rows with
440
+ the same branches, and the only thing that moves is the address each particle
441
+ lives at.
442
+
443
+ The control is exact, and checkably so: the reference cloth and the shuffled one
444
+ produce **bit-identical** trajectories, agreeing on the hem position to six
445
+ decimals and on kinetic energy to five significant figures after 200 steps.
446
+
447
+ ```
448
+ 1024 particles, 370 KiB of state +0.3%
449
+ ```
450
+
451
+ Destroying within-colour locality entirely costs nothing measurable at the size
452
+ §17 budgets for — the whole state fits in L2 — so **§17's "gathering neighbour
453
+ positions is what will actually dominate" is wrong**, and there is no
454
+ memory-layout optimisation to win here. Whether that survives at four times the
455
+ size is *not* measured: a cruder probe suggested around 11% at 4,096 particles,
456
+ but that probe relabelled the source vertices, which also changed the greedy
457
+ colouring from four colours to ten, so it is not quotable.
458
+
459
+ Two earlier drafts got this wrong before this one got it right. The first used a
460
+ variant labelled "mesh order, not colour order" that did nothing of the kind —
461
+ it left the particles in colour-permuted storage and merely collapsed the colour
462
+ loop. The second relabelled the source numbering, which moves the particles but
463
+ changes the colouring with them. Only shuffling *within* a colour isolates the
464
+ one variable, and it was worth three attempts because this is the number that
465
+ contradicts the plan.
466
+
467
+ ### Scaling, and what fits
468
+
469
+ Four rounds each, so the spread is the figure's real precision:
470
+
471
+ ```
472
+ config round minima best spread
473
+ 1024 @ 2×4 (the §17 workload) 3.504 3.506 3.644 3.484 3.48 ±5%
474
+ 1024 @ 2×2 (half the iterations) 1.700 1.713 1.695 1.716 1.69 ±1% inside
475
+ 1024 @ 1×4 (half the substeps) 1.683 1.734 1.765 1.703 1.68 ±5% inside
476
+ 484 @ 2×4 (half the particles) 1.543 1.586 1.595 1.605 1.54 ±4% inside
477
+ 256 @ 2×4 0.792 0.804 0.791 0.785 0.79 ±2% inside
478
+ ```
479
+
480
+ §18's levers, priced:
481
+
482
+ | Lever | Result |
483
+ |---|---|
484
+ | Fewer iterations — "safe, the solver is stable at one" | 1,024 particles at 2×2: **1.69 ms**, comfortably inside |
485
+ | Fewer particles in the proxy | ~500 particles at the full 2×4: **1.54 ms** |
486
+ | Fewer substeps | 1,024 at 1×4: **1.68 ms** |
487
+ | The barycentric binding fallback (§11.2) | not needed to reach the budget |
488
+
489
+ Any one lever is enough on its own, and they compose. What the budget is *not*
490
+ reachable at is 1,000 particles at 2×4, which is the figure §17 wrote down.
491
+
492
+ **Note what the worker does not do.** §12 moves this off the main thread; it does
493
+ not make it cheaper. "2 ms on the worker" with several characters in flight is a
494
+ scheduling question this measurement does not answer.
495
+
496
+ ## 8. Topology note
497
+
498
+ The benchmark's 32×32 patch carries **16.8 row incidences per particle** against
499
+ §17's "about a dozen". That is the honest number for a triangulated sheet with a
500
+ stretch row per edge — including the quad diagonals — and a quadratic bend row
501
+ per interior edge, and it makes this measurement about 40% conservative against
502
+ the workload §17 imagined. A proxy that dropped the diagonals, or used a
503
+ quad-dominant mesh, would carry fewer.
504
+
505
+ ---
506
+
507
+ # Cloth — M1 measurements
508
+
509
+ > Written 2026-09-10, against the M1 implementation in `ecs/`. Everything above
510
+ > this line is M0's and unchanged.
511
+ >
512
+ > Two scripts, both runnable directly under node — the M0 note applies unchanged,
513
+ > and for the same reason:
514
+ >
515
+ > ```
516
+ > node src/engine/physics/cloth/ecs/__fixtures__/cloth_m1_measure.mjs
517
+ > node src/engine/physics/cloth/ecs/__fixtures__/cloth_library_bench.mjs
518
+ > ```
519
+ >
520
+ > And a second playground page, `playground/rig.html`, which is the entity
521
+ > subtree rather than the solver: a real `EntityManager`, real entities, and
522
+ > `ClothSystem` walking and writing back.
523
+
524
+ ---
525
+
526
+ ## 9. What M1 proved wrong in PLAN.md
527
+
528
+ Six things, and the first three are sign and scale errors in §6 and §7 that the
529
+ implementation could not have been written around.
530
+
531
+ | # | The design said | The measurement said |
532
+ |---|---|---|
533
+ | 0 | §6 — slack, tether and strain-limit rows clamp to `(−∞, 0]` | Under the solver's own `f -= fc·g` that is the force which pushes a distance row **apart**. A row bounding a distance from *above* needs `[0, +∞)`, and with the table's clamp it never binds at all. §10 |
534
+ | 1 | §3.4 — the leash radius is `slack · d_geo,i` | That makes `slack = 1` a real constraint: a rope hanging straight down cannot swing through 90°, because its tip would move `√2·d_geo`. `2·d_geo` is *provably* inactive given the tether, so the map is `2·slack·d_geo`. §10 |
535
+ | 2 | §7 P1 — the velocity clamp is derived from `thickness` and `h` | `thickness` is a contact radius, so a clamp built from it is a **tunnelling** bound, and a tunnelling bound sits below ordinary cloth speeds: silk at 4 mm gives 0.24 m/s against a measured 29 m/s. The scale that works is the solver's own correction authority. §13 |
536
+ | 3 | §11.1 — "bend rows along each chain" | A chain has no diamond to build a quadratic hinge stencil on. A **skip row** — an ordinary stretch row to the grandparent — costs no new row kind and holds a curved rest shape the quadratic stencil explicitly cannot. §11 |
537
+ | 4 | §17 — the levers each close the 2 ms budget on their own | M1's rows changed the arithmetic. 1,024 particles at 2×4 is **4.61 ms**, not M0's 3.41, and **no single lever reaches 2 ms**. Every garment entry spends two. §14 |
538
+ | 5 | §6 — a strain-limit row governs how far the fabric may extend | It removes about a third of the peak over-stretch at every budget and **never reaches its own allowance** — at `stretch = 1` it asks for 0.1% and delivers 5.9% at 1×1. `ClothDynamics#stretch` is the weakest field in the parameter set. §11 |
539
+ | 6 | §11.1 — the write-back writes `Transform64` | It has to write the **local** `TransformAttachment#transform` too. Writing only the world one leaves the pose one announcement away from being replaced by the authored one, which makes where cloth runs a correctness question; writing both makes a recomposition reproduce it to 1.7e-15 m. §15 |
540
+
541
+ And one thing §4.1 flagged as possibly impossible, which turned out to be
542
+ exactly that: **neither of the engine's two ordering mechanisms can place cloth
543
+ after a poser**, for a structural reason rather than an arithmetic one. What M1
544
+ ships is not a third mechanism — it is a write-back that does not need one. §15.
545
+
546
+ ---
547
+
548
+ ## 10. The leash: tether, slack, and the bound that is not unconditional
549
+
550
+ ### The tether is what makes a low budget viable
551
+
552
+ A 30-link × 3-strand rig at 5 cm, authored horizontally and dropped through
553
+ ninety degrees, `worst max(‖x − p_anchor‖ / d_geo)` over 600 steps:
554
+
555
+ ```
556
+ budget tethered no tether
557
+ 1x1 1.0155 1.4650
558
+ 1x2 1.0039 1.1899
559
+ 2x2 1.0020 1.0568
560
+ 2x4 1.0012 1.0199
561
+ ```
562
+
563
+ That is §7 P2's claim with a number on it. At one iteration per substep the
564
+ untethered rig reaches **half again its own length** — the rubber cape — and the
565
+ tethered one is inside 1.6%. Note the second column at 2×4: four times the
566
+ budget gets the untethered rig to 1.020, which is still worse than one iteration
567
+ *with* tethers. The tether is not a cheaper way to buy convergence; it answers a
568
+ question the per-edge rows cannot, because a per-edge force travels one hop per
569
+ iteration and a long-range row does not travel at all.
570
+
571
+ ### The clamp direction, which §6 has backwards
572
+
573
+ The solver applies `f -= fc·g`, so a **positive** `fc` on a distance row pulls
574
+ its two ends together — that is what `cloth_stretch_row.js` means when it adds
575
+ geometric stiffness for a row "in tension" at `fc > 0`. A row that bounds a
576
+ distance from above must therefore admit positive force and no negative force.
577
+
578
+ §6's table gives Slack, Tether and Strain limit `f_min = −∞, f_max = 0`, which
579
+ admits only the force that pushes the two ends apart. Such a row does not bind
580
+ weakly; it never binds at all, and it would drive a particle *away* from its
581
+ leash centre. The table's collision and self-collision rows are consistent with
582
+ the correct rule once you notice that the collision row writes `C` with the
583
+ opposite sense, so the fix is one column in three rows plus the gloss above it:
584
+ "`[0, +∞)` is push-only, `(−∞, 0]` is pull-only" is only true relative to a
585
+ particular sign of `C`. The exact rule is **`[0, +∞)` admits only forces that
586
+ reduce `C`, and `(−∞, 0]` only forces that increase it.**
587
+
588
+ `cloth_leash_row.spec.js` demonstrates it directly: a particle five metres out
589
+ on a two-metre leash assembles `f = (−30, 0, 0)`, and under §6's clamp that is
590
+ clamped to zero.
591
+
592
+ ### `slack = 1` was a constraint, and should not have been
593
+
594
+ §3.4 sets each particle's leash radius to `slack · d_geo,i`, and says `slack = 1`
595
+ means "a particle may be anywhere within its own reach of its animated
596
+ position". It does mean that, and that is a real bound: a rope hanging straight
597
+ down cannot swing through ninety degrees, because its tip has to move `√2·d_geo`
598
+ to get there and its leash is `d_geo`.
599
+
600
+ The radius at which the row is provably inert is `2·d_geo`, and the proof is two
601
+ lines. The tether already holds every particle within `d_geo` of the anchor; the
602
+ animated position it is leashed to is also within `d_geo` of the anchor, since a
603
+ chord is never longer than the arc it subtends; so by the triangle inequality the
604
+ two are never more than `2·d_geo` apart. `r_i = 2·slack·d_geo,i` therefore makes
605
+ `slack = 1` mean exactly "no leash", with no sentinel value and no
606
+ discontinuity — the row is simply not built, because a row that cannot bind is
607
+ not worth visiting.
608
+
609
+ ### The bound is conditional on the solver's correction authority
610
+
611
+ The trust region caps each vertex update at the shortest row incident on the
612
+ particle (§5.3), so one fixed step can move a particle at most
613
+ `shortest_row · substeps · iterations`. Past that, a bound is not being violated
614
+ so much as not being given a chance to act. The same rig, kicked sideways:
615
+
616
+ ```
617
+ budget kick correction authority worst final
618
+ 1x1 2 m/s 3.0 m/s 1.043 1.0025
619
+ 1x1 6 m/s 3.0 m/s 1.227 1.0025
620
+ 1x1 16 m/s 3.0 m/s 6.867 1.0025
621
+ 2x4 2 m/s 24.0 m/s 1.003 1.0000
622
+ 2x4 6 m/s 24.0 m/s 1.001 1.0000
623
+ 2x4 16 m/s 24.0 m/s 1.063 1.0000
624
+ ```
625
+
626
+ A kick five times the authority reaches **6.9× the cloth's own reach**; the same
627
+ kick against eight times the authority reaches 1.06×. The excursion is transient
628
+ in every case — the final column is the reachable-set guarantee of §7 P4(c)
629
+ holding, error not accumulating — but "no particle is ever further from the
630
+ anchor than `d_geo`" is not true as stated, and §7 P2 should say what it is
631
+ conditional on.
632
+
633
+ This is also where M1's velocity clamp comes from. §13.
634
+
635
+ ---
636
+
637
+ ## 11. The strain limit, and what `stretch` is worth
638
+
639
+ A 24-link rope at 5 cm, authored horizontally and dropped, `worst max(link
640
+ length / rest length)` over 600 steps. "Allowance" is what
641
+ `cloth_strain_allowance(stretch)` asks for:
642
+
643
+ ```
644
+ budget stretch allowance with the row without it
645
+ 1x1 0.2 1.0829 1.0863 1.0922
646
+ 1x1 0.5 1.0158 1.0631 1.0922
647
+ 1x1 1.0 1.0010 1.0586 1.0922
648
+ 2x2 0.2 1.0829 1.0351 1.0351
649
+ 2x2 0.5 1.0158 1.0289 1.0351
650
+ 2x2 1.0 1.0010 1.0216 1.0351
651
+ 2x4 0.2 1.0829 1.0140 1.0140
652
+ 2x4 0.5 1.0158 1.0140 1.0140
653
+ 2x4 1.0 1.0010 1.0094 1.0140
654
+ ```
655
+
656
+ Two readings, and the second is the important one.
657
+
658
+ **The row works**: it removes 34–38% of the peak over-stretch, consistently, at
659
+ every budget. On a chain that costs nothing measurable and it is worth having.
660
+
661
+ **And it does not do what §6 says it does.** At `stretch = 1` it asks for 0.1%
662
+ of strain and delivers 5.9% at 1×1 — a factor of fifty out. The reason is
663
+ structural rather than a tuning failure: a strain-limit row is a *second hard
664
+ row on the same edge with the same gradient*, so it competes for the same trust
665
+ region and the same penalty band as the fabric row it is backing up. It can add
666
+ force in a direction force is already being added in, and nothing more.
667
+
668
+ The consequence for the parameter set is that **`stretch` is a weak control over
669
+ most of its range**. Below about `stretch = 0.35` its allowance is looser than
670
+ what a hard row does unaided and the row is inert — see the 0.2 rows, where
671
+ adding it changes nothing at 2×2 and 2×4. Above it the row helps but cannot
672
+ reach what it was asked for. The library says so by which entries set
673
+ `ClothDynamicsFlags.StrainLimit`: the ones at 2×4, where the residual is already
674
+ around 1%, clear it; the ones at 2×2 and the chains keep it.
675
+
676
+ ---
677
+
678
+ ## 12. Settling, sleep, and the damping gate
679
+
680
+ ### Every library fabric settles and sleeps
681
+
682
+ A 12-link chain at 8 cm, set swinging at 3 m/s, run until the sleep test fires
683
+ (30 consecutive steps with no particle faster than `1e-3 · reach` per second):
684
+
685
+ ```
686
+ SILK 770 steps ROPE 501
687
+ COTTON 438 CHAIN 285
688
+ DENIM 220 HAIR 295
689
+ LEATHER 238
690
+ ```
691
+
692
+ Twelve seconds at the slowest, and the order is the damping order, which is what
693
+ it should be. Sleep stops the step **and the write-back**, which is what makes
694
+ §7 P5's "bit-identical across the following 300 steps" a fact rather than a
695
+ hope: a pose that is not rewritten cannot drift, and one that is rewritten from
696
+ unchanged inputs is only probably identical.
697
+
698
+ ### Damping is load-bearing, and here is the size of it
699
+
700
+ `MEASUREMENTS.md` §6 measured that a **soft** row above about `8·(m/h²)` makes
701
+ the step add energy, and that no solver constant reaches it because `α·γ` decays
702
+ a multiplier and a soft row has none. M1's mapping never produces such a cloth —
703
+ `stretch` maps to `Infinity` precisely because of that measurement — so the row
704
+ stiffness is written in by hand to reproduce it. A 16-link rope at 5 cm with its
705
+ stretch rows forced to 1e5 N/m, a ratio of about 350 against the particle's
706
+ `m/h²` of 288, after 1,500 steps:
707
+
708
+ ```
709
+ damping kinetic energy
710
+ 0 2.90e-03 J the limit cycle
711
+ 0.02 6.18e-05 J
712
+ 0.05 2.39e-05 J
713
+ 0.12 1.28e-06 J the library's own value
714
+ 0.3 7.30e-11 J
715
+ 1 1.82e-12 J
716
+ ```
717
+
718
+ Three orders of magnitude between undamped and the library default, and seven at
719
+ the top of the range. Note what damping does *not* do: it does not stop the step
720
+ adding energy, it removes energy faster than the step adds it. The equilibrium
721
+ is bounded rather than zero, which is why the numbers keep falling all the way
722
+ to `damping = 1` instead of hitting a floor.
723
+
724
+ ---
725
+
726
+ ## 13. Teleport, locomotion, and where the velocity clamp comes from
727
+
728
+ ### Teleport
729
+
730
+ A 16-link rope at 10 cm, swinging on an anchor that has been moving, then
731
+ teleported a kilometre:
732
+
733
+ ```
734
+ mode teleports peak speed first-step local shift tip
735
+ Reset 1 0.000 m/s 1.4890 m (1000.000, −1.600)
736
+ Keep 1 5.582 m/s 0.0779 m (1000.003, −1.600)
737
+ ```
738
+
739
+ `Reset` re-seeds at the animated pose with zero velocity and the stabilisation
740
+ window ramps the velocity limit back from nothing over 20 steps; the peak speed
741
+ of exactly zero is what a rope authored hanging straight down does when it is
742
+ put back exactly there. `Keep` carries the shape across: the first-step shift is
743
+ one step of ordinary motion, against a metre and a half for the reset, and the
744
+ peak of 5.6 m/s is the swing it was already carrying.
745
+
746
+ **`Keep` is free, and that is a property of the frame rather than a
747
+ coincidence.** MagicaCloth2's `Keep` applies the anchor delta rigidly to every
748
+ particle; in a frame anchored to the cloth's own entity the particles are
749
+ already anchor-relative, so "apply the delta" is doing nothing at all. The
750
+ implementation of `ClothFlags.TeleportKeep` is a `return`.
751
+
752
+ ### Fast locomotion
753
+
754
+ 20 links at 10 cm, the anchor running a square wave in velocity — sprint, stop
755
+ dead, sprint back, stop dead, one second a phase, fifteen seconds. "Peak" is the
756
+ fastest particle in the cloth-local frame, which is what the clamp bounds:
757
+
758
+ ```
759
+ entry peak clamp headroom teleports worst tether
760
+ SILK 29.32 m/s 192.0 m/s 6.5x 0 1.0000
761
+ COTTON 13.97 192.0 13.7 0 0.9999
762
+ DENIM 13.29 96.0 7.2 0 1.0035
763
+ LEATHER 16.80 96.0 5.7 0 1.0018
764
+ ROPE 13.11 192.0 14.6 0 1.0004
765
+ CHAIN 11.32 288.0 25.4 0 1.0003
766
+ HAIR 13.19 192.0 14.6 0 0.9996
767
+ ```
768
+
769
+ Nothing teleports — a sprint is locomotion and the threshold knows it — nothing
770
+ leaves its own reach by more than 0.35%, and the smallest headroom over the
771
+ clamp in the whole library is 5.7×.
772
+
773
+ ### Why the clamp is not derived from `thickness`
774
+
775
+ §7 P1 asks for a "per-particle velocity clamp derived from `thickness` and `h`",
776
+ and the table above is why that cannot be M1's clamp. `thickness` is a contact
777
+ radius. A clamp built from it answers "may a swept contact still catch this
778
+ particle", and the answer to that sits *below* ordinary cloth speeds rather than
779
+ above them: silk is 4 mm thick, so at 60 Hz one radius per step is 0.24 m/s
780
+ against the 29.3 m/s the same silk reaches behind a sprinter. Any multiple large
781
+ enough to stop the clamp being a *behaviour* for silk is large enough to be
782
+ meaningless for leather, whose thickness is five times silk's and whose speeds
783
+ are not.
784
+
785
+ The scale that does work is the solver's own **correction authority**,
786
+ `shortest_row · substeps · iterations / dt` — the quantity §10 measured a cloth
787
+ losing its bound past. A clamp at four times it is a bound on the solver being
788
+ asked to do more than it can, it scales with the mesh and the budget rather than
789
+ with a radius nothing reads until M2, and the headroom column above says it is a
790
+ backstop rather than a behaviour. M2 still needs the tunnelling bound; it is a
791
+ different number for a different job and it arrives with the contacts.
792
+
793
+ ### Inertia
794
+
795
+ The same profile, 10 links, measuring how far the tip lags the anchor:
796
+
797
+ ```
798
+ inertia 0 0.0000 m welded into the anchor frame
799
+ inertia 0.25 0.2031 m
800
+ inertia 0.5 0.3681 m
801
+ inertia 0.75 0.5249 m
802
+ inertia 1 0.6522 m feels all of it
803
+ ```
804
+
805
+ Monotone, and zero at zero to the last digit — a cloth that feels none of its
806
+ anchor's motion hangs from a sprinting anchor exactly as it would from a
807
+ stationary one, which is what makes `inertia` a dial rather than a switch with a
808
+ meaningless middle.
809
+
810
+ ---
811
+
812
+ ## 14. The performance budget, again
813
+
814
+ M0 measured the §17 workload at 3.48 ms and priced three levers that each closed
815
+ it. **M1 added rows, and the levers no longer close it.** A 32×32 sheet at 2 cm,
816
+ 2 substeps × 4 iterations, adding M1's rows one at a time to M0's:
817
+
818
+ ```
819
+ rows particles / stretch / bend / leash best
820
+ M0 rows only 1024 2945 2821 0 3.412 ms
821
+ + strain limit 1024 5890 2821 0 4.145 ms
822
+ + tether 1024 5890 2821 992 4.505 ms
823
+ + slack 1024 5890 2821 1984 4.605 ms
824
+ ```
825
+
826
+ The strain limit is the expensive one, at 0.73 ms — it doubles the stretch
827
+ table, and §7 already said the stretch rows are 69% of the frame. The tether is
828
+ 0.36 ms and load-bearing. The slack row is 0.10 ms.
829
+
830
+ Against that, the levers:
831
+
832
+ ```
833
+ config with strain limit without it
834
+ 1024 @ 2x4 4.669 ms OVER 4.146 ms OVER
835
+ 1024 @ 2x2 2.380 OVER 2.106 OVER
836
+ 1024 @ 1x4 2.395 OVER 2.071 OVER
837
+ 1024 @ 1x2 1.167 inside 1.030 inside
838
+ 576 @ 2x2 1.280 inside 1.096 inside
839
+ 484 @ 2x4 2.533 OVER 2.019 OVER
840
+ 484 @ 2x2 1.093 inside 0.909 inside
841
+ 400 @ 2x4 1.721 inside 1.493 inside
842
+ 324 @ 2x4 1.400 inside 1.259 inside
843
+ 256 @ 2x4 1.107 inside 0.959 inside
844
+ ```
845
+
846
+ **No single lever reaches 2 ms.** M0's three — half the iterations, half the
847
+ substeps, half the particles — land at 2.38, 2.40 and 2.53 respectively. Every
848
+ one of them lands *inside* when a second lever is spent with it, and that is what
849
+ the library ships:
850
+
851
+ ```
852
+ entry budget particles / stretch / bend / leash / colours best
853
+ SILK 2x4 400 1121 1045 760 4 1.488 ms
854
+ COTTON 2x4 400 1121 1045 760 4 1.484 ms
855
+ DENIM 2x2 576 3266 1541 1104 4 1.256 ms
856
+ LEATHER 2x2 576 3266 1541 1104 4 1.248 ms
857
+ ROPE 2x4 41 119 0 40 3 0.043 ms
858
+ CHAIN 2x6 41 119 0 40 3 0.064 ms
859
+ HAIR 2x4 400 1121 1045 760 4 1.429 ms
860
+ ```
861
+
862
+ Node v24.15.0 on win32/x64, 600 warm-up frames then 900 measured, 3 rounds, the
863
+ minimum of the minima. The M0 warning still applies and was heeded: each round
864
+ builds a fresh cloth, because a benchmark that reuses a settled one measures a
865
+ converged mesh.
866
+
867
+ Two notes for whoever re-measures at M2. The 3.412 ms in the first table against
868
+ M0's 3.48 for the same workload is the two harnesses agreeing to 2%, which is
869
+ inside M0's own ±5% spread — the row counts and the topology are the same patch.
870
+ And the unreconciled factor-of-five between deletion and isolated-loop
871
+ attribution that §7 records is **not** resolved here; nothing in M1 re-opened it,
872
+ and nothing here should be quoted as having settled it.
873
+
874
+ ---
875
+
876
+ ## 15. System ordering: not expressible, and not needed
877
+
878
+ §4.1 named this as M1's to establish and admitted the honest possibility that it
879
+ needs a mechanism the engine does not have. The first half is true. The second
880
+ half was the wrong conclusion to draw from it.
881
+
882
+ ### Why neither mechanism reaches it
883
+
884
+ The engine orders systems two ways: registration order, and what each system
885
+ declares in `components_used`. `EntityManager#updateExecutionOrder` scores each
886
+ system as a **sum** over the components it references, weighting `Create` above
887
+ `Write` above `Read`, and sorts descending. A score can therefore only be
888
+ *raised* by touching more components or touching them at a higher access level —
889
+ so the only way to sort **later** is to touch strictly less than the system you
890
+ have to follow, and a consumer of a posed hierarchy touches strictly more.
891
+
892
+ Measured, with the real systems and a poser registered *first*:
893
+
894
+ ```
895
+ ClothSystem -> TransformAttachmentSystem -> PoserSystem
896
+ ```
897
+
898
+ Registration order cannot rescue it, because ties break by registration and this
899
+ is not a tie. Declaring less is not honestly available either — cloth reads
900
+ `Cloth` to know which entities it owns, and `ClothExclude` and
901
+ `TransformAttachment` to walk them.
902
+
903
+ ### What the declaration does buy
904
+
905
+ Half of the ordering, and the half that is a real data dependency. Cloth **writes**
906
+ `TransformAttachment#transform` and `TransformAttachmentSystem` **reads** it, so
907
+ writer-before-reader puts cloth first and the attachment system publishes its
908
+ result. That falls out of `components_used` with nothing else asked for, and it
909
+ is the first line of the order above.
910
+
911
+ ### What M1 did about the other half
912
+
913
+ **A first attempt added a third mechanism** — an execution-phase number on
914
+ `System`, sorted ahead of the score, with a `PostPose` value that `ClothSystem`
915
+ declared. It worked, and it was wrong twice over: it put the vocabulary of
916
+ animation and posing into `engine/ecs`, a layer that has none, and it bought an
917
+ ordering the design should not have needed. It is recorded here because the
918
+ reasoning that produced it — "the relation is real, the scheduler cannot express
919
+ it, therefore extend the scheduler" — is exactly the reasoning to be suspicious
920
+ of.
921
+
922
+ What ships instead removes the need. Cloth writes each node's **local**
923
+ `TransformAttachment#transform` alongside its world `Transform64`, so a hierarchy
924
+ recomposition reproduces the simulated pose instead of replacing it with the
925
+ authored one:
926
+
927
+ ```
928
+ a full recomposition after the write-back moves the pose by 1.665e-15 m
929
+ ```
930
+
931
+ (Compared over the matrix. The quaternion can come back **negated** —
932
+ `multiplyTransforms` decomposes the matrix it just wrote, and `q` and `−q` name
933
+ one rotation, so the sign is the decomposition's to choose. Worth knowing before
934
+ writing any bit-identity assertion over a `Transform64`.)
935
+
936
+ With that, where cloth runs is a quality question. Running before the poser means
937
+ reading last step's anchor pose, so the **shape** is one fixed step stale; the
938
+ **position** is not, because the attachment cascade carries the whole subtree
939
+ rigidly with the anchor from cloth's own local transforms. A 16-link, 1.6 m rope,
940
+ worst world-space difference per node between the two orderings:
941
+
942
+ ```
943
+ profile 61 steps 121 steps 240 steps 900 steps
944
+ walk 2.4 m/s 0.046 m 0.032 m 0.050 m 0.049 m
945
+ sprint ±9 m/s 0.149 m 0.131 m 0.349 m 0.142 m
946
+ ```
947
+
948
+ Three per cent of the cloth's own length under ordinary motion, up to a fifth of
949
+ it at the sharpest velocity reversal a square wave produces, and **not
950
+ accumulating** — the same figure after fifteen seconds as after two, because the
951
+ leash and the tether bound the reachable set.
952
+
953
+ **`InverseKinematicsSystem` is the same shape and reaches the same conclusion.**
954
+ It reads world `Transform64`s "the hierarchy has already composed" and writes
955
+ local ones back, which is the arrangement above, and is why its scoring being
956
+ ambiguous matters less than it looks.