@woosh/meep-engine 3.14.6 → 3.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1089) hide show
  1. package/editor/Editor.js +7 -7
  2. package/editor/actions/concrete/TransformModifyAction.d.ts +4 -4
  3. package/editor/actions/concrete/TransformModifyAction.d.ts.map +1 -1
  4. package/editor/actions/concrete/TransformModifyAction.js +4 -4
  5. package/editor/camera/camera_framing.js +7 -7
  6. package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts +20 -0
  7. package/editor/ecs/component/editors/ecs/Transform64Editor.d.ts.map +1 -0
  8. package/editor/ecs/component/editors/ecs/Transform64Editor.js +70 -0
  9. package/editor/ecs/component/prototypeObjectEditor.js +2 -2
  10. package/editor/ecs/component/registerEngineComponentEditors.js +3 -3
  11. package/editor/particles/effect/ParticleEffectDocument.d.ts +396 -0
  12. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -0
  13. package/editor/particles/effect/ParticleEffectDocument.js +989 -0
  14. package/editor/particles/effect/ParticleReferenceSimulation.d.ts +113 -0
  15. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -0
  16. package/editor/particles/effect/ParticleReferenceSimulation.js +377 -0
  17. package/editor/particles/effect/actions/ParticleGroupDefineAction.d.ts +35 -0
  18. package/editor/particles/effect/actions/ParticleGroupDefineAction.d.ts.map +1 -0
  19. package/editor/particles/effect/actions/ParticleGroupDefineAction.js +45 -0
  20. package/editor/particles/effect/make_starter_particle_effect.d.ts +23 -0
  21. package/editor/particles/effect/make_starter_particle_effect.d.ts.map +1 -0
  22. package/editor/particles/effect/make_starter_particle_effect.js +177 -0
  23. package/editor/persistence/buildNewSceneDataset.d.ts.map +1 -1
  24. package/editor/persistence/buildNewSceneDataset.js +10 -8
  25. package/editor/process/symbolic/AudioEmitterSymbolicDisplay.js +67 -67
  26. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  27. package/editor/process/symbolic/GridPositionSymbolicDisplay.js +6 -6
  28. package/editor/process/symbolic/LightSymbolicDisplay.js +172 -172
  29. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +1 -1
  30. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +6 -3
  31. package/editor/process/symbolic/PositionedMarkerSymbolicDisplay.js +6 -6
  32. package/editor/selection/editor_pick.js +130 -130
  33. package/editor/templates/entity_templates.js +7 -7
  34. package/editor/tools/TransformToolV2.d.ts +3 -3
  35. package/editor/tools/TransformToolV2.d.ts.map +1 -1
  36. package/editor/tools/TransformToolV2.js +58 -25
  37. package/editor/tools/paint/TerrainHeightPaintTool.d.ts.map +1 -1
  38. package/editor/tools/paint/TerrainHeightPaintTool.js +11 -9
  39. package/editor/tools/v2/GizmoNode.js +2 -2
  40. package/editor/tools/v2/TransformControls.d.ts +3 -3
  41. package/editor/tools/v2/TransformControls.d.ts.map +1 -1
  42. package/editor/tools/v2/TransformControls.js +1003 -971
  43. package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
  44. package/editor/tools/v2/handle/gizmo_drag_plane.js +6 -1
  45. package/editor/view/ecs/components/common/AutoCanvasView.js +17 -0
  46. package/editor/view/node-graph/NodeGraphEditorView.d.ts +143 -2
  47. package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
  48. package/editor/view/node-graph/NodeGraphEditorView.js +358 -6
  49. package/editor/view/node-graph/NodeGraphMinimapView.d.ts +120 -0
  50. package/editor/view/node-graph/NodeGraphMinimapView.d.ts.map +1 -0
  51. package/editor/view/node-graph/NodeGraphMinimapView.js +859 -0
  52. package/editor/view/node-graph/NodeGraphPaletteView.d.ts +112 -0
  53. package/editor/view/node-graph/NodeGraphPaletteView.d.ts.map +1 -0
  54. package/editor/view/node-graph/NodeGraphPaletteView.js +352 -0
  55. package/editor/view/node-graph/NodeGraphSearchMenuView.d.ts +76 -0
  56. package/editor/view/node-graph/NodeGraphSearchMenuView.d.ts.map +1 -0
  57. package/editor/view/node-graph/NodeGraphSearchMenuView.js +247 -0
  58. package/editor/view/node-graph/NodeGraphView.d.ts +147 -5
  59. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  60. package/editor/view/node-graph/NodeGraphView.js +809 -76
  61. package/editor/view/node-graph/NodeIconView.d.ts +33 -0
  62. package/editor/view/node-graph/NodeIconView.d.ts.map +1 -0
  63. package/editor/view/node-graph/NodeIconView.js +54 -0
  64. package/editor/view/node-graph/NodeView.d.ts +71 -1
  65. package/editor/view/node-graph/NodeView.d.ts.map +1 -1
  66. package/editor/view/node-graph/NodeView.js +318 -17
  67. package/editor/view/node-graph/PortView.d.ts +41 -1
  68. package/editor/view/node-graph/PortView.d.ts.map +1 -1
  69. package/editor/view/node-graph/PortView.js +121 -69
  70. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts +16 -3
  71. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -1
  72. package/editor/view/node-graph/actions/ConnectionDeleteAction.js +29 -3
  73. package/editor/view/node-graph/actions/NodeCreateAction.d.ts +65 -0
  74. package/editor/view/node-graph/actions/NodeCreateAction.d.ts.map +1 -0
  75. package/editor/view/node-graph/actions/NodeCreateAction.js +108 -0
  76. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts +6 -0
  77. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -1
  78. package/editor/view/node-graph/actions/NodeDeleteAction.js +24 -2
  79. package/editor/view/node-graph/connection_wire_geometry.d.ts +34 -0
  80. package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -1
  81. package/editor/view/node-graph/connection_wire_geometry.js +79 -3
  82. package/editor/view/node-graph/node-graph.css +678 -0
  83. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts +37 -0
  84. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -0
  85. package/editor/view/particles/effect/ParticleCodeEditorView.js +479 -0
  86. package/editor/view/particles/effect/ParticleEffectEditorView.d.ts +61 -0
  87. package/editor/view/particles/effect/ParticleEffectEditorView.d.ts.map +1 -0
  88. package/editor/view/particles/effect/ParticleEffectEditorView.js +223 -0
  89. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts +25 -0
  90. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -0
  91. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +606 -0
  92. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +156 -0
  93. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -0
  94. package/editor/view/particles/effect/ParticleGraphEditorView.js +1636 -0
  95. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts +22 -0
  96. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -0
  97. package/editor/view/particles/effect/ParticleNodeParametersView.js +520 -0
  98. package/editor/view/particles/effect/ParticlePreviewView.d.ts +52 -0
  99. package/editor/view/particles/effect/ParticlePreviewView.d.ts.map +1 -0
  100. package/editor/view/particles/effect/ParticlePreviewView.js +533 -0
  101. package/editor/view/particles/effect/particle-editor.css +556 -0
  102. package/editor/view/prepareMeshLibrary.d.ts.map +1 -1
  103. package/editor/view/prepareMeshLibrary.js +8 -4
  104. package/package.json +1 -1
  105. package/samples/engine/first-scene/main.js +152 -152
  106. package/samples/generation/generators/mir_generator_place_bases.js +3 -3
  107. package/src/core/assert.d.ts +28 -24
  108. package/src/core/assert.d.ts.map +1 -1
  109. package/src/core/assert.js +34 -26
  110. package/src/core/geom/3d/shape/PosedShape3D.d.ts +17 -0
  111. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  112. package/src/core/geom/3d/shape/PosedShape3D.js +34 -2
  113. package/src/core/graph/format/graphviz/graphviz_escape_html_label.d.ts +17 -0
  114. package/src/core/graph/format/graphviz/graphviz_escape_html_label.d.ts.map +1 -0
  115. package/src/core/graph/format/graphviz/graphviz_escape_html_label.js +25 -0
  116. package/src/core/graph/format/graphviz/graphviz_escape_quoted.d.ts +16 -0
  117. package/src/core/graph/format/graphviz/graphviz_escape_quoted.d.ts.map +1 -0
  118. package/src/core/graph/format/graphviz/graphviz_escape_quoted.js +24 -0
  119. package/src/core/model/node-graph/NodeGraph.d.ts +12 -0
  120. package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
  121. package/src/core/model/node-graph/NodeGraph.js +21 -6
  122. package/src/core/model/node-graph/node/NodeDescription.d.ts +36 -0
  123. package/src/core/model/node-graph/node/NodeDescription.d.ts.map +1 -1
  124. package/src/core/model/node-graph/node/NodeDescription.js +41 -0
  125. package/src/core/model/node-graph/visual/ConnectionVisualData.d.ts +119 -0
  126. package/src/core/model/node-graph/visual/ConnectionVisualData.d.ts.map +1 -0
  127. package/src/core/model/node-graph/visual/ConnectionVisualData.js +317 -0
  128. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.d.ts +4 -0
  129. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.d.ts.map +1 -1
  130. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.js +125 -22
  131. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +91 -2
  132. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
  133. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +164 -113
  134. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts +162 -0
  135. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts.map +1 -0
  136. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.js +288 -0
  137. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +109 -0
  138. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -0
  139. package/src/core/model/node-graph/visual/layout/LayoutProblem.js +141 -0
  140. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +149 -0
  141. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -0
  142. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +175 -0
  143. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +137 -0
  144. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -0
  145. package/src/core/model/node-graph/visual/layout/RouteGrid.js +242 -0
  146. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +114 -0
  147. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -0
  148. package/src/core/model/node-graph/visual/layout/RouteSearch.js +300 -0
  149. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +86 -0
  150. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -0
  151. package/src/core/model/node-graph/visual/layout/RouteSet.js +168 -0
  152. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts +48 -0
  153. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -0
  154. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +555 -0
  155. package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts +34 -0
  156. package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts.map +1 -0
  157. package/src/core/model/node-graph/visual/layout/layout_assign_layers.js +202 -0
  158. package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts +34 -0
  159. package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts.map +1 -0
  160. package/src/core/model/node-graph/visual/layout/layout_break_cycles.js +254 -0
  161. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts +29 -0
  162. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -0
  163. package/src/core/model/node-graph/visual/layout/layout_build_problem.js +184 -0
  164. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +29 -0
  165. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -0
  166. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +95 -0
  167. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +56 -0
  168. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -0
  169. package/src/core/model/node-graph/visual/layout/layout_node_graph.js +131 -0
  170. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +36 -0
  171. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -0
  172. package/src/core/model/node-graph/visual/layout/layout_order_layers.js +415 -0
  173. package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts +21 -0
  174. package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts.map +1 -0
  175. package/src/core/model/node-graph/visual/layout/layout_orient_links.js +49 -0
  176. package/src/core/model/node-graph/visual/layout/route_connections.d.ts +41 -0
  177. package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -0
  178. package/src/core/model/node-graph/visual/layout/route_connections.js +309 -0
  179. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +33 -0
  180. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -0
  181. package/src/core/model/node-graph/visual/layout/route_grid_build.js +237 -0
  182. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +25 -0
  183. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -0
  184. package/src/core/model/node-graph/visual/layout/route_nudge.js +220 -0
  185. package/src/core/model/node-graph/visual/layout/route_to_spline.d.ts +29 -0
  186. package/src/core/model/node-graph/visual/layout/route_to_spline.d.ts.map +1 -0
  187. package/src/core/model/node-graph/visual/layout/route_to_spline.js +120 -0
  188. package/src/engine/EngineHarness.d.ts.map +1 -1
  189. package/src/engine/EngineHarness.js +593 -586
  190. package/src/engine/EntityCreator.js +116 -116
  191. package/src/engine/achievements/AchievementManager.js +437 -437
  192. package/src/engine/animation/AnimatedActions.js +111 -111
  193. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  194. package/src/engine/animation/AnimationUtils.js +246 -234
  195. package/src/engine/animation/Animations.d.ts +1 -0
  196. package/src/engine/animation/Animations.d.ts.map +1 -1
  197. package/src/engine/animation/Animations.js +13 -5
  198. package/src/engine/animation/clip/bind_property_writer.d.ts.map +1 -1
  199. package/src/engine/animation/clip/bind_property_writer.js +12 -5
  200. package/src/engine/animation/curve/binding/BoundTransform64Writer.d.ts +29 -0
  201. package/src/engine/animation/curve/binding/BoundTransform64Writer.d.ts.map +1 -0
  202. package/src/engine/animation/curve/binding/BoundTransform64Writer.js +80 -0
  203. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +4 -4
  204. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +1 -1
  205. package/src/engine/asset/loaders/gltf_test_fixtures.js +5 -4
  206. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +12 -12
  207. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  208. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +77 -44
  209. package/src/engine/control/first-person/abilities/LedgeGrab.js +1 -1
  210. package/src/engine/control/first-person/abilities/Mantle.js +1 -1
  211. package/src/engine/control/first-person/abilities/Slide.js +1 -1
  212. package/src/engine/control/first-person/collision/KinematicMover.d.ts +5 -9
  213. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  214. package/src/engine/control/first-person/collision/KinematicMover.js +59 -29
  215. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +2 -2
  216. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  217. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +7 -7
  218. package/src/engine/ecs/EventType.d.ts +1 -0
  219. package/src/engine/ecs/EventType.js +35 -10
  220. package/src/engine/ecs/dynamic_actions/actions/definition/SendRequestActionDescription.d.ts.map +1 -1
  221. package/src/engine/ecs/dynamic_actions/actions/definition/SendRequestActionDescription.js +12 -4
  222. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts +4 -4
  223. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  224. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +10 -11
  225. package/src/engine/ecs/grid/pick.js +1 -1
  226. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +1 -1
  227. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +13 -13
  228. package/src/engine/ecs/gui/hud/testHudEdgeStick.js +3 -3
  229. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +10 -10
  230. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
  231. package/src/engine/ecs/ik/InverseKinematicsSystem.js +8 -8
  232. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  233. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +120 -97
  234. package/src/engine/ecs/ik/ik_bone_chain.d.ts +16 -5
  235. package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
  236. package/src/engine/ecs/ik/ik_bone_chain.js +16 -4
  237. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +7 -3
  238. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -1
  239. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +20 -16
  240. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +18 -0
  241. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -0
  242. package/src/engine/ecs/ik/ik_write_local_rotation.js +30 -0
  243. package/src/engine/ecs/parent/EntityNode.d.ts +24 -6
  244. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  245. package/src/engine/ecs/parent/EntityNode.js +54 -42
  246. package/src/engine/ecs/parent/EntityNodeFlags.d.ts +0 -1
  247. package/src/engine/ecs/parent/EntityNodeFlags.js +7 -8
  248. package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
  249. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  250. package/src/engine/ecs/speaker/VoiceSystem.js +4 -4
  251. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  252. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +2 -0
  253. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +5 -2
  254. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  255. package/src/engine/ecs/terrain/ecs/Terrain.js +7 -4
  256. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +3 -3
  257. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts +7 -7
  258. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  259. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +84 -36
  260. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +513 -0
  261. package/src/engine/ecs/transform/Transform64.d.ts +48 -11
  262. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  263. package/src/engine/ecs/transform/Transform64.js +54 -15
  264. package/src/engine/ecs/transform/Transform64SerializationAdapter.d.ts +37 -0
  265. package/src/engine/ecs/transform/Transform64SerializationAdapter.d.ts.map +1 -0
  266. package/src/engine/ecs/transform/Transform64SerializationAdapter.js +75 -0
  267. package/src/engine/ecs/transform/__probe.d.ts +4 -0
  268. package/src/engine/ecs/transform/__probe.d.ts.map +1 -0
  269. package/src/engine/ecs/transform/t64_allocation_probe.d.ts +31 -0
  270. package/src/engine/ecs/transform/t64_allocation_probe.d.ts.map +1 -0
  271. package/src/engine/ecs/transform/t64_allocation_probe.js +78 -0
  272. package/src/engine/ecs/transform/t64_announce_change.d.ts +33 -0
  273. package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -0
  274. package/src/engine/ecs/transform/t64_announce_change.js +39 -0
  275. package/src/engine/ecs/transform/t64_equals_components.d.ts +30 -0
  276. package/src/engine/ecs/transform/t64_equals_components.d.ts.map +1 -0
  277. package/src/engine/ecs/transform/t64_equals_components.js +59 -0
  278. package/src/engine/ecs/transform/t64_read_rotation.d.ts +13 -0
  279. package/src/engine/ecs/transform/t64_read_rotation.d.ts.map +1 -0
  280. package/src/engine/ecs/transform/t64_read_rotation.js +16 -0
  281. package/src/engine/ecs/transform/t64_read_translation.d.ts +14 -0
  282. package/src/engine/ecs/transform/t64_read_translation.d.ts.map +1 -0
  283. package/src/engine/ecs/transform/t64_read_translation.js +17 -0
  284. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +5 -5
  285. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  286. package/src/engine/ecs/transform-attachment/TransformAttachment.js +4 -4
  287. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +10 -10
  288. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  289. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +71 -20
  290. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  291. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
  292. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +5 -4
  293. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  294. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +8 -3
  295. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +6 -6
  296. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  297. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +25 -13
  298. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLanderSystem.js +1 -1
  299. package/src/engine/graphics/ecs/mesh/setMesh.js +2 -2
  300. package/src/engine/graphics/ecs/path/entity/EntityPath.d.ts.map +1 -1
  301. package/src/engine/graphics/ecs/path/entity/EntityPath.js +21 -7
  302. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts +4 -4
  303. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts.map +1 -1
  304. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.js +4 -4
  305. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +2 -2
  306. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  307. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +145 -135
  308. package/src/engine/graphics/geometry/MikkT/Build4RuleGroups.js +2 -2
  309. package/src/engine/graphics/geometry/MikkT/DegenEpilogue.js +1 -1
  310. package/src/engine/graphics/geometry/MikkT/DegenPrologue.js +1 -1
  311. package/src/engine/graphics/geometry/MikkT/EvalTspace.js +1 -1
  312. package/src/engine/graphics/geometry/MikkT/GenerateTSpaces.js +3 -3
  313. package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +659 -0
  314. package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +21 -5
  315. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts +45 -0
  316. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  317. package/src/engine/graphics/render/frame_graph/FrameGraph.js +282 -60
  318. package/src/engine/graphics/render/frame_graph/FramePassBuilder.d.ts.map +1 -1
  319. package/src/engine/graphics/render/frame_graph/FramePassBuilder.js +20 -9
  320. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts +12 -0
  321. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts.map +1 -1
  322. package/src/engine/graphics/render/frame_graph/FramePassNode.js +13 -0
  323. package/src/engine/graphics/render/frame_graph/FramePassResources.d.ts.map +1 -1
  324. package/src/engine/graphics/render/frame_graph/FramePassResources.js +5 -0
  325. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts +19 -1
  326. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts.map +1 -1
  327. package/src/engine/graphics/render/frame_graph/ResourceEntry.js +23 -1
  328. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.d.ts +15 -1
  329. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.d.ts.map +1 -1
  330. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.js +33 -16
  331. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.d.ts.map +1 -1
  332. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.js +19 -1
  333. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +6 -6
  334. package/src/engine/graphics3/CameraSystem.d.ts +6 -6
  335. package/src/engine/graphics3/CameraSystem.d.ts.map +1 -1
  336. package/src/engine/graphics3/CameraSystem.js +170 -170
  337. package/src/engine/graphics3/DecalSystem.d.ts +6 -6
  338. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  339. package/src/engine/graphics3/DecalSystem.js +449 -449
  340. package/src/engine/graphics3/LightSystem.d.ts +6 -6
  341. package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
  342. package/src/engine/graphics3/LightSystem.js +234 -221
  343. package/src/engine/graphics3/MeshSystem.d.ts +6 -6
  344. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
  345. package/src/engine/graphics3/MeshSystem.js +53 -22
  346. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +20 -15
  347. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
  348. package/src/engine/graphics3/ParticipatingMediaSystem.js +198 -184
  349. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +6 -6
  350. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
  351. package/src/engine/graphics3/ParticleEmitterSystem.js +310 -289
  352. package/src/engine/graphics3/PickingSystem.d.ts +6 -6
  353. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
  354. package/src/engine/graphics3/PickingSystem.js +273 -273
  355. package/src/engine/graphics3/ShadedGeometrySystem.d.ts +6 -6
  356. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
  357. package/src/engine/graphics3/ShadedGeometrySystem.js +180 -169
  358. package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
  359. package/src/engine/graphics3/TerrainSystem.js +565 -566
  360. package/src/engine/graphics3/Trail3DSystem.d.ts +6 -6
  361. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
  362. package/src/engine/graphics3/Trail3DSystem.js +221 -221
  363. package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
  364. package/src/engine/graphics3/camera_sync_from_transform.d.ts.map +1 -1
  365. package/src/engine/graphics3/camera_sync_from_transform.js +2 -1
  366. package/src/engine/graphics3/debug/gizmo_view_from_camera.js +4 -4
  367. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +6 -0
  368. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +1 -1
  369. package/src/engine/graphics3/particles/GPUParticularRenderer.js +82 -53
  370. package/src/engine/graphics3/particles/particle_gpu_records.d.ts +12 -8
  371. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
  372. package/src/engine/graphics3/particles/particle_gpu_records.js +53 -45
  373. package/src/engine/graphics3/preview/make_model_preview_scene.js +1 -1
  374. package/src/engine/graphics3/shade_camera_projection_ray.js +4 -4
  375. package/src/engine/graphics3/shade_node_to_entity_composition.d.ts.map +1 -1
  376. package/src/engine/graphics3/shade_node_to_entity_composition.js +88 -84
  377. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts +7 -7
  378. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
  379. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +8 -8
  380. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +9 -8
  381. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
  382. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +29 -8
  383. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  384. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.d.ts.map +1 -1
  385. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +35 -21
  386. package/src/engine/intelligence/behavior/util/RotationBehavior.js +5 -5
  387. package/src/engine/intelligence/mcts/StateNode.js +1 -1
  388. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts +7 -7
  389. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
  390. package/src/engine/interpolation/TransformPoseSerializationAdapter.js +14 -15
  391. package/src/engine/interpolation/pose_interpoland.d.ts +2 -2
  392. package/src/engine/interpolation/pose_interpoland.js +4 -4
  393. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts +4 -4
  394. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  395. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +39 -14
  396. package/src/engine/network/adapters/TransformReplicationAdapter.d.ts +7 -7
  397. package/src/engine/network/adapters/TransformReplicationAdapter.d.ts.map +1 -1
  398. package/src/engine/network/adapters/TransformReplicationAdapter.js +19 -20
  399. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts +48 -0
  400. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
  401. package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +246 -3
  402. package/src/engine/network/replication/Replicator.d.ts +5 -3
  403. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  404. package/src/engine/network/replication/Replicator.js +65 -16
  405. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +3 -3
  406. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  407. package/src/engine/physics/ccd/linear_sweep.js +9 -3
  408. package/src/engine/physics/constraint/solve_constraints.js +10 -10
  409. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +8 -8
  410. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -1
  411. package/src/engine/physics/ecs/ColliderObserverSystem.js +6 -6
  412. package/src/engine/physics/ecs/PhysicsSystem.d.ts +22 -32
  413. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  414. package/src/engine/physics/ecs/PhysicsSystem.js +2337 -2310
  415. package/src/engine/physics/ecs/find_non_finite_physics_state.js +6 -6
  416. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +7 -7
  417. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  418. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +16 -8
  419. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +4 -4
  420. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  421. package/src/engine/physics/fluid/ecs/FluidSystem.js +6 -6
  422. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +2 -2
  423. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts.map +1 -1
  424. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +4 -4
  425. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +7 -7
  426. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +4 -4
  427. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +7 -7
  428. package/src/engine/physics/inertia/world_inverse_inertia.js +1 -1
  429. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  430. package/src/engine/physics/integration/integrate_position.js +13 -12
  431. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
  432. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +23 -5
  433. package/src/engine/physics/narrowphase/compute_penetration.js +18 -14
  434. package/src/engine/physics/narrowphase/convex_convex_manifold.js +2 -2
  435. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +9 -9
  436. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  437. package/src/engine/physics/narrowphase/narrowphase_step.js +95 -68
  438. package/src/engine/physics/narrowphase/refine_ray_concave.js +1 -1
  439. package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -3
  440. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  441. package/src/engine/physics/queries/overlap_shape.js +19 -7
  442. package/src/engine/physics/queries/raycast.js +3 -3
  443. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  444. package/src/engine/physics/queries/shape_cast.js +628 -620
  445. package/src/engine/physics/solver/solve_contacts.js +10 -10
  446. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +6 -5
  447. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  448. package/src/engine/physics/vehicle/RaycastVehicle.js +10 -5
  449. package/src/engine/sound/ecs/SoundListenerSystem.d.ts +16 -4
  450. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  451. package/src/engine/sound/ecs/SoundListenerSystem.js +70 -11
  452. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +7 -7
  453. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  454. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +343 -338
  455. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +2 -2
  456. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  457. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +356 -345
  458. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +23 -2
  459. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
  460. package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +174 -140
  461. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +6 -6
  462. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
  463. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +185 -184
  464. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +1 -1
  465. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts +2 -1
  466. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts.map +1 -1
  467. package/src/engine/sound/simulation/core/AcousticRegionIndex.js +4 -3
  468. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts +3 -2
  469. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts.map +1 -1
  470. package/src/engine/sound/simulation/core/AcousticVolumeRegion.js +6 -4
  471. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +10 -6
  472. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
  473. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +32 -7
  474. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts +7 -7
  475. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts.map +1 -1
  476. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.js +6 -6
  477. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  478. package/src/engine/sound/sopra/runtime/EventInstance.js +8 -2
  479. package/src/format/scene/gltf/gltf_component_type.d.ts.map +1 -1
  480. package/src/format/scene/gltf/gltf_component_type.js +3 -1
  481. package/src/format/texture/ktx2/ktx2_read.d.ts.map +1 -1
  482. package/src/format/texture/ktx2/ktx2_read.js +2 -1
  483. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  484. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +8 -1
  485. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +4 -4
  486. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  487. package/src/generation/markers/GridCellActionPlaceMarker.js +16 -6
  488. package/src/generation/markers/MarkerNode.d.ts +3 -3
  489. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  490. package/src/generation/markers/MarkerNode.js +3 -3
  491. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts +4 -4
  492. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts.map +1 -1
  493. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +7 -7
  494. package/src/generation/markers/actions/MarkerNodeActionImaginary.d.ts.map +1 -1
  495. package/src/generation/markers/actions/MarkerNodeActionImaginary.js +20 -2
  496. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  497. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  498. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +13 -3
  499. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts.map +1 -1
  500. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.js +11 -1
  501. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  502. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +8 -4
  503. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  504. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +13 -5
  505. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  506. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +8 -2
  507. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  508. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +16 -2
  509. package/src/shade/RENDERER_CONTRACT.md +584 -580
  510. package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
  511. package/src/shade/device/graph/BufferResourceDescriptor.js +193 -184
  512. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  513. package/src/shade/device/graph/TextureResourceDescriptor.js +12 -0
  514. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  515. package/src/shade/device/mock/SoftwareGPUDevice.js +8 -0
  516. package/src/shade/playground/avboit/README.md +117 -0
  517. package/src/shade/playground/avboit/index.html +215 -0
  518. package/src/shade/playground/avboit/main.d.ts +2 -0
  519. package/src/shade/playground/avboit/main.d.ts.map +1 -0
  520. package/src/shade/playground/avboit/main.js +875 -0
  521. package/src/shade/playground/basis_textures/main.js +1 -1
  522. package/src/shade/playground/ground_seam/main.js +1 -1
  523. package/src/shade/playground/particle_editor/README.md +175 -0
  524. package/src/shade/playground/particle_editor/index.html +76 -0
  525. package/src/shade/playground/particle_editor/main.d.ts +2 -0
  526. package/src/shade/playground/particle_editor/main.d.ts.map +1 -0
  527. package/src/shade/playground/particle_editor/main.js +139 -0
  528. package/src/shade/playground/particle_system/README.md +92 -62
  529. package/src/shade/playground/particle_system/index.html +67 -21
  530. package/src/shade/playground/particle_system/main.js +247 -102
  531. package/src/shade/{renderer/particles → playground/particle_system}/particle_prototype.d.ts +21 -18
  532. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -0
  533. package/src/shade/{renderer/particles → playground/particle_system}/particle_prototype.js +197 -181
  534. package/src/shade/playground/particle_system/particle_scene.d.ts +136 -20
  535. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  536. package/src/shade/playground/particle_system/particle_scene.js +487 -670
  537. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
  538. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
  539. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +2 -1
  540. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  541. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +2 -1
  542. package/src/shade/playground/sponza_path_trace/main.js +1 -1
  543. package/src/shade/playground/volumetrics_froxel/main.js +917 -917
  544. package/src/shade/playground/volumetrics_froxel/measure.js +559 -559
  545. package/src/shade/renderer/Renderer.d.ts +44 -0
  546. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  547. package/src/shade/renderer/Renderer.js +169 -36
  548. package/src/shade/renderer/ShadeTransparencyMode.d.ts +13 -0
  549. package/src/shade/renderer/ShadeTransparencyMode.d.ts.map +1 -0
  550. package/src/shade/renderer/ShadeTransparencyMode.js +30 -0
  551. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  552. package/src/shade/renderer/atmosphere/GPUSky.js +4 -2
  553. package/src/shade/renderer/buffer/graph_read_buffer.d.ts.map +1 -1
  554. package/src/shade/renderer/buffer/graph_read_buffer.js +8 -1
  555. package/src/shade/renderer/buffer/table/GPUTypedTable.js +1 -1
  556. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +30 -0
  557. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  558. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +84 -0
  559. package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts +27 -0
  560. package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts.map +1 -0
  561. package/src/shade/renderer/buffer/table/gpu_database_words.d.ts +24 -0
  562. package/src/shade/renderer/buffer/table/gpu_database_words.d.ts.map +1 -0
  563. package/src/shade/renderer/buffer/table/gpu_database_words.js +92 -0
  564. package/src/shade/renderer/camera/Camera.d.ts +2 -2
  565. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  566. package/src/shade/renderer/camera/Camera.js +11 -5
  567. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  568. package/src/shade/renderer/camera/GPUCameraContext.js +2 -1
  569. package/src/shade/renderer/camera/OrbitalCameraController.d.ts +3 -3
  570. package/src/shade/renderer/camera/OrbitalCameraController.d.ts.map +1 -1
  571. package/src/shade/renderer/camera/OrbitalCameraController.js +31 -16
  572. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +2 -2
  573. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  574. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +4 -3
  575. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +10 -5
  576. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
  577. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +8 -4
  578. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  579. package/src/shade/renderer/extension/FrameContext.js +5 -0
  580. package/src/shade/renderer/extension/FrameRecord.d.ts +16 -0
  581. package/src/shade/renderer/extension/FrameRecord.d.ts.map +1 -1
  582. package/src/shade/renderer/extension/FrameRecord.js +31 -0
  583. package/src/shade/renderer/extension/GBufferTextures.d.ts +11 -0
  584. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  585. package/src/shade/renderer/extension/GBufferTextures.js +14 -0
  586. package/src/shade/renderer/geometry/attribute/gpu_vertex_buffer_layout_from_spec.js +1 -1
  587. package/src/shade/renderer/geometry/util/geometry_stripify.js +6 -6
  588. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +8 -8
  589. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
  590. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +14 -5
  591. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.d.ts.map +1 -1
  592. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +17 -9
  593. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts +2 -1
  594. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts.map +1 -1
  595. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.js +4 -1
  596. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts +2 -1
  597. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  598. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +11 -1
  599. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.d.ts +1 -1
  600. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.d.ts.map +1 -1
  601. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.js +4 -2
  602. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  603. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +5 -1
  604. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  605. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +35 -11
  606. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  607. package/src/shade/renderer/particles/DESIGN.md +271 -112
  608. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +251 -86
  609. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  610. package/src/shade/renderer/particles/GPUParticleSystem.js +822 -146
  611. package/src/shade/renderer/particles/ParticleConstants.d.ts +96 -3
  612. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  613. package/src/shade/renderer/particles/ParticleConstants.js +103 -4
  614. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +5 -4
  615. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  616. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +11 -15
  617. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts +2 -2
  618. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -1
  619. package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +20 -15
  620. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +7 -8
  621. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  622. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +7 -17
  623. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts +56 -0
  624. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts.map +1 -0
  625. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.js +68 -0
  626. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +39 -0
  627. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -0
  628. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +52 -0
  629. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +83 -0
  630. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -0
  631. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +166 -0
  632. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts +21 -5
  633. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts.map +1 -1
  634. package/src/shade/renderer/particles/data/chunk_particle_emitter.js +44 -85
  635. package/src/shade/renderer/particles/data/particle_header.d.ts +62 -0
  636. package/src/shade/renderer/particles/data/particle_header.d.ts.map +1 -0
  637. package/src/shade/renderer/particles/data/particle_header.js +103 -0
  638. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +179 -0
  639. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -0
  640. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -0
  641. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +120 -1
  642. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
  643. package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +90 -1
  644. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts +283 -0
  645. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -0
  646. package/src/shade/renderer/particles/graph/ParticleNodeGroup.js +419 -0
  647. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +44 -2
  648. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  649. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +476 -40
  650. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +188 -0
  651. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -0
  652. package/src/shade/renderer/particles/graph/ParticleValueType.js +287 -0
  653. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +16 -9
  654. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
  655. package/src/shade/renderer/particles/graph/compile_particle_graph.js +464 -205
  656. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts +11 -0
  657. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -0
  658. package/src/shade/renderer/particles/graph/flatten_particle_graph.js +213 -0
  659. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts +27 -0
  660. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -0
  661. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +75 -0
  662. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +83 -0
  663. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -0
  664. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +319 -0
  665. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts +22 -0
  666. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -0
  667. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +517 -0
  668. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.d.ts +70 -0
  669. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.d.ts.map +1 -0
  670. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.js +161 -0
  671. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts +8 -0
  672. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -0
  673. package/src/shade/renderer/particles/graph/groups/simplex_reference.js +159 -0
  674. package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts +88 -0
  675. package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts.map +1 -0
  676. package/src/shade/renderer/particles/graph/infer_particle_graph_types.js +234 -0
  677. package/src/shade/renderer/particles/graph/make_particle_group.d.ts +98 -0
  678. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -0
  679. package/src/shade/renderer/particles/graph/make_particle_group.js +427 -0
  680. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +11 -4
  681. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
  682. package/src/shade/renderer/particles/graph/particle_graph_authoring.js +121 -108
  683. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +38 -0
  684. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -0
  685. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +25 -0
  686. package/src/shade/renderer/particles/graph/particle_graph_distributions.d.ts +29 -0
  687. package/src/shade/renderer/particles/graph/particle_graph_distributions.d.ts.map +1 -0
  688. package/src/shade/renderer/particles/graph/particle_graph_distributions.js +170 -0
  689. package/src/shade/renderer/particles/graph/particle_graph_json.d.ts +87 -0
  690. package/src/shade/renderer/particles/graph/particle_graph_json.d.ts.map +1 -0
  691. package/src/shade/renderer/particles/graph/particle_graph_json.js +196 -0
  692. package/src/shade/renderer/particles/graph/particle_group_json.d.ts +86 -0
  693. package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -0
  694. package/src/shade/renderer/particles/graph/particle_group_json.js +182 -0
  695. package/src/shade/renderer/particles/graph/particle_group_library.d.ts +33 -0
  696. package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -0
  697. package/src/shade/renderer/particles/graph/particle_group_library.js +75 -0
  698. package/src/shade/renderer/particles/graph/particle_node_library.d.ts +37 -0
  699. package/src/shade/renderer/particles/graph/particle_node_library.d.ts.map +1 -0
  700. package/src/shade/renderer/particles/graph/particle_node_library.js +64 -0
  701. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +146 -0
  702. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -0
  703. package/src/shade/renderer/particles/graph/particle_node_parameters.js +234 -0
  704. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts +30 -0
  705. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -0
  706. package/src/shade/renderer/particles/graph/particle_node_presentation.js +286 -0
  707. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +66 -0
  708. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -0
  709. package/src/shade/renderer/particles/graph/validate_particle_graph.js +439 -0
  710. package/src/shade/renderer/particles/graph_particles.d.ts +143 -68
  711. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  712. package/src/shade/renderer/particles/graph_particles.js +424 -71
  713. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +107 -0
  714. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -0
  715. package/src/shade/renderer/particles/graph_particles_avboit.js +312 -0
  716. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +41 -8
  717. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  718. package/src/shade/renderer/particles/isa/InstructionStream.js +111 -33
  719. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts +13 -10
  720. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts.map +1 -1
  721. package/src/shade/renderer/particles/isa/ParticleAssembler.js +30 -26
  722. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +27 -15
  723. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
  724. package/src/shade/renderer/particles/isa/ParticleProgram.js +139 -34
  725. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +117 -9
  726. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  727. package/src/shade/renderer/particles/isa/ParticleVMISA.js +296 -37
  728. package/src/shade/renderer/particles/isa/particle_assembly.d.ts +149 -0
  729. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -0
  730. package/src/shade/renderer/particles/isa/particle_assembly.js +999 -0
  731. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +25 -3
  732. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  733. package/src/shade/renderer/particles/layout/ParticleLayout.js +33 -5
  734. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +160 -0
  735. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -0
  736. package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +478 -0
  737. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +291 -0
  738. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -0
  739. package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +647 -0
  740. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +95 -0
  741. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -0
  742. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +213 -0
  743. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +16 -0
  744. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -0
  745. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +223 -0
  746. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +121 -0
  747. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -0
  748. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +206 -0
  749. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +11 -0
  750. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -0
  751. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +197 -0
  752. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts +4 -0
  753. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -0
  754. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.js +51 -0
  755. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +4 -0
  756. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -0
  757. package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +561 -0
  758. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts +4 -0
  759. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -0
  760. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +72 -0
  761. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts +4 -0
  762. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -0
  763. package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +86 -0
  764. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts +4 -0
  765. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -0
  766. package/src/shade/renderer/particles/optimizer/pass_peephole.js +271 -0
  767. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts +4 -0
  768. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -0
  769. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +268 -0
  770. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts +4 -0
  771. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -0
  772. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +151 -0
  773. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +131 -0
  774. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -0
  775. package/src/shade/renderer/particles/particle_test_fixtures.js +203 -0
  776. package/src/shade/renderer/particles/runtime/Emitter.d.ts +219 -0
  777. package/src/shade/renderer/particles/runtime/Emitter.d.ts.map +1 -0
  778. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +128 -60
  779. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  780. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +286 -117
  781. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +264 -0
  782. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -0
  783. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +404 -0
  784. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +49 -15
  785. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +1 -1
  786. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +51 -18
  787. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
  788. package/src/shade/renderer/particles/runtime/ProgramArena.js +72 -32
  789. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +4 -4
  790. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  791. package/src/shade/renderer/particles/runtime/create_particle_effect.js +4 -4
  792. package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts +15 -0
  793. package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts.map +1 -0
  794. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts +17 -0
  795. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -0
  796. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +75 -0
  797. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +20 -0
  798. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -0
  799. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +94 -0
  800. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +15 -5
  801. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +1 -1
  802. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +1 -2
  803. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +1 -1
  804. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +1 -2
  805. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +11 -0
  806. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +1 -0
  807. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +13 -0
  808. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.d.ts +17 -0
  809. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.d.ts.map +1 -0
  810. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.js +22 -0
  811. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts +14 -0
  812. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts.map +1 -0
  813. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +23 -0
  814. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +1 -1
  815. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.d.ts +18 -0
  816. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.d.ts.map +1 -0
  817. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.js +24 -0
  818. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts +26 -0
  819. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts.map +1 -0
  820. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.js +59 -0
  821. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +14 -0
  822. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -0
  823. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +153 -0
  824. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts +3 -0
  825. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -0
  826. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +124 -0
  827. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts +19 -0
  828. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -0
  829. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +147 -0
  830. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +18 -8
  831. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  832. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +72 -37
  833. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts +5 -0
  834. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -0
  835. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +216 -0
  836. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  837. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +7 -3
  838. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  839. package/src/shade/renderer/particles/shaders/shader_particle_render.js +132 -197
  840. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  841. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +78 -24
  842. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.d.ts +26 -0
  843. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.d.ts.map +1 -0
  844. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.js +66 -0
  845. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +1 -1
  846. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  847. package/src/shade/renderer/particles/sort/shader_particle_sort.js +21 -36
  848. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +2 -2
  849. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  850. package/src/shade/renderer/particles/vm/ParticleVMReference.js +100 -90
  851. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  852. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +270 -138
  853. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts +9 -0
  854. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  855. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +26 -0
  856. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +1 -2
  857. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
  858. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +0 -3
  859. package/src/shade/renderer/postprocess/dof/gather/DepthOfFieldU.js +1 -1
  860. package/src/shade/renderer/postprocess/dof/raymarch/DepthOfField.js +1 -1
  861. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  862. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  863. package/src/shade/renderer/postprocess/nss/NSS.js +3 -2
  864. package/src/shade/renderer/postprocess/nss/generate_NSS_WEIGHTS_ACTUAL.js +3 -2
  865. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts +7 -2
  866. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  867. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +12 -1
  868. package/src/shade/renderer/rasterize/expand/shader_filter_triangle_by_material_side.js +1 -1
  869. package/src/shade/renderer/rasterize/forward/FORWARD_VERTEX_SHADER_STRUCT.d.ts +3 -0
  870. package/src/shade/renderer/rasterize/forward/FORWARD_VERTEX_SHADER_STRUCT.d.ts.map +1 -0
  871. package/src/shade/renderer/rasterize/{native/oit → forward}/FORWARD_VERTEX_SHADER_STRUCT.js +4 -4
  872. package/src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.d.ts +3 -0
  873. package/src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.d.ts.map +1 -0
  874. package/src/shade/renderer/rasterize/forward/SHADING_SCENE_RESOURCE_GROUP.js +17 -0
  875. package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_brick4.d.ts +1 -1
  876. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +1 -0
  877. package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_brick4.js +16 -16
  878. package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_ibl.d.ts +1 -1
  879. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +1 -0
  880. package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_forward_shade_standard_fragment_ibl.js +17 -17
  881. package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_material_side_should_draw.d.ts +1 -1
  882. package/src/shade/renderer/rasterize/forward/chunk_material_side_should_draw.d.ts.map +1 -0
  883. package/src/shade/renderer/rasterize/{native/oit → forward}/chunk_material_side_should_draw.js +2 -2
  884. package/src/shade/renderer/rasterize/forward/vertex_shader_chunk.d.ts +3 -0
  885. package/src/shade/renderer/rasterize/forward/vertex_shader_chunk.d.ts.map +1 -0
  886. package/src/shade/renderer/rasterize/{native/oit → forward}/vertex_shader_chunk.js +4 -4
  887. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +27 -0
  888. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -0
  889. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +27 -0
  890. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +87 -0
  891. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -0
  892. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +61 -0
  893. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +107 -0
  894. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -0
  895. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +120 -0
  896. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +642 -0
  897. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +534 -0
  898. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_WARP_STRUCT.d.ts +15 -0
  899. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_WARP_STRUCT.d.ts.map +1 -0
  900. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_WARP_STRUCT.js +33 -0
  901. package/src/shade/renderer/rasterize/native/avboit/avboit_build_depth_curve.d.ts +20 -0
  902. package/src/shade/renderer/rasterize/native/avboit/avboit_build_depth_curve.d.ts.map +1 -0
  903. package/src/shade/renderer/rasterize/native/avboit/avboit_build_depth_curve.js +38 -0
  904. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts +45 -0
  905. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -0
  906. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +139 -0
  907. package/src/shade/renderer/rasterize/native/avboit/avboit_spec_support.d.ts +37 -0
  908. package/src/shade/renderer/rasterize/native/avboit/avboit_spec_support.d.ts.map +1 -0
  909. package/src/shade/renderer/rasterize/native/avboit/avboit_spec_support.js +73 -0
  910. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts +9 -0
  911. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts.map +1 -0
  912. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.js +17 -0
  913. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_dilate_word.d.ts +11 -0
  914. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_dilate_word.d.ts.map +1 -0
  915. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_dilate_word.js +18 -0
  916. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_counts.d.ts +9 -0
  917. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_counts.d.ts.map +1 -0
  918. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_counts.js +17 -0
  919. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_transmittance.d.ts +9 -0
  920. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_transmittance.d.ts.map +1 -0
  921. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_extinction_to_transmittance.js +17 -0
  922. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_fold_pairs.d.ts +15 -0
  923. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_fold_pairs.d.ts.map +1 -0
  924. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_fold_pairs.js +25 -0
  925. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +17 -0
  926. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -0
  927. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +35 -0
  928. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_range.d.ts +11 -0
  929. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_range.d.ts.map +1 -0
  930. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_range.js +21 -0
  931. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_word_mask.d.ts +9 -0
  932. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_word_mask.d.ts.map +1 -0
  933. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_occupancy_word_mask.js +26 -0
  934. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_overflows.d.ts +11 -0
  935. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_overflows.d.ts.map +1 -0
  936. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_overflows.js +22 -0
  937. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_pack_counts.d.ts +10 -0
  938. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_pack_counts.d.ts.map +1 -0
  939. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_pack_counts.js +21 -0
  940. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +10 -0
  941. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -0
  942. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +32 -0
  943. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts +18 -0
  944. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts.map +1 -0
  945. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js +58 -0
  946. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmission_tint.d.ts +20 -0
  947. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmission_tint.d.ts.map +1 -0
  948. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmission_tint.js +27 -0
  949. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmittance_to_extinction.d.ts +10 -0
  950. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmittance_to_extinction.d.ts.map +1 -0
  951. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_transmittance_to_extinction.js +18 -0
  952. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unpack_counts.d.ts +9 -0
  953. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unpack_counts.d.ts.map +1 -0
  954. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unpack_counts.js +21 -0
  955. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_physical.d.ts +9 -0
  956. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_physical.d.ts.map +1 -0
  957. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_physical.js +23 -0
  958. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.d.ts +13 -0
  959. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.d.ts.map +1 -0
  960. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_view_depth_to_virtual.js +27 -0
  961. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp.d.ts +22 -0
  962. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp.d.ts.map +1 -0
  963. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp.js +38 -0
  964. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +141 -0
  965. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -0
  966. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +994 -0
  967. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts +8 -0
  968. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -0
  969. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +135 -0
  970. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts +3 -0
  971. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +1 -0
  972. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.js +101 -0
  973. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts +3 -0
  974. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +1 -0
  975. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +96 -0
  976. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_integrate.d.ts +3 -0
  977. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_integrate.d.ts.map +1 -0
  978. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_integrate.js +83 -0
  979. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_occupancy.d.ts +9 -0
  980. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_occupancy.d.ts.map +1 -0
  981. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_occupancy.js +119 -0
  982. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts +3 -0
  983. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -0
  984. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +87 -0
  985. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +15 -0
  986. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -0
  987. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +202 -0
  988. package/src/shade/renderer/rasterize/native/material_draw_indirect.d.ts +22 -0
  989. package/src/shade/renderer/rasterize/native/material_draw_indirect.d.ts.map +1 -0
  990. package/src/shade/renderer/rasterize/native/material_draw_indirect.js +69 -0
  991. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
  992. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +665 -722
  993. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +3 -3
  994. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +4 -4
  995. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +4 -4
  996. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +7 -2
  997. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  998. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +16 -2
  999. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +3 -3
  1000. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
  1001. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +29 -23
  1002. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts +2 -2
  1003. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts.map +1 -1
  1004. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js +3 -3
  1005. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +4 -4
  1006. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
  1007. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +2 -2
  1008. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.d.ts +2 -2
  1009. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.d.ts.map +1 -1
  1010. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.js +2 -2
  1011. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.d.ts +7 -7
  1012. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.d.ts.map +1 -1
  1013. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.js +79 -71
  1014. package/src/shade/renderer/shader/chunk/math/chunk_lower_bound_branchless.d.ts.map +1 -1
  1015. package/src/shade/renderer/shader/chunk/math/chunk_lower_bound_branchless.js +3 -1
  1016. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.d.ts +13 -3
  1017. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.d.ts.map +1 -1
  1018. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.js +15 -5
  1019. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.d.ts +8 -0
  1020. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.d.ts.map +1 -1
  1021. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.js +15 -5
  1022. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.d.ts +7 -0
  1023. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.d.ts.map +1 -1
  1024. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.js +17 -7
  1025. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.d.ts +17 -0
  1026. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.d.ts.map +1 -0
  1027. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.js +26 -0
  1028. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.d.ts +15 -0
  1029. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.d.ts.map +1 -0
  1030. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.js +26 -0
  1031. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  1032. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +8 -2
  1033. package/src/shade/renderer/shadow/map/PointLightShadowmap.d.ts.map +1 -1
  1034. package/src/shade/renderer/shadow/map/PointLightShadowmap.js +7 -2
  1035. package/src/shade/renderer/shadow/map/SpotLightShadowmap.d.ts.map +1 -1
  1036. package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +3 -15
  1037. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.d.ts.map +1 -1
  1038. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +10 -4
  1039. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
  1040. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +7 -2
  1041. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +2 -2
  1042. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +3 -3
  1043. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  1044. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +3 -3
  1045. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  1046. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -5
  1047. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  1048. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +35 -4
  1049. package/src/view/minimap/Minimap.d.ts.map +1 -1
  1050. package/src/view/minimap/Minimap.js +227 -225
  1051. package/src/view/minimap/MinimapCanvasView.js +3 -3
  1052. package/src/view/minimap/MinimapMarker.d.ts +45 -0
  1053. package/src/view/minimap/MinimapMarker.d.ts.map +1 -0
  1054. package/src/view/minimap/MinimapMarker.js +80 -0
  1055. package/src/view/minimap/MinimapMarkerCollection.d.ts +6 -5
  1056. package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
  1057. package/src/view/minimap/MinimapMarkerCollection.js +6 -6
  1058. package/src/view/minimap/MinimapMarkerSerializationAdapter.d.ts +19 -0
  1059. package/src/view/minimap/MinimapMarkerSerializationAdapter.d.ts.map +1 -0
  1060. package/src/view/minimap/MinimapMarkerSerializationAdapter.js +42 -0
  1061. package/src/view/minimap/dom/MinimapCameraView.d.ts +1 -1
  1062. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  1063. package/src/view/minimap/dom/MinimapCameraView.js +23 -4
  1064. package/src/view/minimap/dom/MinimapMarkerView.js +3 -3
  1065. package/src/view/minimap/gl/MarkerGL.js +3 -3
  1066. package/src/view/util/DomLayoutFrame.d.ts +53 -0
  1067. package/src/view/util/DomLayoutFrame.d.ts.map +1 -0
  1068. package/src/view/util/DomLayoutFrame.js +122 -0
  1069. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.js +0 -19
  1070. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.js +0 -241
  1071. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.js +0 -40
  1072. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.js +0 -28
  1073. package/src/engine/ecs/util/hideEntityGracefully.js +0 -196
  1074. package/src/shade/renderer/particles/cull/chunk_particle_cull.js +0 -38
  1075. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js +0 -214
  1076. package/src/shade/renderer/particles/particle_prototype.d.ts.map +0 -1
  1077. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.js +0 -86
  1078. package/src/shade/renderer/particles/runtime/spawn_request_encoding.js +0 -52
  1079. package/src/shade/renderer/particles/shaders/chunk_particle_context.js +0 -58
  1080. package/src/shade/renderer/rasterize/native/oit/FORWARD_VERTEX_SHADER_STRUCT.d.ts +0 -3
  1081. package/src/shade/renderer/rasterize/native/oit/FORWARD_VERTEX_SHADER_STRUCT.d.ts.map +0 -1
  1082. package/src/shade/renderer/rasterize/native/oit/SHADING_SCENE_RESOURCE_GROUP.d.ts +0 -3
  1083. package/src/shade/renderer/rasterize/native/oit/SHADING_SCENE_RESOURCE_GROUP.d.ts.map +0 -1
  1084. package/src/shade/renderer/rasterize/native/oit/SHADING_SCENE_RESOURCE_GROUP.js +0 -17
  1085. package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_brick4.d.ts.map +0 -1
  1086. package/src/shade/renderer/rasterize/native/oit/chunk_forward_shade_standard_fragment_ibl.d.ts.map +0 -1
  1087. package/src/shade/renderer/rasterize/native/oit/chunk_material_side_should_draw.d.ts.map +0 -1
  1088. package/src/shade/renderer/rasterize/native/oit/vertex_shader_chunk.d.ts +0 -3
  1089. package/src/shade/renderer/rasterize/native/oit/vertex_shader_chunk.d.ts.map +0 -1
@@ -18,28 +18,32 @@ import { t64_look_rotation } from "./t64_look_rotation.js";
18
18
  export const TRANSFORM64_MATRIX_OFFSET = 0;
19
19
 
20
20
  /**
21
- * Index of the first element of the translation (x, y, z) inside a {@link Transform64}
21
+ * Index of the first element of the translation (x, y, z) inside a {@link Transform64}.
22
+ *
23
+ * It is 12, which is inside the matrix: for a column-major affine matrix elements 12..14 are the
24
+ * translation column, and neither rotation nor scale ever touch it, so the transform keeps a single
25
+ * copy and the translation is that column. See {@link Transform64#translation} for what that implies.
22
26
  * @type {number}
23
27
  */
24
- export const TRANSFORM64_TRANSLATION_OFFSET = 16;
28
+ export const TRANSFORM64_TRANSLATION_OFFSET = 12;
25
29
 
26
30
  /**
27
31
  * Index of the first element of the rotation quaternion (x, y, z, w) inside a {@link Transform64}
28
32
  * @type {number}
29
33
  */
30
- export const TRANSFORM64_ROTATION_OFFSET = 19;
34
+ export const TRANSFORM64_ROTATION_OFFSET = 16;
31
35
 
32
36
  /**
33
37
  * Index of the first element of the scale (x, y, z) inside a {@link Transform64}
34
38
  * @type {number}
35
39
  */
36
- export const TRANSFORM64_SCALE_OFFSET = 23;
40
+ export const TRANSFORM64_SCALE_OFFSET = 20;
37
41
 
38
42
  /**
39
43
  * Number of elements in a {@link Transform64}
40
44
  * @type {number}
41
45
  */
42
- export const TRANSFORM64_SIZE = 26;
46
+ export const TRANSFORM64_SIZE = 23;
43
47
 
44
48
  /**
45
49
  * World up, the direction orientation is resolved against when nothing else says otherwise.
@@ -53,7 +57,7 @@ const WORLD_UP = new Float64Array([0, 1, 0]);
53
57
  * packed into a single `Float64Array`.
54
58
  *
55
59
  * This is the passive counterpart of {@link Transform}. There are no signals, no flags and no change
56
- * detection: setting the translation, rotation or scale does **not** refresh {@link matrix}, you call
60
+ * detection: setting the rotation or scale does **not** refresh {@link matrix}, you call
57
61
  * {@link updateMatrix} yourself once you are done mutating. What you get for that is one allocation of one
58
62
  * contiguous buffer per transform, plain array stores instead of setter dispatch, and double precision
59
63
  * throughout.
@@ -62,18 +66,29 @@ const WORLD_UP = new Float64Array([0, 1, 0]);
62
66
  * write the buffer without going through the accessors:
63
67
  * ```
64
68
  * [ 0..15] matrix, column-major
65
- * [16..18] translation x, y, z
66
- * [19..22] rotation x, y, z, w
67
- * [23..25] scale x, y, z
69
+ * [12..14] translation x, y, z (aliased into the matrix)
70
+ * [16..19] rotation x, y, z, w
71
+ * [20..22] scale x, y, z
68
72
  * ```
69
73
  *
74
+ * The translation is not stored twice: it *is* the matrix's translation column, elements 12..14. Which
75
+ * gives the staleness rule its exact shape - {@link matrix} is correct as long as the rotation and scale
76
+ * have not changed since the last {@link updateMatrix}. A translation-only change needs no
77
+ * {@link updateMatrix}, it lands in the matrix as it is written.
78
+ *
79
+ * NOTE: the flip side of that is a matrix that can describe a state that never existed. Change the
80
+ * translation *and* the rotation without an {@link updateMatrix} in between, and the matrix now carries
81
+ * the new translation under the old orientation, rather than lagging wholesale as it did when the
82
+ * translation had its own copy. Nothing reads such a matrix on your behalf, but if you hand it out
83
+ * between the two writes, that is what the receiver sees.
84
+ *
70
85
  * @example
71
86
  * const t = new Transform64();
72
87
  *
73
88
  * t.setTranslation(1, 2, 3);
74
89
  * t.setScale(2, 2, 2);
75
90
  *
76
- * // nothing has touched the matrix up to this point
91
+ * // the translation is already in the matrix, the scale is not
77
92
  * t.updateMatrix();
78
93
  *
79
94
  * @example
@@ -105,7 +120,14 @@ export class Transform64 extends Float64Array {
105
120
  * Affine transform matrix, column-major.
106
121
  *
107
122
  * Unlike {@link Transform}, this is not maintained for you - it holds whatever {@link updateMatrix},
108
- * {@link fromMatrix} or {@link multiply} last wrote, and goes stale the moment you set a component.
123
+ * {@link fromMatrix} or {@link multiply} last wrote, and goes stale the moment you set the rotation
124
+ * or the scale.
125
+ *
126
+ * The translation column, elements 12..14, is shared with {@link translation} - the two are views over
127
+ * the same three numbers. Writing `matrix[12]` moves the transform, and setting the translation edits
128
+ * the matrix, so a translation-only change never leaves the matrix stale. Note the trap in the other
129
+ * direction: after poking the matrix directly, {@link translation} tracks it, while {@link rotation}
130
+ * and {@link scale} still lag until {@link updateComponents}.
109
131
  *
110
132
  * NOTE: the returned array is a live view over the transform's own buffer, but a freshly allocated
111
133
  * view on every access. Hold on to it rather than reading this property in a loop, or index the
@@ -118,6 +140,11 @@ export class Transform64 extends Float64Array {
118
140
 
119
141
  /**
120
142
  * Position in 3D space.
143
+ *
144
+ * This is the translation column of {@link matrix}, elements 12..14, not a separate copy: writing
145
+ * `translation[0]` edits the matrix, and writing `matrix[12]` shows up here. See {@link matrix} for
146
+ * the trap that comes with that.
147
+ *
121
148
  * NOTE: live view over the transform's own buffer, freshly allocated on every access
122
149
  * @returns {Float64Array}
123
150
  */
@@ -126,7 +153,8 @@ export class Transform64 extends Float64Array {
126
153
  }
127
154
 
128
155
  /**
129
- * Reads 3 elements, does not update {@link matrix}
156
+ * Reads 3 elements. Lands in {@link matrix} directly, since the translation is a column of it - no
157
+ * {@link updateMatrix} is needed for a translation-only change.
130
158
  * @param {number[]|Float32Array|Float64Array} v
131
159
  */
132
160
  set translation(v) {
@@ -146,7 +174,8 @@ export class Transform64 extends Float64Array {
146
174
  }
147
175
 
148
176
  /**
149
- * Does not update {@link matrix}
177
+ * Lands in {@link matrix} directly, since the translation is a column of it - no {@link updateMatrix}
178
+ * is needed for a translation-only change.
150
179
  * @param {number} x
151
180
  * @param {number} y
152
181
  * @param {number} z
@@ -482,7 +511,11 @@ export class Transform64 extends Float64Array {
482
511
 
483
512
  /**
484
513
  * Write {@link matrix} from the current {@link translation}, {@link rotation} and {@link scale}.
485
- * Nothing calls this for you, and until you do, the matrix is whatever it was before.
514
+ * Nothing calls this for you, and until you do, the rotation and scale part of the matrix is whatever
515
+ * it was before. The translation column needs no help - it is the translation, see {@link matrix}.
516
+ *
517
+ * The translation is passed in as three scalars, read before the first store, so writing it back
518
+ * over its own column is safe.
486
519
  */
487
520
  updateMatrix() {
488
521
  m4_from_rotation_translation_scale_scalar(
@@ -508,6 +541,9 @@ export class Transform64 extends Float64Array {
508
541
  *
509
542
  * A matrix carrying shear cannot be described by a translation, a rotation and a scale, so shear is
510
543
  * dropped from the components. It survives in {@link matrix} until the next {@link updateMatrix}.
544
+ *
545
+ * The matrix itself is left bit-identical: the decompose reads every element before its first store,
546
+ * and the translation it writes is the matrix's own column copied onto itself.
511
547
  */
512
548
  updateComponents() {
513
549
  m4_decompose_array(
@@ -530,6 +566,8 @@ export class Transform64 extends Float64Array {
530
566
 
531
567
  array_copy(m4, 0, this, TRANSFORM64_MATRIX_OFFSET, 16);
532
568
 
569
+ // the copy above already put the translation where it lives; the decompose writes those three
570
+ // elements onto themselves, which is harmless and keeps this a straight copy-then-decompose
533
571
  this.updateComponents();
534
572
 
535
573
  return this;
@@ -591,7 +629,8 @@ export class Transform64 extends Float64Array {
591
629
 
592
630
  /**
593
631
  * Whether the translation is exactly [0,0,0], the rotation exactly [0,0,0,1] and the scale exactly
594
- * [1,1,1]. Says nothing about {@link matrix}, which only agrees after an {@link updateMatrix}.
632
+ * [1,1,1]. Says nothing about the rotation and scale part of {@link matrix}, which only agrees after
633
+ * an {@link updateMatrix}; the translation column is the translation, so that much is covered.
595
634
  * @returns {boolean}
596
635
  */
597
636
  isIdentity() {
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Binary serialization for {@link Transform64}.
3
+ *
4
+ * Writes the same bytes in the same order as {@link TransformSerializationAdapter}: translation as
5
+ * three `Float64`s, rotation packed into a single `Uint32`, scale equality-encoded. A save written by
6
+ * either adapter can be read by the other, which is what lets the engine move onto {@link Transform64}
7
+ * without a save-format break.
8
+ *
9
+ * The matrix is not written. It is derived, and {@link Transform64#updateMatrix} rebuilds it on load
10
+ * from the three components that were - storing it would cost 128 bytes per transform to persist a
11
+ * value that is a pure function of the rest.
12
+ *
13
+ * The decode helpers take an array and an offset, and a `Transform64` *is* that array, so rotation and
14
+ * scale are decoded straight into the transform at their own offsets with no intermediate.
15
+ *
16
+ * @author Alex Goldring
17
+ * @copyright Company Named Limited (c) 2026
18
+ */
19
+ export class Transform64SerializationAdapter extends BinaryClassSerializationAdapter<any> {
20
+ constructor();
21
+ klass: typeof Transform64;
22
+ /**
23
+ *
24
+ * @param {BinaryBuffer} buffer
25
+ * @param {Transform64} value
26
+ */
27
+ serialize(buffer: BinaryBuffer, value: Transform64): void;
28
+ /**
29
+ *
30
+ * @param {BinaryBuffer} buffer
31
+ * @param {Transform64} value
32
+ */
33
+ deserialize(buffer: BinaryBuffer, value: Transform64): void;
34
+ }
35
+ import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
36
+ import { Transform64 } from "./Transform64.js";
37
+ //# sourceMappingURL=Transform64SerializationAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transform64SerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform64SerializationAdapter.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;GAiBG;AACH;;IAEI,0BAAoB;IAGpB;;;;OAIG;IACH,uCAFW,WAAW,QAiBrB;IAED;;;;OAIG;IACH,yCAFW,WAAW,QAkBrB;CACJ;gDAtE+C,sDAAsD;4BACnB,kBAAkB"}
@@ -0,0 +1,75 @@
1
+ import { quat3_decode_from_uint32 } from "../../../core/geom/3d/quaternion/quat3_decode_from_uint32.js";
2
+ import { quat3_encode_to_uint32 } from "../../../core/geom/3d/quaternion/quat3_encode_to_uint32.js";
3
+ import { v3_binary_equality_decode } from "../../../core/geom/vec3/serialization/v3_binary_equality_decode.js";
4
+ import { v3_binary_equality_encode } from "../../../core/geom/vec3/serialization/v3_binary_equality_encode.js";
5
+ import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
6
+ import { Transform64, TRANSFORM64_ROTATION_OFFSET, TRANSFORM64_SCALE_OFFSET } from "./Transform64.js";
7
+
8
+ /**
9
+ * Binary serialization for {@link Transform64}.
10
+ *
11
+ * Writes the same bytes in the same order as {@link TransformSerializationAdapter}: translation as
12
+ * three `Float64`s, rotation packed into a single `Uint32`, scale equality-encoded. A save written by
13
+ * either adapter can be read by the other, which is what lets the engine move onto {@link Transform64}
14
+ * without a save-format break.
15
+ *
16
+ * The matrix is not written. It is derived, and {@link Transform64#updateMatrix} rebuilds it on load
17
+ * from the three components that were - storing it would cost 128 bytes per transform to persist a
18
+ * value that is a pure function of the rest.
19
+ *
20
+ * The decode helpers take an array and an offset, and a `Transform64` *is* that array, so rotation and
21
+ * scale are decoded straight into the transform at their own offsets with no intermediate.
22
+ *
23
+ * @author Alex Goldring
24
+ * @copyright Company Named Limited (c) 2026
25
+ */
26
+ export class Transform64SerializationAdapter extends BinaryClassSerializationAdapter {
27
+
28
+ klass = Transform64;
29
+ version = 1;
30
+
31
+ /**
32
+ *
33
+ * @param {BinaryBuffer} buffer
34
+ * @param {Transform64} value
35
+ */
36
+ serialize(buffer, value) {
37
+ buffer.writeFloat64(value.translation_x);
38
+ buffer.writeFloat64(value.translation_y);
39
+ buffer.writeFloat64(value.translation_z);
40
+
41
+ const encoded_rotation = quat3_encode_to_uint32(
42
+ value.rotation_x,
43
+ value.rotation_y,
44
+ value.rotation_z,
45
+ value.rotation_w
46
+ );
47
+
48
+ buffer.writeUint32(encoded_rotation);
49
+
50
+ v3_binary_equality_encode(buffer, value.scale_x, value.scale_y, value.scale_z);
51
+ }
52
+
53
+ /**
54
+ *
55
+ * @param {BinaryBuffer} buffer
56
+ * @param {Transform64} value
57
+ */
58
+ deserialize(buffer, value) {
59
+ const translation_x = buffer.readFloat64();
60
+ const translation_y = buffer.readFloat64();
61
+ const translation_z = buffer.readFloat64();
62
+
63
+ const encoded_rotation = buffer.readUint32();
64
+
65
+ v3_binary_equality_decode(buffer, value, TRANSFORM64_SCALE_OFFSET);
66
+
67
+ quat3_decode_from_uint32(value, TRANSFORM64_ROTATION_OFFSET, encoded_rotation);
68
+
69
+ value.setTranslation(translation_x, translation_y, translation_z);
70
+
71
+ // rotation and scale were both written, so the matrix owes an update. The translation does
72
+ // not, being the matrix's own column, but updateMatrix writes it back regardless.
73
+ value.updateMatrix();
74
+ }
75
+ }
@@ -0,0 +1,4 @@
1
+ /** @param {Transform64} t */
2
+ export function probe(t: Transform64): any[];
3
+ import { Transform64 } from "./Transform64.js";
4
+ //# sourceMappingURL=__probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__probe.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/__probe.js"],"names":[],"mappings":"AAEA,6BAA6B;AAC7B,yBADY,WAAW,SAMtB;4BAP2B,kBAAkB"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Counts how many `Float64Array` views a piece of code causes {@link Transform64} to allocate.
3
+ *
4
+ * `t.translation`, `t.rotation` and `t.scale` each build a fresh view over the transform's buffer on
5
+ * every read. That is the right behaviour for a type that holds no state of its own - caching a view
6
+ * would mean a field, and being free of fields is the whole point - but it makes those three
7
+ * accessors the wrong way to read a transform in a loop that runs per entity per frame. The scalar
8
+ * accessors (`translation_x`, `rotation_w`, ...) and the exported offset constants read the same
9
+ * numbers without allocating.
10
+ *
11
+ * The counting is installed on the prototype for the duration of the call and removed afterwards, so
12
+ * {@link Transform64} itself carries no instrumentation and ships exactly as written. Nothing here
13
+ * runs unless a test calls it.
14
+ *
15
+ * @example
16
+ * const allocations = t64_count_view_allocations(() => {
17
+ * for (const t of transforms) {
18
+ * total += t.translation_x; // no view
19
+ * }
20
+ * });
21
+ *
22
+ * expect(allocations).toBe(0);
23
+ *
24
+ * @param {function(): void} fn code to measure
25
+ * @returns {number} number of views allocated while `fn` ran
26
+ *
27
+ * @author Alex Goldring
28
+ * @copyright Company Named Limited (c) 2026
29
+ */
30
+ export function t64_count_view_allocations(fn: () => void): number;
31
+ //# sourceMappingURL=t64_allocation_probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t64_allocation_probe.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_allocation_probe.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qDANuB,IAAI,GACd,MAAM,CA6ClB"}
@@ -0,0 +1,78 @@
1
+ import { Transform64 } from "./Transform64.js";
2
+
3
+ /**
4
+ * The three accessors that hand out a view over a transform's buffer.
5
+ * @type {string[]}
6
+ */
7
+ const VIEW_ACCESSORS = ["translation", "rotation", "scale"];
8
+
9
+ /**
10
+ * Counts how many `Float64Array` views a piece of code causes {@link Transform64} to allocate.
11
+ *
12
+ * `t.translation`, `t.rotation` and `t.scale` each build a fresh view over the transform's buffer on
13
+ * every read. That is the right behaviour for a type that holds no state of its own - caching a view
14
+ * would mean a field, and being free of fields is the whole point - but it makes those three
15
+ * accessors the wrong way to read a transform in a loop that runs per entity per frame. The scalar
16
+ * accessors (`translation_x`, `rotation_w`, ...) and the exported offset constants read the same
17
+ * numbers without allocating.
18
+ *
19
+ * The counting is installed on the prototype for the duration of the call and removed afterwards, so
20
+ * {@link Transform64} itself carries no instrumentation and ships exactly as written. Nothing here
21
+ * runs unless a test calls it.
22
+ *
23
+ * @example
24
+ * const allocations = t64_count_view_allocations(() => {
25
+ * for (const t of transforms) {
26
+ * total += t.translation_x; // no view
27
+ * }
28
+ * });
29
+ *
30
+ * expect(allocations).toBe(0);
31
+ *
32
+ * @param {function(): void} fn code to measure
33
+ * @returns {number} number of views allocated while `fn` ran
34
+ *
35
+ * @author Alex Goldring
36
+ * @copyright Company Named Limited (c) 2026
37
+ */
38
+ export function t64_count_view_allocations(fn) {
39
+ const prototype = Transform64.prototype;
40
+
41
+ /**
42
+ * @type {Map<string, PropertyDescriptor>}
43
+ */
44
+ const originals = new Map();
45
+
46
+ let count = 0;
47
+
48
+ for (const name of VIEW_ACCESSORS) {
49
+ const descriptor = Object.getOwnPropertyDescriptor(prototype, name);
50
+
51
+ if (descriptor === undefined || typeof descriptor.get !== "function") {
52
+ throw new Error(`Transform64.prototype.${name} is not an accessor; the probe is out of date`);
53
+ }
54
+
55
+ originals.set(name, descriptor);
56
+
57
+ const original_get = descriptor.get;
58
+
59
+ Object.defineProperty(prototype, name, {
60
+ ...descriptor,
61
+ get() {
62
+ count++;
63
+
64
+ return original_get.call(this);
65
+ }
66
+ });
67
+ }
68
+
69
+ try {
70
+ fn();
71
+ } finally {
72
+ for (const [name, descriptor] of originals) {
73
+ Object.defineProperty(prototype, name, descriptor);
74
+ }
75
+ }
76
+
77
+ return count;
78
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Tell the dataset that an entity's {@link Transform64} was mutated in place.
3
+ *
4
+ * A {@link Transform64} carries no signals - that is the point of it - so a write is invisible until
5
+ * someone says so, and saying so is the writer's job. Every consumer that used to wake on
6
+ * `position.onChanged` wakes on {@link EventType.ComponentChanged} instead: the render placement,
7
+ * the parent/child sync, fog-of-war, the grid mirror, the spatial audio refit.
8
+ *
9
+ * The announcement is deliberately coarse - it names the component, not what changed inside it - so
10
+ * a consumer that only tracks translation still wakes on a scale write. That is redundant work, not
11
+ * wrong work, and it is what lets one call stand in for the three signals it replaces.
12
+ *
13
+ * Call it once per group of writes, after the last of them and after any
14
+ * {@link Transform64#updateMatrix} the group owes:
15
+ *
16
+ * ```
17
+ * transform.setRotation(x, y, z, w);
18
+ * transform.updateMatrix();
19
+ *
20
+ * t64_announce_change(ecd, entity, transform);
21
+ * ```
22
+ *
23
+ * @param {EntityComponentDataset} ecd
24
+ * @param {number} entity
25
+ * @param {Transform64} transform the instance that was written, handed to listeners as `instance`
26
+ * @returns {void}
27
+ *
28
+ * @author Alex Goldring
29
+ * @copyright Company Named Limited (c) 2026
30
+ */
31
+ export function t64_announce_change(ecd: EntityComponentDataset, entity: number, transform: Transform64): void;
32
+ import { Transform64 } from "./Transform64.js";
33
+ //# sourceMappingURL=t64_announce_change.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t64_announce_change.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_announce_change.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,yEAPW,MAAM,aACN,WAAW,GACT,IAAI,CAUhB;4BArC2B,kBAAkB"}
@@ -0,0 +1,39 @@
1
+ import { EventType } from "../EventType.js";
2
+ import { Transform64 } from "./Transform64.js";
3
+
4
+ /**
5
+ * Tell the dataset that an entity's {@link Transform64} was mutated in place.
6
+ *
7
+ * A {@link Transform64} carries no signals - that is the point of it - so a write is invisible until
8
+ * someone says so, and saying so is the writer's job. Every consumer that used to wake on
9
+ * `position.onChanged` wakes on {@link EventType.ComponentChanged} instead: the render placement,
10
+ * the parent/child sync, fog-of-war, the grid mirror, the spatial audio refit.
11
+ *
12
+ * The announcement is deliberately coarse - it names the component, not what changed inside it - so
13
+ * a consumer that only tracks translation still wakes on a scale write. That is redundant work, not
14
+ * wrong work, and it is what lets one call stand in for the three signals it replaces.
15
+ *
16
+ * Call it once per group of writes, after the last of them and after any
17
+ * {@link Transform64#updateMatrix} the group owes:
18
+ *
19
+ * ```
20
+ * transform.setRotation(x, y, z, w);
21
+ * transform.updateMatrix();
22
+ *
23
+ * t64_announce_change(ecd, entity, transform);
24
+ * ```
25
+ *
26
+ * @param {EntityComponentDataset} ecd
27
+ * @param {number} entity
28
+ * @param {Transform64} transform the instance that was written, handed to listeners as `instance`
29
+ * @returns {void}
30
+ *
31
+ * @author Alex Goldring
32
+ * @copyright Company Named Limited (c) 2026
33
+ */
34
+ export function t64_announce_change(ecd, entity, transform) {
35
+ ecd.sendEvent(entity, EventType.ComponentChanged, {
36
+ klass: Transform64,
37
+ instance: transform
38
+ });
39
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Whether two {@link Transform64}s hold the same translation, rotation and scale.
3
+ *
4
+ * The counterpart of {@link t64_equals_transform} for two transforms of the same type, and it exists
5
+ * for the same reason: a system that places on a poll rather than on a signal has to be able to tell
6
+ * that there is nothing to place. The cost of not asking is not the copy - it is that
7
+ * `Node3D.updateMatrices` bumps a version whether or not anything moved, and downstream a bumped
8
+ * version means a scene-database row uploaded and, for a mesh, a whole-tree rebuild of the top-level
9
+ * acceleration structure.
10
+ *
11
+ * **Not {@link Transform64#equals}.** That one compares all 23 elements, the matrix included, and so
12
+ * reports two transforms as different when only one of them has a stale matrix - which is a state
13
+ * this type invites, since a rotation or scale write does not refresh the matrix until
14
+ * {@link Transform64#updateMatrix} is called. Using it as a placement guard would answer "have the
15
+ * buffers diverged" when the question is "has anything moved", and would let the rebuild it is meant
16
+ * to prevent back in.
17
+ *
18
+ * Exact equality rather than a tolerance, for the same reason {@link t64_equals_transform} uses it:
19
+ * the question is whether a write would change anything, and a write of a value that differs by any
20
+ * amount does.
21
+ *
22
+ * @param {Transform64} a
23
+ * @param {Transform64} b
24
+ * @returns {boolean}
25
+ *
26
+ * @author Alex Goldring
27
+ * @copyright Company Named Limited (c) 2026
28
+ */
29
+ export function t64_equals_components(a: Transform64, b: Transform64): boolean;
30
+ //# sourceMappingURL=t64_equals_components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t64_equals_components.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_equals_components.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,uEALa,OAAO,CA4BnB"}
@@ -0,0 +1,59 @@
1
+ import { assert } from "../../../core/assert.js";
2
+ import {
3
+ TRANSFORM64_ROTATION_OFFSET,
4
+ TRANSFORM64_SCALE_OFFSET,
5
+ TRANSFORM64_TRANSLATION_OFFSET
6
+ } from "./Transform64.js";
7
+
8
+ /**
9
+ * Whether two {@link Transform64}s hold the same translation, rotation and scale.
10
+ *
11
+ * The counterpart of {@link t64_equals_transform} for two transforms of the same type, and it exists
12
+ * for the same reason: a system that places on a poll rather than on a signal has to be able to tell
13
+ * that there is nothing to place. The cost of not asking is not the copy - it is that
14
+ * `Node3D.updateMatrices` bumps a version whether or not anything moved, and downstream a bumped
15
+ * version means a scene-database row uploaded and, for a mesh, a whole-tree rebuild of the top-level
16
+ * acceleration structure.
17
+ *
18
+ * **Not {@link Transform64#equals}.** That one compares all 23 elements, the matrix included, and so
19
+ * reports two transforms as different when only one of them has a stale matrix - which is a state
20
+ * this type invites, since a rotation or scale write does not refresh the matrix until
21
+ * {@link Transform64#updateMatrix} is called. Using it as a placement guard would answer "have the
22
+ * buffers diverged" when the question is "has anything moved", and would let the rebuild it is meant
23
+ * to prevent back in.
24
+ *
25
+ * Exact equality rather than a tolerance, for the same reason {@link t64_equals_transform} uses it:
26
+ * the question is whether a write would change anything, and a write of a value that differs by any
27
+ * amount does.
28
+ *
29
+ * @param {Transform64} a
30
+ * @param {Transform64} b
31
+ * @returns {boolean}
32
+ *
33
+ * @author Alex Goldring
34
+ * @copyright Company Named Limited (c) 2026
35
+ */
36
+ export function t64_equals_components(a, b) {
37
+ assert.equal(a.isTransform64, true, 'a.isTransform64 !== true');
38
+ assert.equal(b.isTransform64, true, 'b.isTransform64 !== true');
39
+
40
+ for (let i = 0; i < 3; i++) {
41
+ if (a[TRANSFORM64_TRANSLATION_OFFSET + i] !== b[TRANSFORM64_TRANSLATION_OFFSET + i]) {
42
+ return false;
43
+ }
44
+ }
45
+
46
+ for (let i = 0; i < 4; i++) {
47
+ if (a[TRANSFORM64_ROTATION_OFFSET + i] !== b[TRANSFORM64_ROTATION_OFFSET + i]) {
48
+ return false;
49
+ }
50
+ }
51
+
52
+ for (let i = 0; i < 3; i++) {
53
+ if (a[TRANSFORM64_SCALE_OFFSET + i] !== b[TRANSFORM64_SCALE_OFFSET + i]) {
54
+ return false;
55
+ }
56
+ }
57
+
58
+ return true;
59
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Read a transform's rotation out into a quaternion.
3
+ *
4
+ * The companion of {@link t64_read_translation}, and there for the same reason: quaternion math -
5
+ * inverses, slerps, angles between two rotations - lives on {@link Quaternion}, and a
6
+ * {@link Transform64} is an array holding none of it.
7
+ *
8
+ * @param {Quaternion} out
9
+ * @param {Transform64} transform
10
+ * @returns {Quaternion} out
11
+ */
12
+ export function t64_read_rotation(out: Quaternion, transform: Transform64): Quaternion;
13
+ //# sourceMappingURL=t64_read_rotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t64_read_rotation.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_read_rotation.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,uFAIC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Read a transform's rotation out into a quaternion.
3
+ *
4
+ * The companion of {@link t64_read_translation}, and there for the same reason: quaternion math -
5
+ * inverses, slerps, angles between two rotations - lives on {@link Quaternion}, and a
6
+ * {@link Transform64} is an array holding none of it.
7
+ *
8
+ * @param {Quaternion} out
9
+ * @param {Transform64} transform
10
+ * @returns {Quaternion} out
11
+ */
12
+ export function t64_read_rotation(out, transform) {
13
+ out.set(transform.rotation_x, transform.rotation_y, transform.rotation_z, transform.rotation_w);
14
+
15
+ return out;
16
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Read a transform's translation out into a vector.
3
+ *
4
+ * A {@link Transform64} keeps its components as numbers inside its own array, which is the whole
5
+ * point of it; code that needs vector math on one of them - a distance, a cross product, a
6
+ * direction to rotate - reads it out into a scratch here instead of taking a view, which would
7
+ * allocate on every call.
8
+ *
9
+ * @param {Vector3} out
10
+ * @param {Transform64} transform
11
+ * @returns {Vector3} out
12
+ */
13
+ export function t64_read_translation(out: Vector3, transform: Transform64): Vector3;
14
+ //# sourceMappingURL=t64_read_translation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"t64_read_translation.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_read_translation.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,oFAIC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Read a transform's translation out into a vector.
3
+ *
4
+ * A {@link Transform64} keeps its components as numbers inside its own array, which is the whole
5
+ * point of it; code that needs vector math on one of them - a distance, a cross product, a
6
+ * direction to rotate - reads it out into a scratch here instead of taking a view, which would
7
+ * allocate on every call.
8
+ *
9
+ * @param {Vector3} out
10
+ * @param {Transform64} transform
11
+ * @returns {Vector3} out
12
+ */
13
+ export function t64_read_translation(out, transform) {
14
+ out.set(transform.translation_x, transform.translation_y, transform.translation_z);
15
+
16
+ return out;
17
+ }