@woosh/meep-engine 3.15.0 → 3.17.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 (1118) 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 +411 -0
  12. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -0
  13. package/editor/particles/effect/ParticleEffectDocument.js +1010 -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/NodeGraphClipboard.d.ts +186 -0
  47. package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -0
  48. package/editor/view/node-graph/NodeGraphClipboard.js +231 -0
  49. package/editor/view/node-graph/NodeGraphEditorView.d.ts +201 -2
  50. package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
  51. package/editor/view/node-graph/NodeGraphEditorView.js +602 -7
  52. package/editor/view/node-graph/NodeGraphMinimapView.d.ts +120 -0
  53. package/editor/view/node-graph/NodeGraphMinimapView.d.ts.map +1 -0
  54. package/editor/view/node-graph/NodeGraphMinimapView.js +859 -0
  55. package/editor/view/node-graph/NodeGraphPaletteView.d.ts +112 -0
  56. package/editor/view/node-graph/NodeGraphPaletteView.d.ts.map +1 -0
  57. package/editor/view/node-graph/NodeGraphPaletteView.js +352 -0
  58. package/editor/view/node-graph/NodeGraphSearchMenuView.d.ts +76 -0
  59. package/editor/view/node-graph/NodeGraphSearchMenuView.d.ts.map +1 -0
  60. package/editor/view/node-graph/NodeGraphSearchMenuView.js +247 -0
  61. package/editor/view/node-graph/NodeGraphView.d.ts +147 -5
  62. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  63. package/editor/view/node-graph/NodeGraphView.js +891 -82
  64. package/editor/view/node-graph/NodeIconView.d.ts +33 -0
  65. package/editor/view/node-graph/NodeIconView.d.ts.map +1 -0
  66. package/editor/view/node-graph/NodeIconView.js +54 -0
  67. package/editor/view/node-graph/NodeView.d.ts +71 -1
  68. package/editor/view/node-graph/NodeView.d.ts.map +1 -1
  69. package/editor/view/node-graph/NodeView.js +318 -17
  70. package/editor/view/node-graph/PortView.d.ts +41 -1
  71. package/editor/view/node-graph/PortView.d.ts.map +1 -1
  72. package/editor/view/node-graph/PortView.js +121 -69
  73. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts +16 -3
  74. package/editor/view/node-graph/actions/ConnectionDeleteAction.d.ts.map +1 -1
  75. package/editor/view/node-graph/actions/ConnectionDeleteAction.js +29 -3
  76. package/editor/view/node-graph/actions/NodeCreateAction.d.ts +65 -0
  77. package/editor/view/node-graph/actions/NodeCreateAction.d.ts.map +1 -0
  78. package/editor/view/node-graph/actions/NodeCreateAction.js +108 -0
  79. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts +6 -0
  80. package/editor/view/node-graph/actions/NodeDeleteAction.d.ts.map +1 -1
  81. package/editor/view/node-graph/actions/NodeDeleteAction.js +24 -2
  82. package/editor/view/node-graph/actions/connection_bind_actions.d.ts +23 -0
  83. package/editor/view/node-graph/actions/connection_bind_actions.d.ts.map +1 -0
  84. package/editor/view/node-graph/actions/connection_bind_actions.js +39 -0
  85. package/editor/view/node-graph/connection_wire_geometry.d.ts +34 -0
  86. package/editor/view/node-graph/connection_wire_geometry.d.ts.map +1 -1
  87. package/editor/view/node-graph/connection_wire_geometry.js +79 -3
  88. package/editor/view/node-graph/node-graph.css +678 -0
  89. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts +37 -0
  90. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -0
  91. package/editor/view/particles/effect/ParticleCodeEditorView.js +480 -0
  92. package/editor/view/particles/effect/ParticleCurveEditorView.d.ts +20 -0
  93. package/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -0
  94. package/editor/view/particles/effect/ParticleCurveEditorView.js +574 -0
  95. package/editor/view/particles/effect/ParticleEffectEditorView.d.ts +61 -0
  96. package/editor/view/particles/effect/ParticleEffectEditorView.d.ts.map +1 -0
  97. package/editor/view/particles/effect/ParticleEffectEditorView.js +223 -0
  98. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts +25 -0
  99. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -0
  100. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +632 -0
  101. package/editor/view/particles/effect/ParticleGradientEditorView.d.ts +24 -0
  102. package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -0
  103. package/editor/view/particles/effect/ParticleGradientEditorView.js +472 -0
  104. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +161 -0
  105. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -0
  106. package/editor/view/particles/effect/ParticleGraphEditorView.js +1666 -0
  107. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts +22 -0
  108. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -0
  109. package/editor/view/particles/effect/ParticleNodeParametersView.js +553 -0
  110. package/editor/view/particles/effect/ParticlePreviewView.d.ts +52 -0
  111. package/editor/view/particles/effect/ParticlePreviewView.d.ts.map +1 -0
  112. package/editor/view/particles/effect/ParticlePreviewView.js +533 -0
  113. package/editor/view/particles/effect/particle-editor.css +644 -0
  114. package/editor/view/prepareMeshLibrary.d.ts.map +1 -1
  115. package/editor/view/prepareMeshLibrary.js +8 -4
  116. package/package.json +1 -1
  117. package/samples/engine/first-scene/main.js +152 -152
  118. package/samples/generation/generators/mir_generator_place_bases.js +3 -3
  119. package/src/core/assert.d.ts +28 -24
  120. package/src/core/assert.d.ts.map +1 -1
  121. package/src/core/assert.js +34 -26
  122. package/src/core/binary/allocator/OffsetAllocator.d.ts +25 -16
  123. package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
  124. package/src/core/binary/allocator/OffsetAllocator.js +10 -1
  125. package/src/core/collection/array/typed/float32_array_hash.d.ts +21 -0
  126. package/src/core/collection/array/typed/float32_array_hash.d.ts.map +1 -0
  127. package/src/core/collection/array/typed/float32_array_hash.js +38 -0
  128. package/src/core/geom/3d/shape/PosedShape3D.d.ts +17 -0
  129. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  130. package/src/core/geom/3d/shape/PosedShape3D.js +34 -2
  131. package/src/core/graph/csr/CSRGraph.d.ts +8 -1
  132. package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
  133. package/src/core/graph/csr/CSRGraph.js +14 -6
  134. package/src/core/graph/format/graphviz/graphviz_escape_html_label.d.ts +17 -0
  135. package/src/core/graph/format/graphviz/graphviz_escape_html_label.d.ts.map +1 -0
  136. package/src/core/graph/format/graphviz/graphviz_escape_html_label.js +25 -0
  137. package/src/core/graph/format/graphviz/graphviz_escape_quoted.d.ts +16 -0
  138. package/src/core/graph/format/graphviz/graphviz_escape_quoted.d.ts.map +1 -0
  139. package/src/core/graph/format/graphviz/graphviz_escape_quoted.js +24 -0
  140. package/src/core/model/node-graph/NodeGraph.d.ts +12 -0
  141. package/src/core/model/node-graph/NodeGraph.d.ts.map +1 -1
  142. package/src/core/model/node-graph/NodeGraph.js +21 -6
  143. package/src/core/model/node-graph/node/NodeDescription.d.ts +36 -0
  144. package/src/core/model/node-graph/node/NodeDescription.d.ts.map +1 -1
  145. package/src/core/model/node-graph/node/NodeDescription.js +41 -0
  146. package/src/core/model/node-graph/visual/ConnectionVisualData.d.ts +119 -0
  147. package/src/core/model/node-graph/visual/ConnectionVisualData.d.ts.map +1 -0
  148. package/src/core/model/node-graph/visual/ConnectionVisualData.js +317 -0
  149. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.d.ts +4 -0
  150. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.d.ts.map +1 -1
  151. package/src/core/model/node-graph/visual/NodeDescriptionVisualRegistry.js +125 -22
  152. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts +91 -2
  153. package/src/core/model/node-graph/visual/NodeGraphVisualData.d.ts.map +1 -1
  154. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +164 -113
  155. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts +162 -0
  156. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.d.ts.map +1 -0
  157. package/src/core/model/node-graph/visual/layout/LayoutBoxGraph.js +288 -0
  158. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +133 -0
  159. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -0
  160. package/src/core/model/node-graph/visual/layout/LayoutProblem.js +168 -0
  161. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +175 -0
  162. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -0
  163. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +203 -0
  164. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +226 -0
  165. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -0
  166. package/src/core/model/node-graph/visual/layout/RouteGrid.js +405 -0
  167. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +159 -0
  168. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -0
  169. package/src/core/model/node-graph/visual/layout/RouteSearch.js +436 -0
  170. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +93 -0
  171. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -0
  172. package/src/core/model/node-graph/visual/layout/RouteSet.js +176 -0
  173. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts +48 -0
  174. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -0
  175. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +561 -0
  176. package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts +34 -0
  177. package/src/core/model/node-graph/visual/layout/layout_assign_layers.d.ts.map +1 -0
  178. package/src/core/model/node-graph/visual/layout/layout_assign_layers.js +202 -0
  179. package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts +34 -0
  180. package/src/core/model/node-graph/visual/layout/layout_break_cycles.d.ts.map +1 -0
  181. package/src/core/model/node-graph/visual/layout/layout_break_cycles.js +254 -0
  182. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts +29 -0
  183. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -0
  184. package/src/core/model/node-graph/visual/layout/layout_build_problem.js +191 -0
  185. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +35 -0
  186. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -0
  187. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +109 -0
  188. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +59 -0
  189. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -0
  190. package/src/core/model/node-graph/visual/layout/layout_node_graph.js +173 -0
  191. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +46 -0
  192. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -0
  193. package/src/core/model/node-graph/visual/layout/layout_order_layers.js +534 -0
  194. package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts +21 -0
  195. package/src/core/model/node-graph/visual/layout/layout_orient_links.d.ts.map +1 -0
  196. package/src/core/model/node-graph/visual/layout/layout_orient_links.js +49 -0
  197. package/src/core/model/node-graph/visual/layout/route_connections.d.ts +70 -0
  198. package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -0
  199. package/src/core/model/node-graph/visual/layout/route_connections.js +716 -0
  200. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +34 -0
  201. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -0
  202. package/src/core/model/node-graph/visual/layout/route_grid_build.js +229 -0
  203. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +31 -0
  204. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -0
  205. package/src/core/model/node-graph/visual/layout/route_nudge.js +249 -0
  206. package/src/core/model/node-graph/visual/layout/route_to_spline.d.ts +29 -0
  207. package/src/core/model/node-graph/visual/layout/route_to_spline.d.ts.map +1 -0
  208. package/src/core/model/node-graph/visual/layout/route_to_spline.js +120 -0
  209. package/src/engine/EngineHarness.d.ts.map +1 -1
  210. package/src/engine/EngineHarness.js +593 -586
  211. package/src/engine/EntityCreator.js +116 -116
  212. package/src/engine/achievements/AchievementManager.js +437 -437
  213. package/src/engine/animation/AnimatedActions.js +111 -111
  214. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  215. package/src/engine/animation/AnimationUtils.js +20 -8
  216. package/src/engine/animation/Animations.d.ts +1 -0
  217. package/src/engine/animation/Animations.d.ts.map +1 -1
  218. package/src/engine/animation/Animations.js +74 -66
  219. package/src/engine/animation/clip/bind_property_writer.d.ts.map +1 -1
  220. package/src/engine/animation/clip/bind_property_writer.js +12 -5
  221. package/src/engine/animation/curve/binding/BoundTransform64Writer.d.ts +29 -0
  222. package/src/engine/animation/curve/binding/BoundTransform64Writer.d.ts.map +1 -0
  223. package/src/engine/animation/curve/binding/BoundTransform64Writer.js +80 -0
  224. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +4 -4
  225. package/src/engine/asset/loaders/gltf_test_fixtures.d.ts.map +1 -1
  226. package/src/engine/asset/loaders/gltf_test_fixtures.js +5 -4
  227. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +12 -12
  228. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  229. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2078 -2045
  230. package/src/engine/control/first-person/abilities/LedgeGrab.js +1 -1
  231. package/src/engine/control/first-person/abilities/Mantle.js +1 -1
  232. package/src/engine/control/first-person/abilities/Slide.js +1 -1
  233. package/src/engine/control/first-person/collision/KinematicMover.d.ts +5 -9
  234. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  235. package/src/engine/control/first-person/collision/KinematicMover.js +59 -29
  236. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +2 -2
  237. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  238. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +7 -7
  239. package/src/engine/ecs/EventType.js +10 -10
  240. package/src/engine/ecs/dynamic_actions/actions/definition/SendRequestActionDescription.d.ts.map +1 -1
  241. package/src/engine/ecs/dynamic_actions/actions/definition/SendRequestActionDescription.js +12 -4
  242. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts +4 -4
  243. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  244. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +10 -11
  245. package/src/engine/ecs/grid/pick.js +1 -1
  246. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts +1 -1
  247. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +13 -13
  248. package/src/engine/ecs/gui/hud/testHudEdgeStick.js +3 -3
  249. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts +10 -10
  250. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
  251. package/src/engine/ecs/ik/InverseKinematicsSystem.js +8 -8
  252. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.d.ts.map +1 -1
  253. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +120 -97
  254. package/src/engine/ecs/ik/ik_bone_chain.d.ts +16 -5
  255. package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
  256. package/src/engine/ecs/ik/ik_bone_chain.js +16 -4
  257. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts +7 -3
  258. package/src/engine/ecs/ik/ik_probe_terrain_contact.d.ts.map +1 -1
  259. package/src/engine/ecs/ik/ik_probe_terrain_contact.js +20 -16
  260. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +18 -0
  261. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -0
  262. package/src/engine/ecs/ik/ik_write_local_rotation.js +26 -0
  263. package/src/engine/ecs/parent/EntityNode.d.ts +24 -6
  264. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  265. package/src/engine/ecs/parent/EntityNode.js +49 -42
  266. package/src/engine/ecs/parent/EntityNodeFlags.d.ts +0 -1
  267. package/src/engine/ecs/parent/EntityNodeFlags.js +7 -8
  268. package/src/engine/ecs/speaker/VoiceSystem.d.ts +2 -2
  269. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  270. package/src/engine/ecs/speaker/VoiceSystem.js +4 -4
  271. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  272. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +2 -0
  273. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +5 -2
  274. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  275. package/src/engine/ecs/terrain/ecs/Terrain.js +7 -4
  276. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +3 -3
  277. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts +7 -7
  278. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  279. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +360 -316
  280. package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts +41 -0
  281. package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts.map +1 -0
  282. package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js +40 -0
  283. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +521 -0
  284. package/src/engine/ecs/transform/Transform64.d.ts +48 -11
  285. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  286. package/src/engine/ecs/transform/Transform64.js +54 -15
  287. package/src/engine/ecs/transform/Transform64SerializationAdapter.d.ts +37 -0
  288. package/src/engine/ecs/transform/Transform64SerializationAdapter.d.ts.map +1 -0
  289. package/src/engine/ecs/transform/Transform64SerializationAdapter.js +75 -0
  290. package/src/engine/ecs/transform/t64_allocation_probe.d.ts +31 -0
  291. package/src/engine/ecs/transform/t64_allocation_probe.d.ts.map +1 -0
  292. package/src/engine/ecs/transform/t64_allocation_probe.js +78 -0
  293. package/src/engine/ecs/transform/t64_announce_change.d.ts +36 -0
  294. package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -0
  295. package/src/engine/ecs/transform/t64_announce_change.js +39 -0
  296. package/src/engine/ecs/transform/t64_equals_components.d.ts +30 -0
  297. package/src/engine/ecs/transform/t64_equals_components.d.ts.map +1 -0
  298. package/src/engine/ecs/transform/t64_equals_components.js +59 -0
  299. package/src/engine/ecs/transform/t64_read_rotation.d.ts +13 -0
  300. package/src/engine/ecs/transform/t64_read_rotation.d.ts.map +1 -0
  301. package/src/engine/ecs/transform/t64_read_rotation.js +16 -0
  302. package/src/engine/ecs/transform/t64_read_translation.d.ts +14 -0
  303. package/src/engine/ecs/transform/t64_read_translation.d.ts.map +1 -0
  304. package/src/engine/ecs/transform/t64_read_translation.js +17 -0
  305. package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts +30 -0
  306. package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts.map +1 -0
  307. package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.js +29 -0
  308. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +5 -5
  309. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  310. package/src/engine/ecs/transform-attachment/TransformAttachment.js +4 -4
  311. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +10 -10
  312. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  313. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +63 -20
  314. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  315. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
  316. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +5 -4
  317. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  318. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +8 -3
  319. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +6 -6
  320. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  321. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +25 -13
  322. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLanderSystem.js +1 -1
  323. package/src/engine/graphics/ecs/mesh/setMesh.js +2 -2
  324. package/src/engine/graphics/ecs/path/entity/EntityPath.d.ts.map +1 -1
  325. package/src/engine/graphics/ecs/path/entity/EntityPath.js +21 -7
  326. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts +4 -4
  327. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.d.ts.map +1 -1
  328. package/src/engine/graphics/ecs/path/entity/EntityPathMarkerDefinition.js +4 -4
  329. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +2 -2
  330. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  331. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +141 -135
  332. package/src/engine/graphics/geometry/MikkT/Build4RuleGroups.js +2 -2
  333. package/src/engine/graphics/geometry/MikkT/DegenEpilogue.js +1 -1
  334. package/src/engine/graphics/geometry/MikkT/DegenPrologue.js +1 -1
  335. package/src/engine/graphics/geometry/MikkT/EvalTspace.js +1 -1
  336. package/src/engine/graphics/geometry/MikkT/GenerateTSpaces.js +3 -3
  337. package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +659 -0
  338. package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +21 -5
  339. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts +45 -0
  340. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  341. package/src/engine/graphics/render/frame_graph/FrameGraph.js +282 -60
  342. package/src/engine/graphics/render/frame_graph/FramePassBuilder.d.ts.map +1 -1
  343. package/src/engine/graphics/render/frame_graph/FramePassBuilder.js +20 -9
  344. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts +12 -0
  345. package/src/engine/graphics/render/frame_graph/FramePassNode.d.ts.map +1 -1
  346. package/src/engine/graphics/render/frame_graph/FramePassNode.js +13 -0
  347. package/src/engine/graphics/render/frame_graph/FramePassResources.d.ts.map +1 -1
  348. package/src/engine/graphics/render/frame_graph/FramePassResources.js +5 -0
  349. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts +19 -1
  350. package/src/engine/graphics/render/frame_graph/ResourceEntry.d.ts.map +1 -1
  351. package/src/engine/graphics/render/frame_graph/ResourceEntry.js +23 -1
  352. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.d.ts +15 -1
  353. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.d.ts.map +1 -1
  354. package/src/engine/graphics/render/frame_graph/backend/void/VoidRenderContext.js +33 -16
  355. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.d.ts.map +1 -1
  356. package/src/engine/graphics/render/frame_graph/resource/RenderResourceManager.js +19 -1
  357. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +6 -6
  358. package/src/engine/graphics3/CameraSystem.d.ts +6 -6
  359. package/src/engine/graphics3/CameraSystem.d.ts.map +1 -1
  360. package/src/engine/graphics3/CameraSystem.js +170 -170
  361. package/src/engine/graphics3/DecalSystem.d.ts +6 -6
  362. package/src/engine/graphics3/DecalSystem.d.ts.map +1 -1
  363. package/src/engine/graphics3/DecalSystem.js +449 -449
  364. package/src/engine/graphics3/LightSystem.d.ts +6 -6
  365. package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
  366. package/src/engine/graphics3/LightSystem.js +230 -221
  367. package/src/engine/graphics3/MeshSystem.d.ts +6 -6
  368. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
  369. package/src/engine/graphics3/MeshSystem.js +43 -22
  370. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +20 -15
  371. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
  372. package/src/engine/graphics3/ParticipatingMediaSystem.js +198 -184
  373. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +6 -6
  374. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
  375. package/src/engine/graphics3/ParticleEmitterSystem.js +306 -289
  376. package/src/engine/graphics3/PickingSystem.d.ts +6 -6
  377. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
  378. package/src/engine/graphics3/PickingSystem.js +273 -273
  379. package/src/engine/graphics3/ShadedGeometrySystem.d.ts +6 -6
  380. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
  381. package/src/engine/graphics3/ShadedGeometrySystem.js +174 -169
  382. package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
  383. package/src/engine/graphics3/TerrainSystem.js +565 -566
  384. package/src/engine/graphics3/Trail3DSystem.d.ts +6 -6
  385. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
  386. package/src/engine/graphics3/Trail3DSystem.js +221 -221
  387. package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
  388. package/src/engine/graphics3/camera_sync_from_transform.d.ts.map +1 -1
  389. package/src/engine/graphics3/camera_sync_from_transform.js +2 -1
  390. package/src/engine/graphics3/debug/gizmo_view_from_camera.js +4 -4
  391. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +6 -0
  392. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +1 -1
  393. package/src/engine/graphics3/particles/GPUParticularRenderer.js +82 -53
  394. package/src/engine/graphics3/particles/particle_gpu_records.d.ts +12 -8
  395. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +1 -1
  396. package/src/engine/graphics3/particles/particle_gpu_records.js +53 -45
  397. package/src/engine/graphics3/preview/make_model_preview_scene.js +1 -1
  398. package/src/engine/graphics3/shade_camera_projection_ray.js +4 -4
  399. package/src/engine/graphics3/shade_node_to_entity_composition.d.ts.map +1 -1
  400. package/src/engine/graphics3/shade_node_to_entity_composition.js +88 -84
  401. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts +7 -7
  402. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.d.ts.map +1 -1
  403. package/src/engine/grid/grid2transform/GridPosition2TransformSystem.js +8 -8
  404. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +9 -8
  405. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
  406. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +25 -8
  407. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  408. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.d.ts.map +1 -1
  409. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +218 -204
  410. package/src/engine/intelligence/behavior/util/RotationBehavior.js +5 -5
  411. package/src/engine/intelligence/mcts/StateNode.js +1 -1
  412. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts +7 -7
  413. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
  414. package/src/engine/interpolation/TransformPoseSerializationAdapter.js +14 -15
  415. package/src/engine/interpolation/pose_interpoland.d.ts +2 -2
  416. package/src/engine/interpolation/pose_interpoland.js +4 -4
  417. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts +4 -4
  418. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  419. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.js +39 -14
  420. package/src/engine/network/adapters/TransformReplicationAdapter.d.ts +7 -7
  421. package/src/engine/network/adapters/TransformReplicationAdapter.d.ts.map +1 -1
  422. package/src/engine/network/adapters/TransformReplicationAdapter.js +19 -20
  423. package/src/engine/network/replication/Replicator.d.ts +5 -3
  424. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  425. package/src/engine/network/replication/Replicator.js +65 -16
  426. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +3 -3
  427. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  428. package/src/engine/physics/ccd/linear_sweep.js +9 -3
  429. package/src/engine/physics/constraint/solve_constraints.js +10 -10
  430. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +8 -8
  431. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts.map +1 -1
  432. package/src/engine/physics/ecs/ColliderObserverSystem.js +6 -6
  433. package/src/engine/physics/ecs/PhysicsSystem.d.ts +22 -32
  434. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  435. package/src/engine/physics/ecs/PhysicsSystem.js +2334 -2310
  436. package/src/engine/physics/ecs/find_non_finite_physics_state.js +6 -6
  437. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +7 -7
  438. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  439. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +16 -8
  440. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +4 -4
  441. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  442. package/src/engine/physics/fluid/ecs/FluidSystem.js +6 -6
  443. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +2 -2
  444. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts.map +1 -1
  445. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +4 -4
  446. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +7 -7
  447. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +4 -4
  448. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +7 -7
  449. package/src/engine/physics/inertia/world_inverse_inertia.js +1 -1
  450. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  451. package/src/engine/physics/integration/integrate_position.js +13 -12
  452. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
  453. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +23 -5
  454. package/src/engine/physics/narrowphase/compute_penetration.js +18 -14
  455. package/src/engine/physics/narrowphase/convex_convex_manifold.js +2 -2
  456. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +9 -9
  457. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  458. package/src/engine/physics/narrowphase/narrowphase_step.js +95 -68
  459. package/src/engine/physics/narrowphase/refine_ray_concave.js +1 -1
  460. package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -3
  461. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  462. package/src/engine/physics/queries/overlap_shape.js +19 -7
  463. package/src/engine/physics/queries/raycast.js +3 -3
  464. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  465. package/src/engine/physics/queries/shape_cast.js +628 -620
  466. package/src/engine/physics/solver/solve_contacts.js +10 -10
  467. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +6 -5
  468. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  469. package/src/engine/physics/vehicle/RaycastVehicle.js +10 -5
  470. package/src/engine/sound/ecs/SoundListenerSystem.d.ts +16 -4
  471. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  472. package/src/engine/sound/ecs/SoundListenerSystem.js +68 -11
  473. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +7 -7
  474. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  475. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +343 -338
  476. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +2 -2
  477. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  478. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +356 -345
  479. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +23 -2
  480. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
  481. package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +174 -140
  482. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +6 -6
  483. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -1
  484. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +185 -184
  485. package/src/engine/sound/material/detector/terrain/TerrainSoundMaterialSurfaceDetector.js +1 -1
  486. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts +2 -1
  487. package/src/engine/sound/simulation/core/AcousticRegionIndex.d.ts.map +1 -1
  488. package/src/engine/sound/simulation/core/AcousticRegionIndex.js +4 -3
  489. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts +3 -2
  490. package/src/engine/sound/simulation/core/AcousticVolumeRegion.d.ts.map +1 -1
  491. package/src/engine/sound/simulation/core/AcousticVolumeRegion.js +6 -4
  492. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +6 -6
  493. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
  494. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +25 -6
  495. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts +7 -7
  496. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.d.ts.map +1 -1
  497. package/src/engine/sound/simulation/ecs/AcousticVolumeSystem.js +6 -6
  498. package/src/engine/sound/sopra/runtime/EventInstance.d.ts.map +1 -1
  499. package/src/engine/sound/sopra/runtime/EventInstance.js +8 -2
  500. package/src/format/scene/gltf/gltf_component_type.d.ts.map +1 -1
  501. package/src/format/scene/gltf/gltf_component_type.js +3 -1
  502. package/src/format/texture/ktx2/ktx2_read.d.ts.map +1 -1
  503. package/src/format/texture/ktx2/ktx2_read.js +2 -1
  504. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.d.ts.map +1 -1
  505. package/src/generation/grid/generation/GridTaskDensityMarkerDistribution.js +8 -1
  506. package/src/generation/markers/GridCellActionPlaceMarker.d.ts +4 -4
  507. package/src/generation/markers/GridCellActionPlaceMarker.d.ts.map +1 -1
  508. package/src/generation/markers/GridCellActionPlaceMarker.js +16 -6
  509. package/src/generation/markers/MarkerNode.d.ts +3 -3
  510. package/src/generation/markers/MarkerNode.d.ts.map +1 -1
  511. package/src/generation/markers/MarkerNode.js +3 -3
  512. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts +4 -4
  513. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.d.ts.map +1 -1
  514. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +7 -7
  515. package/src/generation/markers/actions/MarkerNodeActionImaginary.d.ts.map +1 -1
  516. package/src/generation/markers/actions/MarkerNodeActionImaginary.js +20 -2
  517. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +1 -1
  518. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  519. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +13 -3
  520. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts.map +1 -1
  521. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.js +11 -1
  522. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.d.ts.map +1 -1
  523. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +8 -4
  524. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.d.ts.map +1 -1
  525. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +13 -5
  526. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.d.ts.map +1 -1
  527. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +8 -2
  528. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.d.ts.map +1 -1
  529. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +16 -2
  530. package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
  531. package/src/shade/device/graph/BufferResourceDescriptor.js +193 -184
  532. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  533. package/src/shade/device/graph/TextureResourceDescriptor.js +12 -0
  534. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  535. package/src/shade/device/mock/SoftwareGPUDevice.js +8 -0
  536. package/src/shade/playground/avboit/main.js +3 -3
  537. package/src/shade/playground/basis_textures/main.js +1 -1
  538. package/src/shade/playground/ground_seam/main.js +1 -1
  539. package/src/shade/playground/particle_editor/README.md +216 -0
  540. package/src/shade/playground/particle_editor/index.html +76 -0
  541. package/src/shade/playground/particle_editor/main.d.ts +2 -0
  542. package/src/shade/playground/particle_editor/main.d.ts.map +1 -0
  543. package/src/shade/playground/particle_editor/main.js +139 -0
  544. package/src/shade/playground/particle_system/README.md +92 -62
  545. package/src/shade/playground/particle_system/index.html +67 -21
  546. package/src/shade/playground/particle_system/main.js +247 -102
  547. package/src/shade/{renderer/particles → playground/particle_system}/particle_prototype.d.ts +21 -18
  548. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -0
  549. package/src/shade/{renderer/particles → playground/particle_system}/particle_prototype.js +196 -181
  550. package/src/shade/playground/particle_system/particle_scene.d.ts +136 -20
  551. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  552. package/src/shade/playground/particle_system/particle_scene.js +487 -670
  553. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
  554. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
  555. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +2 -1
  556. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  557. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +2 -1
  558. package/src/shade/playground/sponza_path_trace/main.js +1 -1
  559. package/src/shade/playground/volumetrics_froxel/main.js +917 -917
  560. package/src/shade/playground/volumetrics_froxel/measure.js +559 -559
  561. package/src/shade/renderer/Renderer.d.ts +28 -0
  562. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  563. package/src/shade/renderer/Renderer.js +152 -8
  564. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  565. package/src/shade/renderer/atmosphere/GPUSky.js +4 -2
  566. package/src/shade/renderer/buffer/graph_read_buffer.d.ts.map +1 -1
  567. package/src/shade/renderer/buffer/graph_read_buffer.js +8 -1
  568. package/src/shade/renderer/buffer/table/GPUTypedTable.js +1 -1
  569. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +30 -0
  570. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  571. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +84 -0
  572. package/src/shade/renderer/buffer/table/gpu_database_words.d.ts +24 -0
  573. package/src/shade/renderer/buffer/table/gpu_database_words.d.ts.map +1 -0
  574. package/src/shade/renderer/buffer/table/gpu_database_words.js +92 -0
  575. package/src/shade/renderer/camera/Camera.d.ts +2 -2
  576. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  577. package/src/shade/renderer/camera/Camera.js +11 -5
  578. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  579. package/src/shade/renderer/camera/GPUCameraContext.js +2 -1
  580. package/src/shade/renderer/camera/OrbitalCameraController.d.ts +3 -3
  581. package/src/shade/renderer/camera/OrbitalCameraController.d.ts.map +1 -1
  582. package/src/shade/renderer/camera/OrbitalCameraController.js +31 -16
  583. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +2 -2
  584. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  585. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +4 -3
  586. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +10 -5
  587. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
  588. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +8 -4
  589. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  590. package/src/shade/renderer/extension/FrameContext.js +5 -0
  591. package/src/shade/renderer/extension/FrameRecord.d.ts +16 -0
  592. package/src/shade/renderer/extension/FrameRecord.d.ts.map +1 -1
  593. package/src/shade/renderer/extension/FrameRecord.js +31 -0
  594. package/src/shade/renderer/extension/GBufferTextures.d.ts +11 -0
  595. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  596. package/src/shade/renderer/extension/GBufferTextures.js +14 -0
  597. package/src/shade/renderer/geometry/attribute/gpu_vertex_buffer_layout_from_spec.js +1 -1
  598. package/src/shade/renderer/geometry/util/geometry_stripify.js +6 -6
  599. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +8 -8
  600. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
  601. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +14 -5
  602. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.d.ts.map +1 -1
  603. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +17 -9
  604. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts +2 -1
  605. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.d.ts.map +1 -1
  606. package/src/shade/renderer/global_illumination/probe/octahedral/border/graph_lpv_paint_border_depth.js +4 -1
  607. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts +2 -1
  608. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.d.ts.map +1 -1
  609. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_lvp_atlas_to_sh.js +11 -1
  610. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.d.ts +1 -1
  611. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.d.ts.map +1 -1
  612. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.js +4 -2
  613. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  614. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.js +5 -1
  615. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  616. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +35 -11
  617. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  618. package/src/shade/renderer/particles/DESIGN.md +361 -117
  619. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +266 -87
  620. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  621. package/src/shade/renderer/particles/GPUParticleSystem.js +919 -145
  622. package/src/shade/renderer/particles/ParticleConstants.d.ts +134 -5
  623. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  624. package/src/shade/renderer/particles/ParticleConstants.js +148 -6
  625. package/src/shade/renderer/particles/ParticleRenderMode.d.ts +19 -0
  626. package/src/shade/renderer/particles/ParticleRenderMode.d.ts.map +1 -0
  627. package/src/shade/renderer/particles/ParticleRenderMode.js +33 -0
  628. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +5 -4
  629. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  630. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +11 -15
  631. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts +2 -2
  632. package/src/shade/renderer/particles/coherence/shader_particle_bucket.d.ts.map +1 -1
  633. package/src/shade/renderer/particles/coherence/shader_particle_bucket.js +20 -15
  634. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts +7 -8
  635. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.d.ts.map +1 -1
  636. package/src/shade/renderer/particles/data/PARTICLE_COUNTERS.js +7 -17
  637. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts +56 -0
  638. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.d.ts.map +1 -0
  639. package/src/shade/renderer/particles/data/PARTICLE_DATABASE_SPEC.js +68 -0
  640. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts +39 -0
  641. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.d.ts.map +1 -0
  642. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STATE.js +52 -0
  643. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts +83 -0
  644. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -0
  645. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +167 -0
  646. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts +21 -5
  647. package/src/shade/renderer/particles/data/chunk_particle_emitter.d.ts.map +1 -1
  648. package/src/shade/renderer/particles/data/chunk_particle_emitter.js +44 -85
  649. package/src/shade/renderer/particles/data/particle_emitter_record.d.ts +37 -0
  650. package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -0
  651. package/src/shade/renderer/particles/data/particle_emitter_record.js +109 -0
  652. package/src/shade/renderer/particles/data/particle_header.d.ts +62 -0
  653. package/src/shade/renderer/particles/data/particle_header.d.ts.map +1 -0
  654. package/src/shade/renderer/particles/data/particle_header.js +103 -0
  655. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +179 -0
  656. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -0
  657. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -0
  658. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +138 -1
  659. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
  660. package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +152 -44
  661. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts +283 -0
  662. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -0
  663. package/src/shade/renderer/particles/graph/ParticleNodeGroup.js +419 -0
  664. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +33 -2
  665. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  666. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +720 -185
  667. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +188 -0
  668. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -0
  669. package/src/shade/renderer/particles/graph/ParticleValueType.js +287 -0
  670. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts +16 -9
  671. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
  672. package/src/shade/renderer/particles/graph/compile_particle_graph.js +469 -205
  673. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts +11 -0
  674. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -0
  675. package/src/shade/renderer/particles/graph/flatten_particle_graph.js +244 -0
  676. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts +27 -0
  677. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -0
  678. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +81 -0
  679. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts +83 -0
  680. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -0
  681. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +294 -0
  682. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts +22 -0
  683. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -0
  684. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +524 -0
  685. package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts +22 -0
  686. package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts.map +1 -0
  687. package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.js +517 -0
  688. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.d.ts +70 -0
  689. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.d.ts.map +1 -0
  690. package/src/shade/renderer/particles/graph/groups/particle_groups_utility.js +161 -0
  691. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts +8 -0
  692. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -0
  693. package/src/shade/renderer/particles/graph/groups/simplex_reference.js +185 -0
  694. package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts +88 -0
  695. package/src/shade/renderer/particles/graph/infer_particle_graph_types.d.ts.map +1 -0
  696. package/src/shade/renderer/particles/graph/infer_particle_graph_types.js +234 -0
  697. package/src/shade/renderer/particles/graph/make_particle_group.d.ts +98 -0
  698. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -0
  699. package/src/shade/renderer/particles/graph/make_particle_group.js +409 -0
  700. package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts +17 -0
  701. package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts.map +1 -0
  702. package/src/shade/renderer/particles/graph/particle_compare_ops.js +22 -0
  703. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts +11 -4
  704. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
  705. package/src/shade/renderer/particles/graph/particle_graph_authoring.js +121 -108
  706. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +58 -0
  707. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -0
  708. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +49 -0
  709. package/src/shade/renderer/particles/graph/particle_graph_distributions.d.ts +29 -0
  710. package/src/shade/renderer/particles/graph/particle_graph_distributions.d.ts.map +1 -0
  711. package/src/shade/renderer/particles/graph/particle_graph_distributions.js +170 -0
  712. package/src/shade/renderer/particles/graph/particle_graph_json.d.ts +87 -0
  713. package/src/shade/renderer/particles/graph/particle_graph_json.d.ts.map +1 -0
  714. package/src/shade/renderer/particles/graph/particle_graph_json.js +196 -0
  715. package/src/shade/renderer/particles/graph/particle_group_json.d.ts +86 -0
  716. package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -0
  717. package/src/shade/renderer/particles/graph/particle_group_json.js +182 -0
  718. package/src/shade/renderer/particles/graph/particle_group_library.d.ts +33 -0
  719. package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -0
  720. package/src/shade/renderer/particles/graph/particle_group_library.js +75 -0
  721. package/src/shade/renderer/particles/graph/particle_node_library.d.ts +37 -0
  722. package/src/shade/renderer/particles/graph/particle_node_library.d.ts.map +1 -0
  723. package/src/shade/renderer/particles/graph/particle_node_library.js +64 -0
  724. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +186 -0
  725. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -0
  726. package/src/shade/renderer/particles/graph/particle_node_parameters.js +312 -0
  727. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts +30 -0
  728. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -0
  729. package/src/shade/renderer/particles/graph/particle_node_presentation.js +342 -0
  730. package/src/shade/renderer/particles/graph/particle_ramp.d.ts +230 -0
  731. package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -0
  732. package/src/shade/renderer/particles/graph/particle_ramp.js +403 -0
  733. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +72 -0
  734. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -0
  735. package/src/shade/renderer/particles/graph/validate_particle_graph.js +495 -0
  736. package/src/shade/renderer/particles/graph_particles.d.ts +98 -69
  737. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  738. package/src/shade/renderer/particles/graph_particles.js +277 -81
  739. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +107 -0
  740. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -0
  741. package/src/shade/renderer/particles/graph_particles_avboit.js +313 -0
  742. package/src/shade/renderer/particles/graph_particles_billboard.d.ts +37 -0
  743. package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -0
  744. package/src/shade/renderer/particles/graph_particles_billboard.js +93 -0
  745. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +83 -21
  746. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  747. package/src/shade/renderer/particles/isa/InstructionStream.js +186 -48
  748. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts +13 -10
  749. package/src/shade/renderer/particles/isa/ParticleAssembler.d.ts.map +1 -1
  750. package/src/shade/renderer/particles/isa/ParticleAssembler.js +30 -26
  751. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +74 -21
  752. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
  753. package/src/shade/renderer/particles/isa/ParticleProgram.js +131 -81
  754. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +372 -22
  755. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  756. package/src/shade/renderer/particles/isa/ParticleVMISA.js +694 -66
  757. package/src/shade/renderer/particles/isa/particle_assembly.d.ts +173 -0
  758. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -0
  759. package/src/shade/renderer/particles/isa/particle_assembly.js +1214 -0
  760. package/src/shade/renderer/particles/isa/validate_particle_program.d.ts +9 -0
  761. package/src/shade/renderer/particles/isa/validate_particle_program.d.ts.map +1 -0
  762. package/src/shade/renderer/particles/isa/validate_particle_program.js +128 -0
  763. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +48 -3
  764. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  765. package/src/shade/renderer/particles/layout/ParticleLayout.js +101 -5
  766. package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts +77 -0
  767. package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -0
  768. package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +219 -0
  769. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts +83 -0
  770. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -0
  771. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +283 -0
  772. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +133 -0
  773. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts.map +1 -0
  774. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +334 -0
  775. package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts +117 -0
  776. package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts.map +1 -0
  777. package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +70 -0
  778. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts +97 -0
  779. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -0
  780. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +462 -0
  781. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts +116 -0
  782. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts.map +1 -0
  783. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +687 -0
  784. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +57 -0
  785. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -0
  786. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +860 -0
  787. package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts +115 -0
  788. package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts.map +1 -0
  789. package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.js +264 -0
  790. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +199 -0
  791. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -0
  792. package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +477 -0
  793. package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +100 -0
  794. package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts.map +1 -0
  795. package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +236 -0
  796. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +371 -0
  797. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -0
  798. package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +764 -0
  799. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +128 -0
  800. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -0
  801. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +376 -0
  802. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +43 -0
  803. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -0
  804. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +337 -0
  805. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +107 -0
  806. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -0
  807. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +166 -0
  808. package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts +99 -0
  809. package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -0
  810. package/src/shade/renderer/particles/optimizer/pass_allocate_registers.js +313 -0
  811. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +12 -0
  812. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -0
  813. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +198 -0
  814. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts +4 -0
  815. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -0
  816. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.js +51 -0
  817. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +23 -0
  818. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -0
  819. package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +678 -0
  820. package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts +22 -0
  821. package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -0
  822. package/src/shade/renderer/particles/optimizer/pass_inline_constants.js +221 -0
  823. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts +4 -0
  824. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -0
  825. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +63 -0
  826. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts +4 -0
  827. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -0
  828. package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +87 -0
  829. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts +4 -0
  830. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -0
  831. package/src/shade/renderer/particles/optimizer/pass_peephole.js +392 -0
  832. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts +4 -0
  833. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -0
  834. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +361 -0
  835. package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts +4 -0
  836. package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -0
  837. package/src/shade/renderer/particles/optimizer/pass_schedule.js +244 -0
  838. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts +4 -0
  839. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -0
  840. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +154 -0
  841. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +151 -0
  842. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -0
  843. package/src/shade/renderer/particles/particle_test_fixtures.js +229 -0
  844. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +206 -64
  845. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  846. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +404 -83
  847. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +109 -0
  848. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -0
  849. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +127 -0
  850. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +249 -0
  851. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -0
  852. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +425 -0
  853. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +77 -18
  854. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
  855. package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +130 -0
  856. package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -0
  857. package/src/shade/renderer/particles/runtime/ProgramHeap.js +595 -0
  858. package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts +91 -0
  859. package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts.map +1 -0
  860. package/src/shade/renderer/particles/runtime/ProgramPlacement.js +106 -0
  861. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +9 -6
  862. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  863. package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -19
  864. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts +17 -0
  865. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -0
  866. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +75 -0
  867. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +20 -0
  868. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -0
  869. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +94 -0
  870. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +1 -2
  871. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +1 -1
  872. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +1 -2
  873. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +11 -0
  874. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +1 -0
  875. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +13 -0
  876. package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts +28 -0
  877. package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts.map +1 -0
  878. package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.js +136 -0
  879. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.d.ts +17 -0
  880. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.d.ts.map +1 -0
  881. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_age.js +22 -0
  882. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts +14 -0
  883. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.d.ts.map +1 -0
  884. package/src/shade/renderer/particles/shaders/chunk_particle_emitter_world_sphere.js +23 -0
  885. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +1 -1
  886. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.d.ts +18 -0
  887. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.d.ts.map +1 -0
  888. package/src/shade/renderer/particles/shaders/chunk_particle_scene_view_depth.js +24 -0
  889. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts +26 -0
  890. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.d.ts.map +1 -0
  891. package/src/shade/renderer/particles/shaders/chunk_particle_setup_context.js +59 -0
  892. package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts +35 -0
  893. package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts.map +1 -0
  894. package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.js +133 -0
  895. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +14 -0
  896. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -0
  897. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +153 -0
  898. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts +3 -0
  899. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.d.ts.map +1 -0
  900. package/src/shade/renderer/particles/shaders/shader_particle_avboit_occupancy.js +124 -0
  901. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts +19 -0
  902. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -0
  903. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +147 -0
  904. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +27 -8
  905. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  906. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +43 -68
  907. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts +33 -0
  908. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -0
  909. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +114 -0
  910. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts +5 -0
  911. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.d.ts.map +1 -0
  912. package/src/shade/renderer/particles/shaders/shader_particle_emitter_tick.js +216 -0
  913. package/src/shade/renderer/particles/shaders/shader_particle_finalize.d.ts.map +1 -1
  914. package/src/shade/renderer/particles/shaders/shader_particle_finalize.js +7 -3
  915. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +1 -1
  916. package/src/shade/renderer/particles/shaders/shader_particle_render.js +132 -197
  917. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +8 -0
  918. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  919. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +42 -56
  920. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts +45 -0
  921. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -0
  922. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +123 -0
  923. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.d.ts +26 -0
  924. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.d.ts.map +1 -0
  925. package/src/shade/renderer/particles/shaders/shader_particle_spawn_commands.js +66 -0
  926. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +51 -0
  927. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -0
  928. package/src/shade/renderer/particles/sort/graph_particle_sort.js +120 -0
  929. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts +1 -1
  930. package/src/shade/renderer/particles/sort/shader_particle_sort.d.ts.map +1 -1
  931. package/src/shade/renderer/particles/sort/shader_particle_sort.js +21 -36
  932. package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts +6 -0
  933. package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -0
  934. package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +16 -0
  935. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +6 -3
  936. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  937. package/src/shade/renderer/particles/vm/ParticleVMReference.js +285 -154
  938. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  939. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +264 -170
  940. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts +43 -0
  941. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts.map +1 -0
  942. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.js +55 -0
  943. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts +62 -0
  944. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts.map +1 -0
  945. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.js +86 -0
  946. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +1 -2
  947. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
  948. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +0 -3
  949. package/src/shade/renderer/postprocess/dof/gather/DepthOfFieldU.js +1 -1
  950. package/src/shade/renderer/postprocess/dof/raymarch/DepthOfField.js +1 -1
  951. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  952. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  953. package/src/shade/renderer/postprocess/nss/NSS.js +3 -2
  954. package/src/shade/renderer/postprocess/nss/generate_NSS_WEIGHTS_ACTUAL.js +3 -2
  955. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +87 -0
  956. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -0
  957. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +61 -0
  958. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +179 -0
  959. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +27 -2
  960. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts +9 -2
  961. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  962. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +12 -3
  963. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts +18 -0
  964. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts.map +1 -0
  965. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js +58 -0
  966. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +25 -1
  967. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  968. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +69 -10
  969. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -1
  970. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +10 -4
  971. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
  972. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +4 -39
  973. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +7 -2
  974. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  975. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +16 -2
  976. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts +3 -3
  977. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.d.ts.map +1 -1
  978. package/src/shade/renderer/scene/optimization/geometry/geometry_deduplicate.js +29 -23
  979. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts +2 -2
  980. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts.map +1 -1
  981. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js +3 -3
  982. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts +4 -4
  983. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.d.ts.map +1 -1
  984. package/src/shade/renderer/scene/optimization/geometry/internal/cover_greedy.js +2 -2
  985. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.d.ts +2 -2
  986. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.d.ts.map +1 -1
  987. package/src/shade/renderer/scene/optimization/geometry/internal/match_refit_validate.js +2 -2
  988. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.d.ts +7 -7
  989. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.d.ts.map +1 -1
  990. package/src/shade/renderer/scene/optimization/geometry/internal/match_solve_transform.js +79 -71
  991. package/src/shade/renderer/shader/chunk/math/chunk_lower_bound_branchless.d.ts.map +1 -1
  992. package/src/shade/renderer/shader/chunk/math/chunk_lower_bound_branchless.js +3 -1
  993. package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts +22 -0
  994. package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts.map +1 -0
  995. package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.js +32 -0
  996. package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts +9 -0
  997. package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts.map +1 -0
  998. package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.js +19 -0
  999. package/src/shade/renderer/shader/chunk/noise/psrdnoise/README.md +65 -0
  1000. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts +24 -0
  1001. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts.map +1 -0
  1002. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.js +83 -0
  1003. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts +25 -0
  1004. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts.map +1 -0
  1005. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.js +42 -0
  1006. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts +31 -0
  1007. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts.map +1 -0
  1008. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.js +80 -0
  1009. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts +26 -0
  1010. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts.map +1 -0
  1011. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.js +109 -0
  1012. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts +38 -0
  1013. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts.map +1 -0
  1014. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.js +129 -0
  1015. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts +21 -0
  1016. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts.map +1 -0
  1017. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.js +35 -0
  1018. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts +19 -0
  1019. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts.map +1 -0
  1020. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.js +28 -0
  1021. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts +13 -0
  1022. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts.map +1 -0
  1023. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.js +22 -0
  1024. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts +22 -0
  1025. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts.map +1 -0
  1026. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.js +59 -0
  1027. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts +23 -0
  1028. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts.map +1 -0
  1029. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.js +74 -0
  1030. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.d.ts +13 -3
  1031. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.d.ts.map +1 -1
  1032. package/src/shade/renderer/shader/chunk/random/chunk_hash_to_float01.js +15 -5
  1033. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.d.ts +8 -0
  1034. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.d.ts.map +1 -1
  1035. package/src/shade/renderer/shader/chunk/random/chunk_random_uint.js +15 -5
  1036. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.d.ts +7 -0
  1037. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.d.ts.map +1 -1
  1038. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg.js +17 -7
  1039. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.d.ts +17 -0
  1040. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.d.ts.map +1 -0
  1041. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_advance.js +26 -0
  1042. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.d.ts +15 -0
  1043. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.d.ts.map +1 -0
  1044. package/src/shade/renderer/shader/chunk/random/pcg/chunk_pcg_output.js +26 -0
  1045. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  1046. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +8 -2
  1047. package/src/shade/renderer/shadow/map/PointLightShadowmap.d.ts.map +1 -1
  1048. package/src/shade/renderer/shadow/map/PointLightShadowmap.js +7 -2
  1049. package/src/shade/renderer/shadow/map/SpotLightShadowmap.d.ts.map +1 -1
  1050. package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +3 -15
  1051. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.d.ts.map +1 -1
  1052. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +10 -4
  1053. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
  1054. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +7 -2
  1055. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +2 -2
  1056. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +3 -3
  1057. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  1058. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +3 -3
  1059. package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts +34 -1
  1060. package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts.map +1 -1
  1061. package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +41 -1
  1062. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +3 -2
  1063. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  1064. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +115 -15
  1065. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  1066. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +35 -4
  1067. package/src/view/minimap/Minimap.d.ts.map +1 -1
  1068. package/src/view/minimap/Minimap.js +227 -225
  1069. package/src/view/minimap/MinimapCanvasView.js +3 -3
  1070. package/src/view/minimap/MinimapMarker.d.ts +45 -0
  1071. package/src/view/minimap/MinimapMarker.d.ts.map +1 -0
  1072. package/src/view/minimap/MinimapMarker.js +80 -0
  1073. package/src/view/minimap/MinimapMarkerCollection.d.ts +6 -5
  1074. package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
  1075. package/src/view/minimap/MinimapMarkerCollection.js +6 -6
  1076. package/src/view/minimap/MinimapMarkerSerializationAdapter.d.ts +19 -0
  1077. package/src/view/minimap/MinimapMarkerSerializationAdapter.d.ts.map +1 -0
  1078. package/src/view/minimap/MinimapMarkerSerializationAdapter.js +42 -0
  1079. package/src/view/minimap/dom/MinimapCameraView.d.ts +1 -1
  1080. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  1081. package/src/view/minimap/dom/MinimapCameraView.js +18 -4
  1082. package/src/view/minimap/dom/MinimapMarkerView.js +3 -3
  1083. package/src/view/minimap/gl/MarkerGL.js +3 -3
  1084. package/src/view/util/DomLayoutFrame.d.ts +53 -0
  1085. package/src/view/util/DomLayoutFrame.d.ts.map +1 -0
  1086. package/src/view/util/DomLayoutFrame.js +122 -0
  1087. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts +0 -15
  1088. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts.map +0 -1
  1089. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.js +0 -19
  1090. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts +0 -45
  1091. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts.map +0 -1
  1092. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.js +0 -241
  1093. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts +0 -24
  1094. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts.map +0 -1
  1095. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.js +0 -40
  1096. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts +0 -19
  1097. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts.map +0 -1
  1098. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.js +0 -28
  1099. package/src/engine/ecs/util/hideEntityGracefully.d.ts +0 -9
  1100. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +0 -1
  1101. package/src/engine/ecs/util/hideEntityGracefully.js +0 -196
  1102. package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts +0 -14
  1103. package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts.map +0 -1
  1104. package/src/shade/renderer/particles/cull/chunk_particle_cull.js +0 -38
  1105. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +0 -156
  1106. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +0 -1
  1107. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.js +0 -214
  1108. package/src/shade/renderer/particles/particle_prototype.d.ts.map +0 -1
  1109. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +0 -43
  1110. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +0 -1
  1111. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.js +0 -86
  1112. package/src/shade/renderer/particles/runtime/ProgramArena.js +0 -115
  1113. package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts +0 -34
  1114. package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts.map +0 -1
  1115. package/src/shade/renderer/particles/runtime/spawn_request_encoding.js +0 -52
  1116. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +0 -22
  1117. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +0 -1
  1118. package/src/shade/renderer/particles/shaders/chunk_particle_context.js +0 -58
@@ -0,0 +1,216 @@
1
+ # Particle effect editor — playground
2
+
3
+ Both layers of the particle editor over one effect, with the effect running next to them.
4
+
5
+ ```bash
6
+ npm run dev --workspace @woosh/meep-engine
7
+ ```
8
+
9
+ then open <http://localhost:5173/src/shade/playground/particle_editor/index.html>.
10
+
11
+ Unlike `../particle_system/`, this page needs **no WebGPU at all**: the preview runs the effect's
12
+ compiled bytecode on the CPU through the reference VM. It works in any browser that can run modules,
13
+ Claude Code's in-app pane included.
14
+
15
+ ## The two layers
16
+
17
+ The engine compiles a particle effect from a node graph down to bytecode for a small VM, and this
18
+ edits it at both altitudes.
19
+
20
+ **Graph** is the authoring layer: two node graphs, one per lifecycle phase.
21
+
22
+ - **INIT** runs once per particle, when it spawns. **UPDATE** runs once per frame per live particle.
23
+ Both are kept built, so switching between them does not lose a camera or a selection.
24
+ - **Getting around**: drag with the **right** button — or the middle one — to pan, and the wheel
25
+ zooms about the cursor. Drag with the **left** button over open canvas and you pull a selection
26
+ box instead: it takes every node it touches and every wire it holds whole, `Shift` adds to what
27
+ was selected, `Ctrl` toggles what the box covers, and the box says which of the three it is
28
+ while you are still holding it. Which button began the press decides which gesture it is, and
29
+ how far it travelled decides whether it was a press or a drag — so a right press that stays put
30
+ is the menu below and one that moves is a pan, the way Unreal's Blueprint canvas arranges the
31
+ same three gestures.
32
+ - **Right-click the canvas** to add a node. The library opens under the cursor with the caret
33
+ already in a search field and the first match already chosen: type a few letters, press Enter, and
34
+ the node lands at the point that was clicked with the defaults its type declares, so it compiles
35
+ the moment it arrives. Arrow keys move the choice; Escape closes. Nodes are listed and headed by
36
+ what they are called rather than by the mnemonic they compile as — "Divide", not `div` — each with
37
+ the glyph its type carries; both are searched, so looking for either finds it.
38
+ - **Copy, paste, duplicate.** `Ctrl+C` takes a copy of the selected nodes and of every wire they hold
39
+ whole — a wire with one end outside the selection is not brought along, because the node it reached
40
+ is not part of what was copied. `Ctrl+V` puts it in the middle of what you are looking at, keeping
41
+ the arrangement it was copied in; a repeat paste steps aside so copies do not hide each other.
42
+ `Ctrl+D` puts a second of the selection beside it and leaves the clipboard alone. Each is one step
43
+ on the undo timeline, and what lands is what is selected afterwards, ready to be dragged where it
44
+ is wanted. One clipboard serves both phases and every group body, so a copy taken in INIT pastes in
45
+ UPDATE. It is the editor's own clipboard rather than the system one: what it holds is node types,
46
+ which only mean anything to a canvas that shares the library.
47
+ - **An input holds one wire.** Drop a second one on it and it replaces the first, in one step on the
48
+ undo timeline — the editor cannot be made to put two sources on an input. Drag *out* of an input
49
+ that already has one and you are holding that wire rather than making another: let it go on
50
+ another input to move it there, on the port it came from to leave it alone, and on open canvas to
51
+ take it off.
52
+ - **Drop a wire on empty canvas** and the same menu opens, narrowed to the types that have a port
53
+ which could take it — the ones with an input, when the wire came out of an output — and picking one
54
+ wires it up as it arrives. The node and the wire are one step on the undo timeline, because they
55
+ were one gesture.
56
+ - Some nodes are **groups**: a node made of other nodes, drawn with a doubled left edge. Double-click
57
+ one to open it — the canvas shows the group's own graph and the toolbar grows a breadcrumb back
58
+ out — and groups nest, so the breadcrumb does. The ones shipped with the editor are locked: one
59
+ body is shared by every instance in every effect, so they open to be read rather than changed.
60
+ Groups are flattened away before anything is compiled, so a group costs exactly what its contents
61
+ cost.
62
+ - **Make one**: select some nodes and press `Ctrl+G`, or the **Group** button. The wires that crossed
63
+ the selection become the group's ports, named after what they feed and typed by what the graph
64
+ resolved them to, and the group lands where the selection was with everything re-wired around it —
65
+ one step on the undo timeline. A group an author makes belongs to the effect: it is saved with it,
66
+ it is offered in the add-node menu like any other type, and it is unlocked, so opening it and
67
+ renaming it in the breadcrumb are both allowed. `Ctrl+Shift+G` puts one back.
68
+ A selection that something *outside* it runs in the middle of cannot become one node — the group
69
+ would have to run both before and after that thing — and the **Group** button says so rather than
70
+ letting you find out.
71
+ - A map of the whole graph sits in the bottom-right corner, with a frame around the part on screen.
72
+ Click or drag it to go somewhere; it draws the wires along the routes they actually take, so the
73
+ map and the canvas are the same picture. The `-` in its corner folds it away to a button, and both
74
+ phases fold together.
75
+ - Node parameters are edited in the node: four fields for a vector, a swatch and an alpha field for
76
+ a colour, a picker for an ISA enum, a picker of the effect's own attributes for an attribute
77
+ reference, `xyzw` for a swizzle.
78
+ - Two of them are **ramps**, edited as a picture. An **RGBA Gradient** (and an RGB one) is a strip of
79
+ the colour it produces with its stops underneath: drag a stop, click the lane to add one — in the
80
+ colour the gradient already is there, so adding never changes anything — and middle-click to remove.
81
+ A **Curve** is the unit square with its keys in it, and the picker under it decides the selected
82
+ key's tangents. Neither is sampled from a table at runtime: both are written out into the program as
83
+ arithmetic, which is what the **Code** tab shows. `Curve Table`, which *is* the table, is the other
84
+ node — it takes a row handle rather than a curve.
85
+ - The strip along the bottom lists every problem with the effect, from **both** phases, loudest
86
+ first. Click one to jump to the phase it is in and select the node; the node is outlined in the
87
+ graph too.
88
+ - **A node nothing reads is not a problem.** Only what reaches a sink is compiled, so half-built work
89
+ sitting next to a working graph cannot break it: such a node is dimmed, noted once at the bottom of
90
+ the strip, and nothing else found against it — an unbound input, a mistyped value — is reported at
91
+ all. The strip still says there are no problems, because there are none.
92
+
93
+ **Code** is the same effect as instructions.
94
+
95
+ - While the graph is authoritative this is that graph's lowering, read-only, and it re-lowers as the
96
+ graph changes. Register allocation, constant interning, the order the compiler chose — all of it
97
+ visible next to the graph that produced it.
98
+ - **Lower to assembly** hands authority to the text. From there the graph is still on screen and
99
+ still editable, but the program is what is written here. That is the only way to reach an encoding
100
+ the node library has no node for.
101
+ - Errors are listed with the line they are on, and that line is marked in the gutter.
102
+
103
+ The syntax is documented at the top of `renderer/particles/isa/particle_assembly.js`.
104
+
105
+ ## The preview
106
+
107
+ The right-hand panel runs the effect and draws one soft sprite per particle. It is the same bytecode
108
+ a device would run — `execute_particle_vm` is the executor the WGSL interpreter is written to match,
109
+ opcode for opcode and RNG bit for RNG bit — so what you are watching is the simulation, not an
110
+ impression of it.
111
+
112
+ What it is **not** is the renderer. There is no depth buffer, no lighting, no atlas, no flipbook and
113
+ no transparency pipeline; a billboard is a radial gradient, and order comes from a painter's sort
114
+ rather than from AVBOIT's voxel volume. For the real thing, `../particle_system/` draws the same kind
115
+ of effect through the engine's own `Renderer`. What this preview does show honestly is everything the
116
+ *effect* decides: where particles go, how long they live, how big they are, what colour they are,
117
+ what blend mode they use, and how many are alive at once.
118
+
119
+ Drag to orbit, wheel to dolly. `Pause` freezes the simulation without freezing the camera; `Restart`
120
+ drops every particle and starts the effect over.
121
+
122
+ **Editing a broken effect keeps the last program that compiled running**, and the overlay says so. A
123
+ graph is invalid for most of the time anyone spends wiring one, and a preview that blanked out would
124
+ be gone exactly when it is wanted.
125
+
126
+ ## What to try
127
+
128
+ - Change a `const` node's value in the graph and watch the plume change while you are still typing.
129
+ - Switch to **Code** and read what that graph became. Change the same number there instead — after
130
+ `Lower to assembly` — and watch the same thing happen from the other end.
131
+ - Break the assembly (misspell a mnemonic). The line is marked, the panel says `does not assemble`,
132
+ and the preview carries on with the last good program.
133
+ - Add an attribute in the inspector, then bind a render channel to it. Remove one that a channel was
134
+ bound to: the channel unbinds, and every node that named it is reported against the node.
135
+ - Drag the wire out of a bound input and drop it on the input below. It moves, rather than being
136
+ copied — and `Ctrl+Z` puts it back in one go. Drag it out again and let go over open canvas: it is
137
+ gone, and the menu opens offering what could take the value it was carrying.
138
+ - Drag a wire out of an output and let go over open canvas. Only the nodes that could take it are
139
+ offered; pick one and it arrives already wired.
140
+ - Drag a box around the four or five nodes that build the initial direction and press `Ctrl+G`. The graph gets
141
+ smaller and the program does not change at all — check it in **Code**. Open the group, rename it in
142
+ the breadcrumb, and watch the node on the canvas behind it change with it.
143
+ - Select the two or three nodes that make the initial speed, press `Ctrl+D`, and drag the copy
144
+ somewhere. Then `Ctrl+C`, switch to **UPDATE**, and `Ctrl+V`: the same nodes, wired the same way, in
145
+ the other phase. `Ctrl+Z` takes the whole paste back in one go.
146
+ - Add a `Simplex Noise 3D` and open it. Three hundred instructions of arithmetic, drawn — and read
147
+ only, because it is one of the library's own. `Curl Noise 4D` is twelve of those; the **Code** tab
148
+ is where to see what that means.
149
+ - Add a `Flow Noise 3D` instead and wire `alpha` to the elapsed time. It is the same kind of field
150
+ with two differences worth the instructions: its gradients turn as `alpha` moves, so the field
151
+ swirls in place rather than sliding past, and it hands back its own derivative alongside the value.
152
+ `Tiling Flow Noise 3D` is that with a period you can name, per axis.
153
+ - Drop an `RGBA Gradient` on a `Write Attribute` bound to `color`, wire `t` to the particle's
154
+ normalised age, and drag the stops while the preview runs. Then look at **Code**: the gradient is a
155
+ literal, a saturate and a multiply-add per stop, and there is no table anywhere.
156
+ - Set **blend** to `alpha` and back to `additive`. The preview composites accordingly.
157
+ - `Ctrl+Z` in the graph. Every edit — a wire, a move, a parameter, a node from the menu — is one
158
+ timeline.
159
+
160
+ ## Driving it without a person
161
+
162
+ The page is deliberately scriptable, because `requestAnimationFrame` is suspended in a hidden or
163
+ headless tab and the preview would otherwise never advance:
164
+
165
+ | handle | what it does |
166
+ |---|---|
167
+ | `__step(frames, dt)` | run exactly that many preview frames, return the live particle count |
168
+ | `__export()` | the whole document as JSON |
169
+ | `__import(json)` | replace the document with one |
170
+ | `__reset()` | forget the kept document and reload |
171
+ | `effect`, `view`, `actionProcessor` | the document, the root view, the undo timeline |
172
+
173
+ The document is kept in `localStorage` between reloads, so an effect survives a refresh.
174
+
175
+ ## Where the pieces live
176
+
177
+ The page owns almost nothing — it builds a document, mounts one view, and wires the window's size and
178
+ `localStorage`. Everything else is the editor's, and is built to be docked as panels rather than
179
+ used only here:
180
+
181
+ | what | where |
182
+ |---|---|
183
+ | the document both layers edit | `editor/particles/effect/ParticleEffectDocument.js` |
184
+ | the CPU preview simulation | `editor/particles/effect/ParticleReferenceSimulation.js` |
185
+ | graph layer | `editor/view/particles/effect/ParticleGraphEditorView.js` |
186
+ | what each node type is called and drawn as | `src/shade/renderer/particles/graph/particle_node_presentation.js` |
187
+ | the node library the menu offers | `src/shade/renderer/particles/graph/particle_node_library.js` |
188
+ | what a node group is, and its boundary | `src/shade/renderer/particles/graph/ParticleNodeGroup.js` |
189
+ | making one out of a selection | `src/shade/renderer/particles/graph/make_particle_group.js` |
190
+ | a group in a file | `src/shade/renderer/particles/graph/particle_group_json.js` |
191
+ | the groups the editor ships with | `src/shade/renderer/particles/graph/groups/` |
192
+ | a gradient and a curve, and the arithmetic they become | `src/shade/renderer/particles/graph/particle_ramp.js` |
193
+ | the controls those two are edited with | `editor/view/particles/effect/ParticleGradientEditorView.js`, `ParticleCurveEditorView.js` |
194
+ | code layer | `editor/view/particles/effect/ParticleCodeEditorView.js` |
195
+ | emitter + attributes | `editor/view/particles/effect/ParticleEmitterInspectorView.js` |
196
+ | preview | `editor/view/particles/effect/ParticlePreviewView.js` |
197
+ | the four assembled | `editor/view/particles/effect/ParticleEffectEditorView.js` |
198
+
199
+ Each panel takes nothing but the document, so an editor shell docks them individually and skips the
200
+ assembled view. They share one `ActionProcessor`; pass a host editor's own and particle authoring
201
+ lands on the application's undo timeline.
202
+
203
+ Styling is two plain CSS files — `editor/view/node-graph/node-graph.css` for the graph views and
204
+ `editor/view/particles/effect/particle-editor.css` for these panels — linked by this page's HTML.
205
+ Plain CSS rather than SCSS so a page with no sass toolchain can serve them; a host that compiles
206
+ `editor/style/editor.scss` includes them the same way.
207
+
208
+ ## Verifying it
209
+
210
+ ```bash
211
+ npx vitest run editor/particles/effect editor/view/particles editor/view/node-graph src/shade/renderer/particles/graph src/shade/renderer/particles/isa
212
+ ```
213
+
214
+ Those cover the document, the reference simulation, the four panels under jsdom, the node-graph base
215
+ they are built on, and the assembly language underneath both layers. What no spec here can see is the
216
+ picture, which is this page's job.
@@ -0,0 +1,76 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>meep — particle effect editor</title>
6
+
7
+ <link rel="stylesheet" href="/editor/view/node-graph/node-graph.css">
8
+ <link rel="stylesheet" href="/editor/view/particles/effect/particle-editor.css">
9
+
10
+ <style>
11
+ :root {
12
+ color-scheme: dark;
13
+
14
+ /* the editor's own tokens, so the panels theme as they would inside the editor shell */
15
+ --meep-panel-bg: #1a1e25;
16
+ --meep-header-bg: #22262e;
17
+ --meep-divider-color: #10131a;
18
+ --meep-fg: #d6dae0;
19
+ --meep-fg-muted: #8b939f;
20
+ --meep-accent: #2d7dd2;
21
+ --meep-error: #ff7a7a;
22
+ --meep-warning: #e2b341;
23
+ --meep-font: 12px 'Segoe UI', system-ui, sans-serif;
24
+ --meep-graph-bg: #12151b;
25
+ --meep-graph-bg-glow: #1a1e26;
26
+ --meep-graph-node-bg: #232830;
27
+ --meep-graph-node-header: #2b313b;
28
+ --meep-graph-node-border: #363c46;
29
+ --meep-graph-input-bg: #171b21;
30
+ }
31
+
32
+ * { box-sizing: border-box; }
33
+
34
+ html, body {
35
+ height: 100%;
36
+ margin: 0;
37
+ overflow: hidden;
38
+ background: var(--meep-panel-bg);
39
+ color: var(--meep-fg);
40
+ font: var(--meep-font);
41
+ }
42
+
43
+ #root {
44
+ position: relative;
45
+ width: 100%;
46
+ height: 100%;
47
+ }
48
+
49
+ #message {
50
+ position: fixed;
51
+ inset: 0;
52
+ display: none;
53
+ align-items: center;
54
+ justify-content: center;
55
+ padding: 32px;
56
+ text-align: center;
57
+ background: #0a0d12e6;
58
+ color: var(--meep-error);
59
+ font-size: 15px;
60
+ white-space: pre-wrap;
61
+ z-index: 100;
62
+ }
63
+
64
+ #message:not(:empty) { display: flex; }
65
+ </style>
66
+ </head>
67
+ <body>
68
+
69
+ <div id="root"></div>
70
+
71
+ <div id="message"></div>
72
+
73
+ <script type="module" src="./main.js"></script>
74
+
75
+ </body>
76
+ </html>
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/particle_editor/main.js"],"names":[],"mappings":""}
@@ -0,0 +1,139 @@
1
+ import { ActionProcessor } from "../../../core/process/undo/ActionProcessor.js";
2
+ import { NodeDescriptionVisualRegistry } from "../../../core/model/node-graph/visual/NodeDescriptionVisualRegistry.js";
3
+ import { PARTICLE_NODE_REGISTRY } from "../../renderer/particles/graph/ParticleNodeRegistry.js";
4
+ import "../../renderer/particles/graph/particle_node_library.js";
5
+ import { make_starter_particle_effect } from "../../../../editor/particles/effect/make_starter_particle_effect.js";
6
+ import { ParticleEffectDocument } from "../../../../editor/particles/effect/ParticleEffectDocument.js";
7
+ import {
8
+ ParticleEffectEditorView
9
+ } from "../../../../editor/view/particles/effect/ParticleEffectEditorView.js";
10
+
11
+ /**
12
+ * The particle effect editor, on a page of its own.
13
+ *
14
+ * Both authoring layers and the live preview, over one {@link ParticleEffectDocument} — which is the
15
+ * whole point of the page: the graph, the instructions it compiles to, the emitter settings and the
16
+ * effect running are four views of one thing, and an edit in any of them is visible in the rest
17
+ * before you have finished making it.
18
+ *
19
+ * The page owns almost nothing. It builds a document, mounts
20
+ * {@link ParticleEffectEditorView} over the whole window, and wires the browser-shaped edges the
21
+ * views deliberately do not have: the window's size, the address bar, and load/save through a file.
22
+ *
23
+ * Serve the workspace with `npm run dev --workspace @woosh/meep-engine` and open
24
+ * `/src/shade/playground/particle_editor/index.html`. See README.md for what to look at.
25
+ */
26
+
27
+ /** Key the working document is kept under between reloads. @type {string} */
28
+ const STORAGE_KEY = "meep.particle_editor.document";
29
+
30
+ const element = id => document.getElementById(id);
31
+
32
+ function main() {
33
+ const root = element("root");
34
+
35
+ const visualRegistry = new NodeDescriptionVisualRegistry();
36
+
37
+ PARTICLE_NODE_REGISTRY.getNodesAsArray().forEach(description => visualRegistry.generate(description));
38
+
39
+ const effect = restore(visualRegistry) ?? make_starter_particle_effect();
40
+
41
+ const actionProcessor = new ActionProcessor({});
42
+
43
+ const view = new ParticleEffectEditorView({ effect, actionProcessor });
44
+
45
+ root.appendChild(view.el);
46
+
47
+ view.link();
48
+
49
+ const resize = () => view.size.set(root.clientWidth, root.clientHeight);
50
+
51
+ resize();
52
+
53
+ window.addEventListener("resize", resize);
54
+
55
+ // The document is kept across reloads, because an editor that loses an effect to a refresh is
56
+ // one nobody trusts with an effect. Debounced: an edit is a change on every keystroke.
57
+ let save_timer = 0;
58
+
59
+ effect.on.changed.add(() => {
60
+ clearTimeout(save_timer);
61
+
62
+ save_timer = setTimeout(() => {
63
+ try {
64
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(effect.toJSON()));
65
+ } catch (e) {
66
+ console.warn("could not keep the effect:", e.message);
67
+ }
68
+ }, 500);
69
+ });
70
+
71
+ // Everything a session might want to reach for, and the handles a scripted one needs. `__step`
72
+ // drives the preview by hand where requestAnimationFrame is suspended — a hidden or headless
73
+ // tab — which is what makes the page verifiable without a person watching it.
74
+ Object.assign(globalThis, {
75
+ effect,
76
+ view,
77
+ actionProcessor,
78
+ visualRegistry,
79
+
80
+ __step: (frames = 1, dt = 1 / 60) => {
81
+ for (let i = 0; i < frames; i++) {
82
+ view.preview.step(dt);
83
+ }
84
+
85
+ return view.preview.simulation.count;
86
+ },
87
+
88
+ __reset: () => {
89
+ localStorage.removeItem(STORAGE_KEY);
90
+ location.reload();
91
+ },
92
+
93
+ __export: () => JSON.stringify(effect.toJSON(), null, 2),
94
+
95
+ __import: json => {
96
+ effect.fromJSON(typeof json === "string" ? JSON.parse(json) : json, visualRegistry);
97
+ },
98
+ });
99
+ }
100
+
101
+ /**
102
+ * The document kept from the last session, if there is one and it still loads.
103
+ *
104
+ * A stored document that cannot be read is dropped rather than raised: it is almost always one
105
+ * written by an older build, and an editor that will not open because of it is worse than one that
106
+ * opens on the starting effect.
107
+ *
108
+ * @param {NodeDescriptionVisualRegistry} visualRegistry
109
+ * @returns {ParticleEffectDocument|null}
110
+ */
111
+ function restore(visualRegistry) {
112
+ let stored;
113
+
114
+ try {
115
+ stored = localStorage.getItem(STORAGE_KEY);
116
+ } catch (e) {
117
+ return null;
118
+ }
119
+
120
+ if (stored === null) {
121
+ return null;
122
+ }
123
+
124
+ try {
125
+ return new ParticleEffectDocument().fromJSON(JSON.parse(stored), visualRegistry);
126
+ } catch (e) {
127
+ console.warn("the kept effect could not be opened, starting fresh:", e.message);
128
+
129
+ return null;
130
+ }
131
+ }
132
+
133
+ try {
134
+ main();
135
+ } catch (e) {
136
+ console.error(e);
137
+
138
+ element("message").textContent = "The particle editor failed to start — see the console.\n\n" + e.message;
139
+ }