@woosh/meep-engine 3.16.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 (410) hide show
  1. package/editor/particles/effect/ParticleEffectDocument.d.ts +21 -6
  2. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  3. package/editor/particles/effect/ParticleEffectDocument.js +38 -17
  4. package/editor/view/node-graph/NodeGraphClipboard.d.ts +186 -0
  5. package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -0
  6. package/editor/view/node-graph/NodeGraphClipboard.js +231 -0
  7. package/editor/view/node-graph/NodeGraphEditorView.d.ts +59 -1
  8. package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
  9. package/editor/view/node-graph/NodeGraphEditorView.js +248 -5
  10. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  11. package/editor/view/node-graph/NodeGraphView.js +84 -8
  12. package/editor/view/node-graph/actions/connection_bind_actions.d.ts +23 -0
  13. package/editor/view/node-graph/actions/connection_bind_actions.d.ts.map +1 -0
  14. package/editor/view/node-graph/actions/connection_bind_actions.js +39 -0
  15. package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -1
  16. package/editor/view/particles/effect/ParticleCodeEditorView.js +4 -3
  17. package/editor/view/particles/effect/ParticleCurveEditorView.d.ts +20 -0
  18. package/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -0
  19. package/editor/view/particles/effect/ParticleCurveEditorView.js +574 -0
  20. package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
  21. package/editor/view/particles/effect/ParticleEmitterInspectorView.js +27 -1
  22. package/editor/view/particles/effect/ParticleGradientEditorView.d.ts +24 -0
  23. package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -0
  24. package/editor/view/particles/effect/ParticleGradientEditorView.js +472 -0
  25. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +5 -0
  26. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
  27. package/editor/view/particles/effect/ParticleGraphEditorView.js +61 -31
  28. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
  29. package/editor/view/particles/effect/ParticleNodeParametersView.js +33 -0
  30. package/editor/view/particles/effect/particle-editor.css +123 -35
  31. package/package.json +1 -1
  32. package/src/core/binary/allocator/OffsetAllocator.d.ts +25 -16
  33. package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
  34. package/src/core/binary/allocator/OffsetAllocator.js +10 -1
  35. package/src/core/collection/array/typed/float32_array_hash.d.ts +21 -0
  36. package/src/core/collection/array/typed/float32_array_hash.d.ts.map +1 -0
  37. package/src/core/collection/array/typed/float32_array_hash.js +38 -0
  38. package/src/core/graph/csr/CSRGraph.d.ts +8 -1
  39. package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
  40. package/src/core/graph/csr/CSRGraph.js +14 -6
  41. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +24 -0
  42. package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -1
  43. package/src/core/model/node-graph/visual/layout/LayoutProblem.js +27 -0
  44. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +26 -0
  45. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -1
  46. package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +28 -0
  47. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +92 -3
  48. package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -1
  49. package/src/core/model/node-graph/visual/layout/RouteGrid.js +405 -242
  50. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +50 -5
  51. package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -1
  52. package/src/core/model/node-graph/visual/layout/RouteSearch.js +160 -24
  53. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +7 -0
  54. package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -1
  55. package/src/core/model/node-graph/visual/layout/RouteSet.js +8 -0
  56. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +9 -3
  57. package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -1
  58. package/src/core/model/node-graph/visual/layout/layout_build_problem.js +7 -0
  59. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +9 -3
  60. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -1
  61. package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +17 -3
  62. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +9 -6
  63. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
  64. package/src/core/model/node-graph/visual/layout/layout_node_graph.js +49 -7
  65. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +11 -1
  66. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
  67. package/src/core/model/node-graph/visual/layout/layout_order_layers.js +135 -16
  68. package/src/core/model/node-graph/visual/layout/route_connections.d.ts +29 -0
  69. package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -1
  70. package/src/core/model/node-graph/visual/layout/route_connections.js +716 -309
  71. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +3 -2
  72. package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -1
  73. package/src/core/model/node-graph/visual/layout/route_grid_build.js +7 -15
  74. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +6 -0
  75. package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -1
  76. package/src/core/model/node-graph/visual/layout/route_nudge.js +42 -13
  77. package/src/engine/animation/AnimationUtils.js +246 -246
  78. package/src/engine/animation/Animations.js +74 -74
  79. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2078 -2078
  80. package/src/engine/ecs/EventType.d.ts +0 -1
  81. package/src/engine/ecs/EventType.js +1 -26
  82. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +1 -1
  83. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
  84. package/src/engine/ecs/ik/ik_write_local_rotation.js +3 -7
  85. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  86. package/src/engine/ecs/parent/EntityNode.js +4 -9
  87. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  88. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +360 -364
  89. package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts +41 -0
  90. package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts.map +1 -0
  91. package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js +40 -0
  92. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +8 -0
  93. package/src/engine/ecs/transform/t64_announce_change.d.ts +10 -7
  94. package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -1
  95. package/src/engine/ecs/transform/t64_announce_change.js +12 -12
  96. package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts +30 -0
  97. package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts.map +1 -0
  98. package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.js +29 -0
  99. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  100. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +13 -21
  101. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
  102. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +4 -8
  103. package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
  104. package/src/engine/graphics3/LightSystem.js +4 -8
  105. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
  106. package/src/engine/graphics3/MeshSystem.js +9 -19
  107. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
  108. package/src/engine/graphics3/ParticleEmitterSystem.js +4 -8
  109. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
  110. package/src/engine/graphics3/ShadedGeometrySystem.js +4 -10
  111. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +1 -1
  112. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
  113. package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +4 -8
  114. package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +218 -218
  115. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  116. package/src/engine/physics/ecs/PhysicsSystem.js +2 -5
  117. package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
  118. package/src/engine/sound/ecs/SoundListenerSystem.js +6 -8
  119. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +0 -4
  120. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
  121. package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +5 -11
  122. package/src/shade/playground/particle_editor/README.md +43 -2
  123. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  124. package/src/shade/playground/particle_system/particle_prototype.js +4 -5
  125. package/src/shade/playground/particle_system/particle_scene.js +4 -4
  126. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  127. package/src/shade/renderer/Renderer.js +13 -1
  128. package/src/shade/renderer/particles/DESIGN.md +104 -19
  129. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +64 -50
  130. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  131. package/src/shade/renderer/particles/GPUParticleSystem.js +176 -78
  132. package/src/shade/renderer/particles/ParticleConstants.d.ts +59 -23
  133. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  134. package/src/shade/renderer/particles/ParticleConstants.js +66 -23
  135. package/src/shade/renderer/particles/ParticleRenderMode.d.ts +19 -0
  136. package/src/shade/renderer/particles/ParticleRenderMode.d.ts.map +1 -0
  137. package/src/shade/renderer/particles/ParticleRenderMode.js +33 -0
  138. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
  139. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +167 -166
  140. package/src/shade/renderer/particles/data/particle_emitter_record.d.ts +37 -0
  141. package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -0
  142. package/src/shade/renderer/particles/data/particle_emitter_record.js +109 -0
  143. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +3 -3
  144. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -303
  145. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +18 -0
  146. package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
  147. package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +152 -133
  148. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +0 -11
  149. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +720 -621
  151. package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
  152. package/src/shade/renderer/particles/graph/compile_particle_graph.js +8 -3
  153. package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -1
  154. package/src/shade/renderer/particles/graph/flatten_particle_graph.js +244 -213
  155. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
  156. package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +6 -0
  157. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
  158. package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +294 -319
  159. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -1
  160. package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +524 -517
  161. package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts +22 -0
  162. package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts.map +1 -0
  163. package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.js +517 -0
  164. package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -1
  165. package/src/shade/renderer/particles/graph/groups/simplex_reference.js +185 -159
  166. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
  167. package/src/shade/renderer/particles/graph/make_particle_group.js +2 -20
  168. package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts +17 -0
  169. package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts.map +1 -0
  170. package/src/shade/renderer/particles/graph/particle_compare_ops.js +22 -0
  171. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +28 -8
  172. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -1
  173. package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +49 -25
  174. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +40 -0
  175. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
  176. package/src/shade/renderer/particles/graph/particle_node_parameters.js +312 -234
  177. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
  178. package/src/shade/renderer/particles/graph/particle_node_presentation.js +59 -3
  179. package/src/shade/renderer/particles/graph/particle_ramp.d.ts +230 -0
  180. package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -0
  181. package/src/shade/renderer/particles/graph/particle_ramp.js +403 -0
  182. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +7 -1
  183. package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -1
  184. package/src/shade/renderer/particles/graph/validate_particle_graph.js +66 -10
  185. package/src/shade/renderer/particles/graph_particles.d.ts +23 -69
  186. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  187. package/src/shade/renderer/particles/graph_particles.js +105 -262
  188. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  189. package/src/shade/renderer/particles/graph_particles_avboit.js +3 -2
  190. package/src/shade/renderer/particles/graph_particles_billboard.d.ts +37 -0
  191. package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -0
  192. package/src/shade/renderer/particles/graph_particles_billboard.js +93 -0
  193. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +51 -22
  194. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  195. package/src/shade/renderer/particles/isa/InstructionStream.js +98 -38
  196. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +49 -8
  197. package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
  198. package/src/shade/renderer/particles/isa/ParticleProgram.js +95 -150
  199. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +306 -64
  200. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  201. package/src/shade/renderer/particles/isa/ParticleVMISA.js +505 -136
  202. package/src/shade/renderer/particles/isa/particle_assembly.d.ts +36 -12
  203. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
  204. package/src/shade/renderer/particles/isa/particle_assembly.js +354 -139
  205. package/src/shade/renderer/particles/isa/validate_particle_program.d.ts +9 -0
  206. package/src/shade/renderer/particles/isa/validate_particle_program.d.ts.map +1 -0
  207. package/src/shade/renderer/particles/isa/validate_particle_program.js +128 -0
  208. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +23 -0
  209. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  210. package/src/shade/renderer/particles/layout/ParticleLayout.js +68 -0
  211. package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts +77 -0
  212. package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -0
  213. package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +219 -0
  214. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts +83 -0
  215. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -0
  216. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +283 -0
  217. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +133 -0
  218. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts.map +1 -0
  219. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +334 -0
  220. package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts +117 -0
  221. package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts.map +1 -0
  222. package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +70 -0
  223. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts +97 -0
  224. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -0
  225. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +462 -0
  226. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts +116 -0
  227. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts.map +1 -0
  228. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +687 -0
  229. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +57 -0
  230. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -0
  231. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +860 -0
  232. package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts +115 -0
  233. package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts.map +1 -0
  234. package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.js +264 -0
  235. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +81 -42
  236. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
  237. package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +477 -478
  238. package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +100 -0
  239. package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts.map +1 -0
  240. package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +236 -0
  241. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +139 -59
  242. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
  243. package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +764 -647
  244. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +40 -7
  245. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
  246. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +376 -213
  247. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +30 -3
  248. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
  249. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +337 -223
  250. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +24 -38
  251. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
  252. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +166 -206
  253. package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts +99 -0
  254. package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -0
  255. package/src/shade/renderer/particles/optimizer/pass_allocate_registers.js +313 -0
  256. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +3 -2
  257. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -1
  258. package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +198 -197
  259. package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -1
  260. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +19 -0
  261. package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
  262. package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +678 -561
  263. package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts +22 -0
  264. package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -0
  265. package/src/shade/renderer/particles/optimizer/pass_inline_constants.js +221 -0
  266. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -1
  267. package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +63 -72
  268. package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -1
  269. package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +87 -86
  270. package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -1
  271. package/src/shade/renderer/particles/optimizer/pass_peephole.js +392 -271
  272. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -1
  273. package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +361 -268
  274. package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts +4 -0
  275. package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -0
  276. package/src/shade/renderer/particles/optimizer/pass_schedule.js +244 -0
  277. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -1
  278. package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +154 -151
  279. package/src/shade/renderer/particles/particle_test_fixtures.d.ts +20 -0
  280. package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -1
  281. package/src/shade/renderer/particles/particle_test_fixtures.js +229 -203
  282. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +99 -25
  283. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  284. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +438 -286
  285. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +109 -0
  286. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -0
  287. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +127 -0
  288. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +87 -102
  289. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
  290. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +184 -163
  291. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +26 -0
  292. package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
  293. package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +130 -0
  294. package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -0
  295. package/src/shade/renderer/particles/runtime/ProgramHeap.js +595 -0
  296. package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts +91 -0
  297. package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts.map +1 -0
  298. package/src/shade/renderer/particles/runtime/ProgramPlacement.js +106 -0
  299. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +5 -2
  300. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  301. package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -19
  302. package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts +28 -0
  303. package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts.map +1 -0
  304. package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.js +136 -0
  305. package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts +35 -0
  306. package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts.map +1 -0
  307. package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.js +133 -0
  308. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +18 -9
  309. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  310. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +20 -80
  311. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts +33 -0
  312. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -0
  313. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +114 -0
  314. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +8 -0
  315. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  316. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +33 -101
  317. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts +45 -0
  318. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -0
  319. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +123 -0
  320. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +51 -0
  321. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -0
  322. package/src/shade/renderer/particles/sort/graph_particle_sort.js +120 -0
  323. package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts +6 -0
  324. package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -0
  325. package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +16 -0
  326. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +4 -1
  327. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  328. package/src/shade/renderer/particles/vm/ParticleVMReference.js +261 -140
  329. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  330. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +217 -255
  331. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts +43 -0
  332. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts.map +1 -0
  333. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.js +55 -0
  334. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts +62 -0
  335. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts.map +1 -0
  336. package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.js +86 -0
  337. package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts +22 -0
  338. package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts.map +1 -0
  339. package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.js +32 -0
  340. package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts +9 -0
  341. package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts.map +1 -0
  342. package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.js +19 -0
  343. package/src/shade/renderer/shader/chunk/noise/psrdnoise/README.md +65 -0
  344. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts +24 -0
  345. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts.map +1 -0
  346. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.js +83 -0
  347. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts +25 -0
  348. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts.map +1 -0
  349. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.js +42 -0
  350. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts +31 -0
  351. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts.map +1 -0
  352. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.js +80 -0
  353. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts +26 -0
  354. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts.map +1 -0
  355. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.js +109 -0
  356. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts +38 -0
  357. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts.map +1 -0
  358. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.js +129 -0
  359. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts +21 -0
  360. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts.map +1 -0
  361. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.js +35 -0
  362. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts +19 -0
  363. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts.map +1 -0
  364. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.js +28 -0
  365. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts +13 -0
  366. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts.map +1 -0
  367. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.js +22 -0
  368. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts +22 -0
  369. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts.map +1 -0
  370. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.js +59 -0
  371. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts +23 -0
  372. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts.map +1 -0
  373. package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.js +74 -0
  374. package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts +34 -1
  375. package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts.map +1 -1
  376. package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +41 -1
  377. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +3 -2
  378. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  379. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +49 -10
  380. package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
  381. package/src/view/minimap/dom/MinimapCameraView.js +4 -9
  382. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts +0 -15
  383. package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts.map +0 -1
  384. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts +0 -45
  385. package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts.map +0 -1
  386. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts +0 -24
  387. package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts.map +0 -1
  388. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts +0 -19
  389. package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts.map +0 -1
  390. package/src/engine/ecs/transform/__probe.d.ts +0 -4
  391. package/src/engine/ecs/transform/__probe.d.ts.map +0 -1
  392. package/src/engine/ecs/util/hideEntityGracefully.d.ts +0 -9
  393. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +0 -1
  394. package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts +0 -27
  395. package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts.map +0 -1
  396. package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts +0 -14
  397. package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts.map +0 -1
  398. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +0 -156
  399. package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +0 -1
  400. package/src/shade/renderer/particles/runtime/Emitter.d.ts +0 -219
  401. package/src/shade/renderer/particles/runtime/Emitter.d.ts.map +0 -1
  402. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +0 -77
  403. package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +0 -1
  404. package/src/shade/renderer/particles/runtime/ProgramArena.js +0 -155
  405. package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts +0 -15
  406. package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts.map +0 -1
  407. package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts +0 -34
  408. package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts.map +0 -1
  409. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +0 -32
  410. package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +0 -1
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 3-D simplex noise with rotating gradients and an analytic derivative — `psrdnoise` without the
3
+ * `p`, for fields that never need to tile.
4
+ *
5
+ * Returns `vec4(noise, gradient.xyz)`: the noise value is in `.x`, in `[-1, 1]`, and `.yzw` is its
6
+ * exact gradient. Ask for only `.x` and the compiler drops the derivative.
7
+ *
8
+ * `alpha` turns every gradient in the field by that many radians about a per-corner pseudo-random
9
+ * axis. Animating it swirls the field in place, which with the gradient is what curl noise wants —
10
+ * see {@link chunk_psrdnoise3_kernel}.
11
+ *
12
+ * This is {@link chunk_psrdnoise3} with the wrap deleted, not a call into it with a zero period: it
13
+ * exists so a caller whose period is a runtime value it never sets does not pay for the branch and
14
+ * the modulo. It still repeats every 289 cells — that is the hash's modulus, not a choice — so it
15
+ * is "non-periodic" only in the sense that it does not tile to a period you name.
16
+ *
17
+ * psrdnoise (c) 2021 Stefan Gustavson and Ian McEwan. Published under the MIT license.
18
+ * @see https://github.com/stegu/psrdnoise/
19
+ * @type {CodeChunk}
20
+ */
21
+ export const chunk_srdnoise3: CodeChunk;
22
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
23
+ //# sourceMappingURL=chunk_srdnoise3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_srdnoise3.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8BAFU,SAAS,CAkDjB;0BAzEwB,gCAAgC"}
@@ -0,0 +1,74 @@
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+ import { chunk_psrdnoise3_kernel } from "./chunk_psrdnoise3_kernel.js";
3
+ import { chunk_psrdnoise3_skew } from "./chunk_psrdnoise3_skew.js";
4
+ import { chunk_psrdnoise3_unskew } from "./chunk_psrdnoise3_unskew.js";
5
+
6
+ /**
7
+ * 3-D simplex noise with rotating gradients and an analytic derivative — `psrdnoise` without the
8
+ * `p`, for fields that never need to tile.
9
+ *
10
+ * Returns `vec4(noise, gradient.xyz)`: the noise value is in `.x`, in `[-1, 1]`, and `.yzw` is its
11
+ * exact gradient. Ask for only `.x` and the compiler drops the derivative.
12
+ *
13
+ * `alpha` turns every gradient in the field by that many radians about a per-corner pseudo-random
14
+ * axis. Animating it swirls the field in place, which with the gradient is what curl noise wants —
15
+ * see {@link chunk_psrdnoise3_kernel}.
16
+ *
17
+ * This is {@link chunk_psrdnoise3} with the wrap deleted, not a call into it with a zero period: it
18
+ * exists so a caller whose period is a runtime value it never sets does not pay for the branch and
19
+ * the modulo. It still repeats every 289 cells — that is the hash's modulus, not a choice — so it
20
+ * is "non-periodic" only in the sense that it does not tile to a period you name.
21
+ *
22
+ * psrdnoise (c) 2021 Stefan Gustavson and Ian McEwan. Published under the MIT license.
23
+ * @see https://github.com/stegu/psrdnoise/
24
+ * @type {CodeChunk}
25
+ */
26
+ export const chunk_srdnoise3 = CodeChunk.from(
27
+ //language=WGSL
28
+ `
29
+ fn srdnoise3(
30
+ x: vec3<f32>,
31
+ alpha: f32
32
+ ) -> vec4<f32> {
33
+ let uvw = psrdnoise3_skew(x);
34
+
35
+ // which simplex we are in. i0 is the base corner of the skewed cube; o1 and o2 step to the
36
+ // second and third corners, found by rank-ordering u, v, w — the descending order of the
37
+ // fractional coordinates is exactly the order the tetrahedron's corners are traversed in
38
+ let i0 = floor(uvw);
39
+ let f0 = uvw - i0;
40
+
41
+ let gt_ = step(f0.xyx, f0.yzz);
42
+ let lt_ = 1.0 - gt_;
43
+ let gt = vec3<f32>(lt_.z, gt_.xy);
44
+ let lt = vec3<f32>(lt_.xy, gt_.z);
45
+ let o1 = min(gt, lt);
46
+ let o2 = max(gt, lt);
47
+
48
+ let i1 = i0 + o1;
49
+ let i2 = i0 + o2;
50
+ let i3 = i0 + vec3<f32>(1.0);
51
+
52
+ // the four corners back in texture space
53
+ let v0 = psrdnoise3_unskew(i0);
54
+ let v1 = psrdnoise3_unskew(i1);
55
+ let v2 = psrdnoise3_unskew(i2);
56
+ let v3 = psrdnoise3_unskew(i3);
57
+
58
+ return psrdnoise3_kernel(
59
+ vec4<f32>(i0.x, i1.x, i2.x, i3.x),
60
+ vec4<f32>(i0.y, i1.y, i2.y, i3.y),
61
+ vec4<f32>(i0.z, i1.z, i2.z, i3.z),
62
+ x - v0,
63
+ x - v1,
64
+ x - v2,
65
+ x - v3,
66
+ alpha
67
+ );
68
+ }
69
+ `, [
70
+ chunk_psrdnoise3_kernel,
71
+ chunk_psrdnoise3_skew,
72
+ chunk_psrdnoise3_unskew,
73
+ ]
74
+ );
@@ -16,6 +16,11 @@
16
16
  * emu.dispatch([0, 0, 0]); // global_invocation_id = (0,0,0)
17
17
  * emu.dispatch([1, 0, 0]); // global_invocation_id = (1,0,0)
18
18
  * // ... bindings now contain results
19
+ *
20
+ * Each dispatch is a fresh invocation: `var<private>` variables go back to their declared
21
+ * initializers first, as they do on the GPU. `var<workgroup>` variables do not — they belong to
22
+ * the workgroup, so lanes dispatched in sequence share them until {@link
23
+ * ComputeShaderEmulator#resetWorkgroup} is called.
19
24
  */
20
25
  export class ComputeShaderEmulator {
21
26
  /**
@@ -74,7 +79,9 @@ export class ComputeShaderEmulator {
74
79
  /**
75
80
  * Compile a {@link CodeChunk} (or a raw WGSL string) into a "library" object — every
76
81
  * top-level WGSL function becomes a method, every `var<private>` becomes a getter/setter
77
- * property, and every module-scope `const` becomes a read-only getter.
82
+ * property, and every module-scope `const` becomes a read-only getter. `reset_private()`
83
+ * puts the private variables back to their initial values; there is no dispatch here to do
84
+ * it for you, so call it between cases that must not see each other's state.
78
85
  *
79
86
  * No `@compute` entry is required. This is the one-line escape hatch for unit-testing pure
80
87
  * helper code (RNGs, hashes, packing, math) without wrapping each chunk in a shader skeleton.
@@ -116,6 +123,17 @@ export class ComputeShaderEmulator {
116
123
  * @type {object}
117
124
  */
118
125
  bindings: object;
126
+ /**
127
+ * Whether {@link dispatch} starts each thread with the module's `var<private>` variables
128
+ * back at their start-of-invocation values. On by default, because that is what a GPU
129
+ * invocation gets — see {@link resetPrivate}.
130
+ *
131
+ * Turn it off to simulate something the hardware cannot, such as watching a private RNG
132
+ * advance across a run of dispatches.
133
+ *
134
+ * @type {boolean}
135
+ */
136
+ resetPrivateOnDispatch: boolean;
119
137
  /**
120
138
  * @returns {string} the WGSL source.
121
139
  */
@@ -153,6 +171,21 @@ export class ComputeShaderEmulator {
153
171
  * variables start fresh. No-op for fragment-stage entries.
154
172
  */
155
173
  resetWorkgroup(): void;
174
+ /**
175
+ * Return every module-scope `var<private>` to the value it has at the start of a WGSL
176
+ * invocation — its declared initializer, or zero when it was declared without one.
177
+ *
178
+ * {@link dispatch} calls this for you, because that is what the GPU does: private variables
179
+ * are per-invocation, and one invocation never sees what another left in them. Set
180
+ * {@link resetPrivateOnDispatch} to `false` for the rare simulation that wants a run of
181
+ * dispatches to share private state, then call this by hand.
182
+ *
183
+ * The private-address-space counterpart of {@link resetWorkgroup} — but note the asymmetry:
184
+ * `var<workgroup>` state is shared by the lanes of a workgroup, so it is reset per workgroup
185
+ * and by the caller; `var<private>` state is not shared at all, so it is reset per dispatch
186
+ * and by default.
187
+ */
188
+ resetPrivate(): void;
156
189
  /**
157
190
  * Dispatch a single thread (point-wise simulation). The arguments are the entry function's
158
191
  * parameters, in declaration order — for example a `@builtin(global_invocation_id)` param of
@@ -1 +1 @@
1
- {"version":3,"file":"ComputeShaderEmulator.d.ts","sourceRoot":"","sources":["../../../../../src/shade/wgsl/emulator/ComputeShaderEmulator.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAoII;;;;;;;;;;OAUG;IACH,0BANW,MAAM;QAEe,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,qBAAqB,CAAC,CAa1C;IAED;;;;;;;;OAQG;IACH,iCANW,OAAO,wCAAwC,EAAE,aAAa;QAEzC,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,qBAAqB,CAAC,CAM1C;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,+BANW,OAAO,sCAAsC,EAAE,WAAW;QAErC,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,qBAAqB,CAAC,CAM1C;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,sCANW,OAAO,6CAA6C,EAAE,SAAS,GAAG,MAAM;QAEnD,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,MAAM,CAAC,CAS3B;IAvMD;;;;;;;;;;OAUG;IACH;QAL2B,MAAM,EAAtB,MAAM;QACU,MAAM,EAAtB,MAAM;QACU,QAAQ,EAAxB,MAAM;QACU,YAAY,EAA5B,MAAM;OAYhB;IA5BD;;;;OAIG;IACH,UAFU,MAAM,CAEF;IAyBd;;OAEG;IACH,qBAEC;IAED;;OAEG;IACH,uBAEC;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,qBAEC;IAED;;;OAGG;IACH,uBAIC;IAED;;;;;;;;;;;OAWG;IACH,kCAKC;;CA8FJ;2BAvP0B,kBAAkB"}
1
+ {"version":3,"file":"ComputeShaderEmulator.d.ts","sourceRoot":"","sources":["../../../../../src/shade/wgsl/emulator/ComputeShaderEmulator.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IAqKI;;;;;;;;;;OAUG;IACH,0BANW,MAAM;QAEe,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,qBAAqB,CAAC,CAa1C;IAED;;;;;;;;OAQG;IACH,iCANW,OAAO,wCAAwC,EAAE,aAAa;QAEzC,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,qBAAqB,CAAC,CAM1C;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,+BANW,OAAO,sCAAsC,EAAE,WAAW;QAErC,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,qBAAqB,CAAC,CAM1C;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,sCANW,OAAO,6CAA6C,EAAE,SAAS,GAAG,MAAM;QAEnD,MAAM,GAA3B,UAAU;QACO,YAAY,GAA7B,MAAM;QACJ,QAAQ,MAAM,CAAC,CAS3B;IA9ND;;;;;;;;;;OAUG;IACH;QAL2B,MAAM,EAAtB,MAAM;QACU,MAAM,EAAtB,MAAM;QACU,QAAQ,EAAxB,MAAM;QACU,YAAY,EAA5B,MAAM;OAYhB;IAxCD;;;;OAIG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;;;OASG;IACH,wBAFU,OAAO,CAEa;IAyB9B;;OAEG;IACH,qBAEC;IAED;;OAEG;IACH,uBAEC;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,wBAEC;IAED;;OAEG;IACH,oCAEC;IAED;;OAEG;IACH,+BAEC;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,qBAEC;IAED;;;OAGG;IACH,uBAIC;IAED;;;;;;;;;;;;;OAaG;IACH,qBAEC;IAED;;;;;;;;;;;OAWG;IACH,kCAQC;;CAgGJ;2BA/R0B,kBAAkB"}
@@ -21,6 +21,11 @@ import { WGSLLanguageCore } from "./WGSLLanguageCore.js";
21
21
  * emu.dispatch([0, 0, 0]); // global_invocation_id = (0,0,0)
22
22
  * emu.dispatch([1, 0, 0]); // global_invocation_id = (1,0,0)
23
23
  * // ... bindings now contain results
24
+ *
25
+ * Each dispatch is a fresh invocation: `var<private>` variables go back to their declared
26
+ * initializers first, as they do on the GPU. `var<workgroup>` variables do not — they belong to
27
+ * the workgroup, so lanes dispatched in sequence share them until {@link
28
+ * ComputeShaderEmulator#resetWorkgroup} is called.
24
29
  */
25
30
  export class ComputeShaderEmulator {
26
31
 
@@ -46,6 +51,18 @@ export class ComputeShaderEmulator {
46
51
  */
47
52
  bindings = {};
48
53
 
54
+ /**
55
+ * Whether {@link dispatch} starts each thread with the module's `var<private>` variables
56
+ * back at their start-of-invocation values. On by default, because that is what a GPU
57
+ * invocation gets — see {@link resetPrivate}.
58
+ *
59
+ * Turn it off to simulate something the hardware cannot, such as watching a private RNG
60
+ * advance across a run of dispatches.
61
+ *
62
+ * @type {boolean}
63
+ */
64
+ resetPrivateOnDispatch = true;
65
+
49
66
  /**
50
67
  * Construct directly when you already have the WGSL source string.
51
68
  *
@@ -135,6 +152,24 @@ export class ComputeShaderEmulator {
135
152
  }
136
153
  }
137
154
 
155
+ /**
156
+ * Return every module-scope `var<private>` to the value it has at the start of a WGSL
157
+ * invocation — its declared initializer, or zero when it was declared without one.
158
+ *
159
+ * {@link dispatch} calls this for you, because that is what the GPU does: private variables
160
+ * are per-invocation, and one invocation never sees what another left in them. Set
161
+ * {@link resetPrivateOnDispatch} to `false` for the rare simulation that wants a run of
162
+ * dispatches to share private state, then call this by hand.
163
+ *
164
+ * The private-address-space counterpart of {@link resetWorkgroup} — but note the asymmetry:
165
+ * `var<workgroup>` state is shared by the lanes of a workgroup, so it is reset per workgroup
166
+ * and by the caller; `var<private>` state is not shared at all, so it is reset per dispatch
167
+ * and by default.
168
+ */
169
+ resetPrivate() {
170
+ this.#module.reset_private();
171
+ }
172
+
138
173
  /**
139
174
  * Dispatch a single thread (point-wise simulation). The arguments are the entry function's
140
175
  * parameters, in declaration order — for example a `@builtin(global_invocation_id)` param of
@@ -148,6 +183,9 @@ export class ComputeShaderEmulator {
148
183
  * @returns {*}
149
184
  */
150
185
  dispatch(...mainArgs) {
186
+ if (this.resetPrivateOnDispatch) {
187
+ this.resetPrivate();
188
+ }
151
189
  if (this.#module.stage === 'fragment') {
152
190
  return this.#module.entry(this.bindings, ...mainArgs);
153
191
  }
@@ -223,7 +261,9 @@ export class ComputeShaderEmulator {
223
261
  /**
224
262
  * Compile a {@link CodeChunk} (or a raw WGSL string) into a "library" object — every
225
263
  * top-level WGSL function becomes a method, every `var<private>` becomes a getter/setter
226
- * property, and every module-scope `const` becomes a read-only getter.
264
+ * property, and every module-scope `const` becomes a read-only getter. `reset_private()`
265
+ * puts the private variables back to their initial values; there is no dispatch here to do
266
+ * it for you, so call it between cases that must not see each other's state.
227
267
  *
228
268
  * No `@compute` entry is required. This is the one-line escape hatch for unit-testing pure
229
269
  * helper code (RNGs, hashes, packing, math) without wrapping each chunk in a shader skeleton.
@@ -6,8 +6,9 @@ export class WGSLJavaScriptCompiler {
6
6
  * a shader module object. The shape depends on what the WGSL declared:
7
7
  *
8
8
  * - **Always present:** every top-level user function (e.g. `module.random()`),
9
- * every struct class (e.g. `module.Foo`), and a getter/setter property for each
10
- * `var<private>` and getter for each module-scope `const`.
9
+ * every struct class (e.g. `module.Foo`), a getter/setter property for each
10
+ * `var<private>` and getter for each module-scope `const`, and `reset_private()`,
11
+ * which returns every `var<private>` to its start-of-invocation value.
11
12
  * - **Compute-shader fields (only when a `@compute` entry is present):**
12
13
  * ```
13
14
  * {
@@ -1 +1 @@
1
- {"version":3,"file":"WGSLJavaScriptCompiler.d.ts","sourceRoot":"","sources":["../../../../../src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js"],"names":[],"mappings":"AAycA;IAEI;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,oBAFa,MAAM,CAMlB;CACJ;;UAjea,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS;WAClG,MAAM;WACN,MAAM;WACN,MAAM;WACN,MAAM;aACN,MAAM;cACN,QAAQ;YACR,MAAM"}
1
+ {"version":3,"file":"WGSLJavaScriptCompiler.d.ts","sourceRoot":"","sources":["../../../../../src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js"],"names":[],"mappings":"AA2cA;IAEI;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,oBAFa,MAAM,CAMlB;CACJ;;UApea,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS;WAClG,MAAM;WACN,MAAM;WACN,MAAM;WACN,MAAM;aACN,MAAM;cACN,QAAQ;YACR,MAAM"}
@@ -419,10 +419,12 @@ class Compiler {
419
419
 
420
420
  /**
421
421
  * Module-scope `var<private>` and `const` declarations, in declaration order.
422
- * Each entry is `{ name, kind: 'let' | 'const', code }` — `code` is the JS line emitted
423
- * verbatim; `name` and `kind` are also tracked so the returned module object can expose
424
- * them as getter/setter (or read-only) properties for testing.
425
- * @type {Array<{ name: string, kind: 'let' | 'const', code: string }>}
422
+ * Each entry is `{ name, kind: 'let' | 'const', code, init }` — `code` is the JS line
423
+ * emitted verbatim; `name` and `kind` are also tracked so the returned module object can
424
+ * expose them as getter/setter (or read-only) properties for testing, and `init` is the
425
+ * initializer expression on its own, which the private-state reset re-emits for the `let`
426
+ * ones (a `const` cannot be reassigned, and no invocation can disturb it).
427
+ * @type {Array<{ name: string, kind: 'let' | 'const', code: string, init: string }>}
426
428
  */
427
429
  this.privateGlobals = [];
428
430
 
@@ -464,8 +466,9 @@ export class WGSLJavaScriptCompiler {
464
466
  * a shader module object. The shape depends on what the WGSL declared:
465
467
  *
466
468
  * - **Always present:** every top-level user function (e.g. `module.random()`),
467
- * every struct class (e.g. `module.Foo`), and a getter/setter property for each
468
- * `var<private>` and getter for each module-scope `const`.
469
+ * every struct class (e.g. `module.Foo`), a getter/setter property for each
470
+ * `var<private>` and getter for each module-scope `const`, and `reset_private()`,
471
+ * which returns every `var<private>` to its start-of-invocation value.
469
472
  * - **Compute-shader fields (only when a `@compute` entry is present):**
470
473
  * ```
471
474
  * {
@@ -549,7 +552,12 @@ function compileTranslationUnit(c, root) {
549
552
  if (node.type === 'function_decl') emitFunction(c, node);
550
553
  }
551
554
 
552
- // 5) Entry-stage support code: the dispatch wrapper for any entry, plus a workgroup-state
555
+ // 5) The private-state reset. Emitted for every module, library ones included: a
556
+ // `var<private>` is per-invocation state on the GPU, and the JS `let` above outlives the
557
+ // dispatch that wrote it, so something has to put the initial values back.
558
+ emitPrivateStateReset(c);
559
+
560
+ // 6) Entry-stage support code: the dispatch wrapper for any entry, plus a workgroup-state
553
561
  // factory for @compute entries (fragment shaders have no var<workgroup>). Skipped entirely
554
562
  // in library mode (no entry attribute) so the resulting module is just a bag of pure
555
563
  // functions and globals.
@@ -560,7 +568,7 @@ function compileTranslationUnit(c, root) {
560
568
  emitEntryWrapper(c);
561
569
  }
562
570
 
563
- // 6) Build and return the module object.
571
+ // 7) Build and return the module object.
564
572
  emitModuleReturn(c);
565
573
 
566
574
  c.out.dedent();
@@ -571,8 +579,9 @@ function compileTranslationUnit(c, root) {
571
579
  * Emit the `return { ... }` block of the factory. Every top-level user function and struct
572
580
  * class is exposed by name; module-scope `var<private>` slots become getter/setter properties
573
581
  * (so tests can inspect or seed RNG state etc.), and module-scope `const`s become read-only
574
- * getters. When the WGSL had a `@compute` entry, the dispatch trio (`entry_name`,
575
- * `workgroup_size`, `param_names`, `entry`, `create_workgroup_state`) is included.
582
+ * getters. `reset_private` is always included. When the WGSL had a `@compute` entry, the dispatch
583
+ * trio (`entry_name`, `workgroup_size`, `param_names`, `entry`, `create_workgroup_state`) is
584
+ * included too.
576
585
  */
577
586
  function emitModuleReturn(c) {
578
587
  c.out.add('const __module__ = {};');
@@ -592,6 +601,8 @@ function emitModuleReturn(c) {
592
601
  }
593
602
  }
594
603
 
604
+ c.out.add('__module__.reset_private = __reset_private__;');
605
+
595
606
  if (c.entry !== null) {
596
607
  c.out.add(`__module__.entry_name = ${JSON.stringify(c.entry.name)};`);
597
608
  c.out.add(`__module__.stage = ${JSON.stringify(c.entry.stage)};`);
@@ -900,6 +911,7 @@ function collectGlobalVariable(c, node) {
900
911
  name,
901
912
  kind: 'let',
902
913
  code: `let ${name} = ${init_code};`,
914
+ init: init_code,
903
915
  });
904
916
  }
905
917
 
@@ -938,6 +950,7 @@ function collectGlobalValue(c, node) {
938
950
  name,
939
951
  kind: 'const',
940
952
  code: `const ${name} = ${expr.code};`,
953
+ init: expr.code,
941
954
  });
942
955
  }
943
956
 
@@ -945,6 +958,32 @@ function collectGlobalValue(c, node) {
945
958
  // Workgroup state factory + entry wrapper
946
959
  // =========================================================================
947
960
 
961
+ /**
962
+ * Emit `__reset_private__()`, which restores every module-scope `var<private>` to the value it
963
+ * would have at the start of a WGSL invocation — its declared initializer, or the type's zero
964
+ * value when it was declared without one.
965
+ *
966
+ * This is the private-address-space counterpart of {@link emitWorkgroupStateFactory}. The
967
+ * generated module keeps its private slots in `let` bindings that live as long as the module, so
968
+ * without this a second dispatch would start from whatever the first one left behind — state the
969
+ * GPU never carries.
970
+ *
971
+ * Module-scope `const`s are skipped: they are immutable in the generated JS and no invocation can
972
+ * disturb them.
973
+ *
974
+ * @param {Compiler} c
975
+ */
976
+ function emitPrivateStateReset(c) {
977
+ c.out.add('function __reset_private__() {');
978
+ c.out.indent();
979
+ for (const g of c.privateGlobals) {
980
+ if (g.kind !== 'let') continue;
981
+ c.out.add(`${g.name} = ${g.init};`);
982
+ }
983
+ c.out.dedent();
984
+ c.out.add('}');
985
+ }
986
+
948
987
  function emitWorkgroupStateFactory(c) {
949
988
  c.out.add('function __create_workgroup_state__() {');
950
989
  c.out.indent();
@@ -1 +1 @@
1
- {"version":3,"file":"MinimapCameraView.d.ts","sourceRoot":"","sources":["../../../../../src/view/minimap/dom/MinimapCameraView.js"],"names":[],"mappings":"AAYA;IACI;;;;;;;;OAQG;IACH,yFAwFC;IArFG,YAAkC;IAIlC;;;;OAIG;IACH,qBAAgD;IAIhD;;;OAGG;IACH,eAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,UAFU,+BAA6B,CAEf;IACxB;;;OAGG;IACH,qBAA0B;IAE1B,eAAoB;IAEpB;;;;OAIG;IACH,gBAAoB;IAEpB;;;;OAIG;IACH,sBAA+B;IAE/B;;;OAGG;IACH,aAAsC;IA6B1C;;;;;;;;;OASG;IACH,uBARW,OAAO,WACP,MAAM,WACN,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,cACN,MAAM,QAsChB;IAED;;;;;OAKG;IACH,YAJW,MAAM,KACN,MAAM,GACJ,OAAO,CA+BnB;IAED,iBAQC;CAgBJ;iBA7NgB,eAAe;oBACZ,+BAA+B"}
1
+ {"version":3,"file":"MinimapCameraView.d.ts","sourceRoot":"","sources":["../../../../../src/view/minimap/dom/MinimapCameraView.js"],"names":[],"mappings":"AAWA;IACI;;;;;;;;OAQG;IACH,yFAoFC;IAjFG,YAAkC;IAIlC;;;;OAIG;IACH,qBAAgD;IAIhD;;;OAGG;IACH,eAAoB;IAEpB;;;;;;;;;;;OAWG;IACH,UAFU,+BAA6B,CAEf;IACxB;;;OAGG;IACH,qBAA0B;IAE1B,eAAoB;IAEpB;;;;OAIG;IACH,gBAAoB;IAEpB;;;;OAIG;IACH,sBAA+B;IAE/B;;;OAGG;IACH,aAAsC;IAyB1C;;;;;;;;;OASG;IACH,uBARW,OAAO,WACP,MAAM,WACN,MAAM,WACN,MAAM,cACN,MAAM,cACN,MAAM,cACN,MAAM,QAsChB;IAED;;;;;OAKG;IACH,YAJW,MAAM,KACN,MAAM,GACJ,OAAO,CA+BnB;IAED,iBAQC;CAgBJ;iBAxNgB,eAAe;oBACZ,+BAA+B"}
@@ -4,8 +4,7 @@ import ObservedValue from "../../../core/model/ObservedValue.js";
4
4
  import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
5
5
  import SVG from "../../SVG.js";
6
6
  import { plane3_compute_ray_intersection } from "../../../core/geom/3d/plane/plane3_compute_ray_intersection.js";
7
- import { Transform64 } from "../../../engine/ecs/transform/Transform64.js";
8
- import { EventType } from "../../../engine/ecs/EventType.js";
7
+ import { TRANSFORM64_EVENT_CHANGE } from "../../../engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
9
8
 
10
9
 
11
10
  const rayContact = new SurfacePoint3();
@@ -93,18 +92,14 @@ export class MinimapCameraView extends View {
93
92
  // none, so it arrives from the dataset instead - one listener for the whole transform,
94
93
  // which is coarser and exactly as useful here: the view redraws from the pose either way.
95
94
  if (dataset !== null) {
96
- const on_transform_changed = event => {
97
- if (event.klass === Transform64) {
98
- this.__update();
99
- }
100
- };
95
+ const on_transform_changed = () => this.__update();
101
96
 
102
97
  this.on.linked.add(() => dataset.addEntityEventListener(
103
- entity, EventType.ComponentChanged, on_transform_changed
98
+ entity, TRANSFORM64_EVENT_CHANGE, on_transform_changed
104
99
  ));
105
100
 
106
101
  this.on.unlinked.add(() => dataset.removeEntityEventListener(
107
- entity, EventType.ComponentChanged, on_transform_changed
102
+ entity, TRANSFORM64_EVENT_CHANGE, on_transform_changed
108
103
  ));
109
104
  }
110
105
 
@@ -1,15 +0,0 @@
1
- export class BoxLayoutSpec {
2
- bounds: AABB2;
3
- /**
4
- *
5
- * @type {ConnectionLayoutSpec[]}
6
- */
7
- connections: ConnectionLayoutSpec[];
8
- /**
9
- *
10
- * @type {boolean}
11
- */
12
- locked: boolean;
13
- }
14
- import AABB2 from "../../../../geom/2d/aabb/AABB2.js";
15
- //# sourceMappingURL=BoxLayoutSpec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BoxLayoutSpec.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/BoxLayoutSpec.js"],"names":[],"mappings":"AAGA;IACI,cAAqB;IAErB;;;OAGG;IACH,aAFU,sBAAsB,CAEf;IAEjB;;;OAGG;IACH,QAFU,OAAO,CAEF;CAElB;kBAlBiB,mCAAmC"}
@@ -1,45 +0,0 @@
1
- export class ConnectedBoxLayouter {
2
- /**
3
- *
4
- * @type {BoxLayoutSpec[]}
5
- */
6
- boxes: BoxLayoutSpec[];
7
- /**
8
- *
9
- * @type {ConnectionLayoutSpec[]}
10
- */
11
- connections: ConnectionLayoutSpec[];
12
- /**
13
- *
14
- * @type {QuadTreeNode<>}
15
- * @private
16
- */
17
- private __spatial_index_connections;
18
- /**
19
- * @param {BoxLayoutSpec[]} boxes
20
- * @param {ConnectionLayoutSpec[]} connections
21
- */
22
- initialize(boxes: BoxLayoutSpec[], connections: ConnectionLayoutSpec[]): void;
23
- __resolve_box_overlap(max_steps?: number): void;
24
- /**
25
- *
26
- * @param {BoxLayoutSpec} box
27
- * @returns {number}
28
- * @private
29
- */
30
- private __compute_box_cost;
31
- __execute_swaps(): number;
32
- /**
33
- *
34
- * @param {ConnectionLayoutSpec} spec
35
- * @param {number} strength
36
- * @private
37
- */
38
- private __pull_connection;
39
- __pull_connections(strength: any): void;
40
- __execute_many_swaps(limit: any): void;
41
- __execute_initial_placement(): void;
42
- step(): void;
43
- layout(): void;
44
- }
45
- //# sourceMappingURL=ConnectedBoxLayouter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectedBoxLayouter.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.js"],"names":[],"mappings":"AAMA;IAGI;;;OAGG;IACH,OAFU,eAAe,CAEd;IACX;;;OAGG;IACH,aAFU,sBAAsB,CAEf;IAGjB;;;;OAIG;IACH,oCAAiD;IAGjD;;;OAGG;IACH,kBAHW,eAAe,eACf,sBAAsB,QAahC;IAED,gDAYC;IAED;;;;;OAKG;IACH,2BA6BC;IAED,0BAkDC;IAED;;;;;OAKG;IACH,0BAqBC;IAED,wCAQC;IAED,uCAQC;IAED,oCAkBC;IAED,aAOC;IAED,eAYC;CACJ"}
@@ -1,24 +0,0 @@
1
- export class ConnectionEndpointLayoutSpec {
2
- /**
3
- * @param {AABB2} box
4
- * @param {Vector2} point
5
- * @returns {ConnectionEndpointLayoutSpec}
6
- */
7
- static from(box: AABB2, point: Vector2): ConnectionEndpointLayoutSpec;
8
- /**
9
- *
10
- * @type {BoxLayoutSpec}
11
- */
12
- box: BoxLayoutSpec;
13
- /**
14
- * Local offset inside the box where connection is attached
15
- * @type {Vector2}
16
- */
17
- point: Vector2;
18
- /**
19
- *
20
- * @param {Vector2} result
21
- */
22
- computePosition(result: Vector2): void;
23
- }
24
- //# sourceMappingURL=ConnectionEndpointLayoutSpec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionEndpointLayoutSpec.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.js"],"names":[],"mappings":"AAAA;IA0BI;;;;OAIG;IACH,yCAFa,4BAA4B,CASxC;IApCD;;;OAGG;IACH,mBAAW;IAEX;;;OAGG;IACH,eAAa;IAGb;;;OAGG;IACH,uCAKC;CAeJ"}
@@ -1,19 +0,0 @@
1
- export class ConnectionLayoutSpec {
2
- /**
3
- * @param {ConnectionEndpointLayoutSpec} source
4
- * @param {ConnectionEndpointLayoutSpec} target
5
- * @returns {ConnectionLayoutSpec}
6
- */
7
- static from(source: ConnectionEndpointLayoutSpec, target: ConnectionEndpointLayoutSpec): ConnectionLayoutSpec;
8
- /**
9
- *
10
- * @type {ConnectionEndpointLayoutSpec}
11
- */
12
- source: ConnectionEndpointLayoutSpec;
13
- /**
14
- *
15
- * @type {ConnectionEndpointLayoutSpec}
16
- */
17
- target: ConnectionEndpointLayoutSpec;
18
- }
19
- //# sourceMappingURL=ConnectionLayoutSpec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionLayoutSpec.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.js"],"names":[],"mappings":"AAAA;IAcI;;;;OAIG;IACH,yFAFa,oBAAoB,CAShC;IAxBD;;;OAGG;IACH,qCAAc;IACd;;;OAGG;IACH,qCAAc;CAgBjB"}
@@ -1,4 +0,0 @@
1
- /** @param {Transform64} t */
2
- export function probe(t: Transform64): any[];
3
- import { Transform64 } from "./Transform64.js";
4
- //# sourceMappingURL=__probe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"__probe.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/__probe.js"],"names":[],"mappings":"AAEA,6BAA6B;AAC7B,yBADY,WAAW,SAMtB;4BAP2B,kBAAkB"}
@@ -1,9 +0,0 @@
1
- /**
2
- *
3
- * @param {Entity} builder
4
- * @param {function():Entity} createEntity
5
- * @param {*} [createEntityThisArg]
6
- * @return {number} duration in seconds until the entity is completely hidden
7
- */
8
- export function hideEntityGracefully(builder: Entity, createEntity: () => Entity, createEntityThisArg?: any): number;
9
- //# sourceMappingURL=hideEntityGracefully.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hideEntityGracefully.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/util/hideEntityGracefully.js"],"names":[],"mappings":"AA2JA;;;;;;GAMG;AACH,8GAFY,MAAM,CAmCjB"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Build the `array<u32>` image of a {@link GPUDatabase} — the exact bytes the generated marshalling
3
- * functions ({@link GPUTypedTableDescriptor#chunk_read} and friends) index: the page address table,
4
- * then pages at the addresses it names, each page's records past its
5
- * `[u32 live_count][u32 occupancy_bitmap...]` header.
6
- *
7
- * This exists for the WGSL emulator. The production route to those bytes is a compute dispatch
8
- * ({@link ./gpu_table_element_upload_shader.js}) against a live device, and the software device
9
- * records dispatches without running them — so a spec that wants to run a database-reading shader
10
- * on the CPU has no way to obtain a filled buffer. Everything here is derived from the descriptor's
11
- * own published geometry (`page_lookup_address`, `elements_per_page`, `page_header_words`,
12
- * `packed_element_size_bytes`), which is the same geometry the upload shader receives as its
13
- * settings, so the two cannot drift apart silently.
14
- *
15
- * Pages are allocated in ascending (table index, page index) order — the addresses therefore differ
16
- * from what a live database's slot allocator would hand out for the same writes. Nothing reads a
17
- * page address except through the table, so the layout is equivalent, not identical.
18
- *
19
- * @param {GPUDatabaseDefinition} definition
20
- * @param {Object<string, Iterable<[number, *]>>} contents records per table name, as
21
- * `[element_index, value]` pairs (a `Map`, or an array of pairs)
22
- * @returns {Uint32Array}
23
- */
24
- export function gpu_database_emulator_image(definition: GPUDatabaseDefinition, contents: {
25
- [x: string]: Iterable<[number, any]>;
26
- }): Uint32Array;
27
- //# sourceMappingURL=gpu_database_emulator_image.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gpu_database_emulator_image.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/buffer/table/gpu_database_emulator_image.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;QAJkB,MAAM,GAAE,SAAS,CAAC,MAAM,MAAI,CAAC;IAElC,WAAW,CAwFvB"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Frustum culling math for emitter simulation culling (the optional, flagged "sleep when culled"
3
- * feature). A bounding sphere is visible unless it lies fully outside any frustum plane. Planes
4
- * follow the engine's Gribb-Hartmann convention (world space, `dot(n, p) + d >= 0` inside).
5
- *
6
- * The occlusion half of the test reuses the engine's HiZ query
7
- * (`src/webgpu/renderer/shader/chunk/depth/chunk_query_depth_from_screen_space_bb.js`) in the cull pass;
8
- * this chunk holds the emulator-testable frustum math.
9
- *
10
- * @type {CodeChunk}
11
- */
12
- export const chunk_particle_cull: CodeChunk;
13
- import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
14
- //# sourceMappingURL=chunk_particle_cull.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunk_particle_cull.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/cull/chunk_particle_cull.js"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,kCAFU,SAAS,CA0BhB;0BArCuB,oCAAoC"}