@woosh/meep-engine 3.44.0 → 3.46.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 (447) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/package.json +1 -1
  3. package/src/core/assert.d.ts.map +1 -1
  4. package/src/core/assert.js +5 -1
  5. package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
  6. package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
  7. package/src/core/binary/hash/XXH128Hash.js +4 -55
  8. package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
  9. package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
  10. package/src/core/binary/hash/XXH3_SECRET.js +4 -25
  11. package/src/core/binary/hash/crc32.d.ts +1 -15
  12. package/src/core/binary/hash/crc32.d.ts.map +1 -1
  13. package/src/core/binary/hash/crc32.js +4 -96
  14. package/src/core/binary/hash/xxh3_128.d.ts +1 -9
  15. package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
  16. package/src/core/binary/hash/xxh3_128.js +4 -341
  17. package/src/core/binary/hash/xxh3_64.d.ts +1 -8
  18. package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
  19. package/src/core/binary/hash/xxh3_64.js +4 -241
  20. package/src/core/binary/hash/xxh3_common.d.ts +1 -223
  21. package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
  22. package/src/core/binary/hash/xxh3_common.js +90 -476
  23. package/src/core/collection/array/array_sort_insertion_ascending.d.ts +19 -0
  24. package/src/core/collection/array/array_sort_insertion_ascending.d.ts.map +1 -0
  25. package/src/core/collection/array/array_sort_insertion_ascending.js +31 -0
  26. package/src/core/collection/array/combine_hash.d.ts +6 -0
  27. package/src/core/collection/array/combine_hash.d.ts.map +1 -1
  28. package/src/core/collection/array/combine_hash.js +6 -0
  29. package/src/core/function/FunctionCompiler.js +2 -2
  30. package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.d.ts +27 -0
  31. package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.d.ts.map +1 -0
  32. package/src/core/geom/3d/aabb/aabb3_array_round_outward_f32.js +39 -0
  33. package/src/core/geom/3d/aabb/aabb3_from_v3_array.d.ts.map +1 -1
  34. package/src/core/geom/3d/aabb/aabb3_from_v3_array.js +4 -1
  35. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +2 -2
  36. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -1
  37. package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +1 -1
  38. package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
  39. package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
  40. package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
  41. package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
  42. package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
  43. package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -0
  44. package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.d.ts +21 -0
  45. package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.d.ts.map +1 -0
  46. package/src/core/geom/3d/pose/pose3_apply_inverse_point_array.js +36 -0
  47. package/src/core/geom/3d/pose/pose3_apply_point_array.d.ts +25 -0
  48. package/src/core/geom/3d/pose/pose3_apply_point_array.d.ts.map +1 -0
  49. package/src/core/geom/3d/pose/pose3_apply_point_array.js +40 -0
  50. package/src/core/geom/3d/pose/pose3_compose_array.d.ts +28 -0
  51. package/src/core/geom/3d/pose/pose3_compose_array.d.ts.map +1 -0
  52. package/src/core/geom/3d/pose/pose3_compose_array.js +41 -0
  53. package/src/core/geom/3d/pose/pose3_to_local_array.d.ts +29 -0
  54. package/src/core/geom/3d/pose/pose3_to_local_array.d.ts.map +1 -0
  55. package/src/core/geom/3d/pose/pose3_to_local_array.js +42 -0
  56. package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.d.ts +28 -0
  57. package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.d.ts.map +1 -0
  58. package/src/core/geom/3d/quaternion/quat3_clamp_angle_array.js +66 -0
  59. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.d.ts +22 -0
  60. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.d.ts.map +1 -0
  61. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_left_array.js +30 -0
  62. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.d.ts +23 -0
  63. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.d.ts.map +1 -0
  64. package/src/core/geom/3d/quaternion/quat3_multiply_conjugate_right_array.js +31 -0
  65. package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.d.ts +26 -0
  66. package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.d.ts.map +1 -0
  67. package/src/core/geom/3d/triangle/tri3_compute_normal_area_weighted_array.js +46 -0
  68. package/src/core/geom/ConicRay.js +2 -2
  69. package/src/core/geom/Vector4.d.ts.map +1 -1
  70. package/src/core/geom/Vector4.js +8 -5
  71. package/src/core/geom/vec3/v3_distance_array.d.ts +11 -0
  72. package/src/core/geom/vec3/v3_distance_array.d.ts.map +1 -0
  73. package/src/core/geom/vec3/v3_distance_array.js +19 -0
  74. package/src/core/geom/vec3/v3_normalize_array_checked.d.ts +23 -0
  75. package/src/core/geom/vec3/v3_normalize_array_checked.d.ts.map +1 -0
  76. package/src/core/geom/vec3/v3_normalize_array_checked.js +49 -0
  77. package/src/core/geom/vec3/v3_reject_array.d.ts +15 -0
  78. package/src/core/geom/vec3/v3_reject_array.d.ts.map +1 -0
  79. package/src/core/geom/vec3/v3_reject_array.js +32 -0
  80. package/src/core/graph/csr/csr_build_incidence.d.ts +26 -0
  81. package/src/core/graph/csr/csr_build_incidence.d.ts.map +1 -0
  82. package/src/core/graph/csr/csr_build_incidence.js +71 -0
  83. package/src/core/graph/csr/csr_graph_color_greedy.d.ts +25 -0
  84. package/src/core/graph/csr/csr_graph_color_greedy.d.ts.map +1 -0
  85. package/src/core/graph/csr/csr_graph_color_greedy.js +83 -0
  86. package/src/core/graph/csr/csr_graph_validate_coloring.d.ts +15 -0
  87. package/src/core/graph/csr/csr_graph_validate_coloring.d.ts.map +1 -0
  88. package/src/core/graph/csr/csr_graph_validate_coloring.js +33 -0
  89. package/src/core/math/hash/XXH128Hash.d.ts +38 -0
  90. package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
  91. package/src/core/math/hash/XXH128Hash.js +55 -0
  92. package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
  93. package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
  94. package/src/core/math/hash/XXH3_SECRET.js +25 -0
  95. package/src/core/math/hash/crc32.d.ts +16 -0
  96. package/src/core/math/hash/crc32.d.ts.map +1 -0
  97. package/src/core/math/hash/crc32.js +96 -0
  98. package/src/core/math/hash/xxh3_128.d.ts +10 -0
  99. package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
  100. package/src/core/math/hash/xxh3_128.js +341 -0
  101. package/src/core/math/hash/xxh3_64.d.ts +9 -0
  102. package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
  103. package/src/core/math/hash/xxh3_64.js +241 -0
  104. package/src/core/math/hash/xxh3_common.d.ts +224 -0
  105. package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
  106. package/src/core/math/hash/xxh3_common.js +476 -0
  107. package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.d.ts +26 -0
  108. package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.d.ts.map +1 -0
  109. package/src/core/math/linalg/matrix_symmetric_3x3_solve_ldlt.js +71 -0
  110. package/src/core/math/lookup/ParameterLookupTable.js +2 -2
  111. package/src/core/math/max2_exact.d.ts +15 -0
  112. package/src/core/math/max2_exact.d.ts.map +1 -0
  113. package/src/core/math/max2_exact.js +30 -0
  114. package/src/core/math/min2_exact.d.ts +20 -0
  115. package/src/core/math/min2_exact.d.ts.map +1 -0
  116. package/src/core/math/min2_exact.js +35 -0
  117. package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
  118. package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
  119. package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
  120. package/src/engine/asset/AssetDescription.js +2 -2
  121. package/src/engine/ecs/animation/Animation.js +2 -2
  122. package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
  123. package/src/engine/ecs/animation/AnimationClip.js +7 -5
  124. package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
  125. package/src/engine/ecs/gui/GUIElement.js +7 -5
  126. package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
  127. package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
  128. package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
  129. package/src/engine/ecs/ik/IKGoalSystem.d.ts.map +1 -1
  130. package/src/engine/ecs/ik/IKGoalSystem.js +3 -19
  131. package/src/engine/ecs/parent/parent_entity_model_of.d.ts +17 -0
  132. package/src/engine/ecs/parent/parent_entity_model_of.d.ts.map +1 -0
  133. package/src/engine/ecs/parent/parent_entity_model_of.js +26 -0
  134. package/src/engine/ecs/transform/Transform64.d.ts +1 -1
  135. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  136. package/src/engine/ecs/transform/Transform64.js +5 -4
  137. package/src/engine/ecs/transform/t64_read_pose_array.d.ts +15 -0
  138. package/src/engine/ecs/transform/t64_read_pose_array.d.ts.map +1 -0
  139. package/src/engine/ecs/transform/t64_read_pose_array.js +24 -0
  140. package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
  141. package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
  142. package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
  143. package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
  144. package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
  145. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
  146. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
  147. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
  148. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
  149. package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
  150. package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
  151. package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts +2 -0
  152. package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.d.ts.map +1 -1
  153. package/src/engine/graphics/geometry/geometry_construct_triangle_normal_area_weighted.js +10 -21
  154. package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
  155. package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
  156. package/src/engine/graphics3/AnimationGraphSystem.d.ts +5 -0
  157. package/src/engine/graphics3/AnimationGraphSystem.d.ts.map +1 -1
  158. package/src/engine/graphics3/AnimationGraphSystem.js +48 -2
  159. package/src/engine/graphics3/AnimationSystem.d.ts +5 -0
  160. package/src/engine/graphics3/AnimationSystem.d.ts.map +1 -1
  161. package/src/engine/graphics3/AnimationSystem.js +47 -2
  162. package/src/engine/graphics3/ParticipatingMedia.js +204 -204
  163. package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
  164. package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
  165. package/src/engine/graphics3/animation/AnimationClips.js +5 -0
  166. package/src/engine/graphics3/register_clips.d.ts +29 -0
  167. package/src/engine/graphics3/register_clips.d.ts.map +1 -1
  168. package/src/engine/graphics3/register_clips.js +52 -0
  169. package/src/engine/grid/obstacle/GridObstacle.js +2 -2
  170. package/src/engine/intelligence/behavior/selector/WeightedElement.js +2 -2
  171. package/src/engine/interpolation/Interpolated.js +2 -2
  172. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +9 -0
  173. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  174. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +3 -1
  175. package/src/engine/physics/cloth/PLAN.md +10 -8
  176. package/src/engine/physics/cloth/build/cloth_bind_in_frame.d.ts +22 -0
  177. package/src/engine/physics/cloth/build/cloth_bind_in_frame.d.ts.map +1 -1
  178. package/src/engine/physics/cloth/build/cloth_bind_in_frame.js +51 -19
  179. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
  180. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +16 -2
  181. package/src/engine/physics/cloth/build/cloth_proxy_from_mesh.d.ts.map +1 -1
  182. package/src/engine/physics/cloth/build/cloth_proxy_from_mesh.js +19 -24
  183. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +7 -0
  184. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
  185. package/src/engine/physics/cloth/collider/ClothColliderIndex.js +85 -67
  186. package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -1
  187. package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +19 -101
  188. package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts +2 -5
  189. package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts.map +1 -1
  190. package/src/engine/physics/cloth/collider/cloth_collider_pack.js +7 -15
  191. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
  192. package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +16 -61
  193. package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -1
  194. package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
  195. package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
  196. package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
  197. package/src/engine/physics/cloth/ecs/ClothColliderFlags.d.ts +0 -1
  198. package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +6 -19
  199. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +1 -2
  200. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
  201. package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +3 -12
  202. package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
  203. package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
  204. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  205. package/src/engine/physics/cloth/ecs/ClothWorld.js +40 -130
  206. package/src/engine/physics/cloth/ecs/cloth_build_rows.d.ts.map +1 -1
  207. package/src/engine/physics/cloth/ecs/cloth_build_rows.js +17 -58
  208. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.d.ts.map +1 -1
  209. package/src/engine/physics/cloth/ecs/cloth_dynamics_map.js +3 -3
  210. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
  211. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +44 -104
  212. package/src/engine/physics/cloth/ecs/cloth_geodesic.d.ts.map +1 -1
  213. package/src/engine/physics/cloth/ecs/cloth_geodesic.js +6 -13
  214. package/src/engine/physics/cloth/ecs/cloth_holds.d.ts.map +1 -1
  215. package/src/engine/physics/cloth/ecs/cloth_holds.js +15 -40
  216. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
  217. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +45 -79
  218. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
  219. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +7 -27
  220. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
  221. package/src/engine/physics/cloth/ecs/cloth_write_back.js +30 -62
  222. package/src/engine/physics/cloth/playground/cloth_playground_build.d.ts.map +1 -1
  223. package/src/engine/physics/cloth/playground/cloth_playground_build.js +2 -3
  224. package/src/engine/physics/cloth/playground/collide_main.js +2 -28
  225. package/src/engine/physics/cloth/playground/garment_main.js +4 -19
  226. package/src/engine/physics/cloth/playground/main.js +6 -48
  227. package/src/engine/physics/cloth/playground/rig_main.js +947 -955
  228. package/src/engine/physics/cloth/playground/wind_main.js +8 -7
  229. package/src/engine/physics/cloth/solver/ClothState.d.ts.map +1 -1
  230. package/src/engine/physics/cloth/solver/ClothState.js +16 -76
  231. package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts +10 -8
  232. package/src/engine/physics/cloth/solver/cloth_color_particles.d.ts.map +1 -1
  233. package/src/engine/physics/cloth/solver/cloth_color_particles.js +30 -102
  234. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  235. package/src/engine/physics/cloth/solver/cloth_contact_find.js +3 -2
  236. package/src/engine/physics/cloth/solver/cloth_hold_line.d.ts.map +1 -1
  237. package/src/engine/physics/cloth/solver/cloth_hold_line.js +2 -14
  238. package/src/engine/physics/cloth/solver/cloth_kinetic_energy.d.ts +21 -0
  239. package/src/engine/physics/cloth/solver/cloth_kinetic_energy.d.ts.map +1 -0
  240. package/src/engine/physics/cloth/solver/cloth_kinetic_energy.js +45 -0
  241. package/src/engine/physics/cloth/solver/cloth_particle_coupling.d.ts +32 -0
  242. package/src/engine/physics/cloth/solver/cloth_particle_coupling.d.ts.map +1 -0
  243. package/src/engine/physics/cloth/solver/cloth_particle_coupling.js +133 -0
  244. package/src/engine/physics/cloth/solver/cloth_particle_of_source.d.ts +16 -0
  245. package/src/engine/physics/cloth/solver/cloth_particle_of_source.d.ts.map +1 -0
  246. package/src/engine/physics/cloth/solver/cloth_particle_of_source.js +19 -0
  247. package/src/engine/physics/cloth/solver/cloth_self_find.d.ts.map +1 -1
  248. package/src/engine/physics/cloth/solver/cloth_self_find.js +6 -55
  249. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
  250. package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +30 -65
  251. package/src/engine/physics/cloth/solver/cloth_step.d.ts.map +1 -1
  252. package/src/engine/physics/cloth/solver/cloth_step.js +6 -28
  253. package/src/engine/physics/cloth/solver/cloth_step_instance.d.ts.map +1 -1
  254. package/src/engine/physics/cloth/solver/cloth_step_instance.js +2 -3
  255. package/src/engine/physics/cloth/solver/cloth_stretch_residual.d.ts +21 -0
  256. package/src/engine/physics/cloth/solver/cloth_stretch_residual.d.ts.map +1 -0
  257. package/src/engine/physics/cloth/solver/cloth_stretch_residual.js +54 -0
  258. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts +15 -0
  259. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.d.ts.map +1 -1
  260. package/src/engine/physics/cloth/solver/cloth_vertex_accumulator.js +28 -0
  261. package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.d.ts +30 -0
  262. package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.d.ts.map +1 -0
  263. package/src/engine/physics/cloth/solver/cloth_worst_tether_ratio.js +56 -0
  264. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  265. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +3 -17
  266. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +2 -1
  267. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
  268. package/src/engine/physics/cloth/wind/ClothFluidWind.js +7 -25
  269. package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts +3 -1
  270. package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts.map +1 -1
  271. package/src/engine/physics/cloth/wind/cloth_sample_air.js +40 -62
  272. package/src/engine/physics/ecs/ContactProbeSystem.d.ts.map +1 -1
  273. package/src/engine/physics/ecs/ContactProbeSystem.js +2 -18
  274. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  275. package/src/engine/physics/ecs/PhysicsSystem.js +9 -50
  276. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  277. package/src/engine/physics/fluid/FluidField.js +7 -5
  278. package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
  279. package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
  280. package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.d.ts +24 -0
  281. package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.d.ts.map +1 -0
  282. package/src/engine/physics/fluid/ecs/fluid_sample_domain_bounds.js +42 -0
  283. package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.d.ts +25 -0
  284. package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.d.ts.map +1 -0
  285. package/src/engine/physics/fluid/ecs/fluid_sample_velocity_world_mps.js +40 -0
  286. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
  287. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
  288. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  289. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
  290. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  291. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
  292. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  293. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
  294. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.d.ts.map +1 -1
  295. package/src/engine/physics/inverse_kinematics/frame_fabrik/frame_fabrik_solve.js +40 -90
  296. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  297. package/src/engine/physics/narrowphase/capsule_contacts.js +3 -5
  298. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  299. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +2 -14
  300. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -1
  301. package/src/engine/physics/narrowphase/hull_sphere_contact.js +2 -5
  302. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  303. package/src/engine/physics/narrowphase/narrowphase_step.js +13 -32
  304. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
  305. package/src/engine/physics/narrowphase/sphere_box_contact.js +2 -5
  306. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  307. package/src/engine/sound/ecs/audio/AudioEmitter.js +12 -7
  308. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
  309. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +192 -191
  310. package/src/engine/sound/simulation/core/AcousticMedium.js +2 -2
  311. package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
  312. package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
  313. package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
  314. package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
  315. package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
  316. package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
  317. package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
  318. package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
  319. package/src/engine/sound/sopra/definition/EventDescription.js +23 -13
  320. package/src/engine/sound/sopra/definition/MixerSnapshot.js +2 -2
  321. package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
  322. package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
  323. package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
  324. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
  325. package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
  326. package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
  327. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
  328. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
  329. package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
  330. package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
  331. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
  332. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
  333. package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
  334. package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
  335. package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +7 -5
  336. package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
  337. package/src/engine/sound/sopra/definition/effect/EqEffect.js +8 -5
  338. package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +2 -2
  339. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
  340. package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
  341. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
  342. package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
  343. package/src/format/image/png/PNGReader.js +644 -644
  344. package/src/format/image/png/crc32.d.ts +1 -1
  345. package/src/format/image/png/crc32.js +7 -8
  346. package/src/format/texture/basis/transcode/etc1s_to_astc.d.ts.map +1 -1
  347. package/src/format/texture/basis/transcode/etc1s_to_astc.js +2 -1
  348. package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
  349. package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
  350. package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
  351. package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
  352. package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
  353. package/src/shade/descriptor/blend/BlendComponent.js +2 -2
  354. package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
  355. package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
  356. package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
  357. package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
  358. package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
  359. package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
  360. package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
  361. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
  362. package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
  363. package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
  364. package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
  365. package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
  366. package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
  367. package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
  368. package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
  369. package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
  370. package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
  371. package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
  372. package/src/shade/device/timing/profile/sgpt_read_header.js +1 -1
  373. package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
  374. package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
  375. package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
  376. package/src/shade/playground/image_decode_bench/main.js +2 -1
  377. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -1
  378. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +2 -1
  379. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
  380. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +2 -1
  381. package/src/shade/playground/ssr_variance/statistics.d.ts.map +1 -1
  382. package/src/shade/playground/ssr_variance/statistics.js +2 -1
  383. package/src/shade/playground/texture_encode/main.d.ts.map +1 -1
  384. package/src/shade/playground/texture_encode/main.js +2 -1
  385. package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -1
  386. package/src/shade/playground/volumetrics_froxel/measure.js +2 -1
  387. package/src/shade/renderer/binding/BufferBinding.js +2 -2
  388. package/src/shade/renderer/buffer/table/gpu_database_check_links.d.ts.map +1 -1
  389. package/src/shade/renderer/buffer/table/gpu_database_check_links.js +2 -1
  390. package/src/shade/renderer/camera/Camera.js +2 -2
  391. package/src/shade/renderer/geometry/Attribute.js +2 -2
  392. package/src/shade/renderer/geometry/Geometry.js +2 -2
  393. package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
  394. package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
  395. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.d.ts.map +1 -1
  396. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_group_step.js +3 -2
  397. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.d.ts.map +1 -1
  398. package/src/shade/renderer/geometry/virtual/build/level/vgeo_build_leaf_frontier.js +2 -1
  399. package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.d.ts.map +1 -1
  400. package/src/shade/renderer/geometry/virtual/build/level/vgeo_partition_into_groups.js +2 -1
  401. package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.d.ts.map +1 -1
  402. package/src/shade/renderer/geometry/virtual/build/level/vgeo_run_round.js +2 -1
  403. package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.d.ts.map +1 -1
  404. package/src/shade/renderer/geometry/virtual/build/level/vgeo_try_repack.js +3 -2
  405. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.d.ts.map +1 -1
  406. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_graph_components.js +2 -1
  407. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.d.ts.map +1 -1
  408. package/src/shade/renderer/geometry/virtual/build/partition/vgeo_split_face_set_packed.js +2 -1
  409. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
  410. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
  411. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
  412. package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
  413. package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.d.ts.map +1 -1
  414. package/src/shade/renderer/geometry/virtual/format/vgeo_write_container.js +3 -2
  415. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  416. package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
  417. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -1
  418. package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +3 -2
  419. package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
  420. package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
  421. package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
  422. package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
  423. package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
  424. package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
  425. package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
  426. package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
  427. package/src/shade/renderer/texture/ShadeTexture.js +17 -10
  428. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
  429. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
  430. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
  431. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
  432. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
  433. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
  434. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
  435. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
  436. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
  437. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
  438. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
  439. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
  440. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
  441. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
  442. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
  443. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
  444. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
  445. package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
  446. package/src/view/common/HTMLElementCacheKey.js +4 -3
  447. package/src/view/minimap/MinimapMarker.js +2 -2
@@ -0,0 +1,341 @@
1
+ import { XXH128Hash } from "./XXH128Hash.js";
2
+ import { XXH3_SECRET } from "./XXH3_SECRET.js";
3
+ import {
4
+ add64,
5
+ mul64,
6
+ mult32to64,
7
+ read_u32,
8
+ read_u64,
9
+ rotl32,
10
+ sub64,
11
+ swap32,
12
+ swap64,
13
+ u64,
14
+ XXH3_MIDSIZE_LASTOFFSET,
15
+ XXH3_MIDSIZE_MAX,
16
+ XXH3_MIDSIZE_STARTOFFSET,
17
+ XXH3_SECRET_SIZE_MIN,
18
+ xxh3_assert_arguments,
19
+ xxh3_avalanche,
20
+ xxh3_hash_long_loop,
21
+ xxh3_init_acc,
22
+ xxh3_long_secret,
23
+ xxh3_merge_accs,
24
+ xxh3_mix16b,
25
+ XXH_MASK_64,
26
+ XXH_PRIME32_2,
27
+ XXH_PRIME64_1,
28
+ XXH_PRIME64_2,
29
+ XXH_PRIME64_4,
30
+ XXH_PRIME_MX2,
31
+ XXH_SECRET_MERGEACCS_START,
32
+ XXH_STRIPE_LEN,
33
+ xorshift64,
34
+ xxh64_avalanche,
35
+ } from "./xxh3_common.js";
36
+
37
+ /**
38
+ * xxHash3, 128-bit output.
39
+ *
40
+ * A direct transcription of the reference implementation, verified against its published sanity
41
+ * vectors — see `xxh3_128.spec.js`. The low 64 bits are *not* in general equal to
42
+ * {@link xxh3_64} of the same input; they only coincide for inputs longer than
43
+ * {@link XXH3_MIDSIZE_MAX}, where both variants share the accumulator loop.
44
+ *
45
+ * @see https://github.com/Cyan4973/xxHash
46
+ *
47
+ * @author Alex Goldring
48
+ * @copyright Company Named Limited (c) 2026
49
+ */
50
+
51
+ /**
52
+ * Full 64x64 -> 128 multiply. The halves are returned separately because every caller manipulates
53
+ * them independently before folding.
54
+ *
55
+ * @param {bigint} a
56
+ * @param {bigint} b
57
+ * @returns {XXH128Hash}
58
+ */
59
+ function mult64to128(a, b) {
60
+ const product = a * b;
61
+
62
+ return new XXH128Hash(product & XXH_MASK_64, (product >> 64n) & XXH_MASK_64);
63
+ }
64
+
65
+ /**
66
+ * @param {Uint8Array} input 1..3 bytes
67
+ * @param {Uint8Array} secret
68
+ * @param {bigint} seed
69
+ * @returns {XXH128Hash}
70
+ */
71
+ function len_1to3(input, secret, seed) {
72
+ const len = input.length;
73
+
74
+ const c1 = input[0];
75
+ const c2 = input[len >> 1];
76
+ const c3 = input[len - 1];
77
+
78
+ const combined_lo = BigInt(((c1 << 16) | (c2 << 24) | c3 | (len << 8)) >>> 0);
79
+ const combined_hi = rotl32(swap32(combined_lo), 13);
80
+
81
+ const bitflip_lo = add64(read_u32(secret, 0) ^ read_u32(secret, 4), seed);
82
+ const bitflip_hi = sub64(read_u32(secret, 8) ^ read_u32(secret, 12), seed);
83
+
84
+ return new XXH128Hash(
85
+ xxh64_avalanche(combined_lo ^ bitflip_lo),
86
+ xxh64_avalanche(combined_hi ^ bitflip_hi)
87
+ );
88
+ }
89
+
90
+ /**
91
+ * @param {Uint8Array} input 4..8 bytes
92
+ * @param {Uint8Array} secret
93
+ * @param {bigint} seed
94
+ * @returns {XXH128Hash}
95
+ */
96
+ function len_4to8(input, secret, seed) {
97
+ const len = input.length;
98
+
99
+ const mixed_seed = seed ^ u64(swap32(seed) << 32n);
100
+
101
+ const input_lo = read_u32(input, 0);
102
+ const input_hi = read_u32(input, len - 4);
103
+
104
+ const input_64 = add64(input_lo, input_hi << 32n);
105
+ const bitflip = add64(read_u64(secret, 16) ^ read_u64(secret, 24), mixed_seed);
106
+ const keyed = input_64 ^ bitflip;
107
+
108
+ const m128 = mult64to128(keyed, add64(XXH_PRIME64_1, BigInt(len) << 2n));
109
+
110
+ m128.high64 = add64(m128.high64, u64(m128.low64 << 1n));
111
+ m128.low64 = m128.low64 ^ (m128.high64 >> 3n);
112
+
113
+ m128.low64 = xorshift64(m128.low64, 35);
114
+ m128.low64 = mul64(m128.low64, XXH_PRIME_MX2);
115
+ m128.low64 = xorshift64(m128.low64, 28);
116
+ m128.high64 = xxh3_avalanche(m128.high64);
117
+
118
+ return m128;
119
+ }
120
+
121
+ /**
122
+ * @param {Uint8Array} input 9..16 bytes
123
+ * @param {Uint8Array} secret
124
+ * @param {bigint} seed
125
+ * @returns {XXH128Hash}
126
+ */
127
+ function len_9to16(input, secret, seed) {
128
+ const len = input.length;
129
+
130
+ const bitflip_lo = sub64(read_u64(secret, 32) ^ read_u64(secret, 40), seed);
131
+ const bitflip_hi = add64(read_u64(secret, 48) ^ read_u64(secret, 56), seed);
132
+
133
+ const input_lo = read_u64(input, 0);
134
+
135
+ let input_hi = read_u64(input, len - 8);
136
+
137
+ const m128 = mult64to128(input_lo ^ input_hi ^ bitflip_lo, XXH_PRIME64_1);
138
+
139
+ m128.low64 = add64(m128.low64, BigInt(len - 1) << 54n);
140
+
141
+ input_hi ^= bitflip_hi;
142
+
143
+ m128.high64 = add64(
144
+ m128.high64,
145
+ add64(input_hi, mult32to64(input_hi, XXH_PRIME32_2 - 1n))
146
+ );
147
+
148
+ m128.low64 = m128.low64 ^ swap64(m128.high64);
149
+
150
+ const h128 = mult64to128(m128.low64, XXH_PRIME64_2);
151
+
152
+ h128.high64 = add64(h128.high64, mul64(m128.high64, XXH_PRIME64_2));
153
+
154
+ h128.low64 = xxh3_avalanche(h128.low64);
155
+ h128.high64 = xxh3_avalanche(h128.high64);
156
+
157
+ return h128;
158
+ }
159
+
160
+ /**
161
+ * @param {Uint8Array} input 0..16 bytes
162
+ * @param {Uint8Array} secret
163
+ * @param {bigint} seed
164
+ * @returns {XXH128Hash}
165
+ */
166
+ function len_0to16(input, secret, seed) {
167
+ const len = input.length;
168
+
169
+ if (len > 8) {
170
+ return len_9to16(input, secret, seed);
171
+ }
172
+
173
+ if (len >= 4) {
174
+ return len_4to8(input, secret, seed);
175
+ }
176
+
177
+ if (len > 0) {
178
+ return len_1to3(input, secret, seed);
179
+ }
180
+
181
+ const bitflip_lo = read_u64(secret, 64) ^ read_u64(secret, 72);
182
+ const bitflip_hi = read_u64(secret, 80) ^ read_u64(secret, 88);
183
+
184
+ return new XXH128Hash(
185
+ xxh64_avalanche(seed ^ bitflip_lo),
186
+ xxh64_avalanche(seed ^ bitflip_hi)
187
+ );
188
+ }
189
+
190
+ /**
191
+ * The 32-byte mixing step: two 16-byte windows, each folded into one half and cross-XOR'd into the
192
+ * other. Slower than the 64-bit path's `mix16B`, and better behaved when a product lands on zero.
193
+ *
194
+ * @param {XXH128Hash} acc mutated in place
195
+ * @param {Uint8Array} input
196
+ * @param {number} input_1
197
+ * @param {number} input_2
198
+ * @param {Uint8Array} secret
199
+ * @param {number} secret_offset
200
+ * @param {bigint} seed
201
+ */
202
+ function mix32b(acc, input, input_1, input_2, secret, secret_offset, seed) {
203
+ acc.low64 = add64(acc.low64, xxh3_mix16b(input, input_1, secret, secret_offset, seed));
204
+ acc.low64 = acc.low64 ^ add64(read_u64(input, input_2), read_u64(input, input_2 + 8));
205
+
206
+ acc.high64 = add64(acc.high64, xxh3_mix16b(input, input_2, secret, secret_offset + 16, seed));
207
+ acc.high64 = acc.high64 ^ add64(read_u64(input, input_1), read_u64(input, input_1 + 8));
208
+ }
209
+
210
+ /**
211
+ * The shared tail of both mid-size paths.
212
+ *
213
+ * @param {XXH128Hash} acc
214
+ * @param {number} len
215
+ * @param {bigint} seed
216
+ * @returns {XXH128Hash}
217
+ */
218
+ function finalize_midsize(acc, len, seed) {
219
+ const low64 = xxh3_avalanche(add64(acc.low64, acc.high64));
220
+
221
+ const high64 = xxh3_avalanche(add64(
222
+ add64(mul64(acc.low64, XXH_PRIME64_1), mul64(acc.high64, XXH_PRIME64_4)),
223
+ mul64(sub64(BigInt(len), seed), XXH_PRIME64_2)
224
+ ));
225
+
226
+ return new XXH128Hash(low64, sub64(0n, high64));
227
+ }
228
+
229
+ /**
230
+ * @param {Uint8Array} input 17..128 bytes
231
+ * @param {Uint8Array} secret
232
+ * @param {bigint} seed
233
+ * @returns {XXH128Hash}
234
+ */
235
+ function len_17to128(input, secret, seed) {
236
+ const len = input.length;
237
+
238
+ const acc = new XXH128Hash(mul64(BigInt(len), XXH_PRIME64_1), 0n);
239
+
240
+ if (len > 32) {
241
+ if (len > 64) {
242
+ if (len > 96) {
243
+ mix32b(acc, input, 48, len - 64, secret, 96, seed);
244
+ }
245
+
246
+ mix32b(acc, input, 32, len - 48, secret, 64, seed);
247
+ }
248
+
249
+ mix32b(acc, input, 16, len - 32, secret, 32, seed);
250
+ }
251
+
252
+ mix32b(acc, input, 0, len - 16, secret, 0, seed);
253
+
254
+ return finalize_midsize(acc, len, seed);
255
+ }
256
+
257
+ /**
258
+ * @param {Uint8Array} input 129..240 bytes
259
+ * @param {Uint8Array} secret
260
+ * @param {bigint} seed
261
+ * @returns {XXH128Hash}
262
+ */
263
+ function len_129to240(input, secret, seed) {
264
+ const len = input.length;
265
+
266
+ const acc = new XXH128Hash(mul64(BigInt(len), XXH_PRIME64_1), 0n);
267
+
268
+ for (let i = 32; i < 160; i += 32) {
269
+ mix32b(acc, input, i - 32, i - 16, secret, i - 32, seed);
270
+ }
271
+
272
+ acc.low64 = xxh3_avalanche(acc.low64);
273
+ acc.high64 = xxh3_avalanche(acc.high64);
274
+
275
+ for (let i = 160; i <= len; i += 32) {
276
+ mix32b(acc, input, i - 32, i - 16, secret, XXH3_MIDSIZE_STARTOFFSET + i - 160, seed);
277
+ }
278
+
279
+ mix32b(
280
+ acc,
281
+ input, len - 16, len - 32,
282
+ secret, XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET - 16,
283
+ sub64(0n, seed)
284
+ );
285
+
286
+ return finalize_midsize(acc, len, seed);
287
+ }
288
+
289
+ /**
290
+ * @param {Uint8Array} input more than {@link XXH3_MIDSIZE_MAX} bytes
291
+ * @param {Uint8Array} secret
292
+ * @returns {XXH128Hash}
293
+ */
294
+ function hash_long(input, secret) {
295
+ const acc = xxh3_init_acc();
296
+
297
+ xxh3_hash_long_loop(acc, input, secret);
298
+
299
+ const len = BigInt(input.length);
300
+
301
+ const low64 = xxh3_merge_accs(
302
+ acc,
303
+ secret, XXH_SECRET_MERGEACCS_START,
304
+ mul64(len, XXH_PRIME64_1)
305
+ );
306
+
307
+ const high64 = xxh3_merge_accs(
308
+ acc,
309
+ secret, secret.length - XXH_STRIPE_LEN - XXH_SECRET_MERGEACCS_START,
310
+ XXH_MASK_64 ^ mul64(len, XXH_PRIME64_2)
311
+ );
312
+
313
+ return new XXH128Hash(low64, high64);
314
+ }
315
+
316
+ /**
317
+ * Hash `input` to a 128-bit value.
318
+ *
319
+ * @param {Uint8Array} input bytes to hash; an empty array is valid
320
+ * @param {bigint} [seed] alters the whole hash; 0 selects the reference's unseeded behaviour
321
+ * @returns {XXH128Hash}
322
+ */
323
+ export function xxh3_128(input, seed = 0n) {
324
+ xxh3_assert_arguments(input, seed);
325
+
326
+ const len = input.length;
327
+
328
+ if (len <= 16) {
329
+ return len_0to16(input, XXH3_SECRET, seed);
330
+ }
331
+
332
+ if (len <= 128) {
333
+ return len_17to128(input, XXH3_SECRET, seed);
334
+ }
335
+
336
+ if (len <= XXH3_MIDSIZE_MAX) {
337
+ return len_129to240(input, XXH3_SECRET, seed);
338
+ }
339
+
340
+ return hash_long(input, xxh3_long_secret(seed));
341
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Hash `input` to a 64-bit value.
3
+ *
4
+ * @param {Uint8Array} input bytes to hash; an empty array is valid
5
+ * @param {bigint} [seed] alters the whole hash; 0 selects the reference's unseeded behaviour
6
+ * @returns {bigint} in `[0, 2^64)`
7
+ */
8
+ export function xxh3_64(input: Uint8Array, seed?: bigint): bigint;
9
+ //# sourceMappingURL=xxh3_64.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xxh3_64.d.ts","sourceRoot":"","sources":["../../../../../src/core/math/hash/xxh3_64.js"],"names":[],"mappings":"AAuNA;;;;;;GAMG;AACH,+BAJW,UAAU,SACV,MAAM,GACJ,MAAM,CAoBlB"}
@@ -0,0 +1,241 @@
1
+ import { XXH3_SECRET } from "./XXH3_SECRET.js";
2
+ import {
3
+ add64,
4
+ mul128_fold64,
5
+ mul64,
6
+ read_u32,
7
+ read_u64,
8
+ sub64,
9
+ swap32,
10
+ swap64,
11
+ u64,
12
+ XXH3_MIDSIZE_LASTOFFSET,
13
+ XXH3_MIDSIZE_MAX,
14
+ XXH3_MIDSIZE_STARTOFFSET,
15
+ XXH3_SECRET_SIZE_MIN,
16
+ xxh3_assert_arguments,
17
+ xxh3_avalanche,
18
+ xxh3_hash_long_loop,
19
+ xxh3_init_acc,
20
+ xxh3_long_secret,
21
+ xxh3_merge_accs,
22
+ xxh3_mix16b,
23
+ xxh3_rrmxmx,
24
+ XXH_PRIME64_1,
25
+ XXH_SECRET_MERGEACCS_START,
26
+ xxh64_avalanche,
27
+ } from "./xxh3_common.js";
28
+
29
+ /**
30
+ * xxHash3, 64-bit output.
31
+ *
32
+ * A direct transcription of the reference implementation, verified against its published sanity
33
+ * vectors — see `xxh3_64.spec.js`. Same bytes and same seed always produce the same value, on every
34
+ * platform, which is what makes it usable as a content address.
35
+ *
36
+ * @see https://github.com/Cyan4973/xxHash
37
+ *
38
+ * @author Alex Goldring
39
+ * @copyright Company Named Limited (c) 2026
40
+ */
41
+
42
+ /**
43
+ * @param {Uint8Array} input 1..3 bytes
44
+ * @param {Uint8Array} secret
45
+ * @param {bigint} seed
46
+ * @returns {bigint}
47
+ */
48
+ function len_1to3(input, secret, seed) {
49
+ const len = input.length;
50
+
51
+ const c1 = input[0];
52
+ const c2 = input[len >> 1];
53
+ const c3 = input[len - 1];
54
+
55
+ const combined = BigInt(
56
+ (((c1 << 16) | (c2 << 24) | c3 | (len << 8)) >>> 0)
57
+ );
58
+
59
+ const bitflip = add64(read_u32(secret, 0) ^ read_u32(secret, 4), seed);
60
+
61
+ return xxh64_avalanche(combined ^ bitflip);
62
+ }
63
+
64
+ /**
65
+ * @param {Uint8Array} input 4..8 bytes
66
+ * @param {Uint8Array} secret
67
+ * @param {bigint} seed
68
+ * @returns {bigint}
69
+ */
70
+ function len_4to8(input, secret, seed) {
71
+ const len = input.length;
72
+
73
+ const mixed_seed = seed ^ u64(swap32(seed) << 32n);
74
+
75
+ const input1 = read_u32(input, 0);
76
+ const input2 = read_u32(input, len - 4);
77
+
78
+ const bitflip = sub64(read_u64(secret, 8) ^ read_u64(secret, 16), mixed_seed);
79
+ const input64 = add64(input2, input1 << 32n);
80
+
81
+ return xxh3_rrmxmx(input64 ^ bitflip, len);
82
+ }
83
+
84
+ /**
85
+ * @param {Uint8Array} input 9..16 bytes
86
+ * @param {Uint8Array} secret
87
+ * @param {bigint} seed
88
+ * @returns {bigint}
89
+ */
90
+ function len_9to16(input, secret, seed) {
91
+ const len = input.length;
92
+
93
+ const bitflip1 = add64(read_u64(secret, 24) ^ read_u64(secret, 32), seed);
94
+ const bitflip2 = sub64(read_u64(secret, 40) ^ read_u64(secret, 48), seed);
95
+
96
+ const input_lo = read_u64(input, 0) ^ bitflip1;
97
+ const input_hi = read_u64(input, len - 8) ^ bitflip2;
98
+
99
+ const acc = add64(
100
+ add64(BigInt(len), add64(swap64(input_lo), input_hi)),
101
+ mul128_fold64(input_lo, input_hi)
102
+ );
103
+
104
+ return xxh3_avalanche(acc);
105
+ }
106
+
107
+ /**
108
+ * @param {Uint8Array} input 0..16 bytes
109
+ * @param {Uint8Array} secret
110
+ * @param {bigint} seed
111
+ * @returns {bigint}
112
+ */
113
+ function len_0to16(input, secret, seed) {
114
+ const len = input.length;
115
+
116
+ if (len > 8) {
117
+ return len_9to16(input, secret, seed);
118
+ }
119
+
120
+ if (len >= 4) {
121
+ return len_4to8(input, secret, seed);
122
+ }
123
+
124
+ if (len > 0) {
125
+ return len_1to3(input, secret, seed);
126
+ }
127
+
128
+ return xxh64_avalanche(seed ^ (read_u64(secret, 56) ^ read_u64(secret, 64)));
129
+ }
130
+
131
+ /**
132
+ * @param {Uint8Array} input 17..128 bytes
133
+ * @param {Uint8Array} secret
134
+ * @param {bigint} seed
135
+ * @returns {bigint}
136
+ */
137
+ function len_17to128(input, secret, seed) {
138
+ const len = input.length;
139
+
140
+ let acc = mul64(BigInt(len), XXH_PRIME64_1);
141
+
142
+ if (len > 32) {
143
+ if (len > 64) {
144
+ if (len > 96) {
145
+ acc = add64(acc, xxh3_mix16b(input, 48, secret, 96, seed));
146
+ acc = add64(acc, xxh3_mix16b(input, len - 64, secret, 112, seed));
147
+ }
148
+
149
+ acc = add64(acc, xxh3_mix16b(input, 32, secret, 64, seed));
150
+ acc = add64(acc, xxh3_mix16b(input, len - 48, secret, 80, seed));
151
+ }
152
+
153
+ acc = add64(acc, xxh3_mix16b(input, 16, secret, 32, seed));
154
+ acc = add64(acc, xxh3_mix16b(input, len - 32, secret, 48, seed));
155
+ }
156
+
157
+ acc = add64(acc, xxh3_mix16b(input, 0, secret, 0, seed));
158
+ acc = add64(acc, xxh3_mix16b(input, len - 16, secret, 16, seed));
159
+
160
+ return xxh3_avalanche(acc);
161
+ }
162
+
163
+ /**
164
+ * @param {Uint8Array} input 129..240 bytes
165
+ * @param {Uint8Array} secret
166
+ * @param {bigint} seed
167
+ * @returns {bigint}
168
+ */
169
+ function len_129to240(input, secret, seed) {
170
+ const len = input.length;
171
+
172
+ let acc = mul64(BigInt(len), XXH_PRIME64_1);
173
+
174
+ const round_count = (len / 16) | 0;
175
+
176
+ for (let i = 0; i < 8; i++) {
177
+ acc = add64(acc, xxh3_mix16b(input, 16 * i, secret, 16 * i, seed));
178
+ }
179
+
180
+ let acc_end = xxh3_mix16b(
181
+ input, len - 16,
182
+ secret, XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET,
183
+ seed
184
+ );
185
+
186
+ acc = xxh3_avalanche(acc);
187
+
188
+ for (let i = 8; i < round_count; i++) {
189
+ acc_end = add64(acc_end, xxh3_mix16b(
190
+ input, 16 * i,
191
+ secret, 16 * (i - 8) + XXH3_MIDSIZE_STARTOFFSET,
192
+ seed
193
+ ));
194
+ }
195
+
196
+ return xxh3_avalanche(add64(acc, acc_end));
197
+ }
198
+
199
+ /**
200
+ * @param {Uint8Array} input more than {@link XXH3_MIDSIZE_MAX} bytes
201
+ * @param {Uint8Array} secret
202
+ * @returns {bigint}
203
+ */
204
+ function hash_long(input, secret) {
205
+ const acc = xxh3_init_acc();
206
+
207
+ xxh3_hash_long_loop(acc, input, secret);
208
+
209
+ return xxh3_merge_accs(
210
+ acc,
211
+ secret, XXH_SECRET_MERGEACCS_START,
212
+ mul64(BigInt(input.length), XXH_PRIME64_1)
213
+ );
214
+ }
215
+
216
+ /**
217
+ * Hash `input` to a 64-bit value.
218
+ *
219
+ * @param {Uint8Array} input bytes to hash; an empty array is valid
220
+ * @param {bigint} [seed] alters the whole hash; 0 selects the reference's unseeded behaviour
221
+ * @returns {bigint} in `[0, 2^64)`
222
+ */
223
+ export function xxh3_64(input, seed = 0n) {
224
+ xxh3_assert_arguments(input, seed);
225
+
226
+ const len = input.length;
227
+
228
+ if (len <= 16) {
229
+ return len_0to16(input, XXH3_SECRET, seed);
230
+ }
231
+
232
+ if (len <= 128) {
233
+ return len_17to128(input, XXH3_SECRET, seed);
234
+ }
235
+
236
+ if (len <= XXH3_MIDSIZE_MAX) {
237
+ return len_129to240(input, XXH3_SECRET, seed);
238
+ }
239
+
240
+ return hash_long(input, xxh3_long_secret(seed));
241
+ }