@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
@@ -1,591 +1,642 @@
1
- import { HashMap } from "../../../core/collection/map/HashMap.js";
2
- import { BLAS_EMPTY_TREE_ADDRESS } from "./bvh/GPUGeometryBVHManager.js";
3
- import { assert } from "../../../core/assert.js";
4
- import { BufferDescriptor } from "../../descriptor/buffer/BufferDescriptor.js";
5
- import { write_gpu_typed_buffer } from "../shader/type/serde/write_gpu_typed_buffer.js";
6
- import { inspect_gpu_buffer_typed } from "../buffer/inspect_gpu_buffer_typed.js";
7
- import { GPUGeometryBVHManager } from "./bvh/GPUGeometryBVHManager.js";
8
- import { GEOMETRY_METADATA_STRUCT } from "./GEOMETRY_METADATA_STRUCT.js";
9
- import { GPUGeometryMetadata } from "./GPUGeometryMetadata.js";
10
- import { GPUMeshletManager } from "./meshlet/GPUMeshletManager.js";
11
-
12
- const WORDS_PER_MEGABYTE = 1024 * 1024 / 4;
13
-
14
- /**
15
- * Manages geometry for indirect draw
16
- * Context represents a collection of geometries that are resident on the GPU and are ready to be used in indirect draw to draw entire scenes
17
- * @see https://gpuweb.github.io/gpuweb/#dom-gpurendercommandsmixin-drawindexedindirect
18
- */
19
- export class GPUGeometryManager {
20
- /**
21
- * @type {GPUDevice}
22
- */
23
- #device;
24
-
25
- /**
26
- * TODO make use of {@link GPUTypedTable} instead
27
- * @type {GPUBuffer|null}
28
- */
29
- buffer_metadata = null;
30
-
31
- /**
32
- *
33
- * @type {Map<MeshletGeometry, GPUGeometryMetadata>}
34
- */
35
- #geometries = new Map();
36
-
37
- /**
38
- * The source records by what their geometry *is*: keyed by meshlet content ({@link MeshletGeometry#hash}
39
- * and {@link MeshletGeometry#equals}), holding every record with those meshlets — more than one
40
- * only when the same meshlets arrived under trees of different sizes, which do not share.
41
- *
42
- * {@link #geometries} answers "is this object registered"; this answers "is this *geometry*
43
- * registered, under any object". A character loaded from a file N times is N parses, each with
44
- * its own `MeshletGeometry` of the same bytes; by object they were N rows, N vertex regions and
45
- * N trees in the arena, and by content they are one record with N names.
46
- *
47
- * @type {HashMap<MeshletGeometry, GPUGeometryMetadata[]>}
48
- */
49
- #records_by_content = new HashMap();
50
-
51
- /**
52
- * Per-instance geometry clones — same source as a regular registered
53
- * geometry, but with their own GPU vertex/metadata range so a
54
- * skinning pass can deform them independently. Stored separately
55
- * from {@link #geometries} because multiple clones can share one
56
- * source `MeshletGeometry`, which the Map's by-object keying can't
57
- * represent.
58
- *
59
- * Each entry's `geometry` field still points at the source's CPU
60
- * `MeshletGeometry` (so bounds and index_count come from the same
61
- * place) but `meshlets` is a fresh
62
- * {@link MeshletBatchAllocationRecord} produced by
63
- * {@link GPUMeshletManager#clone_batch_allocation}. The two
64
- * collections share the same `index` space — `__last_geometry_index`
65
- * advances for both.
66
- *
67
- * @type {GPUGeometryMetadata[]}
68
- */
69
- #clone_metadata = [];
70
-
71
- /**
72
- * Do not modify. The data is managed by this class, access in read-only mode.
73
- * @return {Map<Readonly<MeshletGeometry>, Readonly<GPUGeometryMetadata>>}
74
- */
75
- get managed() {
76
- return this.#geometries;
77
- }
78
-
79
- /**
80
- *
81
- * @type {number}
82
- * @private
83
- */
84
- __last_geometry_index = 0;
85
-
86
- /**
87
- *
88
- * @type {boolean}
89
- * @private
90
- */
91
- __needs_update = true;
92
-
93
- /**
94
- * @type {GPUMeshletManager}
95
- */
96
- #meshlets;
97
-
98
- /**
99
- *
100
- * @return {GPUMeshletManager}
101
- */
102
- get meshlets() {
103
- return this.#meshlets;
104
- }
105
-
106
- /**
107
- * To support RTX, this needs to be enabled
108
- * @type {boolean}
109
- */
110
- #enable_bvh = true;
111
-
112
- /**
113
- * The BLAS manager's {@link GPUGeometryBVHManager#residency_version} the lookup was last
114
- * published at. The lookup names an arena address per geometry id, and those change exactly
115
- * when that version moves — on a scene edit, and on a tree arriving after its geometry did.
116
- *
117
- * @type {number}
118
- */
119
- #published_residency_version = -1;
120
-
121
-
122
- /**
123
- * Bottom-level acceleration structure (BVH for ray casting)
124
- * @type {GPUGeometryBVHManager}
125
- */
126
- #blas
127
-
128
- /**
129
- *
130
- * @returns {GPUGeometryBVHManager}
131
- */
132
- get blas() {
133
- return this.#blas;
134
- }
135
-
136
-
137
- /**
138
- *
139
- * @return {GPUGeometrySDFManager}
140
- */
141
- get sdf() {
142
- throw new Error("Not implemented");
143
- }
144
-
145
- /**
146
- *
147
- * @return {number} in bytes
148
- */
149
- get gpu_memory_usage() {
150
- let r = 0;
151
-
152
-
153
- if (this.buffer_metadata !== null) {
154
- r += this.buffer_metadata.size;
155
- }
156
-
157
- if (this.#meshlets) {
158
- r += this.#meshlets.gpu_memory_usage;
159
- }
160
-
161
- if (this.#blas) {
162
- r += this.#blas.gpu_memory_usage;
163
- }
164
-
165
- return r;
166
- }
167
-
168
- /**
169
- *
170
- * @param {GPUDevice} device
171
- */
172
- constructor(device) {
173
- this.#device = device;
174
- this.#blas = new GPUGeometryBVHManager(device);
175
- this.#meshlets = new GPUMeshletManager({ device });
176
-
177
- this.buffer_metadata = device.createBuffer(BufferDescriptor.fromJSON({
178
- label: "GPUGeometryContext/metadata",
179
- size: 0,
180
- usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,
181
- }));
182
- }
183
-
184
- /**
185
- *
186
- * @param {GPUGeometryMetadata} geometry
187
- * @return {number}
188
- */
189
- getAddress(geometry) {
190
- const metadata = this.#geometries.get(geometry);
191
-
192
- return metadata.index;
193
- }
194
-
195
- /**
196
- *
197
- * @param {MeshletGeometry} geometry
198
- * @return {boolean}
199
- */
200
- has(geometry) {
201
- return this.#geometries.has(geometry);
202
- }
203
-
204
-
205
- /**
206
- *
207
- * @param {MeshletGeometry} geometry
208
- * @returns {boolean}
209
- */
210
- add(geometry) {
211
- assert.defined(geometry, 'geometry');
212
- assert.equal(geometry.isMeshletGeometry, true, 'geometry.isMeshletGeometry !== true');
213
-
214
- if (this.has(geometry)) {
215
- return false;
216
- }
217
-
218
- // Another object with the same meshlets under a tree of the same size is the same geometry
219
- // as far as the GPU is concerned: one row, one vertex region, one tree in the arena — and
220
- // this object becomes one more name for that record. The tree is measured, not compared:
221
- // equal meshlets from one builder give one tree, and what must not share is the same
222
- // meshlets with a tree and without one, which trace differently.
223
- let bucket = this.#records_by_content.get(geometry);
224
-
225
- if (bucket !== undefined) {
226
- const tree_bytes = geometry.bvh?.byteLength ?? 0;
227
-
228
- const shared = bucket.find(record => (record.geometry.bvh?.byteLength ?? 0) === tree_bytes);
229
-
230
- if (shared !== undefined) {
231
- shared.references += 1;
232
-
233
- this.#geometries.set(geometry, shared);
234
-
235
- return true;
236
- }
237
- }
238
-
239
- const metadata = new GPUGeometryMetadata();
240
-
241
- metadata.geometry = geometry;
242
- metadata.references = 1;
243
-
244
- metadata.allocated = false;
245
- metadata.index = this.__last_geometry_index++;
246
-
247
- const meshlets = geometry.meshlets;
248
-
249
- metadata.meshlets = this.#meshlets.add_batch(meshlets);
250
-
251
- // watch for data migration
252
- metadata.meshlets.changed.add(() => {
253
-
254
- // TODO need to handle this properly
255
-
256
- console.warn('Meshlet GPU address changed.')
257
-
258
- });
259
-
260
- this.#geometries.set(geometry, metadata);
261
-
262
- if (bucket === undefined) {
263
- bucket = [];
264
-
265
- this.#records_by_content.set(geometry, bucket);
266
- }
267
-
268
- bucket.push(metadata);
269
-
270
- this.__needs_update = true;
271
-
272
- return true;
273
- }
274
-
275
- /**
276
- * Register a per-instance clone of `source_geometry`. The clone is
277
- * a brand-new GPU geometry id that points at a fresh vertex /
278
- * metadata range (allocated via
279
- * {@link GPUMeshletManager#clone_batch_allocation}); the actual
280
- * GPU-side memcpy + address-patch happens lazily on the next
281
- * {@link update update(command_ctx)}.
282
- *
283
- * Use this when you need an instance to render against a *different
284
- * copy* of the same mesh data — the canonical case being a
285
- * `SkinnedMesh` whose vertex region needs to be deformed each frame
286
- * without touching the source. Bounds and primitive count are
287
- * inherited from `source_geometry`'s CPU object so they stay
288
- * accurate under the initial copy; downstream passes refresh them
289
- * once vertices actually move.
290
- *
291
- * Source registration is implicit — the source is `add()`-ed if it
292
- * isn't already, so callers don't need to order things.
293
- *
294
- * @param {MeshletGeometry} source_geometry
295
- * @returns {GPUGeometryMetadata} clone's metadata record. `.index`
296
- * is the geometry id to assign to an instance; `.meshlets`
297
- * carries the clone's GPU allocation (data + metadata offsets,
298
- * meshlet count) — needed by the skinning subsystem to wire
299
- * bindings against the right meshlet records.
300
- */
301
- add_clone(source_geometry) {
302
- assert.defined(source_geometry, 'source_geometry');
303
- assert.equal(source_geometry.isMeshletGeometry, true, 'source_geometry.isMeshletGeometry !== true');
304
-
305
- // Idempotent — returns false if source is already registered.
306
- // Either way, the source's metadata is in the map by the next
307
- // line's lookup.
308
- this.add(source_geometry);
309
-
310
- const source_metadata = this.#geometries.get(source_geometry);
311
-
312
- const clone_meshlets = this.#meshlets.clone_batch_allocation(source_metadata.meshlets);
313
-
314
- const metadata = new GPUGeometryMetadata();
315
- // The record's geometry, not the object the caller passed: the two are equal in content,
316
- // but the BLAS manager keys a tree's *shape* by geometry object, and every clone of one
317
- // record sharing one shape is what keeps N dancers from deriving and uploading N copies of it.
318
- metadata.geometry = source_metadata.geometry;
319
- metadata.allocated = false;
320
- metadata.index = this.__last_geometry_index++;
321
- metadata.meshlets = clone_meshlets;
322
-
323
- this.#clone_metadata.push(metadata);
324
-
325
- this.__needs_update = true;
326
-
327
- return metadata;
328
- }
329
-
330
- /**
331
- * Look up the source-side metadata record for a registered
332
- * `MeshletGeometry`. Returns `undefined` if the geometry hasn't
333
- * been registered.
334
- *
335
- * @param {MeshletGeometry} geometry
336
- * @returns {GPUGeometryMetadata|undefined}
337
- */
338
- get_metadata(geometry) {
339
- return this.#geometries.get(geometry);
340
- }
341
-
342
- /**
343
- *
344
- * @param {MeshletGeometry} geometry
345
- * @returns {boolean}
346
- */
347
- remove(geometry) {
348
- const metadata = this.#geometries.get(geometry);
349
-
350
- if (metadata === undefined) {
351
- return false;
352
- }
353
-
354
- this.#geometries.delete(geometry);
355
-
356
- metadata.references -= 1;
357
-
358
- if (metadata.references > 0) {
359
- // other objects still name this record; nothing on the GPU changes
360
- return true;
361
- }
362
-
363
- this.#forget_content(metadata);
364
-
365
- // reclaim the meshlet data + metadata allocation (compaction-deferred) and the BLAS
366
- // slot. Safe to free before the table rebuild below: the allocators hand out disjoint
367
- // slices so other geometries are unaffected, and the rebuild drops this geometry's
368
- // metadata row so nothing references the freed ranges afterward.
369
- if (metadata.meshlets !== undefined) {
370
- this.#meshlets.remove_batch(metadata.meshlets);
371
- }
372
- this.#blas.remove(metadata);
373
-
374
- // rebuild the GPU metadata table without this entry — without the dirty flag the
375
- // removed geometry's row stayed addressable with stale data until an unrelated add()
376
- this.__needs_update = true;
377
-
378
- // TODO context indices need to be updated
379
- // NOTE: the BLAS append-only data region is not compacted, so its bytes for this
380
- // geometry are unreferenced until a future BVH buffer rebuild (bounded residual).
381
-
382
- return true;
383
- }
384
-
385
- /**
386
- * Take a record out of the by-content index, once nothing names it any more.
387
- *
388
- * @param {GPUGeometryMetadata} metadata
389
- */
390
- #forget_content(metadata) {
391
- const bucket = this.#records_by_content.get(metadata.geometry);
392
-
393
- if (bucket === undefined) {
394
- return;
395
- }
396
-
397
- const index = bucket.indexOf(metadata);
398
-
399
- if (index !== -1) {
400
- bucket.splice(index, 1);
401
- }
402
-
403
- if (bucket.length === 0) {
404
- this.#records_by_content.delete(metadata.geometry);
405
- }
406
- }
407
-
408
- destroy() {
409
-
410
- if (this.buffer_metadata !== null) {
411
- this.buffer_metadata.destroy();
412
- }
413
-
414
- this.#meshlets.destroy();
415
-
416
- // TODO ensure BVH and others are destroyed
417
-
418
- this.__needs_update = true;
419
- }
420
-
421
- /**
422
- * @param {ShadeGPUCommandContext} [command_ctx] — required when there
423
- * are queued meshlet clones to flush; passed through to
424
- * {@link GPUMeshletManager#update}. Older call sites that don't
425
- * register clones can omit it (the meshlet flush is a no-op when
426
- * nothing's pending).
427
- */
428
- update(command_ctx) {
429
- const rebuilt = this.__needs_update;
430
-
431
- if (rebuilt) {
432
- console.time('Geometry build');
433
- this.build();
434
- console.timeEnd('Geometry build');
435
-
436
- // this.#update_sdf(command_ctx);
437
-
438
- this.__needs_update = false;
439
- }
440
-
441
- // Every call, not only after a scene edit: a tree whose bytes arrived after its geometry was
442
- // registered uploads here, and the lookup follows it. Cheap when nothing is pending — a walk
443
- // over the shapes and a look at the queue.
444
- this.#blas.update();
445
-
446
- // The lookup has a row per geometry id and an arena address in each, so it is republished
447
- // when the ids changed (a rebuild) and when the addresses did (the residency version).
448
- if (this.#enable_bvh && (rebuilt || this.#published_residency_version !== this.#blas.residency_version)) {
449
- // after `#blas.update()`, which is what turns registrations into arena addresses
450
- this.#publish_blas_lookup();
451
-
452
- this.#published_residency_version = this.#blas.residency_version;
453
- }
454
-
455
- // Always drain — clones can be queued without `__needs_update`
456
- // tripping (e.g. by direct callers of `meshlets.clone_batch_allocation`).
457
- // No-op when the queue is empty.
458
- if (command_ctx !== undefined) {
459
- this.#meshlets.update(command_ctx);
460
- }
461
- }
462
-
463
- /**
464
- * Every geometry this manager has handed an id to — sources and per-instance clones alike —
465
- * in index order.
466
- *
467
- * The two share the `__last_geometry_index` space, so every buffer laid out "by geometry id"
468
- * is laid out over this one list: the geometry metadata rows, and the BLAS lookup. Having one
469
- * answer to "what ids are there" is what keeps those two from drifting apart, which is exactly
470
- * what happened while the BLAS lookup was indexed by a pool of its own.
471
- *
472
- * @returns {GPUGeometryMetadata[]}
473
- */
474
- #all_metadata_by_index() {
475
- // a record with several names is one record, and one row
476
- const all = [
477
- ...new Set(this.#geometries.values()),
478
- ...this.#clone_metadata,
479
- ];
480
-
481
- all.sort((a, b) => a.index - b.index);
482
-
483
- return all;
484
- }
485
-
486
- /**
487
- * Point every geometry id at the arena address of the tree it should trace against.
488
- *
489
- * One id, one tree, and the id is the key — which is the whole answer to a clone. A clone has a
490
- * geometry id of its own because it has a vertex region of its own, and a tree of its own for
491
- * the same reason: what deformation changes is its bounds, and those cannot be written into the
492
- * tree every other instance is still tracing. What it does *not* need its own of is the shape,
493
- * which the BLAS manager shares between them.
494
- *
495
- * Must run after {@link GPUGeometryBVHManager#update}, which is what makes addresses real.
496
- */
497
- #publish_blas_lookup() {
498
- const all = this.#all_metadata_by_index();
499
-
500
- const addresses = new Uint32Array(Math.max(1, this.__last_geometry_index));
501
-
502
- for (const meta of all) {
503
- // A geometry whose tree is not resident yet — registered before its bytes existed —
504
- // traces the empty tree until it is. Every traversal starts walking from whatever the
505
- // lookup names, so "no tree" has to be a tree, and not the one at the arena's end.
506
- addresses[meta.index] = this.#blas.get_address(meta) ?? BLAS_EMPTY_TREE_ADDRESS;
507
- }
508
-
509
- this.#blas.publish_lookup(addresses);
510
- }
511
-
512
- build() {
513
- // release currently-held resources
514
- this.buffer_metadata.destroy();
515
-
516
- const device = this.#device;
517
-
518
- const all_metadata = this.#all_metadata_by_index();
519
-
520
- // One tree per geometry id, clones included — keyed by the metadata row rather than by the
521
- // geometry, because a clone and its source share a `MeshletGeometry` and would otherwise
522
- // collide on it. The nodes are duplicated per clone on purpose (they are what deformation
523
- // rewrites); the shape behind them is not.
524
- if (this.#enable_bvh) {
525
- for (const meta of all_metadata) {
526
- this.#blas.obtain(meta, meta.geometry);
527
- }
528
- }
529
-
530
- this.buffer_metadata = device.createBuffer(BufferDescriptor.fromJSON({
531
- label: this.buffer_metadata.label,
532
- size: Math.max(1, this.__last_geometry_index) * GEOMETRY_METADATA_STRUCT.size,
533
- usage: this.buffer_metadata.usage,
534
- mappedAtCreation: true
535
- }));
536
-
537
- // TODO limit mapped range
538
- // TODO consider using queue.writeBuffer
539
- const metadata = new DataView(this.buffer_metadata.getMappedRange());
540
-
541
- // write metadata
542
- for (let i = 0; i < all_metadata.length; i++) {
543
- this.#write_geometry_metadata(all_metadata[i], metadata);
544
- }
545
-
546
- this.buffer_metadata.unmap();
547
- }
548
-
549
- async debug_inspect_gpu_metadata() {
550
- const data = await inspect_gpu_buffer_typed({
551
- buffer: this.buffer_metadata,
552
- device: this.#device,
553
- type: GEOMETRY_METADATA_STRUCT,
554
- // one row per geometry id — sources and clones — not one per registered object, of
555
- // which a record may have several
556
- count: this.__last_geometry_index,
557
- });
558
-
559
- return data;
560
- }
561
-
562
- /**
563
- * Write one row of the geometry metadata buffer. Works for both
564
- * source geometries and clones — `g_meta.geometry` always points
565
- * at the source's CPU `MeshletGeometry` (clones share it for bounds
566
- * + primitive_count), while `g_meta.meshlets` carries the clone's
567
- * own GPU allocation when this is a clone.
568
- *
569
- * @param {GPUGeometryMetadata} g_meta
570
- * @param {DataView} metadata
571
- */
572
- #write_geometry_metadata(g_meta, metadata) {
573
- const geometry = g_meta.geometry;
574
-
575
- const idx = g_meta.index;
576
-
577
- const offset = idx * GEOMETRY_METADATA_STRUCT.size;
578
-
579
- // TODO fix this, assumes triangles currently
580
- const indexCount = geometry.primitive_count * 3;
581
-
582
- write_gpu_typed_buffer({
583
- index_count: indexCount,
584
- bounding_sphere: geometry.bounding_sphere,
585
- bounding_box: geometry.bounding_box,
586
- meshlets_address: g_meta.meshlets.metadata.offset,
587
- meshlets_count: g_meta.meshlets.meshlet_count,
588
- }, GEOMETRY_METADATA_STRUCT, metadata.buffer, offset);
589
-
590
- }
591
- }
1
+ import { HashMap } from "../../../core/collection/map/HashMap.js";
2
+ import { BLAS_EMPTY_TREE_ADDRESS } from "./bvh/GPUGeometryBVHManager.js";
3
+ import { assert } from "../../../core/assert.js";
4
+ import { BufferDescriptor } from "../../descriptor/buffer/BufferDescriptor.js";
5
+ import { write_gpu_typed_buffer } from "../shader/type/serde/write_gpu_typed_buffer.js";
6
+ import { inspect_gpu_buffer_typed } from "../buffer/inspect_gpu_buffer_typed.js";
7
+ import { GPUGeometryBVHManager } from "./bvh/GPUGeometryBVHManager.js";
8
+ import { GEOMETRY_METADATA_STRUCT } from "./GEOMETRY_METADATA_STRUCT.js";
9
+ import { GPUGeometryMetadata } from "./GPUGeometryMetadata.js";
10
+ import { GPUMeshletManager } from "./meshlet/GPUMeshletManager.js";
11
+
12
+ /**
13
+ * @typedef {import("../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext} ShadeGPUCommandContext
14
+ * @typedef {import("./MeshletGeometry.js").MeshletGeometry} MeshletGeometry
15
+ * @typedef {import("./sdf/GPUGeometrySDFManager.js").GPUGeometrySDFManager} GPUGeometrySDFManager
16
+ */
17
+
18
+ const WORDS_PER_MEGABYTE = 1024 * 1024 / 4;
19
+
20
+ /**
21
+ * Manages geometry for indirect draw
22
+ * Context represents a collection of geometries that are resident on the GPU and are ready to be used in indirect draw to draw entire scenes
23
+ * @see https://gpuweb.github.io/gpuweb/#dom-gpurendercommandsmixin-drawindexedindirect
24
+ */
25
+ export class GPUGeometryManager {
26
+ /**
27
+ * @type {GPUDevice}
28
+ */
29
+ #device;
30
+
31
+ /**
32
+ * TODO make use of {@link GPUTypedTable} instead
33
+ * @type {GPUBuffer|null}
34
+ */
35
+ buffer_metadata = null;
36
+
37
+ /**
38
+ *
39
+ * @type {Map<MeshletGeometry, GPUGeometryMetadata>}
40
+ */
41
+ #geometries = new Map();
42
+
43
+ /**
44
+ * The source records by what their geometry *is*: keyed by meshlet content ({@link MeshletGeometry#hash}
45
+ * and {@link MeshletGeometry#equals}), holding every record with those meshlets — more than one
46
+ * only when the same meshlets arrived under trees of different sizes, which do not share.
47
+ *
48
+ * {@link #geometries} answers "is this object registered"; this answers "is this *geometry*
49
+ * registered, under any object". A character loaded from a file N times is N parses, each with
50
+ * its own `MeshletGeometry` of the same bytes; by object they were N rows, N vertex regions and
51
+ * N trees in the arena, and by content they are one record with N names.
52
+ *
53
+ * @type {HashMap<MeshletGeometry, GPUGeometryMetadata[]>}
54
+ */
55
+ #records_by_content = new HashMap();
56
+
57
+ /**
58
+ * Per-instance geometry clones — same source as a regular registered
59
+ * geometry, but with their own GPU vertex/metadata range so a
60
+ * skinning pass can deform them independently. Stored separately
61
+ * from {@link #geometries} because multiple clones can share one
62
+ * source `MeshletGeometry`, which the Map's by-object keying can't
63
+ * represent.
64
+ *
65
+ * Each entry's `geometry` field still points at the source's CPU
66
+ * `MeshletGeometry` (so bounds and index_count come from the same
67
+ * place) but `meshlets` is a fresh
68
+ * {@link MeshletBatchAllocationRecord} produced by
69
+ * {@link GPUMeshletManager#clone_batch_allocation}. The two
70
+ * collections share the same `index` space — `__last_geometry_index`
71
+ * advances for both.
72
+ *
73
+ * @type {GPUGeometryMetadata[]}
74
+ */
75
+ #clone_metadata = [];
76
+
77
+ /**
78
+ * Do not modify. The data is managed by this class, access in read-only mode.
79
+ * @return {Map<Readonly<MeshletGeometry>, Readonly<GPUGeometryMetadata>>}
80
+ */
81
+ get managed() {
82
+ return this.#geometries;
83
+ }
84
+
85
+ /**
86
+ *
87
+ * @type {number}
88
+ * @private
89
+ */
90
+ __last_geometry_index = 0;
91
+
92
+ /**
93
+ *
94
+ * @type {boolean}
95
+ * @private
96
+ */
97
+ __needs_update = true;
98
+
99
+ /**
100
+ * @type {GPUMeshletManager}
101
+ */
102
+ #meshlets;
103
+
104
+ /**
105
+ *
106
+ * @return {GPUMeshletManager}
107
+ */
108
+ get meshlets() {
109
+ return this.#meshlets;
110
+ }
111
+
112
+ /**
113
+ * To support RTX, this needs to be enabled
114
+ * @type {boolean}
115
+ */
116
+ #enable_bvh = true;
117
+
118
+ /**
119
+ * The BLAS manager's {@link GPUGeometryBVHManager#residency_version} the lookup was last
120
+ * published at. The lookup names an arena address per geometry id, and those change exactly
121
+ * when that version moves — on a scene edit, and on a tree arriving after its geometry did.
122
+ *
123
+ * @type {number}
124
+ */
125
+ #published_residency_version = -1;
126
+
127
+
128
+ /**
129
+ * Bottom-level acceleration structure (BVH for ray casting)
130
+ * @type {GPUGeometryBVHManager}
131
+ */
132
+ #blas
133
+
134
+ /**
135
+ *
136
+ * @returns {GPUGeometryBVHManager}
137
+ */
138
+ get blas() {
139
+ return this.#blas;
140
+ }
141
+
142
+
143
+ /**
144
+ *
145
+ * @return {GPUGeometrySDFManager}
146
+ */
147
+ get sdf() {
148
+ throw new Error("Not implemented");
149
+ }
150
+
151
+ /**
152
+ *
153
+ * @return {number} in bytes
154
+ */
155
+ get gpu_memory_usage() {
156
+ let r = 0;
157
+
158
+
159
+ if (this.buffer_metadata !== null) {
160
+ r += this.buffer_metadata.size;
161
+ }
162
+
163
+ if (this.#meshlets) {
164
+ r += this.#meshlets.gpu_memory_usage;
165
+ }
166
+
167
+ if (this.#blas) {
168
+ r += this.#blas.gpu_memory_usage;
169
+ }
170
+
171
+ return r;
172
+ }
173
+
174
+ /**
175
+ *
176
+ * @param {GPUDevice} device
177
+ */
178
+ constructor(device) {
179
+ this.#device = device;
180
+ this.#blas = new GPUGeometryBVHManager(device);
181
+ this.#meshlets = new GPUMeshletManager({ device });
182
+
183
+ this.buffer_metadata = device.createBuffer(BufferDescriptor.fromJSON({
184
+ label: "GPUGeometryContext/metadata",
185
+ size: 0,
186
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,
187
+ }));
188
+ }
189
+
190
+ /**
191
+ *
192
+ * @param {GPUGeometryMetadata} geometry
193
+ * @return {number}
194
+ */
195
+ getAddress(geometry) {
196
+ const metadata = this.#geometries.get(geometry);
197
+
198
+ return metadata.index;
199
+ }
200
+
201
+ /**
202
+ *
203
+ * @param {MeshletGeometry} geometry
204
+ * @return {boolean}
205
+ */
206
+ has(geometry) {
207
+ return this.#geometries.has(geometry);
208
+ }
209
+
210
+
211
+ /**
212
+ *
213
+ * @param {MeshletGeometry} geometry
214
+ * @returns {boolean}
215
+ */
216
+ add(geometry) {
217
+ assert.defined(geometry, 'geometry');
218
+ assert.equal(geometry.isMeshletGeometry, true, 'geometry.isMeshletGeometry !== true');
219
+
220
+ if (this.has(geometry)) {
221
+ return false;
222
+ }
223
+
224
+ // Another object with the same meshlets under a tree of the same size is the same geometry
225
+ // as far as the GPU is concerned: one row, one vertex region, one tree in the arena — and
226
+ // this object becomes one more name for that record. The tree is measured, not compared:
227
+ // equal meshlets from one builder give one tree, and what must not share is the same
228
+ // meshlets with a tree and without one, which trace differently.
229
+ let bucket = this.#records_by_content.get(geometry);
230
+
231
+ if (bucket !== undefined) {
232
+ const tree_bytes = geometry.bvh?.byteLength ?? 0;
233
+
234
+ const shared = bucket.find(record => (record.geometry.bvh?.byteLength ?? 0) === tree_bytes);
235
+
236
+ if (shared !== undefined) {
237
+ shared.references += 1;
238
+
239
+ this.#geometries.set(geometry, shared);
240
+
241
+ return true;
242
+ }
243
+ }
244
+
245
+ const metadata = new GPUGeometryMetadata();
246
+
247
+ metadata.geometry = geometry;
248
+ metadata.references = 1;
249
+
250
+ metadata.allocated = false;
251
+ metadata.index = this.__last_geometry_index++;
252
+
253
+ const meshlets = geometry.meshlets;
254
+
255
+ metadata.meshlets = this.#meshlets.add_batch(meshlets);
256
+
257
+ // watch for data migration
258
+ metadata.meshlets.changed.add(() => {
259
+
260
+ // TODO need to handle this properly
261
+
262
+ console.warn('Meshlet GPU address changed.')
263
+
264
+ });
265
+
266
+ this.#geometries.set(geometry, metadata);
267
+
268
+ if (bucket === undefined) {
269
+ bucket = [];
270
+
271
+ this.#records_by_content.set(geometry, bucket);
272
+ }
273
+
274
+ bucket.push(metadata);
275
+
276
+ this.__needs_update = true;
277
+
278
+ return true;
279
+ }
280
+
281
+ /**
282
+ * Register a per-instance clone of `source_geometry`. The clone is
283
+ * a brand-new GPU geometry id that points at a fresh vertex /
284
+ * metadata range (allocated via
285
+ * {@link GPUMeshletManager#clone_batch_allocation}); the actual
286
+ * GPU-side memcpy + address-patch happens lazily on the next
287
+ * {@link update update(command_ctx)}.
288
+ *
289
+ * Use this when you need an instance to render against a *different
290
+ * copy* of the same mesh data — the canonical case being a
291
+ * `SkinnedMesh` whose vertex region needs to be deformed each frame
292
+ * without touching the source. Bounds and primitive count are
293
+ * inherited from `source_geometry`'s CPU object so they stay
294
+ * accurate under the initial copy; downstream passes refresh them
295
+ * once vertices actually move.
296
+ *
297
+ * Source registration is implicit — the source is `add()`-ed if it
298
+ * isn't already, so callers don't need to order things.
299
+ *
300
+ * @param {MeshletGeometry} source_geometry
301
+ * @returns {GPUGeometryMetadata} clone's metadata record. `.index`
302
+ * is the geometry id to assign to an instance; `.meshlets`
303
+ * carries the clone's GPU allocation (data + metadata offsets,
304
+ * meshlet count) — needed by the skinning subsystem to wire
305
+ * bindings against the right meshlet records.
306
+ */
307
+ add_clone(source_geometry) {
308
+ assert.defined(source_geometry, 'source_geometry');
309
+ assert.equal(source_geometry.isMeshletGeometry, true, 'source_geometry.isMeshletGeometry !== true');
310
+
311
+ // Idempotent — returns false if source is already registered.
312
+ // Either way, the source's metadata is in the map by the next
313
+ // line's lookup.
314
+ this.add(source_geometry);
315
+
316
+ const source_metadata = this.#geometries.get(source_geometry);
317
+
318
+ const clone_meshlets = this.#meshlets.clone_batch_allocation(source_metadata.meshlets);
319
+
320
+ const metadata = new GPUGeometryMetadata();
321
+ // The record's geometry, not the object the caller passed: the two are equal in content,
322
+ // but the BLAS manager keys a tree's *shape* by geometry object, and every clone of one
323
+ // record sharing one shape is what keeps N dancers from deriving and uploading N copies of it.
324
+ metadata.geometry = source_metadata.geometry;
325
+ metadata.allocated = false;
326
+ metadata.index = this.__last_geometry_index++;
327
+ metadata.meshlets = clone_meshlets;
328
+
329
+ this.#clone_metadata.push(metadata);
330
+
331
+ this.__needs_update = true;
332
+
333
+ return metadata;
334
+ }
335
+
336
+ /**
337
+ * Release a per-instance clone: its meshlet data + metadata ranges go back to the
338
+ * allocators and its BLAS slot is dropped. The mirror of {@link add_clone}, and the
339
+ * clone half of what {@link remove} does for sources.
340
+ *
341
+ * No refcount and no by-content bookkeeping, unlike {@link remove}: a clone exists
342
+ * because exactly one instance needed a vertex region nobody else writes to, so the
343
+ * caller giving it back is the last reference by construction.
344
+ *
345
+ * The clone's geometry id is not recycled — ids are handed out monotonically and are
346
+ * baked into instance records, so reusing one would need to prove nothing still names
347
+ * it. What that leaves behind is one dead metadata row and one dead BLAS-lookup slot,
348
+ * tens of bytes against the vertex region this reclaims; the lookup already answers
349
+ * `BLAS_EMPTY_TREE_ADDRESS` for an id with no record, which is the empty tree.
350
+ *
351
+ * **The caller must have stopped naming it first.** A clone is named by the meshes-table
352
+ * row of the instance that renders it and by the skinning binding that deforms it; both
353
+ * have to be gone before the bytes are handed back, or a live pass reads a region that
354
+ * has been given to somebody else. {@link GPUMeshSkinningContext#release_clone} is the
355
+ * path that gets that order right.
356
+ *
357
+ * @param {GPUGeometryMetadata} metadata a record returned by {@link add_clone}
358
+ * @returns {boolean} true if the record was a clone of this manager's and was released
359
+ */
360
+ remove_clone(metadata) {
361
+ assert.defined(metadata, 'metadata');
362
+
363
+ const index = this.#clone_metadata.indexOf(metadata);
364
+
365
+ if (index === -1) {
366
+ return false;
367
+ }
368
+
369
+ this.#clone_metadata.splice(index, 1);
370
+
371
+ this.#meshlets.remove_batch(metadata.meshlets);
372
+ this.#blas.remove(metadata);
373
+
374
+ // without this the released clone's row stays addressable with stale data until an
375
+ // unrelated add() rebuilds the table — the same reason `remove` sets it
376
+ this.__needs_update = true;
377
+
378
+ return true;
379
+ }
380
+
381
+ /**
382
+ * Look up the source-side metadata record for a registered
383
+ * `MeshletGeometry`. Returns `undefined` if the geometry hasn't
384
+ * been registered.
385
+ *
386
+ * @param {MeshletGeometry} geometry
387
+ * @returns {GPUGeometryMetadata|undefined}
388
+ */
389
+ get_metadata(geometry) {
390
+ return this.#geometries.get(geometry);
391
+ }
392
+
393
+ /**
394
+ *
395
+ * @param {MeshletGeometry} geometry
396
+ * @returns {boolean}
397
+ */
398
+ remove(geometry) {
399
+ const metadata = this.#geometries.get(geometry);
400
+
401
+ if (metadata === undefined) {
402
+ return false;
403
+ }
404
+
405
+ this.#geometries.delete(geometry);
406
+
407
+ metadata.references -= 1;
408
+
409
+ if (metadata.references > 0) {
410
+ // other objects still name this record; nothing on the GPU changes
411
+ return true;
412
+ }
413
+
414
+ this.#forget_content(metadata);
415
+
416
+ // reclaim the meshlet data + metadata allocation (compaction-deferred) and the BLAS
417
+ // slot. Safe to free before the table rebuild below: the allocators hand out disjoint
418
+ // slices so other geometries are unaffected, and the rebuild drops this geometry's
419
+ // metadata row so nothing references the freed ranges afterward.
420
+ if (metadata.meshlets !== undefined) {
421
+ this.#meshlets.remove_batch(metadata.meshlets);
422
+ }
423
+ this.#blas.remove(metadata);
424
+
425
+ // rebuild the GPU metadata table without this entry — without the dirty flag the
426
+ // removed geometry's row stayed addressable with stale data until an unrelated add()
427
+ this.__needs_update = true;
428
+
429
+ // TODO context indices need to be updated
430
+ // NOTE: the BLAS append-only data region is not compacted, so its bytes for this
431
+ // geometry are unreferenced until a future BVH buffer rebuild (bounded residual).
432
+
433
+ return true;
434
+ }
435
+
436
+ /**
437
+ * Take a record out of the by-content index, once nothing names it any more.
438
+ *
439
+ * @param {GPUGeometryMetadata} metadata
440
+ */
441
+ #forget_content(metadata) {
442
+ const bucket = this.#records_by_content.get(metadata.geometry);
443
+
444
+ if (bucket === undefined) {
445
+ return;
446
+ }
447
+
448
+ const index = bucket.indexOf(metadata);
449
+
450
+ if (index !== -1) {
451
+ bucket.splice(index, 1);
452
+ }
453
+
454
+ if (bucket.length === 0) {
455
+ this.#records_by_content.delete(metadata.geometry);
456
+ }
457
+ }
458
+
459
+ destroy() {
460
+
461
+ if (this.buffer_metadata !== null) {
462
+ this.buffer_metadata.destroy();
463
+ }
464
+
465
+ this.#meshlets.destroy();
466
+
467
+ // TODO ensure BVH and others are destroyed
468
+
469
+ this.__needs_update = true;
470
+ }
471
+
472
+ /**
473
+ * @param {ShadeGPUCommandContext} [command_ctx] — required when there
474
+ * are queued meshlet clones to flush; passed through to
475
+ * {@link GPUMeshletManager#update}. Older call sites that don't
476
+ * register clones can omit it (the meshlet flush is a no-op when
477
+ * nothing's pending).
478
+ */
479
+ update(command_ctx) {
480
+ const rebuilt = this.__needs_update;
481
+
482
+ if (rebuilt) {
483
+ console.time('Geometry build');
484
+ this.build();
485
+ console.timeEnd('Geometry build');
486
+
487
+ // this.#update_sdf(command_ctx);
488
+
489
+ this.__needs_update = false;
490
+ }
491
+
492
+ // Every call, not only after a scene edit: a tree whose bytes arrived after its geometry was
493
+ // registered uploads here, and the lookup follows it. Cheap when nothing is pending — a walk
494
+ // over the shapes and a look at the queue.
495
+ this.#blas.update();
496
+
497
+ // The lookup has a row per geometry id and an arena address in each, so it is republished
498
+ // when the ids changed (a rebuild) and when the addresses did (the residency version).
499
+ if (this.#enable_bvh && (rebuilt || this.#published_residency_version !== this.#blas.residency_version)) {
500
+ // after `#blas.update()`, which is what turns registrations into arena addresses
501
+ this.#publish_blas_lookup();
502
+
503
+ this.#published_residency_version = this.#blas.residency_version;
504
+ }
505
+
506
+ // Always drain — clones can be queued without `__needs_update`
507
+ // tripping (e.g. by direct callers of `meshlets.clone_batch_allocation`).
508
+ // No-op when the queue is empty.
509
+ if (command_ctx !== undefined) {
510
+ this.#meshlets.update(command_ctx);
511
+ }
512
+ }
513
+
514
+ /**
515
+ * Every geometry this manager has handed an id to — sources and per-instance clones alike —
516
+ * in index order.
517
+ *
518
+ * The two share the `__last_geometry_index` space, so every buffer laid out "by geometry id"
519
+ * is laid out over this one list: the geometry metadata rows, and the BLAS lookup. Having one
520
+ * answer to "what ids are there" is what keeps those two from drifting apart, which is exactly
521
+ * what happened while the BLAS lookup was indexed by a pool of its own.
522
+ *
523
+ * @returns {GPUGeometryMetadata[]}
524
+ */
525
+ #all_metadata_by_index() {
526
+ // a record with several names is one record, and one row
527
+ const all = [
528
+ ...new Set(this.#geometries.values()),
529
+ ...this.#clone_metadata,
530
+ ];
531
+
532
+ all.sort((a, b) => a.index - b.index);
533
+
534
+ return all;
535
+ }
536
+
537
+ /**
538
+ * Point every geometry id at the arena address of the tree it should trace against.
539
+ *
540
+ * One id, one tree, and the id is the key — which is the whole answer to a clone. A clone has a
541
+ * geometry id of its own because it has a vertex region of its own, and a tree of its own for
542
+ * the same reason: what deformation changes is its bounds, and those cannot be written into the
543
+ * tree every other instance is still tracing. What it does *not* need its own of is the shape,
544
+ * which the BLAS manager shares between them.
545
+ *
546
+ * Must run after {@link GPUGeometryBVHManager#update}, which is what makes addresses real.
547
+ */
548
+ #publish_blas_lookup() {
549
+ const all = this.#all_metadata_by_index();
550
+
551
+ const addresses = new Uint32Array(Math.max(1, this.__last_geometry_index));
552
+
553
+ for (const meta of all) {
554
+ // A geometry whose tree is not resident yet — registered before its bytes existed —
555
+ // traces the empty tree until it is. Every traversal starts walking from whatever the
556
+ // lookup names, so "no tree" has to be a tree, and not the one at the arena's end.
557
+ addresses[meta.index] = this.#blas.get_address(meta) ?? BLAS_EMPTY_TREE_ADDRESS;
558
+ }
559
+
560
+ this.#blas.publish_lookup(addresses);
561
+ }
562
+
563
+ build() {
564
+ // release currently-held resources
565
+ this.buffer_metadata.destroy();
566
+
567
+ const device = this.#device;
568
+
569
+ const all_metadata = this.#all_metadata_by_index();
570
+
571
+ // One tree per geometry id, clones included — keyed by the metadata row rather than by the
572
+ // geometry, because a clone and its source share a `MeshletGeometry` and would otherwise
573
+ // collide on it. The nodes are duplicated per clone on purpose (they are what deformation
574
+ // rewrites); the shape behind them is not.
575
+ if (this.#enable_bvh) {
576
+ for (const meta of all_metadata) {
577
+ this.#blas.obtain(meta, meta.geometry);
578
+ }
579
+ }
580
+
581
+ this.buffer_metadata = device.createBuffer(BufferDescriptor.fromJSON({
582
+ label: this.buffer_metadata.label,
583
+ size: Math.max(1, this.__last_geometry_index) * GEOMETRY_METADATA_STRUCT.size,
584
+ usage: this.buffer_metadata.usage,
585
+ mappedAtCreation: true
586
+ }));
587
+
588
+ // TODO limit mapped range
589
+ // TODO consider using queue.writeBuffer
590
+ const metadata = new DataView(this.buffer_metadata.getMappedRange());
591
+
592
+ // write metadata
593
+ for (let i = 0; i < all_metadata.length; i++) {
594
+ this.#write_geometry_metadata(all_metadata[i], metadata);
595
+ }
596
+
597
+ this.buffer_metadata.unmap();
598
+ }
599
+
600
+ async debug_inspect_gpu_metadata() {
601
+ const data = await inspect_gpu_buffer_typed({
602
+ buffer: this.buffer_metadata,
603
+ device: this.#device,
604
+ type: GEOMETRY_METADATA_STRUCT,
605
+ // one row per geometry id — sources and clones — not one per registered object, of
606
+ // which a record may have several
607
+ count: this.__last_geometry_index,
608
+ });
609
+
610
+ return data;
611
+ }
612
+
613
+ /**
614
+ * Write one row of the geometry metadata buffer. Works for both
615
+ * source geometries and clones — `g_meta.geometry` always points
616
+ * at the source's CPU `MeshletGeometry` (clones share it for bounds
617
+ * + primitive_count), while `g_meta.meshlets` carries the clone's
618
+ * own GPU allocation when this is a clone.
619
+ *
620
+ * @param {GPUGeometryMetadata} g_meta
621
+ * @param {DataView} metadata
622
+ */
623
+ #write_geometry_metadata(g_meta, metadata) {
624
+ const geometry = g_meta.geometry;
625
+
626
+ const idx = g_meta.index;
627
+
628
+ const offset = idx * GEOMETRY_METADATA_STRUCT.size;
629
+
630
+ // TODO fix this, assumes triangles currently
631
+ const indexCount = geometry.primitive_count * 3;
632
+
633
+ write_gpu_typed_buffer({
634
+ index_count: indexCount,
635
+ bounding_sphere: geometry.bounding_sphere,
636
+ bounding_box: geometry.bounding_box,
637
+ meshlets_address: g_meta.meshlets.metadata.offset,
638
+ meshlets_count: g_meta.meshlets.meshlet_count,
639
+ }, GEOMETRY_METADATA_STRUCT, metadata.buffer, offset);
640
+
641
+ }
642
+ }