@woosh/meep-engine 3.37.0 → 3.39.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 (1016) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/package.json +1 -1
  4. package/src/core/binary/BinaryBuffer.d.ts +11 -0
  5. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  6. package/src/core/binary/BinaryBuffer.js +30 -0
  7. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.d.ts.map +1 -1
  8. package/src/core/bvh2/bvh3/query/bvh_query_user_data_intersects_aabb.js +28 -7
  9. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts +15 -0
  10. package/src/core/geom/3d/aabb/aabb3_transform_oriented.d.ts.map +1 -1
  11. package/src/core/geom/3d/aabb/aabb3_transform_oriented.js +41 -0
  12. package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts +12 -0
  13. package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.d.ts.map +1 -1
  14. package/src/core/geom/3d/aabb/aabb3_transform_oriented_inverse.js +27 -0
  15. package/src/core/geom/3d/gjk/gjk.js +3 -3
  16. package/src/core/geom/3d/gjk/gjk_distance.d.ts +94 -0
  17. package/src/core/geom/3d/gjk/gjk_distance.d.ts.map +1 -0
  18. package/src/core/geom/3d/gjk/gjk_distance.js +782 -0
  19. package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts +5 -4
  20. package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
  21. package/src/core/geom/3d/gjk/gjk_epa_penetration.js +14 -9
  22. package/src/core/geom/3d/gjk/minkowski_support.d.ts +11 -7
  23. package/src/core/geom/3d/gjk/minkowski_support.d.ts.map +1 -1
  24. package/src/core/geom/3d/gjk/minkowski_support.js +33 -9
  25. package/src/core/geom/3d/gjk/mpr.d.ts.map +1 -1
  26. package/src/core/geom/3d/gjk/mpr.js +26 -5
  27. package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts +15 -0
  28. package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.d.ts.map +1 -1
  29. package/src/core/geom/3d/line/line3_compute_segment_closest_point_to_aabb3_t.js +106 -33
  30. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts +2 -1
  31. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.d.ts.map +1 -1
  32. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale.js +4 -8
  33. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.d.ts +32 -0
  34. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.d.ts.map +1 -0
  35. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_array.js +85 -0
  36. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts +3 -3
  37. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.d.ts.map +1 -1
  38. package/src/core/geom/3d/mat4/m4_from_rotation_translation_scale_scalar.js +24 -34
  39. package/src/core/geom/3d/quaternion/quat3_integrate.d.ts +17 -0
  40. package/src/core/geom/3d/quaternion/quat3_integrate.d.ts.map +1 -1
  41. package/src/core/geom/3d/quaternion/quat3_integrate.js +45 -4
  42. package/src/core/geom/3d/quaternion/quat3_multiply.d.ts +16 -0
  43. package/src/core/geom/3d/quaternion/quat3_multiply.d.ts.map +1 -1
  44. package/src/core/geom/3d/quaternion/quat3_multiply.js +25 -0
  45. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts +18 -0
  46. package/src/core/geom/3d/quaternion/quat3_nlerp.d.ts.map +1 -1
  47. package/src/core/geom/3d/quaternion/quat3_nlerp.js +45 -0
  48. package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts +17 -0
  49. package/src/core/geom/3d/quaternion/quat3_shortest_arc.d.ts.map +1 -1
  50. package/src/core/geom/3d/quaternion/quat3_shortest_arc.js +155 -94
  51. package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts +12 -0
  52. package/src/core/geom/3d/quaternion/quat3_to_matrix3.d.ts.map +1 -1
  53. package/src/core/geom/3d/quaternion/quat3_to_matrix3.js +31 -0
  54. package/src/core/geom/3d/shape/AbstractShape3D.d.ts +20 -6
  55. package/src/core/geom/3d/shape/AbstractShape3D.d.ts.map +1 -1
  56. package/src/core/geom/3d/shape/AbstractShape3D.js +20 -6
  57. package/src/core/geom/3d/shape/BoxShape3D.d.ts +1 -1
  58. package/src/core/geom/3d/shape/BoxShape3D.d.ts.map +1 -1
  59. package/src/core/geom/3d/shape/BoxShape3D.js +5 -1
  60. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts +1 -1
  61. package/src/core/geom/3d/shape/CapsuleShape3D.d.ts.map +1 -1
  62. package/src/core/geom/3d/shape/CapsuleShape3D.js +5 -1
  63. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts +25 -11
  64. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  65. package/src/core/geom/3d/shape/ConvexHullShape3D.js +392 -22
  66. package/src/core/geom/3d/shape/CylinderShape3D.d.ts +8 -7
  67. package/src/core/geom/3d/shape/CylinderShape3D.d.ts.map +1 -1
  68. package/src/core/geom/3d/shape/CylinderShape3D.js +12 -7
  69. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts +51 -8
  70. package/src/core/geom/3d/shape/HeightMapShape3D.d.ts.map +1 -1
  71. package/src/core/geom/3d/shape/HeightMapShape3D.js +260 -14
  72. package/src/core/geom/3d/shape/MeshShape3D.d.ts +61 -7
  73. package/src/core/geom/3d/shape/MeshShape3D.d.ts.map +1 -1
  74. package/src/core/geom/3d/shape/MeshShape3D.js +111 -20
  75. package/src/core/geom/3d/shape/PointShape3D.d.ts +1 -1
  76. package/src/core/geom/3d/shape/PointShape3D.d.ts.map +1 -1
  77. package/src/core/geom/3d/shape/PointShape3D.js +1 -1
  78. package/src/core/geom/3d/shape/PosedShape3D.d.ts +9 -0
  79. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  80. package/src/core/geom/3d/shape/PosedShape3D.js +36 -6
  81. package/src/core/geom/3d/shape/SphereShape3D.d.ts +1 -1
  82. package/src/core/geom/3d/shape/SphereShape3D.d.ts.map +1 -1
  83. package/src/core/geom/3d/shape/SphereShape3D.js +5 -1
  84. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +12 -10
  85. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  86. package/src/core/geom/3d/shape/TransformedShape3D.js +53 -19
  87. package/src/core/geom/3d/shape/Triangle3D.d.ts +1 -1
  88. package/src/core/geom/3d/shape/Triangle3D.d.ts.map +1 -1
  89. package/src/core/geom/3d/shape/Triangle3D.js +5 -1
  90. package/src/core/geom/3d/shape/UnionShape3D.d.ts +1 -1
  91. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  92. package/src/core/geom/3d/shape/UnionShape3D.js +19 -2
  93. package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts +14 -0
  94. package/src/core/geom/3d/shape/sdf/sdf3_box.d.ts.map +1 -1
  95. package/src/core/geom/3d/shape/sdf/sdf3_box.js +67 -5
  96. package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts +14 -0
  97. package/src/core/geom/3d/shape/sdf/sdf3_capsule.d.ts.map +1 -1
  98. package/src/core/geom/3d/shape/sdf/sdf3_capsule.js +61 -3
  99. package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts +14 -0
  100. package/src/core/geom/3d/shape/sdf/sdf3_cylinder.d.ts.map +1 -1
  101. package/src/core/geom/3d/shape/sdf/sdf3_cylinder.js +63 -4
  102. package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts +15 -0
  103. package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts.map +1 -1
  104. package/src/core/geom/3d/shape/sdf/sdf3_plane.js +64 -2
  105. package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts +21 -0
  106. package/src/core/geom/3d/shape/sdf/sdf3_sphere.d.ts.map +1 -1
  107. package/src/core/geom/3d/shape/sdf/sdf3_sphere.js +66 -3
  108. package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts +2 -0
  109. package/src/core/geom/3d/shape/shape3_mesh_from_geometry.d.ts.map +1 -1
  110. package/src/core/geom/3d/shape/shape3_mesh_from_geometry.js +7 -0
  111. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts +41 -0
  112. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -0
  113. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +538 -0
  114. package/src/core/geom/3d/sphere/harmonics/sh_basis_at.d.ts +31 -0
  115. package/src/core/geom/3d/sphere/harmonics/sh_basis_at.d.ts.map +1 -0
  116. package/src/core/geom/3d/sphere/harmonics/sh_basis_at.js +85 -0
  117. package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.d.ts +18 -0
  118. package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.d.ts.map +1 -0
  119. package/src/core/geom/3d/sphere/harmonics/sh_vmf_window.js +19 -0
  120. package/src/core/geom/3d/triangle/TriangleEdgeFlags.d.ts +49 -0
  121. package/src/core/geom/3d/triangle/TriangleEdgeFlags.d.ts.map +1 -0
  122. package/src/core/geom/3d/triangle/TriangleEdgeFlags.js +55 -0
  123. package/src/core/geom/3d/triangle/tri3_classify_shared_edge.d.ts +42 -0
  124. package/src/core/geom/3d/triangle/tri3_classify_shared_edge.d.ts.map +1 -0
  125. package/src/core/geom/3d/triangle/tri3_classify_shared_edge.js +85 -0
  126. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts +13 -0
  127. package/src/core/geom/3d/triangle/tri3_closest_point.d.ts.map +1 -1
  128. package/src/core/geom/3d/triangle/tri3_closest_point.js +36 -1
  129. package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts +14 -0
  130. package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.d.ts.map +1 -1
  131. package/src/core/geom/3d/triangle/tri3_closest_point_barycentric.js +40 -0
  132. package/src/core/geom/vec3/v3_quaternion_apply.d.ts +19 -0
  133. package/src/core/geom/vec3/v3_quaternion_apply.d.ts.map +1 -1
  134. package/src/core/geom/vec3/v3_quaternion_apply.js +32 -0
  135. package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts +19 -0
  136. package/src/core/geom/vec3/v3_quaternion_apply_inverse.d.ts.map +1 -1
  137. package/src/core/geom/vec3/v3_quaternion_apply_inverse.js +32 -0
  138. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +135 -10
  139. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  140. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +338 -105
  141. package/src/engine/control/first-person/abilities/Ability.d.ts +14 -5
  142. package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -1
  143. package/src/engine/control/first-person/abilities/Ability.js +14 -5
  144. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  145. package/src/engine/control/first-person/abilities/LedgeGrab.js +16 -12
  146. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  147. package/src/engine/control/first-person/abilities/Mantle.js +5 -1
  148. package/src/engine/control/first-person/abilities/Slide.js +1 -1
  149. package/src/engine/control/first-person/collision/KinematicMover.d.ts +92 -14
  150. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  151. package/src/engine/control/first-person/collision/KinematicMover.js +218 -37
  152. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +5 -0
  153. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  154. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +17 -10
  155. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  156. package/src/engine/ecs/EntityComponentDataset.js +27 -13
  157. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  158. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +6 -0
  159. package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.d.ts +11 -0
  160. package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.d.ts.map +1 -0
  161. package/src/engine/ecs/transform/TRANSFORM64_EVENT_PLACED.js +10 -0
  162. package/src/engine/ecs/transform/Transform64.d.ts +4 -2
  163. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  164. package/src/engine/ecs/transform/Transform64.js +10 -16
  165. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  166. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +16 -0
  167. package/src/engine/graphics/ecs/water/Water.d.ts +26 -34
  168. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  169. package/src/engine/graphics/ecs/water/Water.js +42 -36
  170. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  171. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +38 -62
  172. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +6 -0
  173. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -0
  174. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +27 -0
  175. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts +12 -0
  176. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts.map +1 -0
  177. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.js +45 -0
  178. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +33 -0
  179. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -0
  180. package/src/engine/graphics/ecs/water/WaterWaves.js +46 -0
  181. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts +17 -0
  182. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -0
  183. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +26 -0
  184. package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts +22 -0
  185. package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts.map +1 -1
  186. package/src/engine/graphics/texture/3d/scs3d_sample_linear.js +43 -1
  187. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +29 -3
  188. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  189. package/src/engine/graphics/texture/sampler/Sampler2D.js +102 -14
  190. package/src/engine/graphics3/WaterSystem.d.ts +58 -6
  191. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  192. package/src/engine/graphics3/WaterSystem.js +423 -293
  193. package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts +10 -4
  194. package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts.map +1 -1
  195. package/src/engine/interpolation/BinaryInterpolationAdapter.js +11 -5
  196. package/src/engine/interpolation/InterpolationLog.d.ts +11 -5
  197. package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
  198. package/src/engine/interpolation/InterpolationLog.js +12 -6
  199. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  200. package/src/engine/interpolation/InterpolationSystem.js +39 -8
  201. package/src/engine/interpolation/PoseInterpolationAdapter.d.ts +1 -1
  202. package/src/engine/interpolation/PoseInterpolationAdapter.d.ts.map +1 -1
  203. package/src/engine/interpolation/PoseInterpolationAdapter.js +51 -22
  204. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
  205. package/src/engine/interpolation/TransformPoseSerializationAdapter.js +18 -23
  206. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts +1 -1
  207. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  208. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +3 -1
  209. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts +1 -1
  210. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  211. package/src/engine/network/adapters/TransformInterpolationAdapter.js +3 -1
  212. package/src/engine/network/adapters/Vector3InterpolationAdapter.d.ts.map +1 -1
  213. package/src/engine/network/adapters/Vector3InterpolationAdapter.js +5 -2
  214. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  215. package/src/engine/physics/body/SolverBodyState.js +4 -5
  216. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +12 -0
  217. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  218. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +28 -3
  219. package/src/engine/physics/ccd/linear_sweep.d.ts +42 -12
  220. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  221. package/src/engine/physics/ccd/linear_sweep.js +1131 -97
  222. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +26 -14
  223. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
  224. package/src/engine/physics/cloth/collider/ClothColliderIndex.js +221 -52
  225. package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts +30 -0
  226. package/src/engine/physics/cloth/collider/cloth_collider_bounds.d.ts.map +1 -1
  227. package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +117 -24
  228. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +46 -3
  229. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
  230. package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +116 -68
  231. package/src/engine/physics/cloth/ecs/ClothColliderFlags.js +2 -1
  232. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts +10 -1
  233. package/src/engine/physics/cloth/ecs/ClothColliderSystem.d.ts.map +1 -1
  234. package/src/engine/physics/cloth/ecs/ClothColliderSystem.js +36 -14
  235. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +15 -2
  236. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
  237. package/src/engine/physics/cloth/ecs/ClothInstance.js +17 -2
  238. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  239. package/src/engine/physics/cloth/ecs/ClothWorld.js +78 -53
  240. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts +18 -20
  241. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
  242. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +185 -128
  243. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
  244. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +46 -39
  245. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
  246. package/src/engine/physics/cloth/ecs/cloth_write_back.js +41 -36
  247. package/src/engine/physics/cloth/playground/garment_build.js +6 -6
  248. package/src/engine/physics/cloth/playground/garment_main.js +18 -14
  249. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  250. package/src/engine/physics/cloth/solver/cloth_contact_find.js +8 -5
  251. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
  252. package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +8 -5
  253. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  254. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +15 -15
  255. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts +5 -0
  256. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts.map +1 -1
  257. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.js +32 -9
  258. package/src/engine/physics/constraint/solve_constraints.d.ts +50 -8
  259. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  260. package/src/engine/physics/constraint/solve_constraints.js +703 -429
  261. package/src/engine/physics/contact/ManifoldStore.d.ts +12 -0
  262. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  263. package/src/engine/physics/contact/ManifoldStore.js +32 -0
  264. package/src/engine/physics/ecs/BodyKind.d.ts +16 -8
  265. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  266. package/src/engine/physics/ecs/BodyKind.js +16 -8
  267. package/src/engine/physics/ecs/Collider.d.ts +7 -2
  268. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  269. package/src/engine/physics/ecs/Collider.js +7 -2
  270. package/src/engine/physics/ecs/PhysicsEvents.d.ts +13 -0
  271. package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -1
  272. package/src/engine/physics/ecs/PhysicsEvents.js +13 -0
  273. package/src/engine/physics/ecs/PhysicsSystem.d.ts +320 -36
  274. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  275. package/src/engine/physics/ecs/PhysicsSystem.js +810 -96
  276. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  277. package/src/engine/physics/fluid/FluidField.js +5 -1
  278. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +11 -9
  279. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  280. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +7 -5
  281. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  282. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +9 -7
  283. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  284. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +3 -4
  285. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  286. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +9 -7
  287. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  288. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +65 -43
  289. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts +23 -0
  290. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts.map +1 -0
  291. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.js +22 -0
  292. package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts +29 -0
  293. package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts.map +1 -0
  294. package/src/engine/physics/inertia/convex_hull_mass_properties.js +117 -0
  295. package/src/engine/physics/inertia/mass_properties_accumulate.d.ts +24 -0
  296. package/src/engine/physics/inertia/mass_properties_accumulate.d.ts.map +1 -0
  297. package/src/engine/physics/inertia/mass_properties_accumulate.js +93 -0
  298. package/src/engine/physics/inertia/primitive_mass_properties.d.ts +46 -0
  299. package/src/engine/physics/inertia/primitive_mass_properties.d.ts.map +1 -0
  300. package/src/engine/physics/inertia/primitive_mass_properties.js +118 -0
  301. package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts +27 -0
  302. package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts.map +1 -0
  303. package/src/engine/physics/inertia/rigid_body_set_mass_properties.js +62 -0
  304. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +67 -25
  305. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  306. package/src/engine/physics/inertia/world_inverse_inertia.js +149 -26
  307. package/src/engine/physics/integration/integrate_position.d.ts +18 -19
  308. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  309. package/src/engine/physics/integration/integrate_position.js +40 -37
  310. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
  311. package/src/engine/physics/integration/integrate_velocity.js +13 -4
  312. package/src/engine/physics/island/IslandBuilder.d.ts +124 -6
  313. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  314. package/src/engine/physics/island/IslandBuilder.js +322 -19
  315. package/src/engine/physics/narrowphase/box_box_manifold.d.ts +13 -0
  316. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  317. package/src/engine/physics/narrowphase/box_box_manifold.js +95 -39
  318. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +40 -0
  319. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  320. package/src/engine/physics/narrowphase/box_triangle_contact.js +415 -120
  321. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +63 -0
  322. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  323. package/src/engine/physics/narrowphase/capsule_contacts.js +234 -46
  324. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +13 -0
  325. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  326. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +141 -93
  327. package/src/engine/physics/narrowphase/compute_penetration.d.ts +29 -11
  328. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  329. package/src/engine/physics/narrowphase/compute_penetration.js +157 -34
  330. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +76 -0
  331. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  332. package/src/engine/physics/narrowphase/convex_convex_manifold.js +243 -48
  333. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +13 -0
  334. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -1
  335. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +28 -12
  336. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +13 -0
  337. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  338. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +27 -0
  339. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts +42 -0
  340. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts.map +1 -0
  341. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.js +250 -0
  342. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +27 -11
  343. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  344. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +291 -12
  345. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +7 -1
  346. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
  347. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +7 -1
  348. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts +35 -0
  349. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts.map +1 -0
  350. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.js +61 -0
  351. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts +54 -0
  352. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -0
  353. package/src/engine/physics/narrowphase/hull_sphere_contact.js +244 -0
  354. package/src/engine/physics/narrowphase/mesh_convex_hull.js +5 -1
  355. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts +2 -0
  356. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts.map +1 -1
  357. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +56 -31
  358. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +6 -5
  359. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  360. package/src/engine/physics/narrowphase/narrowphase_step.js +2185 -483
  361. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +56 -5
  362. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  363. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +546 -5
  364. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +29 -2
  365. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
  366. package/src/engine/physics/narrowphase/refine_ray_concave.js +628 -75
  367. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +3 -2
  368. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
  369. package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -2
  370. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts +27 -0
  371. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts.map +1 -0
  372. package/src/engine/physics/narrowphase/rigid_subject_pose.js +96 -0
  373. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +14 -0
  374. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
  375. package/src/engine/physics/narrowphase/sphere_box_contact.js +51 -5
  376. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +12 -0
  377. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -1
  378. package/src/engine/physics/narrowphase/sphere_sphere_contact.js +30 -0
  379. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +12 -0
  380. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  381. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +37 -8
  382. package/src/engine/physics/narrowphase/support_feature_manifold.d.ts +139 -0
  383. package/src/engine/physics/narrowphase/support_feature_manifold.d.ts.map +1 -0
  384. package/src/engine/physics/narrowphase/support_feature_manifold.js +949 -0
  385. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +32 -13
  386. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  387. package/src/engine/physics/queries/PhysicsSurfacePoint.js +36 -13
  388. package/src/engine/physics/queries/convex_overlaps_shape.d.ts +27 -0
  389. package/src/engine/physics/queries/convex_overlaps_shape.d.ts.map +1 -0
  390. package/src/engine/physics/queries/convex_overlaps_shape.js +169 -0
  391. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  392. package/src/engine/physics/queries/overlap_shape.js +57 -79
  393. package/src/engine/physics/queries/raycast.d.ts +10 -4
  394. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  395. package/src/engine/physics/queries/raycast.js +133 -9
  396. package/src/engine/physics/queries/shape_cast.d.ts +55 -24
  397. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  398. package/src/engine/physics/queries/shape_cast.js +2061 -245
  399. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +32 -10
  400. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -1
  401. package/src/engine/physics/solver/apply_impulse_to_body.js +69 -28
  402. package/src/engine/physics/solver/solve_contacts.d.ts +65 -18
  403. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  404. package/src/engine/physics/solver/solve_contacts.js +458 -234
  405. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  406. package/src/engine/physics/vehicle/RaycastVehicle.js +5 -6
  407. package/src/shade/assets/textures/split_sum.bin +0 -0
  408. package/src/shade/device/mock/SoftwareGPUQueue.d.ts.map +1 -1
  409. package/src/shade/device/mock/SoftwareGPUQueue.js +2 -1
  410. package/src/shade/playground/path_traced_media/README.md +78 -0
  411. package/src/shade/playground/path_traced_media/capture_radiance.d.ts +33 -0
  412. package/src/shade/playground/path_traced_media/capture_radiance.d.ts.map +1 -0
  413. package/src/shade/playground/path_traced_media/capture_radiance.js +174 -0
  414. package/src/shade/playground/path_traced_media/checks.d.ts +160 -0
  415. package/src/shade/playground/path_traced_media/checks.d.ts.map +1 -0
  416. package/src/shade/playground/path_traced_media/checks.js +921 -0
  417. package/src/shade/playground/path_traced_media/index.html +71 -0
  418. package/src/shade/playground/path_traced_media/main.d.ts +2 -0
  419. package/src/shade/playground/path_traced_media/main.d.ts.map +1 -0
  420. package/src/shade/playground/path_traced_media/main.js +440 -0
  421. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts +26 -0
  422. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts.map +1 -0
  423. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.js +117 -0
  424. package/src/shade/playground/path_traced_media/views.d.ts +21 -0
  425. package/src/shade/playground/path_traced_media/views.d.ts.map +1 -0
  426. package/src/shade/playground/path_traced_media/views.js +161 -0
  427. package/src/shade/playground/sh_exponential/README.md +43 -0
  428. package/src/shade/playground/sh_exponential/index.html +59 -0
  429. package/src/shade/playground/sh_exponential/main.d.ts +2 -0
  430. package/src/shade/playground/sh_exponential/main.d.ts.map +1 -0
  431. package/src/shade/playground/sh_exponential/main.js +571 -0
  432. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts +46 -0
  433. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -0
  434. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +270 -0
  435. package/src/shade/playground/water_refraction/README.md +158 -0
  436. package/src/shade/playground/water_refraction/index.html +40 -0
  437. package/src/shade/playground/water_refraction/main.d.ts +2 -0
  438. package/src/shade/playground/water_refraction/main.d.ts.map +1 -0
  439. package/src/shade/playground/water_refraction/main.js +202 -0
  440. package/src/shade/playground/water_refraction/world.d.ts +39 -0
  441. package/src/shade/playground/water_refraction/world.d.ts.map +1 -0
  442. package/src/shade/playground/water_refraction/world.js +141 -0
  443. package/src/shade/renderer/Renderer.d.ts +2 -0
  444. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  445. package/src/shade/renderer/Renderer.js +27 -0
  446. package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts +2 -3
  447. package/src/shade/renderer/animation/chunk_pose_accumulator.d.ts.map +1 -1
  448. package/src/shade/renderer/animation/skinning/bounds_refresh/shader_meshlet_bounds_reduce.d.ts.map +1 -1
  449. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
  450. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +9 -1
  451. package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.d.ts.map +1 -1
  452. package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.js +6 -4
  453. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  454. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
  455. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts +7 -0
  456. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts.map +1 -1
  457. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.js +12 -12
  458. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts +4 -0
  459. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts.map +1 -1
  460. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.js +13 -9
  461. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  462. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +2 -0
  463. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  464. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
  465. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
  466. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -9
  467. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
  468. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +20 -10
  469. package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.d.ts +8 -0
  470. package/src/shade/renderer/light/environment/chunk_roughness_to_mip_ratio.d.ts.map +1 -0
  471. package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.d.ts +0 -6
  472. package/src/shade/renderer/light/environment/chunk_sphere_probe_roughness_to_lod.d.ts.map +1 -1
  473. package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts +2 -1
  474. package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts.map +1 -1
  475. package/src/shade/renderer/light/environment/rgbe/load_environment_map.js +2 -1
  476. package/src/shade/renderer/light/environment/sh_exponential/README.md +171 -0
  477. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts +170 -0
  478. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts.map +1 -0
  479. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.js +377 -0
  480. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts +16 -0
  481. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts.map +1 -0
  482. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.js +27 -0
  483. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts +21 -0
  484. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -0
  485. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +53 -0
  486. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts +33 -0
  487. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts.map +1 -0
  488. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.js +90 -0
  489. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts +28 -0
  490. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts.map +1 -0
  491. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.js +92 -0
  492. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts +39 -0
  493. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts.map +1 -0
  494. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.js +44 -0
  495. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts +42 -0
  496. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts.map +1 -0
  497. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.js +123 -0
  498. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +30 -0
  499. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -0
  500. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +147 -0
  501. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts +24 -0
  502. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -0
  503. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +79 -0
  504. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts +17 -0
  505. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -0
  506. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +99 -0
  507. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts +24 -0
  508. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -0
  509. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +104 -0
  510. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts +12 -0
  511. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -0
  512. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +93 -0
  513. package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
  514. package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
  515. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
  516. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
  517. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
  518. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
  519. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  520. package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts +1 -1
  521. package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts.map +1 -1
  522. package/src/shade/renderer/material/StandardShadeMaterial.d.ts +15 -0
  523. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  524. package/src/shade/renderer/material/StandardShadeMaterial.js +17 -0
  525. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +36 -2
  526. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  527. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +218 -18
  528. package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.d.ts.map +1 -1
  529. package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.js +10 -0
  530. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts +17 -0
  531. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts.map +1 -0
  532. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.js +24 -0
  533. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts +24 -0
  534. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts.map +1 -0
  535. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.js +18 -0
  536. package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts +20 -0
  537. package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts.map +1 -0
  538. package/src/shade/renderer/medium/MEDIUM_STRUCT.js +43 -0
  539. package/src/shade/renderer/medium/ParticipatingMedium.d.ts +108 -0
  540. package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -0
  541. package/src/shade/renderer/medium/ParticipatingMedium.js +204 -0
  542. package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts +13 -0
  543. package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts.map +1 -0
  544. package/src/shade/renderer/medium/chunk_medium_lobe_phase.js +33 -0
  545. package/src/shade/renderer/medium/participating_medium_serialization.d.ts +32 -0
  546. package/src/shade/renderer/medium/participating_medium_serialization.d.ts.map +1 -0
  547. package/src/shade/renderer/medium/participating_medium_serialization.js +181 -0
  548. package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts +48 -0
  549. package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts.map +1 -0
  550. package/src/shade/renderer/medium/phase/MediumPhaseFunction.js +42 -0
  551. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts +23 -0
  552. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts.map +1 -0
  553. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.js +45 -0
  554. package/src/shade/renderer/medium/phase/PhaseDraine.d.ts +30 -0
  555. package/src/shade/renderer/medium/phase/PhaseDraine.d.ts.map +1 -0
  556. package/src/shade/renderer/medium/phase/PhaseDraine.js +58 -0
  557. package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts +24 -0
  558. package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts.map +1 -0
  559. package/src/shade/renderer/medium/phase/PhaseFournierForand.js +53 -0
  560. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts +21 -0
  561. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts.map +1 -0
  562. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.js +43 -0
  563. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts +25 -0
  564. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts.map +1 -0
  565. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.js +66 -0
  566. package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts +9 -0
  567. package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts.map +1 -0
  568. package/src/shade/renderer/medium/phase/PhaseRayleigh.js +21 -0
  569. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts +28 -0
  570. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts.map +1 -0
  571. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.js +49 -0
  572. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts +10 -0
  573. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts.map +1 -0
  574. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.js +25 -0
  575. package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts +47 -0
  576. package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts.map +1 -0
  577. package/src/shade/renderer/medium/water/water_iop_from_appearance.js +174 -0
  578. package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts +57 -0
  579. package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts.map +1 -0
  580. package/src/shade/renderer/medium/water/water_iop_from_constituents.js +242 -0
  581. package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts +41 -0
  582. package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts.map +1 -0
  583. package/src/shade/renderer/medium/water/water_iop_jerlov.js +231 -0
  584. package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts +66 -0
  585. package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts.map +1 -0
  586. package/src/shade/renderer/medium/water/water_iop_spectral_reference.js +223 -0
  587. package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts +96 -0
  588. package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts.map +1 -0
  589. package/src/shade/renderer/medium/water/water_medium_from_iop.js +145 -0
  590. package/src/shade/renderer/medium/water/water_presets.d.ts +69 -0
  591. package/src/shade/renderer/medium/water/water_presets.d.ts.map +1 -0
  592. package/src/shade/renderer/medium/water/water_presets.js +119 -0
  593. package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts +69 -0
  594. package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts.map +1 -0
  595. package/src/shade/renderer/medium/water/water_rgb_from_spectral.js +341 -0
  596. package/src/shade/renderer/particles/DESIGN.md +4 -2
  597. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts +1 -1
  598. package/src/shade/renderer/particles/bounds/chunk_particle_bounds.d.ts.map +1 -1
  599. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts +26 -0
  600. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts.map +1 -0
  601. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.js +71 -0
  602. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  603. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +16 -1
  604. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -1
  605. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +6 -13
  606. package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +520 -0
  607. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  608. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
  609. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  610. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +2 -0
  611. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  612. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +188 -185
  613. package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.d.ts.map +1 -1
  614. package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.js +4 -1
  615. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts +13 -0
  616. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts.map +1 -0
  617. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.js +29 -0
  618. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts +79 -0
  619. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts.map +1 -1
  620. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +360 -70
  621. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
  622. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +4 -3
  623. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts +24 -0
  624. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts.map +1 -0
  625. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.js +99 -0
  626. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts +68 -0
  627. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts.map +1 -0
  628. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.js +263 -0
  629. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts +55 -0
  630. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts.map +1 -0
  631. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.js +148 -0
  632. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts +17 -0
  633. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts.map +1 -0
  634. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.js +41 -0
  635. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts +20 -0
  636. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts.map +1 -0
  637. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.js +105 -0
  638. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts +28 -0
  639. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts.map +1 -0
  640. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.js +97 -0
  641. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts +12 -0
  642. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts.map +1 -0
  643. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.js +46 -0
  644. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts +25 -0
  645. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts.map +1 -0
  646. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.js +75 -0
  647. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts +54 -0
  648. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts.map +1 -0
  649. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.js +245 -0
  650. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts +42 -0
  651. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts.map +1 -0
  652. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.js +236 -0
  653. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts +24 -0
  654. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts.map +1 -0
  655. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.js +97 -0
  656. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts +57 -0
  657. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts.map +1 -0
  658. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.js +222 -0
  659. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts +88 -0
  660. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts.map +1 -0
  661. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.js +304 -0
  662. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts +35 -0
  663. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts.map +1 -0
  664. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.js +137 -0
  665. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  666. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
  667. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +85 -84
  668. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +8 -0
  669. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -1
  670. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +9 -0
  671. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +28 -1
  672. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  673. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +17 -1
  674. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +13 -7
  675. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
  676. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +13 -7
  677. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +309 -0
  678. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +54 -9
  679. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  680. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +9 -1
  681. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts +33 -0
  682. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts.map +1 -0
  683. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.js +45 -0
  684. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +4 -0
  685. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -1
  686. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +6 -2
  687. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.d.ts +4 -0
  688. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.d.ts.map +1 -0
  689. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_renormalization.js +11 -0
  690. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.d.ts +4 -0
  691. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.d.ts.map +1 -0
  692. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_rgb_contribution.js +19 -0
  693. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +2 -1
  694. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -1
  695. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +4 -2
  696. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.d.ts.map +1 -1
  697. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_splat_slice.js +5 -3
  698. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.d.ts +4 -0
  699. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.d.ts.map +1 -0
  700. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_split_counts.js +8 -0
  701. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts +14 -0
  702. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts.map +1 -0
  703. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.js +28 -0
  704. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts +10 -0
  705. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts.map +1 -0
  706. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.js +18 -0
  707. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts +19 -0
  708. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts.map +1 -0
  709. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.js +44 -0
  710. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts +10 -0
  711. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts.map +1 -0
  712. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.js +17 -0
  713. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
  714. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  715. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +23 -2
  716. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -1
  717. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +163 -64
  718. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.d.ts.map +1 -1
  719. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_resolve.js +4 -8
  720. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  721. package/src/shade/renderer/scene/GPUSceneContext.js +4 -1
  722. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
  723. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +5 -0
  724. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -1
  725. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +12 -1
  726. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts.map +1 -1
  727. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +22 -3
  728. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts +18 -0
  729. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts.map +1 -0
  730. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.js +31 -0
  731. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts +43 -0
  732. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts.map +1 -0
  733. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.js +153 -0
  734. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts +13 -0
  735. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts.map +1 -0
  736. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.js +57 -0
  737. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts +45 -0
  738. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts.map +1 -0
  739. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.js +109 -0
  740. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.d.ts.map +1 -1
  741. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.js +6 -3
  742. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts +24 -0
  743. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts.map +1 -0
  744. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.js +49 -0
  745. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts +18 -0
  746. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts.map +1 -1
  747. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.js +18 -0
  748. package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.d.ts +12 -0
  749. package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_add_f32_storage.d.ts.map +1 -0
  750. package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.d.ts +12 -0
  751. package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_max_f32_storage.d.ts.map +1 -0
  752. package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.d.ts +12 -0
  753. package/src/shade/renderer/shader/chunk/atomic/chunk_atomic_min_f32_storage.d.ts.map +1 -0
  754. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts +3 -0
  755. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts.map +1 -1
  756. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js +3 -0
  757. package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.d.ts.map +1 -1
  758. package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.js +3 -1
  759. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts +24 -0
  760. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts.map +1 -0
  761. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.js +53 -0
  762. package/src/shade/renderer/shader/chunk/geometry/plane/{plane_ray_raycast.d.ts → chunk_plane_ray_raycast.d.ts} +2 -2
  763. package/src/shade/renderer/shader/chunk/geometry/plane/chunk_plane_ray_raycast.d.ts.map +1 -0
  764. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts +7 -1
  765. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts.map +1 -1
  766. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.js +12 -60
  767. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts +26 -6
  768. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts.map +1 -1
  769. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.js +30 -20
  770. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.d.ts.map +1 -1
  771. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.js +3 -1
  772. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.d.ts.map +1 -1
  773. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.js +3 -1
  774. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.d.ts.map +1 -1
  775. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.js +3 -1
  776. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts +14 -0
  777. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts.map +1 -0
  778. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.js +25 -0
  779. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts +9 -2
  780. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts.map +1 -1
  781. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.js +33 -10
  782. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts +4 -0
  783. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -0
  784. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +135 -0
  785. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts +14 -0
  786. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts.map +1 -0
  787. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.js +30 -0
  788. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts +19 -0
  789. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts.map +1 -0
  790. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.js +73 -0
  791. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts +19 -0
  792. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts.map +1 -0
  793. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.js +25 -0
  794. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts +17 -0
  795. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts.map +1 -0
  796. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js +23 -0
  797. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts +26 -0
  798. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts.map +1 -0
  799. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js +55 -0
  800. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts +52 -0
  801. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts.map +1 -0
  802. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.js +65 -0
  803. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts +13 -0
  804. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts.map +1 -0
  805. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.js +229 -0
  806. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts +23 -0
  807. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts.map +1 -0
  808. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.js +278 -0
  809. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts +23 -0
  810. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts.map +1 -0
  811. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.js +58 -0
  812. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts +23 -0
  813. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts.map +1 -0
  814. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.js +75 -0
  815. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts +13 -0
  816. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts.map +1 -0
  817. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.js +70 -0
  818. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts +23 -0
  819. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts.map +1 -0
  820. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.js +95 -0
  821. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts +13 -0
  822. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts.map +1 -0
  823. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.js +89 -0
  824. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts +23 -0
  825. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts.map +1 -0
  826. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.js +118 -0
  827. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts +13 -0
  828. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts.map +1 -0
  829. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.js +111 -0
  830. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts +23 -0
  831. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts.map +1 -0
  832. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.js +144 -0
  833. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts +13 -0
  834. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts.map +1 -0
  835. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.js +136 -0
  836. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts +23 -0
  837. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts.map +1 -0
  838. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.js +173 -0
  839. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts +13 -0
  840. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts.map +1 -0
  841. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.js +164 -0
  842. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts +23 -0
  843. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts.map +1 -0
  844. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.js +205 -0
  845. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts +13 -0
  846. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts.map +1 -0
  847. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.js +195 -0
  848. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts +23 -0
  849. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts.map +1 -0
  850. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.js +240 -0
  851. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +0 -6
  852. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
  853. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +46 -1
  854. package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts +7 -7
  855. package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js +7 -7
  856. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +42 -10
  857. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  858. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +104 -48
  859. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +20 -4
  860. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  861. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +186 -74
  862. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +2 -1
  863. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  864. package/src/shade/renderer/shadow/map/Shadowmap.js +2 -1
  865. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts +30 -0
  866. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts.map +1 -0
  867. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.js +52 -0
  868. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +14 -0
  869. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +1 -0
  870. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +20 -0
  871. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts +8 -0
  872. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts.map +1 -0
  873. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js +7 -0
  874. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +8 -6
  875. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -1
  876. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +28 -34
  877. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts +3 -2
  878. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts.map +1 -1
  879. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.js +19 -14
  880. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +4 -3
  881. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
  882. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +12 -7
  883. package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.d.ts +4 -4
  884. package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.js +4 -4
  885. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
  886. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +39 -17
  887. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +1 -1
  888. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +5 -36
  889. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +1 -1
  890. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +3 -2
  891. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +1 -1
  892. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
  893. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +49 -35
  894. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +4 -1
  895. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +1 -1
  896. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +8 -9
  897. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +2 -2
  898. package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +1 -1
  899. package/src/shade/renderer/shadow/vsm/decode_tile_address.js +15 -23
  900. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +1 -1
  901. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +6 -9
  902. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +1 -1
  903. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +19 -9
  904. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +1 -1
  905. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +18 -6
  906. package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts +1 -1
  907. package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts.map +1 -1
  908. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts +18 -1
  909. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts.map +1 -1
  910. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.js +24 -3
  911. package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts +1 -1
  912. package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts.map +1 -1
  913. package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts +0 -1
  914. package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts.map +1 -1
  915. package/src/shade/renderer/texture/util/get_single_pixel_texture.js +2 -23
  916. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts +11 -0
  917. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts.map +1 -0
  918. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.js +34 -0
  919. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +17 -8
  920. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  921. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +35 -64
  922. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +21 -0
  923. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -0
  924. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +70 -0
  925. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts +31 -0
  926. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts.map +1 -0
  927. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.js +86 -0
  928. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  929. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  930. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  931. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +6 -7
  932. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +7 -7
  933. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +72 -27
  934. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  935. package/src/shade/renderer/water/GPUWaterRenderer.js +275 -138
  936. package/src/shade/renderer/water/chunk_water_gi.d.ts +14 -0
  937. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -0
  938. package/src/shade/renderer/water/chunk_water_gi.js +56 -0
  939. package/src/shade/renderer/water/chunk_water_transport.d.ts +7 -0
  940. package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -0
  941. package/src/shade/renderer/water/chunk_water_transport.js +105 -0
  942. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +29 -0
  943. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -0
  944. package/src/shade/renderer/water/medium/GPUWaterBodies.js +116 -0
  945. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +23 -0
  946. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -0
  947. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +42 -0
  948. package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts +9 -0
  949. package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts.map +1 -0
  950. package/src/shade/renderer/water/medium/chunk_water_medium_derived.js +55 -0
  951. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts +8 -0
  952. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts.map +1 -0
  953. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.js +17 -0
  954. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +8 -0
  955. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -0
  956. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +30 -0
  957. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts +28 -0
  958. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -0
  959. package/src/shade/renderer/water/optics/chunk_water_inscatter.js +123 -0
  960. package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +23 -0
  961. package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +1 -0
  962. package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +18 -0
  963. package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +1 -0
  964. package/src/shade/renderer/water/optics/chunk_water_optics.d.ts +12 -0
  965. package/src/shade/renderer/water/optics/chunk_water_optics.d.ts.map +1 -0
  966. package/src/shade/renderer/water/optics/chunk_water_optics.js +75 -0
  967. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts +27 -0
  968. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -0
  969. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +74 -0
  970. package/src/shade/renderer/water/shader_water.d.ts +15 -26
  971. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  972. package/src/shade/renderer/water/shader_water.js +373 -213
  973. package/src/shade/renderer/water/shader_water_avboit.d.ts +12 -0
  974. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -0
  975. package/src/shade/renderer/water/shader_water_avboit.js +268 -0
  976. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +98 -0
  977. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -0
  978. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +408 -0
  979. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +12 -0
  980. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +1 -0
  981. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +27 -0
  982. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +14 -0
  983. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +1 -0
  984. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +49 -0
  985. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +15 -0
  986. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -0
  987. package/src/shade/renderer/water/surface/chunk_water_wave.js +48 -0
  988. package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +9 -0
  989. package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +1 -0
  990. package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +47 -0
  991. package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +10 -0
  992. package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +1 -0
  993. package/src/shade/renderer/water/surface/shader_water_surface_write.js +51 -0
  994. package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +12 -0
  995. package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +1 -0
  996. package/src/shade/renderer/water/surface/shader_water_wave_step.js +54 -0
  997. package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +13 -0
  998. package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +1 -0
  999. package/src/shade/renderer/water/surface/water_surface_grid_indices.js +39 -0
  1000. package/src/shade/renderer/water/water_missing_receiver_path.d.ts +17 -0
  1001. package/src/shade/renderer/water/water_missing_receiver_path.d.ts.map +1 -0
  1002. package/src/shade/renderer/water/water_missing_receiver_path.js +40 -0
  1003. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  1004. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +247 -23
  1005. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts +18 -14
  1006. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  1007. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +61 -6
  1008. package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.d.ts +0 -29
  1009. package/src/shade/renderer/animation/skinning/bounds_refresh/chunk_aabb_atomic_f32.d.ts.map +0 -1
  1010. package/src/shade/renderer/shader/chunk/geometry/plane/plane_ray_raycast.d.ts.map +0 -1
  1011. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +0 -29
  1012. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +0 -1
  1013. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +0 -43
  1014. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts +0 -7
  1015. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts.map +0 -1
  1016. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.js +0 -6
@@ -5,6 +5,34 @@ import { body_is_wholly_sensor } from "../ecs/is_sensor.js";
5
5
  import { JOINT_WORLD } from "../ecs/Joint.js";
6
6
  import { uf_find, uf_init, uf_union } from "../../../core/collection/union-find/union_find.js";
7
7
 
8
+ /**
9
+ * A union-find parent table of `n` entries with every node its own root.
10
+ * @param {number} n
11
+ * @returns {Uint32Array}
12
+ */
13
+ function identity_uint32(n) {
14
+ const parent = new Uint32Array(n);
15
+ uf_init(parent, n);
16
+ return parent;
17
+ }
18
+
19
+ /**
20
+ * Island contact slices up to this length are sorted in place by the plain
21
+ * insertion sort; longer ones by the keyed merge sort. Measured: on input in
22
+ * random entity order the keyed sort draws level at 4 contacts and is 1.4x
23
+ * faster at 16; on input already in order the two stay level to ~32 and the
24
+ * plain sort leads beyond. Below ~8 they are within a few ns either way.
25
+ * @type {number}
26
+ */
27
+ const CONTACT_SORT_INSERTION_MAX = 8;
28
+
29
+ /**
30
+ * Length of the runs the keyed merge sort insertion-sorts (on gathered keys)
31
+ * before its first merge pass.
32
+ * @type {number}
33
+ */
34
+ const CONTACT_SORT_RUN = 16;
35
+
8
36
  /**
9
37
  * Partitions this frame's awake dynamic bodies + contacting non-sensor
10
38
  * manifolds into connected components ("islands") via union-find. The solver iterates
@@ -53,17 +81,18 @@ export class IslandBuilder {
53
81
  /**
54
82
  * Union-find parent table, indexed by body index (NOT packed id).
55
83
  * Sized to `storage.high_water_mark` at `build` time; reallocated by
56
- * doubling when the body pool grows past current capacity.
84
+ * doubling when the body pool grows past current capacity. Every body is
85
+ * its own root except those the last build united.
57
86
  * @type {Uint32Array}
58
87
  */
59
- parent = new Uint32Array(16);
88
+ parent = identity_uint32(16);
60
89
 
61
90
  /**
62
91
  * Per-body island id. `island_of_body[idx] === -1` means the body
63
92
  * is not in any island this frame (static, kinematic, or unallocated).
64
93
  * @type {Int32Array}
65
94
  */
66
- island_of_body = new Int32Array(16);
95
+ island_of_body = new Int32Array(16).fill(-1);
67
96
 
68
97
  /**
69
98
  * Number of islands this frame.
@@ -100,8 +129,8 @@ export class IslandBuilder {
100
129
  contact_offsets = new Uint32Array(2);
101
130
 
102
131
  /**
103
- * Flattened manifold slot ids, grouped by island, sorted ascending
104
- * within each island.
132
+ * Flattened manifold slot ids, grouped by island, sorted by canonical
133
+ * entity pair within each island (see the class doc).
105
134
  * @type {Uint32Array}
106
135
  */
107
136
  contact_data = new Uint32Array(16);
@@ -114,11 +143,51 @@ export class IslandBuilder {
114
143
 
115
144
  /**
116
145
  * Scratch: root body index → island id, or -1 if unassigned.
117
- * Sized in lockstep with `parent`.
146
+ * Sized in lockstep with `parent`. -1 everywhere between builds: a build
147
+ * puts back the roots it wrote.
118
148
  * @private
119
149
  * @type {Int32Array}
120
150
  */
121
- __root_to_island = new Int32Array(16);
151
+ __root_to_island = new Int32Array(16).fill(-1);
152
+
153
+ /**
154
+ * Scratch: the body indices whose `parent` entry the last build may have
155
+ * changed — every index it handed to the union-find — so the next build
156
+ * can put just those back to their own roots. Sized in lockstep with
157
+ * `parent`; `__uf_touched_count` valid entries.
158
+ *
159
+ * This and the generation stamps below keep a build's cost proportional to
160
+ * the bodies and contacts it sees, not to the body-slot high-water mark:
161
+ * re-initialising `parent`, `island_of_body` and `__root_to_island` over
162
+ * every slot made a build cost over a millisecond at a million slots with
163
+ * ten bodies awake; it costs 0.009 ms now.
164
+ * @private
165
+ * @type {Uint32Array}
166
+ */
167
+ __uf_touched = new Uint32Array(16);
168
+
169
+ /**
170
+ * @private
171
+ * @type {number}
172
+ */
173
+ __uf_touched_count = 0;
174
+
175
+ /**
176
+ * Scratch: per body index, the build generation that last recorded it in
177
+ * {@link __uf_touched}, so each index is recorded once a build. Sized in
178
+ * lockstep with `parent`.
179
+ * @private
180
+ * @type {Int32Array}
181
+ */
182
+ __uf_stamp = new Int32Array(16);
183
+
184
+ /**
185
+ * Current build generation for {@link __uf_stamp}; never 0 once a build
186
+ * has begun, so a fresh (zeroed) stamp never reads as recorded.
187
+ * @private
188
+ * @type {number}
189
+ */
190
+ __uf_generation = 0;
122
191
 
123
192
  /**
124
193
  * Scratch: list of distinct root indices observed this frame, used
@@ -135,6 +204,47 @@ export class IslandBuilder {
135
204
  */
136
205
  __cursors = new Uint32Array(2);
137
206
 
207
+ /**
208
+ * Scratch for the keyed merge sort of long island contact slices: per
209
+ * element, the canonical entity pair (lo, hi) and the slot id, in two
210
+ * ping-pong banks. Empty until a slice longer than
211
+ * {@link CONTACT_SORT_INSERTION_MAX} is seen, then grown by doubling to the
212
+ * longest slice so far.
213
+ * @private
214
+ * @type {Int32Array}
215
+ */
216
+ __sort_lo = new Int32Array(0);
217
+
218
+ /**
219
+ * @private
220
+ * @type {Int32Array}
221
+ */
222
+ __sort_hi = new Int32Array(0);
223
+
224
+ /**
225
+ * @private
226
+ * @type {Uint32Array}
227
+ */
228
+ __sort_slot = new Uint32Array(0);
229
+
230
+ /**
231
+ * @private
232
+ * @type {Int32Array}
233
+ */
234
+ __sort_lo_swap = new Int32Array(0);
235
+
236
+ /**
237
+ * @private
238
+ * @type {Int32Array}
239
+ */
240
+ __sort_hi_swap = new Int32Array(0);
241
+
242
+ /**
243
+ * @private
244
+ * @type {Uint32Array}
245
+ */
246
+ __sort_slot_swap = new Uint32Array(0);
247
+
138
248
  /**
139
249
  * @param {RigidBody} rb
140
250
  * @param {Array} collider_list collider list for the body (or undefined)
@@ -165,8 +275,29 @@ export class IslandBuilder {
165
275
  const hwm = storage.high_water_mark;
166
276
  this.__ensure_body_capacity(hwm);
167
277
 
278
+ // Undo the last build where it wrote, rather than re-initialising every
279
+ // slot: its unions in `parent`, its island ids in `island_of_body` (the
280
+ // bodies it emitted — exactly the ones it gave an id).
168
281
  const parent = this.parent;
169
- uf_init(parent, hwm);
282
+ const touched = this.__uf_touched;
283
+ for (let i = 0; i < this.__uf_touched_count; i++) {
284
+ const idx = touched[i];
285
+ parent[idx] = idx;
286
+ }
287
+ this.__uf_touched_count = 0;
288
+
289
+ const island_of_body = this.island_of_body;
290
+ const prior_body_data = this.body_data;
291
+ const prior_body_total = this.body_total;
292
+ for (let i = 0; i < prior_body_total; i++) {
293
+ island_of_body[prior_body_data[i]] = -1;
294
+ }
295
+
296
+ // Only a union makes a `parent` entry other than its own index, and
297
+ // path halving rewrites only entries a union already made non-roots,
298
+ // so recording each union's two bodies covers every entry this build
299
+ // can change. A lone body's lookup reads its own entry and stops.
300
+ this.__next_uf_generation();
170
301
 
171
302
  // --- Pass 1: union dynamic-dynamic pairs from CONTACTING non-sensor
172
303
  // manifolds. The contact_count gate matters: a touched slot with
@@ -186,6 +317,8 @@ export class IslandBuilder {
186
317
  if (IslandBuilder.__body_is_sensor(rbA, body_collider_lists[idxA])) continue;
187
318
  if (IslandBuilder.__body_is_sensor(rbB, body_collider_lists[idxB])) continue;
188
319
  if (rbA.kind === BodyKind.Dynamic && rbB.kind === BodyKind.Dynamic) {
320
+ this.__uf_touch(idxA);
321
+ this.__uf_touch(idxB);
189
322
  uf_union(parent, idxA, idxB);
190
323
  }
191
324
  }
@@ -209,17 +342,17 @@ export class IslandBuilder {
209
342
  const rbB = bodies[idxB];
210
343
  if (rbA === undefined || rbB === undefined) continue;
211
344
  if (rbA.kind === BodyKind.Dynamic && rbB.kind === BodyKind.Dynamic) {
345
+ this.__uf_touch(idxA);
346
+ this.__uf_touch(idxB);
212
347
  uf_union(parent, idxA, idxB);
213
348
  }
214
349
  }
215
350
 
216
351
  // --- Pass 2: collect distinct roots over awake dynamic bodies.
217
- const island_of_body = this.island_of_body;
218
- // Cheap reset: only the indices we may write are below hwm.
219
- for (let i = 0; i < hwm; i++) island_of_body[i] = -1;
220
-
352
+ // `island_of_body` and `__root_to_island` are -1 everywhere here: the
353
+ // top of this build undid the last one's ids, and the last build put
354
+ // back the roots it wrote.
221
355
  const root_to_island = this.__root_to_island;
222
- for (let i = 0; i < hwm; i++) root_to_island[i] = -1;
223
356
 
224
357
  const awake_count = storage.awake_count;
225
358
  const scratch_roots = this.__scratch_roots;
@@ -256,6 +389,10 @@ export class IslandBuilder {
256
389
  island_of_body[idx] = root_to_island[r];
257
390
  }
258
391
 
392
+ for (let i = 0; i < root_count; i++) {
393
+ root_to_island[scratch_roots[i]] = -1;
394
+ }
395
+
259
396
  this.__build_body_csr(storage, bodies, awake_count, root_count);
260
397
  this.__build_contact_csr(storage, manifolds, bodies, body_collider_lists, root_count);
261
398
  }
@@ -360,17 +497,130 @@ export class IslandBuilder {
360
497
  const start = offsets[i];
361
498
  const end = offsets[i + 1];
362
499
  if (end - start > 1) {
363
- IslandBuilder.__sort_slots_by_entity_pair(data, start, end, storage, manifolds);
500
+ this.__sort_contact_slice(data, start, end, storage, manifolds);
364
501
  }
365
502
  }
366
503
  }
367
504
 
505
+ /**
506
+ * Sort `data[start..end)` (manifold slot ids) by canonical entity pair,
507
+ * producing exactly the order {@link __sort_slots_by_entity_pair} produces,
508
+ * for every input.
509
+ *
510
+ * Short slices go to that insertion sort. A connected pile is one island
511
+ * whose contacts arrive in manifold slot order, which is unrelated to entity
512
+ * order (inversions ≈ n²/4), so the insertion sort was quadratic there:
513
+ * 2,464 contacts in one island took 6.0 ms a step, 5,190 took 24 ms.
514
+ * Longer slices gather each slot's (lo, hi) key once and run a bottom-up
515
+ * merge sort over the retained scratch banks — O(n log n), no allocation
516
+ * once the banks have grown.
517
+ *
518
+ * Both sorts are stable (the insertion shifts only past strictly greater
519
+ * keys; the merge takes the left run on ties), and a stable sort's output is
520
+ * determined by the keys and the input order alone, so the two agree element
521
+ * for element — duplicate keys included, though a frame holds one slot per
522
+ * pair.
523
+ *
524
+ * @private
525
+ * @param {Uint32Array} data
526
+ * @param {number} start
527
+ * @param {number} end exclusive
528
+ * @param {BodyStorage} storage
529
+ * @param {ManifoldStore} manifolds
530
+ */
531
+ __sort_contact_slice(data, start, end, storage, manifolds) {
532
+ const n = end - start;
533
+ if (n <= CONTACT_SORT_INSERTION_MAX) {
534
+ IslandBuilder.__sort_slots_by_entity_pair(data, start, end, storage, manifolds);
535
+ return;
536
+ }
537
+
538
+ this.__ensure_sort_capacity(n);
539
+
540
+ let src_lo = this.__sort_lo;
541
+ let src_hi = this.__sort_hi;
542
+ let src_slot = this.__sort_slot;
543
+ let dst_lo = this.__sort_lo_swap;
544
+ let dst_hi = this.__sort_hi_swap;
545
+ let dst_slot = this.__sort_slot_swap;
546
+
547
+ // Gather keys, insertion-sorting each CONTACT_SORT_RUN-long run as it fills.
548
+ for (let i = 0; i < n; i++) {
549
+ const slot = data[start + i];
550
+ const ea = storage.entity_at(body_id_index(manifolds.bodyA(slot)));
551
+ const eb = storage.entity_at(body_id_index(manifolds.bodyB(slot)));
552
+ const lo = ea < eb ? ea : eb;
553
+ const hi = ea < eb ? eb : ea;
554
+
555
+ const run_start = i - i % CONTACT_SORT_RUN;
556
+ let j = i - 1;
557
+ while (j >= run_start) {
558
+ const o_lo = src_lo[j];
559
+ if (o_lo < lo || (o_lo === lo && src_hi[j] <= hi)) break;
560
+ src_lo[j + 1] = o_lo;
561
+ src_hi[j + 1] = src_hi[j];
562
+ src_slot[j + 1] = src_slot[j];
563
+ j--;
564
+ }
565
+ src_lo[j + 1] = lo;
566
+ src_hi[j + 1] = hi;
567
+ src_slot[j + 1] = slot;
568
+ }
569
+
570
+ // Bottom-up merge passes, ping-ponging between the banks.
571
+ for (let width = CONTACT_SORT_RUN; width < n; width *= 2) {
572
+ for (let left = 0; left < n; left += 2 * width) {
573
+ const mid = left + width < n ? left + width : n;
574
+ const right_end = left + 2 * width < n ? left + 2 * width : n;
575
+ let a = left;
576
+ let b = mid;
577
+ let k = left;
578
+ while (a < mid && b < right_end) {
579
+ const a_lo = src_lo[a];
580
+ const b_lo = src_lo[b];
581
+ // Right only when strictly smaller: ties keep the left run first.
582
+ if (b_lo < a_lo || (b_lo === a_lo && src_hi[b] < src_hi[a])) {
583
+ dst_lo[k] = b_lo;
584
+ dst_hi[k] = src_hi[b];
585
+ dst_slot[k] = src_slot[b];
586
+ b++;
587
+ } else {
588
+ dst_lo[k] = a_lo;
589
+ dst_hi[k] = src_hi[a];
590
+ dst_slot[k] = src_slot[a];
591
+ a++;
592
+ }
593
+ k++;
594
+ }
595
+ for (; a < mid; a++, k++) {
596
+ dst_lo[k] = src_lo[a];
597
+ dst_hi[k] = src_hi[a];
598
+ dst_slot[k] = src_slot[a];
599
+ }
600
+ for (; b < right_end; b++, k++) {
601
+ dst_lo[k] = src_lo[b];
602
+ dst_hi[k] = src_hi[b];
603
+ dst_slot[k] = src_slot[b];
604
+ }
605
+ }
606
+
607
+ const t_lo = src_lo; src_lo = dst_lo; dst_lo = t_lo;
608
+ const t_hi = src_hi; src_hi = dst_hi; dst_hi = t_hi;
609
+ const t_slot = src_slot; src_slot = dst_slot; dst_slot = t_slot;
610
+ }
611
+
612
+ for (let i = 0; i < n; i++) {
613
+ data[start + i] = src_slot[i];
614
+ }
615
+ }
616
+
368
617
  /**
369
618
  * In-place insertion sort of `data[start..end)` (manifold slot ids) by the
370
619
  * canonical entity pair `(min(entA, entB), max(entA, entB))` of each slot.
371
620
  * One slot per pair, so the key is unique within a frame and the order is
372
- * total. Insertion sort: island contact slices are small (tens), the
373
- * comparator is two table reads, and there is nothing to allocate.
621
+ * total. Insertion sort: used for short slices only (see
622
+ * {@link __sort_contact_slice}), where re-reading the keys per compare is
623
+ * cheaper than gathering them, and there is nothing to allocate.
374
624
  *
375
625
  * @private
376
626
  * @param {Uint32Array} data
@@ -465,10 +715,47 @@ export class IslandBuilder {
465
715
  __ensure_body_capacity(n) {
466
716
  if (this.parent.length < n) {
467
717
  const cap = ceilPowerOfTwo(n);
468
- this.parent = new Uint32Array(cap);
469
- this.island_of_body = new Int32Array(cap);
470
- this.__root_to_island = new Int32Array(cap);
718
+
719
+ // Fresh tables start in the between-builds state — every body its
720
+ // own root, no island ids, no roots recorded — so there is nothing
721
+ // of the last build left to undo.
722
+ this.parent = identity_uint32(cap);
723
+ this.island_of_body = new Int32Array(cap).fill(-1);
724
+ this.__root_to_island = new Int32Array(cap).fill(-1);
471
725
  this.__scratch_roots = new Uint32Array(cap);
726
+ this.__uf_touched = new Uint32Array(cap);
727
+ this.__uf_touched_count = 0;
728
+ this.__uf_stamp = new Int32Array(cap);
729
+ }
730
+ }
731
+
732
+ /**
733
+ * Roll the build generation for {@link __uf_stamp}; on (astronomically
734
+ * unlikely) Int32 wrap, clear the stamps so a recycled generation value
735
+ * can't read as already recorded. Same scheme as SolverBodyState#begin.
736
+ * @private
737
+ */
738
+ __next_uf_generation() {
739
+ const next = (this.__uf_generation + 1) | 0;
740
+ if (next <= 0) {
741
+ this.__uf_stamp.fill(0);
742
+ this.__uf_generation = 1;
743
+ } else {
744
+ this.__uf_generation = next;
745
+ }
746
+ }
747
+
748
+ /**
749
+ * Record that this build hands body index `idx` to the union-find, once.
750
+ * @private
751
+ * @param {number} idx
752
+ */
753
+ __uf_touch(idx) {
754
+ const stamp = this.__uf_stamp;
755
+ const generation = this.__uf_generation;
756
+ if (stamp[idx] !== generation) {
757
+ stamp[idx] = generation;
758
+ this.__uf_touched[this.__uf_touched_count++] = idx;
472
759
  }
473
760
  }
474
761
 
@@ -504,4 +791,20 @@ export class IslandBuilder {
504
791
  this.contact_data = new Uint32Array(ceilPowerOfTwo(n));
505
792
  }
506
793
  }
794
+
795
+ /**
796
+ * @private
797
+ * @param {number} n
798
+ */
799
+ __ensure_sort_capacity(n) {
800
+ if (this.__sort_lo.length < n) {
801
+ const cap = ceilPowerOfTwo(n);
802
+ this.__sort_lo = new Int32Array(cap);
803
+ this.__sort_hi = new Int32Array(cap);
804
+ this.__sort_slot = new Uint32Array(cap);
805
+ this.__sort_lo_swap = new Int32Array(cap);
806
+ this.__sort_hi_swap = new Int32Array(cap);
807
+ this.__sort_slot_swap = new Uint32Array(cap);
808
+ }
809
+ }
507
810
  }
@@ -24,6 +24,19 @@
24
24
  * @returns {boolean} true if overlap
25
25
  */
26
26
  export function box_box_manifold(out: number[] | Float64Array, ax: number, ay: number, az: number, aqx: number, aqy: number, aqz: number, aqw: number, ahx: number, ahy: number, ahz: number, bx: number, by: number, bz: number, bqx: number, bqy: number, bqz: number, bqw: number, bhx: number, bhy: number, bhz: number): boolean;
27
+ /**
28
+ * {@link box_box_manifold} with each box read from an array: centre (world), orientation (unit
29
+ * quaternion), half-extents (body frame), ten numbers. A call V8 does not inline boxes each number
30
+ * passed to it, twenty here, once per box pair per step.
31
+ *
32
+ * @param {number[]|Float64Array} out length >= BOX_BOX_OUT_LENGTH
33
+ * @param {Float64Array} box_a
34
+ * @param {number} box_a_offset
35
+ * @param {Float64Array} box_b
36
+ * @param {number} box_b_offset
37
+ * @returns {boolean} true if overlap
38
+ */
39
+ export function box_box_manifold_array(out: number[] | Float64Array, box_a: Float64Array, box_a_offset: number, box_b: Float64Array, box_b_offset: number): boolean;
27
40
  /**
28
41
  * Length of `out` required by {@link box_box_manifold}.
29
42
  * @type {number}
@@ -1 +1 @@
1
- {"version":3,"file":"box_box_manifold.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/narrowphase/box_box_manifold.js"],"names":[],"mappings":"AA2JA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,sCAvBW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,GACJ,OAAO,CA8enB;AA9lBD;;;GAGG;AACH,iCAFU,MAAM,CAEoD"}
1
+ {"version":3,"file":"box_box_manifold.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/narrowphase/box_box_manifold.js"],"names":[],"mappings":"AA4KA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,sCAvBW,MAAM,EAAE,GAAC,YAAY,MACrB,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,GACJ,OAAO,CAmBnB;AAMD;;;;;;;;;;;GAWG;AACH,4CAPW,MAAM,EAAE,GAAC,YAAY,SACrB,YAAY,gBACZ,MAAM,SACN,YAAY,gBACZ,MAAM,GACJ,OAAO,CAkfnB;AAtpBD;;;GAGG;AACH,iCAFU,MAAM,CAEoD"}
@@ -1,5 +1,5 @@
1
1
  import { line3_compute_segment_segment_closest_points } from "../../../core/geom/3d/line/line3_compute_segment_segment_closest_points.js";
2
- import { quat3_to_matrix3 } from "../../../core/geom/3d/quaternion/quat3_to_matrix3.js";
2
+ import { quat3_to_matrix3_array } from "../../../core/geom/3d/quaternion/quat3_to_matrix3.js";
3
3
  import { polygon2_clip_axis_halfplane } from "../../../core/geom/2d/polygon/polygon2_clip_axis_halfplane.js";
4
4
  import { reduce_manifold_contacts } from "./reduce_manifold_contacts.js";
5
5
  import { box3_projected_half_extent } from "../../../core/geom/3d/box/box3_projected_half_extent.js";
@@ -98,23 +98,40 @@ const scratch_edge_st = new Float64Array(2);
98
98
  // `test_axis` used to be a per-call closure inside box_box_manifold —
99
99
  // allocated for every box-box pair because it captures and MUTATES the
100
100
  // running best-axis accumulator. Hoisted to module scope with the per-pair
101
- // inputs staged in the g_bb_* slots below (written once per pair, read by
102
- // all 15 axis tests). Same arithmetic, same order — bit-identical results.
103
-
104
- let g_bb_ahx = 0, g_bb_ahy = 0, g_bb_ahz = 0;
105
- let g_bb_bhx = 0, g_bb_bhy = 0, g_bb_bhz = 0;
106
- let g_bb_dx = 0, g_bb_dy = 0, g_bb_dz = 0;
107
- let g_bb_best_overlap = Infinity;
108
- let g_bb_best_nx = 0, g_bb_best_ny = 0, g_bb_best_nz = 0;
101
+ // inputs staged in `bb` below (written once per pair, read by all 15 axis
102
+ // tests). Same arithmetic, same order — bit-identical results.
103
+ //
104
+ // `bb` is a Float64Array rather than module-level `let`s: a number written to
105
+ // a module-level binding is boxed into a new heap object on every write, and
106
+ // these are written per pair and per improving axis.
107
+
108
+ const BB_A_HALF = 0; // A's half-extents (3)
109
+ const BB_B_HALF = 3; // B's half-extents (3)
110
+ const BB_D = 6; // centre offset B − A (3)
111
+ const BB_BEST_OVERLAP = 9;
112
+ const BB_BEST_NORMAL = 10; // unit, B → A (3)
113
+ const BB_EDGE_AXIS = 13; // an edge-pair candidate axis for test_axis (3)
114
+ const BB_LENGTH = 16;
115
+
116
+ const bb = new Float64Array(BB_LENGTH);
109
117
  let g_bb_best_source = -1;
110
118
 
111
119
  /**
112
120
  * SAT interval test of one candidate axis. Returns `true` when the axis
113
121
  * SEPARATES the boxes (caller bails). Tracks the minimum-overlap axis in
114
- * the g_bb_best_* slots, with the tie-break deadband documented at
115
- * {@link TIE_REL}.
122
+ * the `bb` best slots and {@link g_bb_best_source}, with the tie-break
123
+ * deadband documented at {@link TIE_REL}.
124
+ *
125
+ * The axis is read from an array: not every one of the fifteen calls is
126
+ * inlined, and a call that is not boxes each number passed to it.
127
+ *
128
+ * @param {Float64Array} axis
129
+ * @param {number} axis_offset the candidate axis, not necessarily unit
130
+ * @param {number} source 0..2 A's face axes, 3..5 B's, 6 + 3i + j the cross of A's axis i and B's j
131
+ * @returns {boolean}
116
132
  */
117
- function test_axis(lx, ly, lz, source) {
133
+ function test_axis(axis, axis_offset, source) {
134
+ const lx = axis[axis_offset], ly = axis[axis_offset + 1], lz = axis[axis_offset + 2];
118
135
  const len_sqr = lx * lx + ly * ly + lz * lz;
119
136
 
120
137
  if (len_sqr < PARALLEL_EPS_SQR){
@@ -127,10 +144,10 @@ function test_axis(lx, ly, lz, source) {
127
144
  const uy = ly * inv_len;
128
145
  const uz = lz * inv_len;
129
146
 
130
- const rA = box3_projected_half_extent(scratch_axes_a, 0, g_bb_ahx, g_bb_ahy, g_bb_ahz, ux, uy, uz);
131
- const rB = box3_projected_half_extent(scratch_axes_b, 0, g_bb_bhx, g_bb_bhy, g_bb_bhz, ux, uy, uz);
147
+ const rA = box3_projected_half_extent(scratch_axes_a, 0, bb[BB_A_HALF], bb[BB_A_HALF + 1], bb[BB_A_HALF + 2], ux, uy, uz);
148
+ const rB = box3_projected_half_extent(scratch_axes_b, 0, bb[BB_B_HALF], bb[BB_B_HALF + 1], bb[BB_B_HALF + 2], ux, uy, uz);
132
149
 
133
- const proj = g_bb_dx * ux + g_bb_dy * uy + g_bb_dz * uz;
150
+ const proj = bb[BB_D] * ux + bb[BB_D + 1] * uy + bb[BB_D + 2] * uz;
134
151
  const dist = proj < 0 ? -proj : proj;
135
152
  const overlap = (rA + rB) - dist;
136
153
 
@@ -142,12 +159,12 @@ function test_axis(lx, ly, lz, source) {
142
159
  // if it reduces the overlap past the hysteresis band. This biases ties
143
160
  // toward earlier-tested axes (A faces > B faces > edges) so aligned
144
161
  // boxes pick a stable reference instead of flip-flopping on noise.
145
- if (g_bb_best_source === -1 || overlap < g_bb_best_overlap - (g_bb_best_overlap * TIE_REL + TIE_ABS)) {
146
- g_bb_best_overlap = overlap;
162
+ if (g_bb_best_source === -1 || overlap < bb[BB_BEST_OVERLAP] - (bb[BB_BEST_OVERLAP] * TIE_REL + TIE_ABS)) {
163
+ bb[BB_BEST_OVERLAP] = overlap;
147
164
  const sign = proj > 0 ? -1 : 1; // normal points B->A
148
- g_bb_best_nx = ux * sign;
149
- g_bb_best_ny = uy * sign;
150
- g_bb_best_nz = uz * sign;
165
+ bb[BB_BEST_NORMAL] = ux * sign;
166
+ bb[BB_BEST_NORMAL + 1] = uy * sign;
167
+ bb[BB_BEST_NORMAL + 2] = uz * sign;
151
168
  g_bb_best_source = source;
152
169
  }
153
170
  return false;
@@ -183,8 +200,45 @@ export function box_box_manifold(
183
200
  ax, ay, az, aqx, aqy, aqz, aqw, ahx, ahy, ahz,
184
201
  bx, by, bz, bqx, bqy, bqz, bqw, bhx, bhy, bhz
185
202
  ) {
186
- quat3_to_matrix3(scratch_axes_a, 0, aqx, aqy, aqz, aqw);
187
- quat3_to_matrix3(scratch_axes_b, 0, bqx, bqy, bqz, bqw);
203
+ const a = scratch_box_a;
204
+ const b = scratch_box_b;
205
+
206
+ a[0] = ax; a[1] = ay; a[2] = az;
207
+ a[3] = aqx; a[4] = aqy; a[5] = aqz; a[6] = aqw;
208
+ a[7] = ahx; a[8] = ahy; a[9] = ahz;
209
+
210
+ b[0] = bx; b[1] = by; b[2] = bz;
211
+ b[3] = bqx; b[4] = bqy; b[5] = bqz; b[6] = bqw;
212
+ b[7] = bhx; b[8] = bhy; b[9] = bhz;
213
+
214
+ return box_box_manifold_array(out, a, 0, b, 0);
215
+ }
216
+
217
+ /** Where {@link box_box_manifold} packs its two boxes. */
218
+ const scratch_box_a = new Float64Array(10);
219
+ const scratch_box_b = new Float64Array(10);
220
+
221
+ /**
222
+ * {@link box_box_manifold} with each box read from an array: centre (world), orientation (unit
223
+ * quaternion), half-extents (body frame), ten numbers. A call V8 does not inline boxes each number
224
+ * passed to it, twenty here, once per box pair per step.
225
+ *
226
+ * @param {number[]|Float64Array} out length >= BOX_BOX_OUT_LENGTH
227
+ * @param {Float64Array} box_a
228
+ * @param {number} box_a_offset
229
+ * @param {Float64Array} box_b
230
+ * @param {number} box_b_offset
231
+ * @returns {boolean} true if overlap
232
+ */
233
+ export function box_box_manifold_array(out, box_a, box_a_offset, box_b, box_b_offset) {
234
+ const ax = box_a[box_a_offset], ay = box_a[box_a_offset + 1], az = box_a[box_a_offset + 2];
235
+ const ahx = box_a[box_a_offset + 7], ahy = box_a[box_a_offset + 8], ahz = box_a[box_a_offset + 9];
236
+
237
+ const bx = box_b[box_b_offset], by = box_b[box_b_offset + 1], bz = box_b[box_b_offset + 2];
238
+ const bhx = box_b[box_b_offset + 7], bhy = box_b[box_b_offset + 8], bhz = box_b[box_b_offset + 9];
239
+
240
+ quat3_to_matrix3_array(scratch_axes_a, 0, box_a, box_a_offset + 3);
241
+ quat3_to_matrix3_array(scratch_axes_b, 0, box_b, box_b_offset + 3);
188
242
 
189
243
  const ta = scratch_axes_a;
190
244
  const tb = scratch_axes_b;
@@ -195,19 +249,21 @@ export function box_box_manifold(
195
249
 
196
250
  // Stage the per-pair inputs + reset the best-axis accumulator for the
197
251
  // hoisted test_axis (see the D3 note above it).
198
- g_bb_ahx = ahx; g_bb_ahy = ahy; g_bb_ahz = ahz;
199
- g_bb_bhx = bhx; g_bb_bhy = bhy; g_bb_bhz = bhz;
200
- g_bb_dx = dx; g_bb_dy = dy; g_bb_dz = dz;
201
- g_bb_best_overlap = Infinity;
202
- g_bb_best_nx = 0; g_bb_best_ny = 0; g_bb_best_nz = 0;
252
+ bb[BB_A_HALF] = ahx; bb[BB_A_HALF + 1] = ahy; bb[BB_A_HALF + 2] = ahz;
253
+ bb[BB_B_HALF] = bhx; bb[BB_B_HALF + 1] = bhy; bb[BB_B_HALF + 2] = bhz;
254
+ bb[BB_D] = dx; bb[BB_D + 1] = dy; bb[BB_D + 2] = dz;
255
+ bb[BB_BEST_OVERLAP] = Infinity;
256
+ bb[BB_BEST_NORMAL] = 0; bb[BB_BEST_NORMAL + 1] = 0; bb[BB_BEST_NORMAL + 2] = 0;
203
257
  g_bb_best_source = -1;
204
258
 
205
- if (test_axis(ta[0], ta[1], ta[2], 0)) return false;
206
- if (test_axis(ta[3], ta[4], ta[5], 1)) return false;
207
- if (test_axis(ta[6], ta[7], ta[8], 2)) return false;
208
- if (test_axis(tb[0], tb[1], tb[2], 3)) return false;
209
- if (test_axis(tb[3], tb[4], tb[5], 4)) return false;
210
- if (test_axis(tb[6], tb[7], tb[8], 5)) return false;
259
+ if (test_axis(ta, 0, 0)) return false;
260
+ if (test_axis(ta, 3, 1)) return false;
261
+ if (test_axis(ta, 6, 2)) return false;
262
+ if (test_axis(tb, 0, 3)) return false;
263
+ if (test_axis(tb, 3, 4)) return false;
264
+ if (test_axis(tb, 6, 5)) return false;
265
+
266
+ const edge_axis = bb;
211
267
 
212
268
  for (let i = 0; i < 3; i++) {
213
269
  const i3 = i * 3;
@@ -217,18 +273,18 @@ export function box_box_manifold(
217
273
  const j3 = j * 3;
218
274
  const bjx = tb[j3], bjy = tb[j3 + 1], bjz = tb[j3 + 2];
219
275
 
220
- const cx = aiy * bjz - aiz * bjy;
221
- const cy = aiz * bjx - aix * bjz;
222
- const cz = aix * bjy - aiy * bjx;
276
+ edge_axis[BB_EDGE_AXIS] = aiy * bjz - aiz * bjy;
277
+ edge_axis[BB_EDGE_AXIS + 1] = aiz * bjx - aix * bjz;
278
+ edge_axis[BB_EDGE_AXIS + 2] = aix * bjy - aiy * bjx;
223
279
 
224
- if (test_axis(cx, cy, cz, 6 + i3 + j)) return false;
280
+ if (test_axis(edge_axis, BB_EDGE_AXIS, 6 + i3 + j)) return false;
225
281
  }
226
282
  }
227
283
 
228
284
  // We have a contact. Output the normal.
229
- const best_overlap = g_bb_best_overlap;
285
+ const best_overlap = bb[BB_BEST_OVERLAP];
230
286
  const best_source = g_bb_best_source;
231
- const nx = g_bb_best_nx, ny = g_bb_best_ny, nz = g_bb_best_nz;
287
+ const nx = bb[BB_BEST_NORMAL], ny = bb[BB_BEST_NORMAL + 1], nz = bb[BB_BEST_NORMAL + 2];
232
288
  out[0] = nx;
233
289
  out[1] = ny;
234
290
  out[2] = nz;