@woosh/meep-engine 3.19.0 → 3.21.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 (809) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/Editor.d.ts.map +1 -1
  3. package/editor/enableEditor.d.ts.map +1 -1
  4. package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
  5. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  6. package/editor/templates/entity_templates.d.ts.map +1 -1
  7. package/editor/tools/v2/GizmoNode.d.ts +1 -1
  8. package/editor/tools/v2/GizmoNode.d.ts.map +1 -1
  9. package/editor/view/ecs/HierarchicalEntityListView.d.ts +3 -3
  10. package/editor/view/ecs/HierarchicalEntityListView.d.ts.map +1 -1
  11. package/editor/view/makeEntityDecorators.d.ts.map +1 -1
  12. package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -1
  13. package/editor/view/particles/effect/ParticleGraphEditorView.js +2 -2
  14. package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
  15. package/editor/view/particles/effect/ParticleNodeParametersView.js +7 -48
  16. package/editor/view/tools/ToolSettingsView.d.ts +1 -1
  17. package/editor/view/tools/ToolSettingsView.d.ts.map +1 -1
  18. package/package.json +12 -12
  19. package/src/core/IdPool.d.ts.map +1 -1
  20. package/src/core/binary/32BitEncoder.d.ts.map +1 -1
  21. package/src/core/binary/BinaryBuffer.d.ts +1 -1
  22. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  23. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts +1 -1
  24. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
  25. package/src/core/bvh2/bvh3/BVH.d.ts +3 -3
  26. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  27. package/src/core/bvh2/bvh3/BVH.js +1 -2
  28. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -1
  29. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts.map +1 -1
  30. package/src/core/cache/Cache.d.ts +1 -1
  31. package/src/core/cache/Cache.d.ts.map +1 -1
  32. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts.map +1 -1
  33. package/src/core/collection/array/array_group_by.d.ts.map +1 -1
  34. package/src/core/collection/array/array_group_by.js +2 -11
  35. package/src/core/collection/list/List.d.ts.map +1 -1
  36. package/src/core/collection/list/ListForwarder.d.ts +1 -1
  37. package/src/core/collection/list/ListForwarder.d.ts.map +1 -1
  38. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  39. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  40. package/src/core/collection/table/RowFirstTable.d.ts +1 -1
  41. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  42. package/src/core/collection/table/bind/TableRecord.d.ts +1 -1
  43. package/src/core/collection/table/bind/TableRecord.d.ts.map +1 -1
  44. package/src/core/color/Color.d.ts +8 -8
  45. package/src/core/color/Color.d.ts.map +1 -1
  46. package/src/core/color/hsv/hsv_to_rgb_uint8.d.ts.map +1 -1
  47. package/src/core/color/hsv/rgb_to_hsv.d.ts.map +1 -1
  48. package/src/core/events/signal/Signal.d.ts +1 -1
  49. package/src/core/events/signal/Signal.d.ts.map +1 -1
  50. package/src/core/events/signal/signal_aggregate_by_time_window.d.ts.map +1 -1
  51. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts.map +1 -1
  52. package/src/core/geom/2d/aabb/AABB2.d.ts +4 -4
  53. package/src/core/geom/2d/aabb/AABB2.d.ts.map +1 -1
  54. package/src/core/geom/2d/bvh/BVH2D.d.ts +1 -1
  55. package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -1
  56. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -1
  57. package/src/core/geom/3d/aabb/AABB3.d.ts +6 -6
  58. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  59. package/src/core/geom/3d/atlas/atlas_bench_lib.d.ts.map +1 -1
  60. package/src/core/geom/3d/atlas/atlas_compute_charts.d.ts.map +1 -1
  61. package/src/core/geom/3d/atlas/atlas_generate.d.ts.map +1 -1
  62. package/src/core/geom/3d/atlas/pack/atlas_pack_charts.d.ts.map +1 -1
  63. package/src/core/geom/3d/atlas/param/atlas_chart_param_validity.d.ts.map +1 -1
  64. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_bff.d.ts.map +1 -1
  65. package/src/core/geom/3d/atlas/param/atlas_chart_parameterize_lscm.d.ts.map +1 -1
  66. package/src/core/geom/3d/atlas/segment/atlas_compute_planar_regions.d.ts.map +1 -1
  67. package/src/core/geom/3d/atlas/segment/atlas_segment_charts.d.ts.map +1 -1
  68. package/src/core/geom/3d/atlas/segment/atlas_segment_charts_atomic.d.ts.map +1 -1
  69. package/src/core/geom/3d/mat4/m4_decompose.d.ts +7 -1
  70. package/src/core/geom/3d/mat4/m4_decompose.d.ts.map +1 -1
  71. package/src/core/geom/3d/quadric/Quadric3.d.ts +11 -11
  72. package/src/core/geom/3d/quadric/Quadric3.d.ts.map +1 -1
  73. package/src/core/geom/3d/ray/Ray3.d.ts +3 -3
  74. package/src/core/geom/3d/ray/Ray3.d.ts.map +1 -1
  75. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  76. package/src/core/geom/3d/shape/HeightMapShape3D.js +4 -9
  77. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +1 -1
  78. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  79. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  80. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts.map +1 -1
  81. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts.map +1 -1
  82. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_carve_outside_surface.d.ts.map +1 -1
  83. package/src/core/geom/3d/tetrahedra/tetrahedral_mesh_improve_quality.d.ts.map +1 -1
  84. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  85. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -1
  86. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_to_indexed_geometry.d.ts.map +1 -1
  87. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -1
  88. package/src/core/geom/Quaternion.d.ts +4 -4
  89. package/src/core/geom/Quaternion.d.ts.map +1 -1
  90. package/src/core/geom/Vector1.d.ts +1 -1
  91. package/src/core/geom/Vector1.d.ts.map +1 -1
  92. package/src/core/geom/Vector2.d.ts +2 -2
  93. package/src/core/geom/Vector2.d.ts.map +1 -1
  94. package/src/core/geom/Vector3.d.ts +3 -3
  95. package/src/core/geom/Vector3.d.ts.map +1 -1
  96. package/src/core/geom/Vector4.d.ts +4 -4
  97. package/src/core/geom/Vector4.d.ts.map +1 -1
  98. package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -1
  99. package/src/core/geom/vec3/v3_hash.d.ts +12 -0
  100. package/src/core/geom/vec3/v3_hash.d.ts.map +1 -0
  101. package/src/core/geom/vec3/v3_hash.js +19 -0
  102. package/src/core/geom/vec3/v3_lerp.d.ts +3 -1
  103. package/src/core/geom/vec3/v3_lerp.d.ts.map +1 -1
  104. package/src/core/geom/vec3/v3_set.d.ts +14 -0
  105. package/src/core/geom/vec3/v3_set.d.ts.map +1 -0
  106. package/src/core/geom/vec3/v3_set.js +17 -0
  107. package/src/core/geom/vec3/v3_slerp.d.ts +3 -1
  108. package/src/core/geom/vec3/v3_slerp.d.ts.map +1 -1
  109. package/src/core/geom/vec4/v4_equals_array.d.ts +11 -0
  110. package/src/core/geom/vec4/v4_equals_array.d.ts.map +1 -0
  111. package/src/core/geom/vec4/v4_equals_array.js +16 -0
  112. package/src/core/geom/vec4/v4_hash.d.ts +12 -0
  113. package/src/core/geom/vec4/v4_hash.d.ts.map +1 -0
  114. package/src/core/geom/vec4/v4_hash.js +18 -0
  115. package/src/core/geom/vec4/v4_set.d.ts +15 -0
  116. package/src/core/geom/vec4/v4_set.d.ts.map +1 -0
  117. package/src/core/geom/vec4/v4_set.js +19 -0
  118. package/src/core/graph/convert_graph_to_dot_string.d.ts +1 -1
  119. package/src/core/graph/convert_graph_to_dot_string.d.ts.map +1 -1
  120. package/src/core/graph/metis/native/bisection/split_graph_two_way.d.ts.map +1 -1
  121. package/src/core/graph/metis/native/metis_partition_kway.d.ts.map +1 -1
  122. package/src/core/graph/metis/native/refine/fm_kway.d.ts.map +1 -1
  123. package/src/core/json/abstractJSONSerializer.d.ts.map +1 -1
  124. package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
  125. package/src/core/localization/Localization.d.ts.map +1 -1
  126. package/src/core/math/linalg/cg/cg_solve.d.ts.map +1 -1
  127. package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
  128. package/src/core/math/physics/mie/compute_bhmie_optical_properties.d.ts.map +1 -1
  129. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
  130. package/src/core/math/random/seededRandom_Mulberry32.d.ts +1 -1
  131. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  132. package/src/core/model/ModuleRegistry.d.ts.map +1 -1
  133. package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.d.ts.map +1 -1
  134. package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
  135. package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
  136. package/src/core/model/object/optional_clone.d.ts.map +1 -0
  137. package/src/{shade/descriptor/util → core/model/object}/optional_equality.d.ts +2 -2
  138. package/src/core/model/object/optional_equality.d.ts.map +1 -0
  139. package/src/{shade/descriptor/util → core/model/object}/optional_equality.js +2 -2
  140. package/src/{shade/descriptor/util → core/model/object}/optional_hash.d.ts +1 -1
  141. package/src/core/model/object/optional_hash.d.ts.map +1 -0
  142. package/src/{shade/descriptor/util → core/model/object}/optional_hash.js +3 -3
  143. package/src/core/model/reactive/model/ReactiveExpression.d.ts.map +1 -1
  144. package/src/core/model/validate_enum_schema.d.ts.map +1 -1
  145. package/src/core/process/Future.d.ts.map +1 -1
  146. package/src/core/process/task/Task.d.ts.map +1 -1
  147. package/src/core/process/task/util/countTask.d.ts.map +1 -1
  148. package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
  149. package/src/core/process/worker/WorkerBuilder.d.ts.map +1 -1
  150. package/src/engine/Clock.d.ts +1 -1
  151. package/src/engine/Clock.d.ts.map +1 -1
  152. package/src/engine/EngineHarness.d.ts.map +1 -1
  153. package/src/engine/animation/Animations.d.ts.map +1 -1
  154. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  155. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  156. package/src/engine/animation/Tween.d.ts.map +1 -1
  157. package/src/engine/animation/curve/editor/uploadViaElement.d.ts.map +1 -1
  158. package/src/engine/animation/curve/view/AnimationCurveView.d.ts +1 -1
  159. package/src/engine/animation/curve/view/AnimationCurveView.d.ts.map +1 -1
  160. package/src/engine/asset/Asset.d.ts +1 -1
  161. package/src/engine/asset/Asset.d.ts.map +1 -1
  162. package/src/engine/asset/Asset.js +3 -1
  163. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  164. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  165. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  166. package/src/engine/asset/loaders/image/avif/encode_image_source.d.ts.map +1 -1
  167. package/src/engine/asset/loaders/image/avif/threaded_image_encoder.d.ts.map +1 -1
  168. package/src/engine/browserInfo.d.ts.map +1 -1
  169. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +1 -1
  170. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  171. package/src/engine/control/first-person/abilities/LedgeGrab.js +9 -9
  172. package/src/engine/control/first-person/abilities/Mantle.js +8 -8
  173. package/src/engine/control/first-person/abilities/ScrambleUp.js +2 -2
  174. package/src/engine/control/first-person/abilities/WallJump.js +2 -2
  175. package/src/engine/control/first-person/abilities/WallRun.js +3 -3
  176. package/src/engine/control/first-person/collision/KinematicMover.d.ts +1 -1
  177. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  178. package/src/engine/control/first-person/collision/KinematicMover.js +19 -46
  179. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts +17 -5
  180. package/src/engine/control/first-person/sensors/FirstPersonSensors.d.ts.map +1 -1
  181. package/src/engine/control/first-person/sensors/FirstPersonSensors.js +20 -7
  182. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  183. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +9 -8
  184. package/src/engine/control/first-person/test/buildTestPlayer.d.ts.map +1 -1
  185. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  186. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  187. package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
  188. package/src/engine/ecs/System.d.ts.map +1 -1
  189. package/src/engine/ecs/animation/Animation.d.ts +1 -1
  190. package/src/engine/ecs/animation/Animation.d.ts.map +1 -1
  191. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts +3 -3
  192. package/src/engine/ecs/async/SystemWorkerLoopback.d.ts.map +1 -1
  193. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts.map +1 -1
  194. package/src/engine/ecs/grid/pick.d.ts.map +1 -1
  195. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.d.ts.map +1 -1
  196. package/src/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +9 -10
  197. package/src/engine/ecs/guid/UUID.d.ts +1 -1
  198. package/src/engine/ecs/guid/UUID.d.ts.map +1 -1
  199. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.d.ts.map +1 -1
  200. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +26 -9
  201. package/src/engine/ecs/parent/EntityNode.d.ts +1 -1
  202. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  203. package/src/engine/ecs/parent/FaceEditor.d.ts +7 -7
  204. package/src/engine/ecs/parent/FaceEditor.d.ts.map +1 -1
  205. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
  206. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts +2 -2
  207. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.d.ts.map +1 -1
  208. package/src/engine/ecs/terrain/TerrainClouds.d.ts +1 -1
  209. package/src/engine/ecs/terrain/ecs/Terrain.d.ts +1 -1
  210. package/src/engine/ecs/terrain/ecs/Terrain.d.ts.map +1 -1
  211. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  212. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts +1 -1
  213. package/src/engine/ecs/terrain/overlay/TerrainOverlay.d.ts.map +1 -1
  214. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts +1 -1
  215. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  216. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +1 -1
  217. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  218. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  219. package/src/engine/ecs/transform/Transform64.d.ts +6 -6
  220. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  221. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts +1 -1
  222. package/src/engine/ecs/transform-attachment/TransformAttachment.d.ts.map +1 -1
  223. package/src/engine/graphics/FrameRunner.d.ts.map +1 -1
  224. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -1
  225. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts +1 -1
  226. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.d.ts.map +1 -1
  227. package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts +1 -1
  228. package/src/engine/graphics/ecs/highlight/HighlightDefinition.d.ts.map +1 -1
  229. package/src/engine/graphics/ecs/make_bvh_depth_range_computer.d.ts.map +1 -1
  230. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts +4 -4
  231. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts.map +1 -1
  232. package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts.map +1 -1
  233. package/src/engine/graphics/ecs/particles/ParticleEffect.js +6 -22
  234. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts +1 -1
  235. package/src/engine/graphics/ecs/path/tube/TubePathStyle.d.ts.map +1 -1
  236. package/src/engine/graphics/ecs/path/tube/build/computeFrenetFrames.d.ts.map +1 -1
  237. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +3 -3
  238. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
  239. package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts +1 -1
  240. package/src/engine/graphics/geometry/buffered/build_height_field_geometry.d.ts.map +1 -1
  241. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts +1 -1
  242. package/src/engine/graphics/geometry/buffered/query/GeometrySpatialQueryAccelerator.d.ts.map +1 -1
  243. package/src/engine/graphics/make_ray_from_viewport_position.d.ts.map +1 -1
  244. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  245. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +1 -1
  246. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +1 -1
  247. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  248. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +3 -3
  249. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +1 -1
  250. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  251. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts +1 -1
  252. package/src/engine/graphics/render/gizmo/GizmoShapeRenderingInterface.d.ts.map +1 -1
  253. package/src/engine/graphics/render/layers/RenderLayer.d.ts +3 -3
  254. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  255. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts +1 -1
  256. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.d.ts.map +1 -1
  257. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts +2 -2
  258. package/src/engine/graphics/render/visibility/VisibilityComputer.d.ts.map +1 -1
  259. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts +1 -1
  260. package/src/engine/graphics/sh3/path_tracer/PathTracedMesh.d.ts.map +1 -1
  261. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts.map +1 -1
  262. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +5 -1
  263. package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts +1 -1
  264. package/src/engine/graphics/texture/3d/SingleChannelSampler3D.d.ts.map +1 -1
  265. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  266. package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts +1 -1
  267. package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.d.ts.map +1 -1
  268. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts +1 -1
  269. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.d.ts.map +1 -1
  270. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts +1 -1
  271. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min.d.ts.map +1 -1
  272. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts.map +1 -1
  273. package/src/engine/graphics/texture/sampler/sampler2d_compute_texel_value_conversion_scale_to_uint8.d.ts.map +1 -1
  274. package/src/engine/graphics/texture/sampler/search/make_edge_condition_channel_threshold.d.ts.map +1 -1
  275. package/src/engine/graphics/texture/sampler/search/sampler2d_find_pixels.d.ts.map +1 -1
  276. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +3 -3
  277. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts.map +1 -1
  278. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts +1 -1
  279. package/src/engine/graphics/texture/virtual/VirtualTextureUsage.d.ts.map +1 -1
  280. package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts +2 -2
  281. package/src/engine/graphics/texture/virtual/debug/UsageDebugView.d.ts.map +1 -1
  282. package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts +1 -1
  283. package/src/engine/graphics/texture/virtual/debug/UsagePyramidDebugView.d.ts.map +1 -1
  284. package/src/engine/graphics/texture/virtual/tile/decompose_finger_print.d.ts.map +1 -1
  285. package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
  286. package/src/engine/graphics3/ParticipatingMedia.d.ts +1 -1
  287. package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
  288. package/src/engine/graphics3/VolumetricLightMap.d.ts +1 -1
  289. package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -1
  290. package/src/engine/graphics3/decal/graph_build_decal_clusters.d.ts.map +1 -1
  291. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  292. package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
  293. package/src/engine/graphics3/terrain/GPUTerrainSplatRenderer.d.ts.map +1 -1
  294. package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
  295. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  296. package/src/engine/input/devices/GamepadDevice.d.ts +1 -1
  297. package/src/engine/input/devices/GamepadDevice.d.ts.map +1 -1
  298. package/src/engine/input/devices/PointerDevice.d.ts +1 -1
  299. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  300. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
  301. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +11 -2
  302. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +1 -1
  303. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  304. package/src/engine/intelligence/behavior/ecs/SendEventBehavior.d.ts.map +1 -1
  305. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  306. package/src/engine/intelligence/behavior/util/RotationBehavior.d.ts.map +1 -1
  307. package/src/engine/intelligence/behavior/util/RotationBehavior.js +14 -2
  308. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  309. package/src/engine/intelligence/mcts/MonteCarlo.d.ts +1 -1
  310. package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
  311. package/src/engine/intelligence/mcts/StateNode.d.ts.map +1 -1
  312. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +1 -1
  313. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
  314. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  315. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts +1 -1
  316. package/src/engine/knowledge/database/StaticKnowledgeDatabase.d.ts.map +1 -1
  317. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts +2 -2
  318. package/src/engine/navigation/ecs/path_following/PathFollower.d.ts.map +1 -1
  319. package/src/engine/network/NetworkSession.d.ts.map +1 -1
  320. package/src/engine/network/PriorityFetch.d.ts +2 -2
  321. package/src/engine/network/PriorityFetch.d.ts.map +1 -1
  322. package/src/engine/network/diagnostics/BandwidthMeter.d.ts.map +1 -1
  323. package/src/engine/network/ecs/owner_authorization.d.ts.map +1 -1
  324. package/src/engine/network/orchestrator/NetworkPeer.d.ts.map +1 -1
  325. package/src/engine/network/orchestrator/ServerAuthoritativeServer.d.ts.map +1 -1
  326. package/src/engine/network/replication/Replicator.d.ts +1 -1
  327. package/src/engine/network/replication/Replicator.d.ts.map +1 -1
  328. package/src/engine/network/sim/SimActionExecutor.d.ts +1 -1
  329. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  330. package/src/engine/network/time/RenderPlayout.d.ts.map +1 -1
  331. package/src/engine/network/transport/Channel.d.ts.map +1 -1
  332. package/src/engine/network/transport/fragments/FragmentRetention.d.ts.map +1 -1
  333. package/src/engine/physics/body/SolverBodyState.d.ts +11 -11
  334. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  335. package/src/engine/physics/body/SolverBodyState.js +13 -13
  336. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +4 -4
  337. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  338. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +2 -2
  339. package/src/engine/physics/broadphase/generate_pairs.d.ts +3 -3
  340. package/src/engine/physics/broadphase/generate_pairs.d.ts.map +1 -1
  341. package/src/engine/physics/broadphase/generate_pairs.js +1 -1
  342. package/src/engine/physics/ccd/linear_sweep.d.ts +2 -3
  343. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  344. package/src/engine/physics/ccd/linear_sweep.js +4 -5
  345. package/src/engine/physics/constraint/solve_constraints.js +3 -3
  346. package/src/engine/physics/ecs/BodyKind.d.ts +1 -1
  347. package/src/engine/physics/ecs/BodyKind.js +1 -1
  348. package/src/engine/physics/ecs/Collider.d.ts +1 -1
  349. package/src/engine/physics/ecs/Collider.js +1 -1
  350. package/src/engine/physics/ecs/Joint.d.ts +15 -10
  351. package/src/engine/physics/ecs/Joint.d.ts.map +1 -1
  352. package/src/engine/physics/ecs/Joint.js +27 -18
  353. package/src/engine/physics/ecs/JointSerializationAdapter.d.ts.map +1 -1
  354. package/src/engine/physics/ecs/JointSerializationAdapter.js +8 -6
  355. package/src/engine/physics/ecs/PhysicsSystem.d.ts +40 -77
  356. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  357. package/src/engine/physics/ecs/PhysicsSystem.js +113 -75
  358. package/src/engine/physics/ecs/RigidBody.d.ts +17 -12
  359. package/src/engine/physics/ecs/RigidBody.d.ts.map +1 -1
  360. package/src/engine/physics/ecs/RigidBody.js +58 -24
  361. package/src/engine/physics/ecs/RigidBodySerializationAdapter.d.ts.map +1 -1
  362. package/src/engine/physics/ecs/RigidBodySerializationAdapter.js +13 -12
  363. package/src/engine/physics/ecs/find_non_finite_physics_state.d.ts +1 -1
  364. package/src/engine/physics/ecs/find_non_finite_physics_state.js +1 -1
  365. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  366. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +4 -4
  367. package/src/engine/physics/fluid/SliceVisualiser.d.ts.map +1 -1
  368. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts +10 -10
  369. package/src/engine/physics/fluid/ecs/FluidComponent.js +10 -10
  370. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +2 -2
  371. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +2 -2
  372. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +3 -3
  373. package/src/engine/physics/fluid/ecs/FluidObstacle.js +3 -3
  374. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +1 -1
  375. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +4 -4
  376. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +2 -2
  377. package/src/engine/physics/fluid/ecs/FluidSystem.js +3 -3
  378. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +1 -1
  379. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +2 -2
  380. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +3 -3
  381. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  382. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +3 -3
  383. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +3 -3
  384. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -1
  385. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +2 -2
  386. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +3 -3
  387. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
  388. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
  389. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +2 -2
  390. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +4 -4
  391. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +8 -8
  392. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +8 -17
  393. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  394. package/src/engine/physics/inertia/world_inverse_inertia.js +11 -11
  395. package/src/engine/physics/integration/integrate_position.d.ts +6 -7
  396. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  397. package/src/engine/physics/integration/integrate_position.js +5 -6
  398. package/src/engine/physics/integration/integrate_velocity.d.ts +4 -4
  399. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
  400. package/src/engine/physics/integration/integrate_velocity.js +7 -7
  401. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts +4 -4
  402. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.d.ts.map +1 -1
  403. package/src/engine/physics/inverse_kinematics/fabrik/fabrik_solve.js +3 -3
  404. package/src/engine/physics/narrowphase/convex_decomposition.d.ts.map +1 -1
  405. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +1 -2
  406. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
  407. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +1 -2
  408. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +7 -6
  409. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  410. package/src/engine/physics/narrowphase/narrowphase_step.js +8 -8
  411. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +10 -5
  412. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  413. package/src/engine/physics/queries/PhysicsSurfacePoint.js +10 -6
  414. package/src/engine/physics/queries/overlap_shape.d.ts +5 -14
  415. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  416. package/src/engine/physics/queries/overlap_shape.js +4 -4
  417. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  418. package/src/engine/physics/queries/shape_cast.d.ts +9 -1
  419. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  420. package/src/engine/physics/queries/shape_cast.js +2 -2
  421. package/src/engine/physics/solver/solve_contacts.d.ts +2 -2
  422. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  423. package/src/engine/physics/solver/solve_contacts.js +2 -2
  424. package/src/engine/physics/vehicle/RaycastVehicle.d.ts +4 -8
  425. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  426. package/src/engine/physics/vehicle/RaycastVehicle.js +16 -12
  427. package/src/engine/save/Storage.d.ts.map +1 -1
  428. package/src/engine/sound/SoundEngine.d.ts +1 -1
  429. package/src/engine/sound/SoundEngine.d.ts.map +1 -1
  430. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  431. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +27 -2
  432. package/src/engine/sound/simulation/AcousticSimulator.d.ts +2 -2
  433. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  434. package/src/engine/sound/simulation/core/VolumeField.d.ts +1 -1
  435. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
  436. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -1
  437. package/src/engine/sound/simulation/probe/probe_delaunay_edges.d.ts.map +1 -1
  438. package/src/engine/sound/simulation/probe/probe_densify_portals.d.ts.map +1 -1
  439. package/src/engine/sound/simulation/probe/probe_detect_portals.d.ts.map +1 -1
  440. package/src/engine/sound/simulation/probe/probe_place_sdf_cover.d.ts.map +1 -1
  441. package/src/engine/sound/simulation/probe/probe_refine_connectivity.d.ts.map +1 -1
  442. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts +1 -1
  443. package/src/engine/sound/simulation/render/ProbeReverbRenderer.d.ts.map +1 -1
  444. package/src/engine/sound/simulation/render/foaReverbImpulseResponse.d.ts.map +1 -1
  445. package/src/engine/sound/sopra/SopraEngine.d.ts.map +1 -1
  446. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts +3 -3
  447. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
  448. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts +3 -3
  449. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
  450. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  451. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  452. package/src/engine/ui/notification/ViewEmitter.d.ts +1 -1
  453. package/src/engine/ui/notification/ViewEmitter.d.ts.map +1 -1
  454. package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
  455. package/src/extractName.d.ts.map +1 -1
  456. package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
  457. package/src/format/image/avif/av1/encode/encode_av1_still.d.ts.map +1 -1
  458. package/src/format/image/avif/heif/write_avif_file.d.ts +2 -2
  459. package/src/format/image/avif/heif/write_avif_file.d.ts.map +1 -1
  460. package/src/format/image/jpeg/JpegImage.d.ts.map +1 -1
  461. package/src/format/image/png/PNG.d.ts.map +1 -1
  462. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
  463. package/src/format/image/png/chunk/png_chunk_decode_zTXt.d.ts.map +1 -1
  464. package/src/format/scene/gltf/ext/GltfBufferViewExtensionSet.d.ts.map +1 -1
  465. package/src/format/scene/gltf/gltf_node_world_matrices.d.ts.map +1 -1
  466. package/src/format/scene/usd/unpack_usdz.d.ts.map +1 -1
  467. package/src/format/scene/usd/usd_triangulate.d.ts.map +1 -1
  468. package/src/format/texture/basis/astc_integer_sequence.d.ts.map +1 -1
  469. package/src/generation/grid/actions/ContinuousGridCellActionWriteObstacle.d.ts.map +1 -1
  470. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.d.ts.map +1 -1
  471. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +22 -3
  472. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts.map +1 -1
  473. package/src/generation/theme/ThemeEngine.d.ts +2 -2
  474. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  475. package/src/shade/descriptor/ObjectDescriptorBase.d.ts +1 -1
  476. package/src/shade/descriptor/ObjectDescriptorBase.d.ts.map +1 -1
  477. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +1 -1
  478. package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +3 -3
  479. package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +1 -1
  480. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +1 -1
  481. package/src/shade/descriptor/pipeline/render/ColorTargetState.js +3 -3
  482. package/src/shade/descriptor/pipeline/render/FragmentState.js +1 -1
  483. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +3 -3
  484. package/src/shade/descriptor/texture/TextureDescriptor.d.ts +1 -1
  485. package/src/shade/device/ShadeGPUCommandContext.d.ts +1 -1
  486. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  487. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts +1 -1
  488. package/src/shade/device/pass/ShadeGPUComputePassEncoder.d.ts.map +1 -1
  489. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts +1 -1
  490. package/src/shade/device/pass/ShadeGPURenderPassEncoder.d.ts.map +1 -1
  491. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  492. package/src/shade/device/timing/GPUTimerStats.d.ts +1 -1
  493. package/src/shade/device/timing/GPUTimerStats.d.ts.map +1 -1
  494. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +894 -894
  495. package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
  496. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -1
  497. package/src/shade/playground/ground_seam/capture_scene_color.d.ts.map +1 -1
  498. package/src/shade/playground/ground_seam/measure_flicker.d.ts.map +1 -1
  499. package/src/shade/playground/particle_editor/README.md +1 -1
  500. package/src/shade/playground/particle_system/index.html +0 -1
  501. package/src/shade/playground/particle_system/main.js +1 -2
  502. package/src/shade/playground/particle_system/particle_prototype.d.ts +7 -9
  503. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  504. package/src/shade/playground/particle_system/particle_prototype.js +7 -9
  505. package/src/shade/playground/particle_system/particle_scene.d.ts +5 -6
  506. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  507. package/src/shade/playground/particle_system/particle_scene.js +6 -7
  508. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -2
  509. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +1 -1
  510. package/src/shade/playground/ssr_motion/README.md +22 -0
  511. package/src/shade/playground/ssr_motion/index.html +18 -0
  512. package/src/shade/playground/ssr_motion/main.d.ts +2 -0
  513. package/src/shade/playground/ssr_motion/main.d.ts.map +1 -0
  514. package/src/shade/playground/ssr_motion/main.js +149 -0
  515. package/src/shade/playground/ssr_variance/index.html +1 -0
  516. package/src/shade/playground/vgeo_viewer/README.md +123 -0
  517. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts +61 -0
  518. package/src/shade/playground/vgeo_viewer/cut_geometry.d.ts.map +1 -0
  519. package/src/shade/playground/vgeo_viewer/cut_geometry.js +497 -0
  520. package/src/shade/playground/vgeo_viewer/index.html +77 -0
  521. package/src/shade/playground/vgeo_viewer/main.d.ts +2 -0
  522. package/src/shade/playground/vgeo_viewer/main.d.ts.map +1 -0
  523. package/src/shade/playground/vgeo_viewer/main.js +1288 -0
  524. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts +18 -0
  525. package/src/shade/playground/vgeo_viewer/sample_asset.d.ts.map +1 -0
  526. package/src/shade/playground/vgeo_viewer/sample_asset.js +117 -0
  527. package/src/shade/playground/vgeo_viewer/select_cut.d.ts +154 -0
  528. package/src/shade/playground/vgeo_viewer/select_cut.d.ts.map +1 -0
  529. package/src/shade/playground/vgeo_viewer/select_cut.js +437 -0
  530. package/src/shade/renderer/DynamicResolutionScaling.d.ts +1 -1
  531. package/src/shade/renderer/DynamicResolutionScaling.d.ts.map +1 -1
  532. package/src/shade/renderer/Renderer.d.ts +5 -5
  533. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  534. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  535. package/src/shade/renderer/animation/skin_normalize_mesh_frame.d.ts.map +1 -1
  536. package/src/shade/renderer/camera/Camera.d.ts +3 -3
  537. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  538. package/src/shade/renderer/camera/GPUCameraContext.d.ts +1 -1
  539. package/src/shade/renderer/camera/GPUCameraContext.d.ts.map +1 -1
  540. package/src/shade/renderer/camera/OrthographicCamera.d.ts +4 -4
  541. package/src/shade/renderer/camera/OrthographicCamera.d.ts.map +1 -1
  542. package/src/shade/renderer/camera/PerspectiveCamera.d.ts +2 -2
  543. package/src/shade/renderer/camera/PerspectiveCamera.d.ts.map +1 -1
  544. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +11 -3
  545. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  546. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +25 -5
  547. package/src/shade/renderer/extension/FrameContext.d.ts +1 -1
  548. package/src/shade/renderer/extension/FrameContext.d.ts.map +1 -1
  549. package/src/shade/renderer/extension/GBufferTextures.d.ts +4 -4
  550. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  551. package/src/shade/renderer/extension/PresentTarget.d.ts +1 -1
  552. package/src/shade/renderer/extension/PresentTarget.d.ts.map +1 -1
  553. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +918 -918
  554. package/src/shade/renderer/extension/SceneColor.d.ts +1 -1
  555. package/src/shade/renderer/extension/SceneColor.d.ts.map +1 -1
  556. package/src/shade/renderer/extension/ViewTextures.d.ts +4 -4
  557. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  558. package/src/shade/renderer/geometry/Attribute.d.ts +1 -1
  559. package/src/shade/renderer/geometry/Attribute.d.ts.map +1 -1
  560. package/src/shade/renderer/geometry/Geometry.d.ts +1 -1
  561. package/src/shade/renderer/geometry/Geometry.d.ts.map +1 -1
  562. package/src/shade/renderer/geometry/Geometry.js +4 -7
  563. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -1
  564. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -1
  565. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +3 -3
  566. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
  567. package/src/shade/renderer/geometry/virtual/build/gltf/gltf_collect_geometries.d.ts.map +1 -1
  568. package/src/shade/renderer/geometry/virtual/format/attribute/VGEO_ATTRIBUTES.d.ts.map +1 -1
  569. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts +29 -0
  570. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.d.ts.map +1 -0
  571. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_read_frame_extent.js +59 -0
  572. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts +0 -1
  573. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.d.ts.map +1 -1
  574. package/src/shade/renderer/geometry/virtual/format/frame/vgeo_scan_frames.js +2 -23
  575. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts +94 -0
  576. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.d.ts.map +1 -0
  577. package/src/shade/renderer/geometry/virtual/format/read/VGeoByteSource.js +170 -0
  578. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts +122 -0
  579. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.d.ts.map +1 -0
  580. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerHeader.js +143 -0
  581. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts +185 -0
  582. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.d.ts.map +1 -0
  583. package/src/shade/renderer/geometry/virtual/format/read/VGeoContainerReader.js +572 -0
  584. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts +64 -0
  585. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.d.ts.map +1 -0
  586. package/src/shade/renderer/geometry/virtual/format/read/VGeoDirectory.js +80 -0
  587. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts +198 -0
  588. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.d.ts.map +1 -0
  589. package/src/shade/renderer/geometry/virtual/format/read/VGeoPage.js +232 -0
  590. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts +51 -0
  591. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.d.ts.map +1 -0
  592. package/src/shade/renderer/geometry/virtual/format/read/VGeoPageWant.js +55 -0
  593. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts +68 -0
  594. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.d.ts.map +1 -0
  595. package/src/shade/renderer/geometry/virtual/format/read/VGeoReadOptions.js +72 -0
  596. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts +28 -0
  597. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.d.ts.map +1 -0
  598. package/src/shade/renderer/geometry/virtual/format/read/vgeo_fetch_byte_source.js +108 -0
  599. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts +23 -0
  600. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.d.ts.map +1 -0
  601. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_directory.js +83 -0
  602. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts +53 -0
  603. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.d.ts.map +1 -0
  604. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_header.js +211 -0
  605. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts +26 -0
  606. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.d.ts.map +1 -0
  607. package/src/shade/renderer/geometry/virtual/format/read/vgeo_read_page.js +271 -0
  608. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts.map +1 -1
  609. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts +2 -2
  610. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts.map +1 -1
  611. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts +1 -1
  612. package/src/shade/renderer/global_illumination/lpv/LightProbeVolume.d.ts.map +1 -1
  613. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts +1 -1
  614. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  615. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts +1 -1
  616. package/src/shade/renderer/global_illumination/sharc/SpatialHashRadianceCache.d.ts.map +1 -1
  617. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -1
  618. package/src/shade/renderer/light/LightCollection.d.ts +2 -2
  619. package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
  620. package/src/shade/renderer/light/model/PointLight.d.ts +1 -1
  621. package/src/shade/renderer/light/model/PointLight.d.ts.map +1 -1
  622. package/src/shade/renderer/light/model/SpotLight.d.ts +1 -1
  623. package/src/shade/renderer/light/model/SpotLight.d.ts.map +1 -1
  624. package/src/shade/renderer/loader/gltf/fix_up_material_sides.d.ts.map +1 -1
  625. package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts +1 -1
  626. package/src/shade/renderer/loader/gltf/gltf_create_material.d.ts.map +1 -1
  627. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +2 -2
  628. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts.map +1 -1
  629. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts +1 -1
  630. package/src/shade/renderer/loader/usd/usd_decode_image.d.ts.map +1 -1
  631. package/src/shade/renderer/material/StandardShadeMaterial.js +2 -2
  632. package/src/shade/renderer/material/util/material_convert_metallic_roughness_to_specular_glossiness.d.ts.map +1 -1
  633. package/src/shade/renderer/material/util/material_convert_specular_glossiness_to_metallic_roughness.d.ts.map +1 -1
  634. package/src/shade/renderer/particles/DESIGN.md +27 -18
  635. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +24 -10
  636. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  637. package/src/shade/renderer/particles/GPUParticleSystem.js +80 -73
  638. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts +17 -16
  639. package/src/shade/renderer/particles/coherence/graph_particle_bucket.d.ts.map +1 -1
  640. package/src/shade/renderer/particles/coherence/graph_particle_bucket.js +35 -22
  641. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +7 -7
  642. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts.map +1 -1
  643. package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +1 -1
  644. package/src/shade/renderer/particles/graph/ParticleNodeGroup.d.ts.map +1 -1
  645. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  646. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +9 -15
  647. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts +1 -1
  648. package/src/shade/renderer/particles/graph/ParticleValueType.d.ts.map +1 -1
  649. package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
  650. package/src/shade/renderer/particles/graph/particle_graph_authoring.d.ts.map +1 -1
  651. package/src/shade/renderer/particles/graph/particle_group_json.d.ts.map +1 -1
  652. package/src/shade/renderer/particles/graph/particle_group_library.d.ts.map +1 -1
  653. package/src/shade/renderer/particles/graph/particle_group_library.js +8 -3
  654. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +0 -2
  655. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
  656. package/src/shade/renderer/particles/graph/particle_node_parameters.js +0 -9
  657. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
  658. package/src/shade/renderer/particles/graph/particle_node_presentation.js +0 -10
  659. package/src/shade/renderer/particles/graph/particle_ramp.d.ts +2 -8
  660. package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -1
  661. package/src/shade/renderer/particles/graph/particle_ramp.js +2 -8
  662. package/src/shade/renderer/particles/graph/validate_particle_graph.js +0 -6
  663. package/src/shade/renderer/particles/graph_particles.d.ts +11 -0
  664. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  665. package/src/shade/renderer/particles/graph_particles.js +55 -37
  666. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  667. package/src/shade/renderer/particles/graph_particles_avboit.js +13 -4
  668. package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -1
  669. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +1 -12
  670. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  671. package/src/shade/renderer/particles/isa/InstructionStream.js +1 -12
  672. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +54 -60
  673. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  674. package/src/shade/renderer/particles/isa/ParticleVMISA.js +9 -17
  675. package/src/shade/renderer/particles/isa/particle_assembly.d.ts +0 -1
  676. package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
  677. package/src/shade/renderer/particles/isa/particle_assembly.js +2 -16
  678. package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
  679. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +1 -1
  680. package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +1 -1
  681. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -1
  682. package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +0 -14
  683. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -1
  684. package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +3 -17
  685. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +1 -1
  686. package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
  687. package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
  688. package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +15 -36
  689. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
  690. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +1 -5
  691. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
  692. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +1 -8
  693. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +2 -11
  694. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
  695. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +2 -11
  696. package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
  697. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.d.ts.map +1 -1
  698. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_contribution.js +13 -0
  699. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts +3 -6
  700. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  701. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +49 -17
  702. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  703. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +0 -2
  704. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -1
  705. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +0 -2
  706. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  707. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +1 -5
  708. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -1
  709. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +0 -2
  710. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +17 -13
  711. package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -1
  712. package/src/shade/renderer/particles/sort/graph_particle_sort.js +43 -33
  713. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +1 -3
  714. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  715. package/src/shade/renderer/particles/vm/ParticleVMReference.js +4 -20
  716. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  717. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +2 -5
  718. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -1
  719. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +0 -2
  720. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -1
  721. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +0 -2
  722. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +1 -1
  723. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  724. package/src/shade/renderer/postprocess/graph_pass_composit_red_as_rgba.d.ts.map +1 -1
  725. package/src/shade/renderer/postprocess/nss/NSS.d.ts +4 -4
  726. package/src/shade/renderer/postprocess/nss/NSS.d.ts.map +1 -1
  727. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +3 -3
  728. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  729. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.d.ts.map +1 -1
  730. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_reprojection.js +21 -0
  731. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
  732. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +4 -0
  733. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
  734. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +2 -1
  735. package/src/shade/renderer/postprocess/taa/TAA.d.ts +2 -2
  736. package/src/shade/renderer/postprocess/taa/TAA.d.ts.map +1 -1
  737. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  738. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  739. package/src/shade/renderer/scene/InstanceBatch.d.ts +1 -1
  740. package/src/shade/renderer/scene/InstanceBatch.d.ts.map +1 -1
  741. package/src/shade/renderer/scene/Mesh.js +1 -1
  742. package/src/shade/renderer/scene/Node3D.d.ts +3 -3
  743. package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
  744. package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
  745. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
  746. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.d.ts.map +1 -1
  747. package/src/shade/renderer/shader/graph/graph_prepare_pass_input_data.js +11 -0
  748. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts +1 -1
  749. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  750. package/src/shade/renderer/texture/GPUTextureContext.d.ts +1 -1
  751. package/src/shade/renderer/texture/GPUTextureContext.d.ts.map +1 -1
  752. package/src/shade/renderer/texture/ShadeTexture.js +1 -1
  753. package/src/shade/renderer/texture/format/sampler_descriptor_unpack.d.ts.map +1 -1
  754. package/src/shade/renderer/texture/source/ShadeImage.d.ts +7 -7
  755. package/src/shade/renderer/texture/source/ShadeImage.d.ts.map +1 -1
  756. package/src/shade/renderer/texture/virtual/VTPageTable.d.ts.map +1 -1
  757. package/src/shade/renderer/view/GPUViewContext.d.ts +2 -2
  758. package/src/shade/renderer/view/GPUViewContext.d.ts.map +1 -1
  759. package/src/shade/renderer/view/GPUViewSkyContext.d.ts +1 -1
  760. package/src/shade/renderer/view/GPUViewSkyContext.d.ts.map +1 -1
  761. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +2 -2
  762. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  763. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +1 -1
  764. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  765. package/src/shade/wgsl/emulator/CPUBitmapData.d.ts.map +1 -1
  766. package/src/view/View.d.ts +1 -1
  767. package/src/view/View.d.ts.map +1 -1
  768. package/src/view/elements/button/ButtonView.d.ts +1 -1
  769. package/src/view/elements/button/ButtonView.d.ts.map +1 -1
  770. package/src/view/elements/progress/SmoothProgressBar.d.ts +2 -2
  771. package/src/view/elements/progress/SmoothProgressBar.d.ts.map +1 -1
  772. package/src/view/elements/radial/RadialMenuElement.d.ts +3 -3
  773. package/src/view/elements/radial/RadialMenuElement.d.ts.map +1 -1
  774. package/src/view/elements/windrose/WindRoseDiagram.d.ts.map +1 -1
  775. package/src/view/layout/DockLayoutView.d.ts.map +1 -1
  776. package/src/view/layout/DrawerView.d.ts +2 -2
  777. package/src/view/layout/DrawerView.d.ts.map +1 -1
  778. package/src/view/layout/SplitView.d.ts +9 -9
  779. package/src/view/layout/SplitView.d.ts.map +1 -1
  780. package/src/view/minimap/MinimapMarkerCollection.d.ts +3 -2
  781. package/src/view/minimap/MinimapMarkerCollection.d.ts.map +1 -1
  782. package/src/view/minimap/MinimapMarkerCollection.js +28 -5
  783. package/src/view/minimap/dom/MinimapMarkerView.js +65 -34
  784. package/src/view/minimap/gl/MarkerGL.d.ts +15 -3
  785. package/src/view/minimap/gl/MarkerGL.d.ts.map +1 -1
  786. package/src/view/minimap/gl/MarkerGL.js +31 -4
  787. package/src/engine/physics/BULLET_REVIEW.md +0 -945
  788. package/src/engine/physics/CANNON_REVIEW.md +0 -1300
  789. package/src/engine/physics/CONSTRAINT_SOLVER_BENCH_LOG.md +0 -208
  790. package/src/engine/physics/CONSTRAINT_SOLVER_IMPROVEMENTS_PLAN.md +0 -364
  791. package/src/engine/physics/INTEPOLATION_SYSTEM_PLAN.md +0 -287
  792. package/src/engine/physics/JOLT_REVIEW.md +0 -913
  793. package/src/engine/physics/PLAN.md +0 -1120
  794. package/src/engine/physics/RAPIER_REVIEW.md +0 -934
  795. package/src/engine/physics/REVIEW_001_ACTION_PLAN.md +0 -642
  796. package/src/engine/physics/REVIEW_002.md +0 -151
  797. package/src/engine/physics/REVIEW_003.md +0 -166
  798. package/src/shade/descriptor/util/optional_clone.d.ts.map +0 -1
  799. package/src/shade/descriptor/util/optional_equality.d.ts.map +0 -1
  800. package/src/shade/descriptor/util/optional_hash.d.ts.map +0 -1
  801. package/src/shade/renderer/geometry/virtual/format/prototypeVGEOFormatViewer.js +0 -2063
  802. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts +0 -19
  803. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.d.ts.map +0 -1
  804. package/src/shade/renderer/particles/shaders/chunk_particle_curve_animation.js +0 -30
  805. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts +0 -11
  806. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.d.ts.map +0 -1
  807. package/src/shade/renderer/particles/shaders/chunk_particle_curve_disabled.js +0 -13
  808. /package/src/{shade/descriptor/util → core/model/object}/optional_clone.d.ts +0 -0
  809. /package/src/{shade/descriptor/util → core/model/object}/optional_clone.js +0 -0
@@ -5,15 +5,24 @@
5
5
  *
6
6
  * ## What it owns
7
7
  *
8
- * Every piece of persistent GPU state: the particle pool, the ping-pong alive lists, the dead
9
- * free-list, the counters, both indirect-args buffers, the simulation-order (coherence) scratch,
10
- * the emitter database (the emitter table and the GPU-owned state table, one buffer), the packed
11
- * program buffer, and the spawn-command ring. Buffers that depend on the emitter set — the
12
- * coherence scratch on the number of distinct programs, the program buffer on the heap, the
8
+ * Persistent GPU state, and only that: a buffer is reserved here if and only if its contents have
9
+ * to survive to the next frame. That is the particle pool, the ping-pong alive lists, the dead
10
+ * free-list, the counters, the simulation-order (coherence) list, simulate's indirect dispatch args
11
+ * (written at the end of one frame, read by the next), the emitter database (the emitter table and
12
+ * the GPU-owned state table, one buffer), the packed program buffer, and the two CPU-uploaded
13
+ * queues — the spawn-command ring and the warm-up queue. Buffers that depend on the emitter set —
14
+ * the coherence list on the number of distinct programs, the program buffer on the heap, the
13
15
  * database on its own pages, the counters on the emitter table's element capacity (they carry the
14
- * per-emitter bounds accumulator, see `bounds/`) — are grown inside
15
- * {@link execute}, the way ReSTIR's reservoirs follow the resolution. The render-order (sort)
16
- * scratch is not in that list because it is not unconditional: see below.
16
+ * per-emitter bounds accumulator, see `bounds/`) — are grown inside {@link execute}, the way
17
+ * ReSTIR's reservoirs follow the resolution.
18
+ *
19
+ * Everything else a frame touches is the frame graph's. The bucketing's bins, cursors and keys, the
20
+ * whole depth sort, the draw args, the spawn counts and the VM's wide register file are produced
21
+ * and consumed inside one graph, so the pass that first writes each one declares it and the graph
22
+ * allocates it just in time and releases it after its last reader — into the pool the rest of the
23
+ * renderer allocates from. Reserving them here instead would be six megabytes at the default
24
+ * capacity that no other feature could ever borrow, and four of them are cleared by a reset pass
25
+ * every frame regardless.
17
26
  *
18
27
  * Every pass stays within the eight storage buffers a stage gets by default: the emitter record
19
28
  * and the GPU-owned state are two tables of one database buffer, and the VM's constants and code
@@ -61,7 +70,8 @@
61
70
  * ({@link avboit_occupancy}, {@link avboit_splat}, {@link avboit_draw}). Those read the same handles
62
71
  * and composite into a volume and a set of accumulators that are sums, so an ordering would buy
63
72
  * nothing — and the sort is four passes and a scan over every live particle, plus two lists a word
64
- * per particle each, which is why the mode also decides whether those buffers exist at all.
73
+ * per particle each. Under `AVBOIT` none of those passes is recorded, so the graph never allocates
74
+ * their buffers either.
65
75
  *
66
76
  * ## Allocation
67
77
  *
@@ -310,7 +320,11 @@ export class GPUParticleSystem {
310
320
  */
311
321
  sync_membership(): void;
312
322
  /**
313
- * Sizes of the persistent buffers, in bytes, as they stand. Exposed for tests.
323
+ * Sizes of the persistent buffers, in bytes, as they stand — one entry per distinct buffer, so
324
+ * this is the feature's reserved footprint and not a list of the names it binds them under.
325
+ * `alive_read` and `alive_write` are the two `alive` entries under the frame's names for them,
326
+ * and would otherwise be counted a second time each. Exposed for tests.
327
+ *
314
328
  * @returns {Object<string, number>}
315
329
  */
316
330
  bufferSizes(): {
@@ -1 +1 @@
1
- {"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH;IAmLI;;;;;;OAMG;IACH,sBANW,MAAM,iBACN,OAAO,6BAA6B,EAAE,eAAe;QAEpC,QAAQ,GAAzB,MAAM;QACW,sBAAsB,GAAvC,MAAM;OAoBhB;IA1MD;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;;OAGG;IACH,eAFU,OAAO,6BAA6B,EAAE,eAAe,CAEjD;IAEd;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;OAEG;IACH,UAFU,eAAe,CAEhB;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;;OAIG;IACH,kBAFU,YAAY,CAE0B;IAEhD;;;;OAIG;IACH,sBAAM;IAEN,yBAAyB;IACzB,0BAAc;IAEd;;;;;;OAMG;IACH,SAFU,MAAM,CAEH;IA2Ib;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,yEAEC;IAED;;;;;;;;;;;;OAYG;IACH,eAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,gCAEC;IAED;;;;;;;OAOG;IACH,eAHW,OAAO,8BAA8B,EAAE,eAAe,SACtD,MAAM,QAwBhB;IAwED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH;QAZkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;QAC/D,MAAM,EAArB,MAAM;QACS,cAAc,EAA7B,MAAM;QAES,EAAE,EAAjB,MAAM;QACsB,IAAI,GAAhC,kBAAkB;QACF,KAAK,GAArB,MAAM;QAEU,KAAK,GAArB,MAAM;QAEJ,MAAM,GAAC,SAAS,CA8D5B;IAiBD;;;;;;;;;OASG;IACH;QANgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACkB,kBAAkB,EAA1C,UAAU,MAAM,CAAC;QACJ,SAAS,EAAtB,MAAM;QACJ,MAAM,CAalB;IAED;;;;;;;;;;OAUG;IACH;QAPgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,aAAa,EAA1B,MAAM;QACsD,MAAM,EAAlE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC;QACnD;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAkBjE;IAED;;;;;;;;;;;;;;OAcG;IACH;QAXgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACrB,QAAQ,EAAjE,OAAO,2BAA2B,EAAE,cAAc;QACrC,MAAM,EAAnB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,QAAQ,EAArB,MAAM;QACO,eAAe,EAA5B,MAAM;QACO,oBAAoB,EAAjC,MAAM;QACoE,YAAY,EAAtF;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC;QACjE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAsB/E;IAED;;;;;;;;;OASG;IACH,mBAFa,IAAI,CA2DhB;IAoYD;;;OAGG;IACH;YAFoB,MAAM,GAAE,MAAM;MAcjC;IAED,gBA4BC;;CACJ;gCAhnC+B,8BAA8B;mCAD3B,yBAAyB"}
1
+ {"version":3,"file":"GPUParticleSystem.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/particles/GPUParticleSystem.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AACH;IAmLI;;;;;;OAMG;IACH,sBANW,MAAM,iBACN,OAAO,6BAA6B,EAAE,eAAe;QAEpC,QAAQ,GAAzB,MAAM;QACW,sBAAsB,GAAvC,MAAM;OAoBhB;IA1MD;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;;OAGG;IACH,eAFU,OAAO,6BAA6B,EAAE,eAAe,CAEjD;IAEd;;;OAGG;IACH,UAFU,MAAM,CAEP;IAET;;OAEG;IACH,UAFU,eAAe,CAEhB;IAET;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEP;IAET;;;OAGG;IACH,qBAFU,MAAM,CAEQ;IAExB;;;;OAIG;IACH,kBAFU,YAAY,CAE0B;IAEhD;;;;OAIG;IACH,sBAAM;IAEN,yBAAyB;IACzB,0BAAc;IAEd;;;;;;OAMG;IACH,SAFU,MAAM,CAEH;IA2Ib;;;OAGG;IACH,kCAEC;IAED;;;OAGG;IACH,yEAEC;IAED;;;;;;;;;;;;OAYG;IACH,eAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,gCAEC;IAED;;;;;;;OAOG;IACH,eAHW,OAAO,8BAA8B,EAAE,eAAe,SACtD,MAAM,QAwBhB;IAwED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH;QAZkG,KAAK,EAA5F,OAAO,2DAA2D,EAAE,UAAU;QAC/D,MAAM,EAArB,MAAM;QACS,cAAc,EAA7B,MAAM;QAES,EAAE,EAAjB,MAAM;QACsB,IAAI,GAAhC,kBAAkB;QACF,KAAK,GAArB,MAAM;QAEU,KAAK,GAArB,MAAM;QAEJ,MAAM,GAAC,SAAS,CA2D5B;IAiBD;;;;;;;;;OASG;IACH;QANgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACkB,kBAAkB,EAA1C,UAAU,MAAM,CAAC;QACJ,SAAS,EAAtB,MAAM;QACJ,MAAM,CAalB;IAED;;;;;;;;;;OAUG;IACH;QAPgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACjE,MAAM,EAAnB,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,aAAa,EAA1B,MAAM;QACsD,MAAM,EAAlE;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAC;QACnD;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAkBjE;IAED;;;;;;;;;;;;;;OAcG;IACH;QAXgG,KAAK,EAA1F,OAAO,2DAA2D,EAAE,UAAU;QACrB,QAAQ,EAAjE,OAAO,2BAA2B,EAAE,cAAc;QACrC,MAAM,EAAnB,MAAM;QACO,aAAa,EAA1B,MAAM;QACO,IAAI,EAAjB,MAAM;QACO,QAAQ,EAArB,MAAM;QACO,eAAe,EAA5B,MAAM;QACO,oBAAoB,EAAjC,MAAM;QACoE,YAAY,EAAtF;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC;QACjE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAsB/E;IAED;;;;;;;;;OASG;IACH,mBAFa,IAAI,CA2DhB;IA4WD;;;;;;;OAOG;IACH;YAFoB,MAAM,GAAE,MAAM;MAkBjC;IAED,gBA4BC;;CACJ;gCAznC+B,8BAA8B;mCAD3B,yBAAyB"}
@@ -1,8 +1,6 @@
1
1
  import { assert } from "../../../core/assert.js";
2
- import { align_4 } from "../../../core/binary/align_4.js";
3
2
  import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
4
3
  import { warn_limited } from "../../util/warn_limited.js";
5
- import { PREFIX_SCAN_CSDLDF_HEADER_WORDS } from "../gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js";
6
4
  import { hash_mix2 } from "../../../core/math/hash/hash_mix2.js";
7
5
  import {
8
6
  PARTICLE_EMITTER_TICK_WORKGROUP_SIZE,
@@ -38,9 +36,27 @@ import { GPUTextureContext } from "../texture/GPUTextureContext.js";
38
36
 
39
37
  const WORD = Uint32Array.BYTES_PER_ELEMENT;
40
38
 
41
- const STORAGE = GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC;
39
+ /*
40
+ A wide usage mask costs bandwidth: the driver places a buffer by what it was told the buffer might
41
+ have to do, and the flags below are what each one actually does. `pool` and the alive lists are the
42
+ big ones and are touched by nothing but shaders. Adding a flag "just in case" moves 64 MiB onto a
43
+ slower path for a copy nobody makes — see `BufferResourceDescriptor`.
44
+ */
45
+ /** Written only by shaders. */
46
+ const STORAGE = GPUBufferUsage.STORAGE;
47
+ /** Seeded or refilled from the host with `writeBuffer`. */
48
+ const STORAGE_UPLOAD = GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST;
49
+ /** Uploaded, and copied forward into its replacement when the emitter set outgrows it. */
50
+ const STORAGE_GROWABLE = GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC;
51
+ /**
52
+ * An indirect command the GPU writes and the GPU consumes. COPY_SRC is for the playground's HUD,
53
+ * which reads the args back to show that the dispatch really is sized on-device — twelve bytes, and
54
+ * the only thing in this file read back at all.
55
+ */
42
56
  const INDIRECT = GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT | GPUBufferUsage.COPY_SRC;
43
57
 
58
+ const DEFAULT_CAPACITY = 524288;
59
+
44
60
  /**
45
61
  * The GPU particle system: a feature of a scene, in the mould of `ReSTIRDI` — construct once
46
62
  * against a {@link GPUSceneContext}, and contribute the frame's passes through
@@ -48,15 +64,24 @@ const INDIRECT = GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT | GPUBufferUsa
48
64
  *
49
65
  * ## What it owns
50
66
  *
51
- * Every piece of persistent GPU state: the particle pool, the ping-pong alive lists, the dead
52
- * free-list, the counters, both indirect-args buffers, the simulation-order (coherence) scratch,
53
- * the emitter database (the emitter table and the GPU-owned state table, one buffer), the packed
54
- * program buffer, and the spawn-command ring. Buffers that depend on the emitter set — the
55
- * coherence scratch on the number of distinct programs, the program buffer on the heap, the
67
+ * Persistent GPU state, and only that: a buffer is reserved here if and only if its contents have
68
+ * to survive to the next frame. That is the particle pool, the ping-pong alive lists, the dead
69
+ * free-list, the counters, the simulation-order (coherence) list, simulate's indirect dispatch args
70
+ * (written at the end of one frame, read by the next), the emitter database (the emitter table and
71
+ * the GPU-owned state table, one buffer), the packed program buffer, and the two CPU-uploaded
72
+ * queues — the spawn-command ring and the warm-up queue. Buffers that depend on the emitter set —
73
+ * the coherence list on the number of distinct programs, the program buffer on the heap, the
56
74
  * database on its own pages, the counters on the emitter table's element capacity (they carry the
57
- * per-emitter bounds accumulator, see `bounds/`) — are grown inside
58
- * {@link execute}, the way ReSTIR's reservoirs follow the resolution. The render-order (sort)
59
- * scratch is not in that list because it is not unconditional: see below.
75
+ * per-emitter bounds accumulator, see `bounds/`) — are grown inside {@link execute}, the way
76
+ * ReSTIR's reservoirs follow the resolution.
77
+ *
78
+ * Everything else a frame touches is the frame graph's. The bucketing's bins, cursors and keys, the
79
+ * whole depth sort, the draw args, the spawn counts and the VM's wide register file are produced
80
+ * and consumed inside one graph, so the pass that first writes each one declares it and the graph
81
+ * allocates it just in time and releases it after its last reader — into the pool the rest of the
82
+ * renderer allocates from. Reserving them here instead would be six megabytes at the default
83
+ * capacity that no other feature could ever borrow, and four of them are cleared by a reset pass
84
+ * every frame regardless.
60
85
  *
61
86
  * Every pass stays within the eight storage buffers a stage gets by default: the emitter record
62
87
  * and the GPU-owned state are two tables of one database buffer, and the VM's constants and code
@@ -104,7 +129,8 @@ const INDIRECT = GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT | GPUBufferUsa
104
129
  * ({@link avboit_occupancy}, {@link avboit_splat}, {@link avboit_draw}). Those read the same handles
105
130
  * and composite into a volume and a set of accumulators that are sums, so an ordering would buy
106
131
  * nothing — and the sort is four passes and a scan over every live particle, plus two lists a word
107
- * per particle each, which is why the mode also decides whether those buffers exist at all.
132
+ * per particle each. Under `AVBOIT` none of those passes is recorded, so the graph never allocates
133
+ * their buffers either.
108
134
  *
109
135
  * ## Allocation
110
136
  *
@@ -299,7 +325,7 @@ export class GPUParticleSystem {
299
325
  * @param {number} [options.capacity] max simultaneous particles
300
326
  * @param {number} [options.spawn_command_capacity] most {@link spawn} calls one frame keeps
301
327
  */
302
- constructor(graphics, scene_context, { capacity = 1 << 16, spawn_command_capacity = 256 } = {}) {
328
+ constructor(graphics, scene_context, { capacity = DEFAULT_CAPACITY, spawn_command_capacity = 256 } = {}) {
303
329
  assert.defined(graphics, "graphics");
304
330
  assert.defined(scene_context, "scene_context");
305
331
  assert.equal(scene_context.isGPUSceneContext, true, "scene_context.isGPUSceneContext !== true");
@@ -519,22 +545,19 @@ export class GPUParticleSystem {
519
545
  return color;
520
546
  }
521
547
 
522
- // Allocated here rather than in the constructor: they are two words per particle plus the
523
- // bins, and only this mode ever reads them. A system the renderer drives never makes them.
524
- this.#ensure_sort_buffers();
525
-
526
548
  // The render order: back-to-front by view depth, so premultiplied transparency composites
527
549
  // correctly. Its two per-particle passes take the dispatch the coherence reset wrote from
528
- // the GPU's own alive count.
550
+ // the GPU's own alive count, and every buffer it needs is the graph's — a system the
551
+ // renderer drives through AVBOIT records none of these passes and so pays for none of them.
529
552
  const sorted = graph_particle_sort({
530
553
  graph,
531
- gpu: this.buffers,
532
554
  camera,
533
555
  emitter_database: simulated.emitter_database,
534
556
  pool: simulated.pool,
535
557
  alive: simulated.alive,
536
558
  counters: simulated.counters,
537
559
  dispatch_args: simulated.sim_dispatch_args,
560
+ capacity: this.capacity,
538
561
  bucket_count: PARTICLE_SORT_BUCKET_COUNT,
539
562
  near: this.sort_depth_range[0],
540
563
  far: this.sort_depth_range[1],
@@ -852,7 +875,7 @@ export class GPUParticleSystem {
852
875
 
853
876
  if (this.buffers.warmup_queue.size < bytes) {
854
877
  this.buffers.warmup_queue.destroy();
855
- this.buffers.warmup_queue = device.createBuffer({ label: "particles/warmup_queue", size: bytes, usage: STORAGE });
878
+ this.buffers.warmup_queue = device.createBuffer({ label: "particles/warmup_queue", size: bytes, usage: STORAGE_UPLOAD });
856
879
  }
857
880
 
858
881
  device.queue.writeBuffer(this.buffers.warmup_queue, 0, words.buffer, words.byteOffset, bytes);
@@ -946,7 +969,7 @@ export class GPUParticleSystem {
946
969
  }
947
970
 
948
971
  const device = this.graphics.device;
949
- const grown = device.createBuffer({ label: "particles/counters", size, usage: STORAGE });
972
+ const grown = device.createBuffer({ label: "particles/counters", size, usage: STORAGE_GROWABLE });
950
973
 
951
974
  const cmd = ShadeGPUCommandContext.create(this.graphics, "particles/counters grow");
952
975
 
@@ -966,8 +989,14 @@ export class GPUParticleSystem {
966
989
  }
967
990
 
968
991
  /**
969
- * Scratch follows the peak number of program ids. The coherence list itself is persistent:
970
- * the next simulate consumes its entries and padding with the previous frame's saved count.
992
+ * The coherence list follows the peak number of program ids. It is the one thing the bucketing
993
+ * leaves behind: the next simulate consumes its entries and padding with the previous frame's
994
+ * saved count, so it cannot be a transient and it cannot be reallocated empty. Growth copies it
995
+ * forward; the old count and dispatch stay valid because the entries keep their places.
996
+ *
997
+ * The bins, cursors, keys and dispatch args the bucketing needs alongside it live and die inside
998
+ * one frame graph, so `coherence/` declares them on the passes that write them and the graph
999
+ * owns them.
971
1000
  *
972
1001
  * @param {number} buckets
973
1002
  */
@@ -978,56 +1007,26 @@ export class GPUParticleSystem {
978
1007
 
979
1008
  const device = this.graphics.device;
980
1009
  const buffers = this.buffers;
981
- const capacity = this.capacity;
982
-
983
- for (const name of ["sim_keys", "sim_histogram", "sim_bucket_counts", "sim_cursor"]) {
984
- buffers[name]?.destroy();
985
- }
986
1010
 
987
1011
  // Padding rounds each bucket up to a whole workgroup, so it can add at most `workgroup - 1`
988
1012
  // entries per bucket; one whole workgroup per bucket is the bound.
989
1013
  const previous = buffers.sim_list;
990
- buffers.sim_list = device.createBuffer({ label: "particles/sim_list", size: (capacity + buckets * PARTICLE_SIMULATE_WORKGROUP_SIZE) * WORD, usage: STORAGE });
1014
+ buffers.sim_list = device.createBuffer({
1015
+ label: "particles/sim_list",
1016
+ size: (this.capacity + buckets * PARTICLE_SIMULATE_WORKGROUP_SIZE) * WORD,
1017
+ usage: STORAGE_GROWABLE,
1018
+ });
1019
+
991
1020
  if (previous !== undefined) {
992
1021
  const cmd = ShadeGPUCommandContext.create(this.graphics, "particles/coherence grow");
993
1022
  cmd.gpu_encoder.copyBufferToBuffer(previous, 0, buffers.sim_list, 0, previous.size);
994
1023
  cmd.finish();
995
1024
  previous.destroy();
996
1025
  }
997
- buffers.sim_keys = device.createBuffer({ label: "particles/sim_keys", size: capacity * WORD, usage: STORAGE });
998
- // `{count, elements}` for the CSDLDF scan; the scan reads whole vec4s, so the bins are
999
- // rounded up to a multiple of four.
1000
- buffers.sim_histogram = device.createBuffer({ label: "particles/sim_histogram", size: (PREFIX_SCAN_CSDLDF_HEADER_WORDS + align_4(buckets)) * WORD, usage: STORAGE });
1001
- buffers.sim_bucket_counts = device.createBuffer({ label: "particles/sim_bucket_counts", size: buckets * WORD, usage: STORAGE });
1002
- buffers.sim_cursor = device.createBuffer({ label: "particles/sim_cursor", size: buckets * WORD, usage: STORAGE });
1003
1026
 
1004
1027
  this.#sim_bucket_capacity = buckets;
1005
1028
  }
1006
1029
 
1007
- /**
1008
- * The render-order scratch, made on the first frame that actually sorts.
1009
- *
1010
- * Only {@link ParticleRenderMode.BILLBOARD} reads any of it, and the two per-particle lists are
1011
- * a word per particle each — at the renderer's default capacity, half a megabyte that AVBOIT
1012
- * would never touch. Nothing in them outlives a frame, so there is nothing to carry over and the
1013
- * first sorted frame is as correct as any later one.
1014
- */
1015
- #ensure_sort_buffers() {
1016
- const buffers = this.buffers;
1017
-
1018
- if (buffers.sorted !== undefined) {
1019
- return;
1020
- }
1021
-
1022
- const device = this.graphics.device;
1023
- const capacity = this.capacity;
1024
-
1025
- buffers.sorted = device.createBuffer({ label: "particles/sorted", size: capacity * WORD, usage: STORAGE });
1026
- buffers.sort_keys = device.createBuffer({ label: "particles/sort_keys", size: capacity * WORD, usage: STORAGE });
1027
- buffers.sort_histogram = device.createBuffer({ label: "particles/sort_histogram", size: (PREFIX_SCAN_CSDLDF_HEADER_WORDS + align_4(PARTICLE_SORT_BUCKET_COUNT)) * WORD, usage: STORAGE });
1028
- buffers.sort_cursor = device.createBuffer({ label: "particles/sort_cursor", size: PARTICLE_SORT_BUCKET_COUNT * WORD, usage: STORAGE });
1029
- }
1030
-
1031
1030
  /**
1032
1031
  * The buffers whose size is fixed by the pool capacity, and the free list's initial contents.
1033
1032
  */
@@ -1041,21 +1040,21 @@ export class GPUParticleSystem {
1041
1040
  device.createBuffer({ label: "particles/alive_a", size: capacity * WORD, usage: STORAGE }),
1042
1041
  device.createBuffer({ label: "particles/alive_b", size: capacity * WORD, usage: STORAGE }),
1043
1042
  ];
1044
- buffers.dead = device.createBuffer({ label: "particles/dead", size: capacity * WORD, usage: STORAGE });
1043
+ buffers.dead = device.createBuffer({ label: "particles/dead", size: capacity * WORD, usage: STORAGE_UPLOAD });
1045
1044
  // Just the counters to begin with. The per-emitter bounds accumulator that shares this
1046
1045
  // buffer follows the emitter table's capacity, and there is no table yet.
1047
- buffers.counters = device.createBuffer({ label: "particles/counters", size: PARTICLE_COUNTER_COUNT * WORD, usage: STORAGE });
1046
+ buffers.counters = device.createBuffer({ label: "particles/counters", size: PARTICLE_COUNTER_COUNT * WORD, usage: STORAGE_GROWABLE });
1048
1047
 
1049
- // Indirect args, written on-GPU. Zero-initialised (WebGPU spec), so the first frame's
1050
- // indirect dispatch/draw are no-ops until the first build-indirect has run.
1048
+ // Simulate's workgroup count, written by the END of one frame's build-indirect and read by
1049
+ // the NEXT frame's dispatch — the one indirect buffer that crosses the boundary, and so the
1050
+ // one the graph cannot own. Zero-initialised (WebGPU spec), so the first frame's indirect
1051
+ // dispatch is a no-op until the first build-indirect has run.
1051
1052
  buffers.dispatch_args = device.createBuffer({ label: "particles/dispatch_args", size: 3 * WORD, usage: INDIRECT });
1052
- buffers.draw_args = device.createBuffer({ label: "particles/draw_args", size: 4 * WORD, usage: INDIRECT });
1053
- buffers.sim_dispatch_args = device.createBuffer({ label: "particles/sim_dispatch_args", size: 3 * WORD, usage: INDIRECT });
1054
1053
 
1055
- buffers.spawn_commands = device.createBuffer({ label: "particles/spawn_commands", size: this.#spawn_commands.byteLength, usage: STORAGE });
1054
+ buffers.spawn_commands = device.createBuffer({ label: "particles/spawn_commands", size: this.#spawn_commands.byteLength, usage: STORAGE_UPLOAD });
1056
1055
 
1057
1056
  // The warm-up queue: one entry to start with, grown on upload to what a frame registers.
1058
- buffers.warmup_queue = device.createBuffer({ label: "particles/warmup_queue", size: PARTICLE_WARMUP_QUEUE_WORDS * WORD, usage: STORAGE });
1057
+ buffers.warmup_queue = device.createBuffer({ label: "particles/warmup_queue", size: PARTICLE_WARMUP_QUEUE_WORDS * WORD, usage: STORAGE_UPLOAD });
1059
1058
 
1060
1059
  // Every slot free, and the counters saying so.
1061
1060
  const dead = new Uint32Array(capacity);
@@ -1119,16 +1118,24 @@ export class GPUParticleSystem {
1119
1118
  }
1120
1119
 
1121
1120
  /**
1122
- * Sizes of the persistent buffers, in bytes, as they stand. Exposed for tests.
1121
+ * Sizes of the persistent buffers, in bytes, as they stand — one entry per distinct buffer, so
1122
+ * this is the feature's reserved footprint and not a list of the names it binds them under.
1123
+ * `alive_read` and `alive_write` are the two `alive` entries under the frame's names for them,
1124
+ * and would otherwise be counted a second time each. Exposed for tests.
1125
+ *
1123
1126
  * @returns {Object<string, number>}
1124
1127
  */
1125
1128
  bufferSizes() {
1126
1129
  const sizes = {};
1130
+ const counted = new Set();
1127
1131
 
1128
- for (const [name, buffer] of Object.entries(this.buffers)) {
1129
- if (Array.isArray(buffer)) {
1130
- sizes[name] = buffer[0].size;
1131
- } else if (buffer !== undefined && buffer !== null) {
1132
+ for (const [name, value] of Object.entries(this.buffers)) {
1133
+ for (const buffer of Array.isArray(value) ? value : [value]) {
1134
+ if (buffer === undefined || buffer === null || counted.has(buffer)) {
1135
+ continue;
1136
+ }
1137
+
1138
+ counted.add(buffer);
1132
1139
  sizes[name] = buffer.size;
1133
1140
  }
1134
1141
  }
@@ -1181,7 +1188,7 @@ export class GPUParticleSystem {
1181
1188
  function replace_data_buffer(device, previous, label, data) {
1182
1189
  previous?.destroy();
1183
1190
 
1184
- const buffer = device.createBuffer({ label, size: Math.max(WORD, data.byteLength), usage: STORAGE });
1191
+ const buffer = device.createBuffer({ label, size: Math.max(WORD, data.byteLength), usage: STORAGE_UPLOAD });
1185
1192
 
1186
1193
  device.queue.writeBuffer(buffer, 0, data);
1187
1194
 
@@ -21,15 +21,22 @@
21
21
  * consumed entirely on the GPU, including the dispatch size of the two per-particle passes, which
22
22
  * the reset pass writes into `sim_dispatch_args` from the GPU's own alive count.
23
23
  *
24
+ * ## The list is the feature's, the scratch is the graph's
25
+ *
26
+ * `sim_list` is the one thing here that crosses the frame boundary — this frame writes it, next
27
+ * frame's simulate reads it — so the feature owns it and hands it in. Everything else (the keys,
28
+ * the bins, the cursors, the dispatch args) is produced and consumed inside this call, so the pass
29
+ * that first writes each one declares it with a {@link BufferResourceDescriptor} in place of a
30
+ * handle, and the graph allocates and releases it around the passes that use it. `keys` is a word
31
+ * per particle: at the renderer's default capacity, 2 MiB the feature no longer reserves.
32
+ *
33
+ * None of them asks for a clear. The reset pass covers the histogram (header, padding and the bins
34
+ * up to the whole `vec4` the last one lands in), the cursors and all three dispatch words; `keys`
35
+ * is written by the same indirect dispatch that later reads it, and `bucket_counts` by the same
36
+ * `bucket_count` threads.
37
+ *
24
38
  * @param {object} params
25
39
  * @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} params.graph
26
- * @param {object} params.gpu persistent buffers owned by the feature (GPUBuffer instances)
27
- * @param {GPUBuffer} params.gpu.sim_list the padded, program-coherent index list this produces
28
- * @param {GPUBuffer} params.gpu.sim_keys per-alive-entry program id
29
- * @param {GPUBuffer} params.gpu.sim_histogram `{count, elements}` bins for the CSDLDF scan
30
- * @param {GPUBuffer} params.gpu.sim_bucket_counts raw (unpadded) per-bucket counts
31
- * @param {GPUBuffer} params.gpu.sim_cursor per-bucket scatter cursor
32
- * @param {GPUBuffer} params.gpu.sim_dispatch_args indirect args for the two per-particle passes
33
40
  * @param {number} params.emitter_database graph handle of the emitter database buffer
34
41
  * @param {number} params.pool graph handle of the particle pool
35
42
  * @param {number} params.alive graph handle of this frame's compacted alive list
@@ -38,25 +45,19 @@
38
45
  * imported here because the simulate pass reads it earlier in the same frame: importing the same
39
46
  * GPUBuffer twice makes two resource entries the graph cannot see are the same memory, so the read
40
47
  * and the write end up on separate dependency chains
48
+ * @param {number} params.capacity pool capacity in particles — the length of the key list
41
49
  * @param {number} params.bucket_count number of distinct compiled programs
42
50
  * @param {ParticleBucketScratch} [params.scratch] latest handles when bucketing again in this graph
43
51
  * @returns {{counters: number, sim_list: number, dispatch_args: number, scratch: ParticleBucketScratch}} the threaded handles downstream passes must read
44
52
  */
45
- export function graph_particle_bucket({ graph, gpu, emitter_database, pool, alive, counters, sim_list, bucket_count, scratch }: {
53
+ export function graph_particle_bucket({ graph, emitter_database, pool, alive, counters, sim_list, capacity, bucket_count, scratch }: {
46
54
  graph: import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
47
- gpu: {
48
- sim_list: GPUBuffer;
49
- sim_keys: GPUBuffer;
50
- sim_histogram: GPUBuffer;
51
- sim_bucket_counts: GPUBuffer;
52
- sim_cursor: GPUBuffer;
53
- sim_dispatch_args: GPUBuffer;
54
- };
55
55
  emitter_database: number;
56
56
  pool: number;
57
57
  alive: number;
58
58
  counters: number;
59
59
  sim_list: number;
60
+ capacity: number;
60
61
  bucket_count: number;
61
62
  scratch?: ParticleBucketScratch;
62
63
  }): {
@@ -1 +1 @@
1
- {"version":3,"file":"graph_particle_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/coherence/graph_particle_bucket.js"],"names":[],"mappings":"AAkBA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH;IApBqG,KAAK,EAA/F,OAAO,8DAA8D,EAAE,UAAU;IAClE,GAAG;QACI,QAAQ;QACR,QAAQ;QACR,aAAa;QACb,iBAAiB;QACjB,UAAU;QACV,iBAAiB;;IACxB,gBAAgB,EAA/B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,QAAQ,EAAvB,MAAM;IAIS,YAAY,EAA3B,MAAM;IACyB,OAAO,GAAtC,qBAAqB;;cACR,MAAM;cAAY,MAAM;mBAAiB,MAAM;aAAW,qBAAqB;EAyGtG;oCAnJY;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAC"}
1
+ {"version":3,"file":"graph_particle_bucket.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/coherence/graph_particle_bucket.js"],"names":[],"mappings":"AAoBA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH;IAdqG,KAAK,EAA/F,OAAO,8DAA8D,EAAE,UAAU;IAClE,gBAAgB,EAA/B,MAAM;IACS,IAAI,EAAnB,MAAM;IACS,KAAK,EAApB,MAAM;IACS,QAAQ,EAAvB,MAAM;IACS,QAAQ,EAAvB,MAAM;IAIS,QAAQ,EAAvB,MAAM;IACS,YAAY,EAA3B,MAAM;IACyB,OAAO,GAAtC,qBAAqB;IACnB;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,qBAAqB,CAAA;CAAC,CA4GvG;oCA9JY;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { assert } from "../../../../core/assert.js";
2
2
  import { align_4 } from "../../../../core/binary/align_4.js";
3
+ import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
3
4
  import { graph_compute_indirect_pass } from "../../shader/graph/compute/graph_compute_indirect_pass.js";
4
5
  import { graph_compute_pass } from "../../shader/graph/compute/graph_compute_pass.js";
5
- import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
6
6
  import {
7
7
  PREFIX_SCAN_CSDLDF_HEADER_WORDS,
8
8
  } from "../../gpu_primitive/prefix_sum/v1/shader_prefix_scan_csdldf.js";
@@ -16,6 +16,8 @@ import {
16
16
  shader_particle_bucket_scatter,
17
17
  } from "./shader_particle_bucket.js";
18
18
 
19
+ const WORD = Uint32Array.BYTES_PER_ELEMENT;
20
+
19
21
  /**
20
22
  * @typedef {{keys: number, histogram: number, cursor: number, bucket_counts: number, dispatch_args: number}} ParticleBucketScratch
21
23
  */
@@ -40,15 +42,22 @@ import {
40
42
  * consumed entirely on the GPU, including the dispatch size of the two per-particle passes, which
41
43
  * the reset pass writes into `sim_dispatch_args` from the GPU's own alive count.
42
44
  *
45
+ * ## The list is the feature's, the scratch is the graph's
46
+ *
47
+ * `sim_list` is the one thing here that crosses the frame boundary — this frame writes it, next
48
+ * frame's simulate reads it — so the feature owns it and hands it in. Everything else (the keys,
49
+ * the bins, the cursors, the dispatch args) is produced and consumed inside this call, so the pass
50
+ * that first writes each one declares it with a {@link BufferResourceDescriptor} in place of a
51
+ * handle, and the graph allocates and releases it around the passes that use it. `keys` is a word
52
+ * per particle: at the renderer's default capacity, 2 MiB the feature no longer reserves.
53
+ *
54
+ * None of them asks for a clear. The reset pass covers the histogram (header, padding and the bins
55
+ * up to the whole `vec4` the last one lands in), the cursors and all three dispatch words; `keys`
56
+ * is written by the same indirect dispatch that later reads it, and `bucket_counts` by the same
57
+ * `bucket_count` threads.
58
+ *
43
59
  * @param {object} params
44
60
  * @param {import("../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph} params.graph
45
- * @param {object} params.gpu persistent buffers owned by the feature (GPUBuffer instances)
46
- * @param {GPUBuffer} params.gpu.sim_list the padded, program-coherent index list this produces
47
- * @param {GPUBuffer} params.gpu.sim_keys per-alive-entry program id
48
- * @param {GPUBuffer} params.gpu.sim_histogram `{count, elements}` bins for the CSDLDF scan
49
- * @param {GPUBuffer} params.gpu.sim_bucket_counts raw (unpadded) per-bucket counts
50
- * @param {GPUBuffer} params.gpu.sim_cursor per-bucket scatter cursor
51
- * @param {GPUBuffer} params.gpu.sim_dispatch_args indirect args for the two per-particle passes
52
61
  * @param {number} params.emitter_database graph handle of the emitter database buffer
53
62
  * @param {number} params.pool graph handle of the particle pool
54
63
  * @param {number} params.alive graph handle of this frame's compacted alive list
@@ -57,34 +66,38 @@ import {
57
66
  * imported here because the simulate pass reads it earlier in the same frame: importing the same
58
67
  * GPUBuffer twice makes two resource entries the graph cannot see are the same memory, so the read
59
68
  * and the write end up on separate dependency chains
69
+ * @param {number} params.capacity pool capacity in particles — the length of the key list
60
70
  * @param {number} params.bucket_count number of distinct compiled programs
61
71
  * @param {ParticleBucketScratch} [params.scratch] latest handles when bucketing again in this graph
62
72
  * @returns {{counters: number, sim_list: number, dispatch_args: number, scratch: ParticleBucketScratch}} the threaded handles downstream passes must read
63
73
  */
64
- export function graph_particle_bucket({ graph, gpu, emitter_database, pool, alive, counters, sim_list, bucket_count, scratch }) {
74
+ export function graph_particle_bucket({ graph, emitter_database, pool, alive, counters, sim_list, capacity, bucket_count, scratch }) {
65
75
  assert.defined(graph, "graph");
76
+ assert.isPositiveInteger(capacity, "capacity");
66
77
  assert.isPositiveInteger(bucket_count, "bucket_count");
67
78
  assert.isNonNegativeInteger(sim_list, "sim_list");
68
79
 
69
- // Sized from the bucket count, which only changes when the emitter set does — so a caller that
70
- // added an emitter and did not reallocate gets told here rather than scattering out of bounds.
71
- // Aligned up because the scan reads whole `vec4`s, so the last bin's tail is part of the buffer.
80
+ // Sized from the bucket count, which only changes when the emitter set does. Aligned up because
81
+ // the scan reads whole `vec4`s, so the last bin's tail is part of the buffer.
72
82
  const bin_words = PREFIX_SCAN_CSDLDF_HEADER_WORDS + align_4(bucket_count);
73
- assert.greaterThanOrEqual(gpu.sim_histogram.size, bin_words * Uint32Array.BYTES_PER_ELEMENT, "sim_histogram is too small for the bucket count");
74
- assert.greaterThanOrEqual(gpu.sim_cursor.size, bucket_count * Uint32Array.BYTES_PER_ELEMENT, "sim_cursor is too small for the bucket count");
75
- assert.greaterThanOrEqual(gpu.sim_bucket_counts.size, bucket_count * Uint32Array.BYTES_PER_ELEMENT, "sim_bucket_counts is too small for the bucket count");
76
83
 
77
84
  // Every buffer a pass WRITES must be THREADED: the write returns a renamed (versioned) handle
78
- // and the next pass must read THAT one. Reading the original import instead leaves the ordering
85
+ // and the next pass must read THAT one. Reading the original handle instead leaves the ordering
79
86
  // between the two passes unexpressed — the graph's own validator rejects it, because both
80
87
  // versions name one piece of memory and the stale-looking read silently returns the new
81
88
  // contents.
82
- // An edit frame buckets twice. Reuse the latest handles so both runs share one dependency chain.
83
- let keys = scratch?.keys ?? graph_import_buffer(graph, gpu.sim_keys, "particles/sim_keys");
84
- let histogram = scratch?.histogram ?? graph_import_buffer(graph, gpu.sim_histogram, "particles/sim_histogram");
85
- let cursor = scratch?.cursor ?? graph_import_buffer(graph, gpu.sim_cursor, "particles/sim_cursor");
86
- let bucket_counts = scratch?.bucket_counts ?? graph_import_buffer(graph, gpu.sim_bucket_counts, "particles/sim_bucket_counts");
87
- let dispatch_args = scratch?.dispatch_args ?? graph_import_buffer(graph, gpu.sim_dispatch_args, "particles/sim_dispatch_args");
89
+ // An edit frame buckets twice. The second run is handed the first's handles, so the transients
90
+ // are created once and both runs share one dependency chain.
91
+ let keys = scratch?.keys ?? BufferResourceDescriptor.from(capacity * WORD, GPUBufferUsage.STORAGE);
92
+ let histogram = scratch?.histogram ?? BufferResourceDescriptor.from(bin_words * WORD, GPUBufferUsage.STORAGE);
93
+ let cursor = scratch?.cursor ?? BufferResourceDescriptor.from(bucket_count * WORD, GPUBufferUsage.STORAGE);
94
+ let bucket_counts = scratch?.bucket_counts ?? BufferResourceDescriptor.from(bucket_count * WORD, GPUBufferUsage.STORAGE);
95
+ // Indirect args this pass writes and the two per-particle passes below consume, along with the
96
+ // depth sort's and the bounds pass's — hence INDIRECT on top of STORAGE.
97
+ let dispatch_args = scratch?.dispatch_args ?? BufferResourceDescriptor.from(
98
+ 3 * WORD,
99
+ GPUBufferUsage.STORAGE | GPUBufferUsage.INDIRECT,
100
+ );
88
101
 
89
102
  // 0. Clear the bins and cursors, write the scan's {count} header, and size the two per-particle
90
103
  // passes below from the GPU's own alive count.
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Every stock operation that takes no parameters of its own is a method here, taken from the library
11
11
  * rather than listed — a type added to it is callable the same day. The rest — `const`, `swizzle`,
12
- * `random`, `curve` and the attribute nodes — need a parameter and are reached through
12
+ * `random`, `curveLiteral` and the attribute nodes — need a parameter and are reached through
13
13
  * {@link #op}, or through the shorthands below where there is an obvious one.
14
14
  *
15
15
  * A number where a value is expected becomes a literal, so `g.mul(v, 0.5)` is what it looks like.
@@ -58,10 +58,10 @@ export class ParticleGroupBuilder {
58
58
  * @param {object} [parameters] overrides on top of the type's defaults
59
59
  * @returns {{node: NodeInstance, port: Port}} the node's `out` port
60
60
  */
61
- op(type: string, args?: (number | {
61
+ op(type: string, args?: Array<{
62
62
  node: NodeInstance;
63
63
  port: Port;
64
- })[], parameters?: object): {
64
+ } | number>, parameters?: object): {
65
65
  node: NodeInstance;
66
66
  port: Port;
67
67
  };
@@ -76,10 +76,10 @@ export class ParticleGroupBuilder {
76
76
  * @returns {Object<string, {node: NodeInstance, port: Port}>} a reference per output port name
77
77
  */
78
78
  call(group: ParticleNodeGroup, args?: {
79
- [x: string]: number | {
79
+ [x: string]: {
80
80
  node: NodeInstance;
81
81
  port: Port;
82
- };
82
+ } | number;
83
83
  }): {
84
84
  [x: string]: {
85
85
  node: NodeInstance;
@@ -159,10 +159,10 @@ export class ParticleGroupBuilder {
159
159
  * @param {{node: NodeInstance, port: Port}|number} value
160
160
  * @returns {void}
161
161
  */
162
- out(name: string, value: number | {
162
+ out(name: string, value: {
163
163
  node: NodeInstance;
164
164
  port: Port;
165
- }): void;
165
+ } | number): void;
166
166
  /**
167
167
  * Finish the group, having checked that it is one.
168
168
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleGroupBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleGroupBuilder.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAaI;;OAEG;IACH,qBAFW,MAAM,EAoBhB;IAjCD;;;OAGG;IACH,OAFU,iBAAiB,CAErB;IAEN;;;OAGG;IACH;YAFiB,MAAM,GAAE;YAAC,IAAI,eAAe;YAAC,IAAI,OAAM;SAAC;MAEjD;IAyBR;;;;;;;;;;;OAWG;IACH,SALW,MAAM;;;uBAEN,MAAM;;;MAoBhB;IAED;;;;;;;;;OASG;IACH,YAJW,iBAAiB;;;;;;;;;;MA0B3B;IAED;;;;;OAKG;IACH,iBAHc,MAAM,KACP;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAI5C;IAED;;;;;;OAMG;IACH,WAJW;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,WACvC,MAAM,GACJ;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAU5C;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED;;;;;OAKG;IACH,YAHW,MAAM,GACJ;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAI5C;IAED;;;;;;OAMG;IACH,UAJW,MAAM;;;QAEJ,IAAI,CAehB;IAED;;;;;;;;OAQG;IACH,SAFa,iBAAiB,CA+B7B;;CAgDJ;kCA7SiC,wBAAwB"}
1
+ {"version":3,"file":"ParticleGroupBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleGroupBuilder.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;IAaI;;OAEG;IACH,qBAFW,MAAM,EAoBhB;IAjCD;;;OAGG;IACH,OAFU,iBAAiB,CAErB;IAEN;;;OAGG;IACH;YAFiB,MAAM,GAAE;YAAC,IAAI,eAAe;YAAC,IAAI,OAAM;SAAC;MAEjD;IAyBR;;;;;;;;;;;OAWG;IACH,SALW,MAAM,SACN,MAAM;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,CAAC,eAC9C,MAAM,GACJ;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAmB5C;IAED;;;;;;;;;OASG;IACH,YAJW,iBAAiB;YACV,MAAM,GAAE;YAAC,IAAI,eAAe;YAAC,IAAI,OAAM;SAAC,GAAC,MAAM;;YAC7C,MAAM,GAAE;YAAC,IAAI,eAAe;YAAC,IAAI,OAAM;SAAC;MAwB3D;IAED;;;;;OAKG;IACH,iBAHc,MAAM,KACP;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAI5C;IAED;;;;;;OAMG;IACH,WAJW;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,WACvC,MAAM,GACJ;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAU5C;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED,qGAAqG;IACrG,KADY;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GAAc;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAGhG;IAED;;;;;OAKG;IACH,YAHW,MAAM,GACJ;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,CAI5C;IAED;;;;;;OAMG;IACH,UAJW,MAAM,SACN;QAAC,IAAI,eAAe;QAAC,IAAI,OAAM;KAAC,GAAC,MAAM,GACrC,IAAI,CAehB;IAED;;;;;;;;OAQG;IACH,SAFa,iBAAiB,CA+B7B;;CAgDJ;kCA7SiC,wBAAwB"}
@@ -17,7 +17,7 @@ import {
17
17
  *
18
18
  * Every stock operation that takes no parameters of its own is a method here, taken from the library
19
19
  * rather than listed — a type added to it is callable the same day. The rest — `const`, `swizzle`,
20
- * `random`, `curve` and the attribute nodes — need a parameter and are reached through
20
+ * `random`, `curveLiteral` and the attribute nodes — need a parameter and are reached through
21
21
  * {@link #op}, or through the shorthands below where there is an obvious one.
22
22
  *
23
23
  * A number where a value is expected becomes a literal, so `g.mul(v, 0.5)` is what it looks like.
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleNodeGroup.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeGroup.js"],"names":[],"mappings":"AAiWA;;;;;GAKG;AACH,6CAHW,YAAY,GACV,OAAO,CAInB;AAED;;;;;GAKG;AACH,iDAHW,YAAY,GACV,OAAO,CAInB;AAED;;;;;;;;;;GAUG;AACH,6EAFa,OAAO,CAKnB;AA3XD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;;;;GASG;AACH,wCAFU,MAAM,CAE2B;AAE3C;;GAEG;AACH,yCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH;IA2EI;;;;;;;;;;;;;;;OAeG;IACH;QAT2B,IAAI,EAApB,MAAM;QACW,KAAK,GAAtB,MAAM;QACW,IAAI,GAArB,MAAM;QACW,IAAI,GAArB,MAAM;QACY,MAAM,GAAxB,OAAO;QACmF,MAAM,GAAhG,MAAM;YAAC,MAAM,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,CAAA;SAAC,CAAC;QACW,OAAO,GAAjG,MAAM;YAAC,MAAM,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,CAAA;SAAC,CAAC;QAC7E,iBAAiB,CA2B7B;IAnHD;;;;OAIG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,QAFU,OAAO,CAEH;IAEd;;;;OAIG;IACH,QAFU,MAAM;QAAC,MAAM,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,IAAI,CAAA;KAAC,CAAC,CAElF;IAEZ;;;OAGG;IACH,SAFU,MAAM;QAAC,MAAM,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,IAAI,CAAA;KAAC,CAAC,CAEjF;IAEb;;;OAGG;IACH,OAFU,SAAS,CAEK;IAExB;;;OAGG;IACH,QAFU,mBAAmB,CAEM;IAEnC;;;OAGG;IACH,aAFU,4BAA4B,CAEnB;IAEnB;;;OAGG;IACH,WAFU,YAAY,CAEL;IAEjB;;;OAGG;IACH,YAFU,YAAY,CAEJ;IA6ClB;;;;;;OAMG;IACH,oBAJW,MAAM,aACN,aAAa,GACX,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,IAAI,CAMnE;IAGL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;CAN9C;AAQD;;;;;;;GAOG;AACH;IACI;;OAEG;IACH,mBAFW,iBAAiB,EAwD3B;IAnDG;;;OAGG;IACH,gBAFU,iBAAiB,CAET;IAwBlB;;;;;;;;;;MAeC;IAED,kBAKC;IAIT;;;OAGG;IACH,yCAFU,OAAO,CAEoD;CANpE;AAQD;;;;;;;GAOG;AACH;IACI;;;OAGG;IACH,mBAHW,iBAAiB,QACjB,MAAM,EAqDhB;IAhDG;;;OAGG;IACH,gBAFU,iBAAiB,CAET;IAElB;;;;OAIG;IACH,eAFU,MAAM,CAEA;IAoBhB;;;;;;;;;;;;MASM;IAEN,kBAKC;IAIT;;;OAGG;IACH,6CAFU,OAAO,CAE4D;CAN5E;6BAxV4B,wDAAwD;0BAD3D,gDAAgD;oCAGtC,iEAAiE;8BADvE,yDAAyD;wCAE/C,8BAA8B"}
1
+ {"version":3,"file":"ParticleNodeGroup.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeGroup.js"],"names":[],"mappings":"AAiWA;;;;;GAKG;AACH,6CAHW,YAAY,GACV,OAAO,CAInB;AAED;;;;;GAKG;AACH,iDAHW,YAAY,GACV,OAAO,CAInB;AAED;;;;;;;;;;GAUG;AACH,6EAFa,OAAO,CAKnB;AA3XD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;;;;;;;;GASG;AACH,wCAFU,MAAM,CAE2B;AAE3C;;GAEG;AACH,yCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH;IA2EI;;;;;;;;;;;;;;;OAeG;IACH;QAT2B,IAAI,EAApB,MAAM;QACW,KAAK,GAAtB,MAAM;QACW,IAAI,GAArB,MAAM;QACW,IAAI,GAArB,MAAM;QACY,MAAM,GAAxB,OAAO;QACmF,MAAM,GAAhG,MAAM;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,CAAA;SAAC,CAAC;QACW,OAAO,GAAjG,MAAM;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,CAAA;SAAC,CAAC;QAC7E,iBAAiB,CA2B7B;IAnHD;;;;OAIG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,OAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,MAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,QAFU,OAAO,CAEH;IAEd;;;;OAIG;IACH,QAFU,MAAM;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,IAAI,CAAA;KAAC,CAAC,CAElF;IAEZ;;;OAGG;IACH,SAFU,MAAM;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,IAAI,CAAA;KAAC,CAAC,CAEjF;IAEb;;;OAGG;IACH,OAFU,SAAS,CAEK;IAExB;;;OAGG;IACH,QAFU,mBAAmB,CAEM;IAEnC;;;OAGG;IACH,aAFU,4BAA4B,CAEnB;IAEnB;;;OAGG;IACH,WAFU,YAAY,CAEL;IAEjB;;;OAGG;IACH,YAFU,YAAY,CAEJ;IA6ClB;;;;;;OAMG;IACH,oBAJW,MAAM,aACN,aAAa,GACX,OAAO,wBAAwB,EAAE,iBAAiB,GAAC,IAAI,CAMnE;IAGL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;CAN9C;AAQD;;;;;;;GAOG;AACH;IACI;;OAEG;IACH,mBAFW,iBAAiB,EAwD3B;IAnDG;;;OAGG;IACH,gBAFU,iBAAiB,CAET;IAwBlB;;;;;;;;;;MAeC;IAED,kBAKC;IAIT;;;OAGG;IACH,yCAFU,OAAO,CAEoD;CANpE;AAQD;;;;;;;GAOG;AACH;IACI;;;OAGG;IACH,mBAHW,iBAAiB,QACjB,MAAM,EAqDhB;IAhDG;;;OAGG;IACH,gBAFU,iBAAiB,CAET;IAElB;;;;OAIG;IACH,eAFU,MAAM,CAEA;IAoBhB;;;;;;;;;;;;MASM;IAEN,kBAKC;IAIT;;;OAGG;IACH,6CAFU,OAAO,CAE4D;CAN5E;6BAxV4B,wDAAwD;0BAD3D,gDAAgD;oCAGtC,iEAAiE;8BADvE,yDAAyD;wCAE/C,8BAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ParticleNodeRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeRegistry.js"],"names":[],"mappings":"AAqrBA;;;;;;;GAOG;AACH,8CAFa,uBAAuB,EAAE,CAIrC;AAED;;;;;GAKG;AACH,oDAJW,MAAM,GACJ,uBAAuB,CAWnC;AAhrBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;GASG;AACH,kCAFU,QAAQ,CAE2C;AAE7D;;;GAGG;AACH,wCAFU,MAAM,CAE+B;AAE/C;;GAEG;AACH,qCAFU,YAAY,CAEmC;wCAhEjB,8BAA8B;yBAZ7C,oDAAoD;6BAFhD,wDAAwD"}
1
+ {"version":3,"file":"ParticleNodeRegistry.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/particles/graph/ParticleNodeRegistry.js"],"names":[],"mappings":"AA+qBA;;;;;;;GAOG;AACH,8CAFa,uBAAuB,EAAE,CAIrC;AAED;;;;;GAKG;AACH,oDAJW,MAAM,GACJ,uBAAuB,CAWnC;AA1qBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;;;;;GASG;AACH,kCAFU,QAAQ,CAE2C;AAE7D;;;GAGG;AACH,wCAFU,MAAM,CAE+B;AAE/C;;GAEG;AACH,qCAFU,YAAY,CAEmC;wCAhEjB,8BAA8B;yBAZ7C,oDAAoD;6BAFhD,wDAAwD"}