@woosh/meep-engine 3.38.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 (962) 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 +4 -0
  159. package/src/engine/ecs/transform/Transform64.d.ts +4 -2
  160. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  161. package/src/engine/ecs/transform/Transform64.js +10 -16
  162. package/src/engine/graphics/ecs/water/Water.d.ts +25 -63
  163. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  164. package/src/engine/graphics/ecs/water/Water.js +110 -125
  165. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  166. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +38 -74
  167. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +1 -1
  168. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -1
  169. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +27 -18
  170. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts +12 -0
  171. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts.map +1 -0
  172. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.js +45 -0
  173. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +33 -0
  174. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -0
  175. package/src/engine/graphics/ecs/water/WaterWaves.js +46 -0
  176. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts +17 -0
  177. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -0
  178. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +26 -0
  179. package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts +22 -0
  180. package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts.map +1 -1
  181. package/src/engine/graphics/texture/3d/scs3d_sample_linear.js +43 -1
  182. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +29 -3
  183. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  184. package/src/engine/graphics/texture/sampler/Sampler2D.js +102 -14
  185. package/src/engine/graphics3/WaterSystem.d.ts +39 -3
  186. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  187. package/src/engine/graphics3/WaterSystem.js +134 -25
  188. package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts +10 -4
  189. package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts.map +1 -1
  190. package/src/engine/interpolation/BinaryInterpolationAdapter.js +11 -5
  191. package/src/engine/interpolation/InterpolationLog.d.ts +11 -5
  192. package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
  193. package/src/engine/interpolation/InterpolationLog.js +12 -6
  194. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  195. package/src/engine/interpolation/InterpolationSystem.js +39 -8
  196. package/src/engine/interpolation/PoseInterpolationAdapter.d.ts +1 -1
  197. package/src/engine/interpolation/PoseInterpolationAdapter.d.ts.map +1 -1
  198. package/src/engine/interpolation/PoseInterpolationAdapter.js +51 -22
  199. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
  200. package/src/engine/interpolation/TransformPoseSerializationAdapter.js +18 -23
  201. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts +1 -1
  202. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  203. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +3 -1
  204. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts +1 -1
  205. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  206. package/src/engine/network/adapters/TransformInterpolationAdapter.js +3 -1
  207. package/src/engine/network/adapters/Vector3InterpolationAdapter.d.ts.map +1 -1
  208. package/src/engine/network/adapters/Vector3InterpolationAdapter.js +5 -2
  209. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  210. package/src/engine/physics/body/SolverBodyState.js +4 -5
  211. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +12 -0
  212. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  213. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +28 -3
  214. package/src/engine/physics/ccd/linear_sweep.d.ts +42 -12
  215. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  216. package/src/engine/physics/ccd/linear_sweep.js +1131 -97
  217. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +13 -0
  218. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
  219. package/src/engine/physics/cloth/collider/ClothColliderIndex.js +90 -22
  220. package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +84 -24
  221. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +46 -3
  222. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
  223. package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +116 -68
  224. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  225. package/src/engine/physics/cloth/ecs/ClothWorld.js +59 -47
  226. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
  227. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +62 -55
  228. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
  229. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +46 -39
  230. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
  231. package/src/engine/physics/cloth/ecs/cloth_write_back.js +41 -36
  232. package/src/engine/physics/cloth/playground/garment_build.js +6 -6
  233. package/src/engine/physics/cloth/playground/garment_main.js +18 -14
  234. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  235. package/src/engine/physics/cloth/solver/cloth_contact_find.js +8 -5
  236. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
  237. package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +8 -5
  238. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  239. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +15 -15
  240. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts +5 -0
  241. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts.map +1 -1
  242. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.js +32 -9
  243. package/src/engine/physics/constraint/solve_constraints.d.ts +50 -8
  244. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  245. package/src/engine/physics/constraint/solve_constraints.js +703 -429
  246. package/src/engine/physics/contact/ManifoldStore.d.ts +12 -0
  247. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  248. package/src/engine/physics/contact/ManifoldStore.js +32 -0
  249. package/src/engine/physics/ecs/BodyKind.d.ts +16 -8
  250. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  251. package/src/engine/physics/ecs/BodyKind.js +16 -8
  252. package/src/engine/physics/ecs/Collider.d.ts +7 -2
  253. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  254. package/src/engine/physics/ecs/Collider.js +7 -2
  255. package/src/engine/physics/ecs/PhysicsEvents.d.ts +13 -0
  256. package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -1
  257. package/src/engine/physics/ecs/PhysicsEvents.js +13 -0
  258. package/src/engine/physics/ecs/PhysicsSystem.d.ts +320 -36
  259. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  260. package/src/engine/physics/ecs/PhysicsSystem.js +779 -81
  261. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  262. package/src/engine/physics/fluid/FluidField.js +5 -1
  263. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +11 -9
  264. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  265. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +7 -5
  266. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  267. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +9 -7
  268. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  269. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +3 -4
  270. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  271. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +9 -7
  272. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  273. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +65 -43
  274. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts +23 -0
  275. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts.map +1 -0
  276. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.js +22 -0
  277. package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts +29 -0
  278. package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts.map +1 -0
  279. package/src/engine/physics/inertia/convex_hull_mass_properties.js +117 -0
  280. package/src/engine/physics/inertia/mass_properties_accumulate.d.ts +24 -0
  281. package/src/engine/physics/inertia/mass_properties_accumulate.d.ts.map +1 -0
  282. package/src/engine/physics/inertia/mass_properties_accumulate.js +93 -0
  283. package/src/engine/physics/inertia/primitive_mass_properties.d.ts +46 -0
  284. package/src/engine/physics/inertia/primitive_mass_properties.d.ts.map +1 -0
  285. package/src/engine/physics/inertia/primitive_mass_properties.js +118 -0
  286. package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts +27 -0
  287. package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts.map +1 -0
  288. package/src/engine/physics/inertia/rigid_body_set_mass_properties.js +62 -0
  289. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +67 -25
  290. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  291. package/src/engine/physics/inertia/world_inverse_inertia.js +149 -26
  292. package/src/engine/physics/integration/integrate_position.d.ts +18 -19
  293. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  294. package/src/engine/physics/integration/integrate_position.js +40 -37
  295. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
  296. package/src/engine/physics/integration/integrate_velocity.js +13 -4
  297. package/src/engine/physics/island/IslandBuilder.d.ts +124 -6
  298. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  299. package/src/engine/physics/island/IslandBuilder.js +322 -19
  300. package/src/engine/physics/narrowphase/box_box_manifold.d.ts +13 -0
  301. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  302. package/src/engine/physics/narrowphase/box_box_manifold.js +95 -39
  303. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +40 -0
  304. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  305. package/src/engine/physics/narrowphase/box_triangle_contact.js +415 -120
  306. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +63 -0
  307. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  308. package/src/engine/physics/narrowphase/capsule_contacts.js +234 -46
  309. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +13 -0
  310. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  311. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +141 -93
  312. package/src/engine/physics/narrowphase/compute_penetration.d.ts +29 -11
  313. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  314. package/src/engine/physics/narrowphase/compute_penetration.js +157 -34
  315. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +76 -0
  316. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  317. package/src/engine/physics/narrowphase/convex_convex_manifold.js +243 -48
  318. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +13 -0
  319. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -1
  320. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +28 -12
  321. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +13 -0
  322. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  323. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +27 -0
  324. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts +42 -0
  325. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts.map +1 -0
  326. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.js +250 -0
  327. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +27 -11
  328. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  329. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +291 -12
  330. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +7 -1
  331. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
  332. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +7 -1
  333. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts +35 -0
  334. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts.map +1 -0
  335. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.js +61 -0
  336. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts +54 -0
  337. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -0
  338. package/src/engine/physics/narrowphase/hull_sphere_contact.js +244 -0
  339. package/src/engine/physics/narrowphase/mesh_convex_hull.js +5 -1
  340. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts +2 -0
  341. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts.map +1 -1
  342. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +56 -31
  343. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +6 -5
  344. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  345. package/src/engine/physics/narrowphase/narrowphase_step.js +2185 -483
  346. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +56 -5
  347. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  348. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +546 -5
  349. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +29 -2
  350. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
  351. package/src/engine/physics/narrowphase/refine_ray_concave.js +628 -75
  352. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +3 -2
  353. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
  354. package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -2
  355. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts +27 -0
  356. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts.map +1 -0
  357. package/src/engine/physics/narrowphase/rigid_subject_pose.js +96 -0
  358. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +14 -0
  359. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
  360. package/src/engine/physics/narrowphase/sphere_box_contact.js +51 -5
  361. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +12 -0
  362. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -1
  363. package/src/engine/physics/narrowphase/sphere_sphere_contact.js +30 -0
  364. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +12 -0
  365. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  366. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +37 -8
  367. package/src/engine/physics/narrowphase/support_feature_manifold.d.ts +139 -0
  368. package/src/engine/physics/narrowphase/support_feature_manifold.d.ts.map +1 -0
  369. package/src/engine/physics/narrowphase/support_feature_manifold.js +949 -0
  370. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +32 -13
  371. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  372. package/src/engine/physics/queries/PhysicsSurfacePoint.js +36 -13
  373. package/src/engine/physics/queries/convex_overlaps_shape.d.ts +27 -0
  374. package/src/engine/physics/queries/convex_overlaps_shape.d.ts.map +1 -0
  375. package/src/engine/physics/queries/convex_overlaps_shape.js +169 -0
  376. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  377. package/src/engine/physics/queries/overlap_shape.js +57 -79
  378. package/src/engine/physics/queries/raycast.d.ts +10 -4
  379. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  380. package/src/engine/physics/queries/raycast.js +133 -9
  381. package/src/engine/physics/queries/shape_cast.d.ts +55 -24
  382. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  383. package/src/engine/physics/queries/shape_cast.js +2061 -245
  384. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +32 -10
  385. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -1
  386. package/src/engine/physics/solver/apply_impulse_to_body.js +69 -28
  387. package/src/engine/physics/solver/solve_contacts.d.ts +65 -18
  388. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  389. package/src/engine/physics/solver/solve_contacts.js +458 -234
  390. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  391. package/src/engine/physics/vehicle/RaycastVehicle.js +5 -6
  392. package/src/shade/assets/textures/split_sum.bin +0 -0
  393. package/src/shade/device/mock/SoftwareGPUQueue.d.ts.map +1 -1
  394. package/src/shade/device/mock/SoftwareGPUQueue.js +2 -1
  395. package/src/shade/playground/path_traced_media/README.md +78 -0
  396. package/src/shade/playground/path_traced_media/capture_radiance.d.ts +33 -0
  397. package/src/shade/playground/path_traced_media/capture_radiance.d.ts.map +1 -0
  398. package/src/shade/playground/path_traced_media/capture_radiance.js +174 -0
  399. package/src/shade/playground/path_traced_media/checks.d.ts +160 -0
  400. package/src/shade/playground/path_traced_media/checks.d.ts.map +1 -0
  401. package/src/shade/playground/path_traced_media/checks.js +921 -0
  402. package/src/shade/playground/path_traced_media/index.html +71 -0
  403. package/src/shade/playground/path_traced_media/main.d.ts +2 -0
  404. package/src/shade/playground/path_traced_media/main.d.ts.map +1 -0
  405. package/src/shade/playground/path_traced_media/main.js +440 -0
  406. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts +26 -0
  407. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts.map +1 -0
  408. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.js +117 -0
  409. package/src/shade/playground/path_traced_media/views.d.ts +21 -0
  410. package/src/shade/playground/path_traced_media/views.d.ts.map +1 -0
  411. package/src/shade/playground/path_traced_media/views.js +161 -0
  412. package/src/shade/playground/sh_exponential/README.md +43 -0
  413. package/src/shade/playground/sh_exponential/index.html +59 -0
  414. package/src/shade/playground/sh_exponential/main.d.ts +2 -0
  415. package/src/shade/playground/sh_exponential/main.d.ts.map +1 -0
  416. package/src/shade/playground/sh_exponential/main.js +571 -0
  417. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts +46 -0
  418. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -0
  419. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +270 -0
  420. package/src/shade/playground/water_refraction/README.md +24 -15
  421. package/src/shade/playground/water_refraction/index.html +6 -8
  422. package/src/shade/playground/water_refraction/main.js +12 -11
  423. package/src/shade/playground/water_refraction/world.d.ts +2 -0
  424. package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
  425. package/src/shade/playground/water_refraction/world.js +8 -4
  426. package/src/shade/renderer/Renderer.d.ts +2 -0
  427. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  428. package/src/shade/renderer/Renderer.js +23 -0
  429. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
  430. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +9 -1
  431. package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.d.ts.map +1 -1
  432. package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.js +6 -4
  433. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  434. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
  435. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts +7 -0
  436. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts.map +1 -1
  437. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.js +12 -12
  438. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts +4 -0
  439. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts.map +1 -1
  440. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.js +13 -9
  441. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  442. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +2 -0
  443. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  444. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
  445. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
  446. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -9
  447. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
  448. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +20 -10
  449. package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts +2 -1
  450. package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts.map +1 -1
  451. package/src/shade/renderer/light/environment/rgbe/load_environment_map.js +2 -1
  452. package/src/shade/renderer/light/environment/sh_exponential/README.md +171 -0
  453. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts +170 -0
  454. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts.map +1 -0
  455. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.js +377 -0
  456. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts +16 -0
  457. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts.map +1 -0
  458. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.js +27 -0
  459. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts +21 -0
  460. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -0
  461. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +53 -0
  462. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts +33 -0
  463. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts.map +1 -0
  464. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.js +90 -0
  465. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts +28 -0
  466. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts.map +1 -0
  467. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.js +92 -0
  468. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts +39 -0
  469. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts.map +1 -0
  470. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.js +44 -0
  471. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts +42 -0
  472. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts.map +1 -0
  473. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.js +123 -0
  474. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +30 -0
  475. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -0
  476. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +147 -0
  477. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts +24 -0
  478. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -0
  479. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +79 -0
  480. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts +17 -0
  481. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -0
  482. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +99 -0
  483. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts +24 -0
  484. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -0
  485. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +104 -0
  486. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts +12 -0
  487. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -0
  488. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +93 -0
  489. package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
  490. package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
  491. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
  492. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
  493. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
  494. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
  495. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  496. package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts +1 -1
  497. package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts.map +1 -1
  498. package/src/shade/renderer/material/StandardShadeMaterial.d.ts +15 -0
  499. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  500. package/src/shade/renderer/material/StandardShadeMaterial.js +17 -0
  501. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +36 -2
  502. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  503. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +218 -18
  504. package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.d.ts.map +1 -1
  505. package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.js +10 -0
  506. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts +17 -0
  507. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts.map +1 -0
  508. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.js +24 -0
  509. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts +24 -0
  510. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts.map +1 -0
  511. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.js +18 -0
  512. package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts +20 -0
  513. package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts.map +1 -0
  514. package/src/shade/renderer/medium/MEDIUM_STRUCT.js +43 -0
  515. package/src/shade/renderer/medium/ParticipatingMedium.d.ts +108 -0
  516. package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -0
  517. package/src/shade/renderer/medium/ParticipatingMedium.js +204 -0
  518. package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts +13 -0
  519. package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts.map +1 -0
  520. package/src/shade/renderer/medium/chunk_medium_lobe_phase.js +33 -0
  521. package/src/shade/renderer/medium/participating_medium_serialization.d.ts +32 -0
  522. package/src/shade/renderer/medium/participating_medium_serialization.d.ts.map +1 -0
  523. package/src/shade/renderer/medium/participating_medium_serialization.js +181 -0
  524. package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts +48 -0
  525. package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts.map +1 -0
  526. package/src/shade/renderer/medium/phase/MediumPhaseFunction.js +42 -0
  527. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts +23 -0
  528. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts.map +1 -0
  529. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.js +45 -0
  530. package/src/shade/renderer/medium/phase/PhaseDraine.d.ts +30 -0
  531. package/src/shade/renderer/medium/phase/PhaseDraine.d.ts.map +1 -0
  532. package/src/shade/renderer/medium/phase/PhaseDraine.js +58 -0
  533. package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts +24 -0
  534. package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts.map +1 -0
  535. package/src/shade/renderer/medium/phase/PhaseFournierForand.js +53 -0
  536. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts +21 -0
  537. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts.map +1 -0
  538. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.js +43 -0
  539. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts +25 -0
  540. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts.map +1 -0
  541. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.js +66 -0
  542. package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts +9 -0
  543. package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts.map +1 -0
  544. package/src/shade/renderer/medium/phase/PhaseRayleigh.js +21 -0
  545. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts +28 -0
  546. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts.map +1 -0
  547. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.js +49 -0
  548. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts +10 -0
  549. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts.map +1 -0
  550. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.js +25 -0
  551. package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts +47 -0
  552. package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts.map +1 -0
  553. package/src/shade/renderer/medium/water/water_iop_from_appearance.js +174 -0
  554. package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts +57 -0
  555. package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts.map +1 -0
  556. package/src/shade/renderer/medium/water/water_iop_from_constituents.js +242 -0
  557. package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts +41 -0
  558. package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts.map +1 -0
  559. package/src/shade/renderer/medium/water/water_iop_jerlov.js +231 -0
  560. package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts +66 -0
  561. package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts.map +1 -0
  562. package/src/shade/renderer/medium/water/water_iop_spectral_reference.js +223 -0
  563. package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts +96 -0
  564. package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts.map +1 -0
  565. package/src/shade/renderer/medium/water/water_medium_from_iop.js +145 -0
  566. package/src/shade/renderer/medium/water/water_presets.d.ts +69 -0
  567. package/src/shade/renderer/medium/water/water_presets.d.ts.map +1 -0
  568. package/src/shade/renderer/medium/water/water_presets.js +119 -0
  569. package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts +69 -0
  570. package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts.map +1 -0
  571. package/src/shade/renderer/medium/water/water_rgb_from_spectral.js +341 -0
  572. package/src/shade/renderer/particles/DESIGN.md +4 -2
  573. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts +26 -0
  574. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts.map +1 -0
  575. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.js +71 -0
  576. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  577. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +16 -1
  578. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -1
  579. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +6 -13
  580. package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +520 -0
  581. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  582. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
  583. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  584. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +2 -0
  585. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  586. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +188 -185
  587. package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.d.ts.map +1 -1
  588. package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.js +4 -1
  589. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts +13 -0
  590. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts.map +1 -0
  591. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.js +29 -0
  592. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts +79 -0
  593. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts.map +1 -1
  594. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +360 -70
  595. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
  596. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +4 -3
  597. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts +24 -0
  598. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts.map +1 -0
  599. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.js +99 -0
  600. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts +68 -0
  601. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts.map +1 -0
  602. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.js +263 -0
  603. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts +55 -0
  604. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts.map +1 -0
  605. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.js +148 -0
  606. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts +17 -0
  607. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts.map +1 -0
  608. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.js +41 -0
  609. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts +20 -0
  610. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts.map +1 -0
  611. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.js +105 -0
  612. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts +28 -0
  613. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts.map +1 -0
  614. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.js +97 -0
  615. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts +12 -0
  616. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts.map +1 -0
  617. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.js +46 -0
  618. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts +25 -0
  619. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts.map +1 -0
  620. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.js +75 -0
  621. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts +54 -0
  622. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts.map +1 -0
  623. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.js +245 -0
  624. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts +42 -0
  625. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts.map +1 -0
  626. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.js +236 -0
  627. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts +24 -0
  628. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts.map +1 -0
  629. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.js +97 -0
  630. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts +57 -0
  631. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts.map +1 -0
  632. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.js +222 -0
  633. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts +88 -0
  634. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts.map +1 -0
  635. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.js +304 -0
  636. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts +35 -0
  637. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts.map +1 -0
  638. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.js +137 -0
  639. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  640. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
  641. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +85 -84
  642. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +8 -0
  643. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -1
  644. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +9 -0
  645. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +12 -2
  646. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  647. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +12 -3
  648. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +13 -7
  649. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
  650. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +13 -7
  651. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +309 -0
  652. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +54 -9
  653. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  654. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +9 -1
  655. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts +33 -0
  656. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts.map +1 -0
  657. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.js +45 -0
  658. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +4 -0
  659. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -1
  660. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +6 -2
  661. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +2 -1
  662. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -1
  663. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +4 -2
  664. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts +14 -0
  665. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts.map +1 -0
  666. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.js +28 -0
  667. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts +10 -0
  668. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts.map +1 -0
  669. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.js +18 -0
  670. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts +19 -0
  671. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts.map +1 -0
  672. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.js +44 -0
  673. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts +10 -0
  674. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts.map +1 -0
  675. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.js +17 -0
  676. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  677. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -1
  678. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -1
  679. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +163 -64
  680. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  681. package/src/shade/renderer/scene/GPUSceneContext.js +4 -1
  682. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
  683. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +5 -0
  684. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +12 -1
  685. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts.map +1 -1
  686. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +22 -3
  687. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts +18 -0
  688. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts.map +1 -0
  689. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.js +31 -0
  690. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts +43 -0
  691. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts.map +1 -0
  692. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.js +153 -0
  693. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts +13 -0
  694. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts.map +1 -0
  695. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.js +57 -0
  696. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts +45 -0
  697. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts.map +1 -0
  698. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.js +109 -0
  699. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.d.ts.map +1 -1
  700. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.js +6 -3
  701. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts +24 -0
  702. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts.map +1 -0
  703. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.js +49 -0
  704. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts +18 -0
  705. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts.map +1 -1
  706. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.js +18 -0
  707. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts +3 -0
  708. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts.map +1 -1
  709. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js +3 -0
  710. package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.d.ts.map +1 -1
  711. package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.js +3 -1
  712. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts +24 -0
  713. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts.map +1 -0
  714. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.js +53 -0
  715. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts +7 -1
  716. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts.map +1 -1
  717. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.js +12 -60
  718. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts +26 -6
  719. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts.map +1 -1
  720. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.js +30 -20
  721. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.d.ts.map +1 -1
  722. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.js +3 -1
  723. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.d.ts.map +1 -1
  724. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.js +3 -1
  725. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.d.ts.map +1 -1
  726. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.js +3 -1
  727. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts +14 -0
  728. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts.map +1 -0
  729. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.js +25 -0
  730. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts +9 -2
  731. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts.map +1 -1
  732. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.js +33 -10
  733. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -1
  734. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +71 -37
  735. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts +14 -0
  736. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts.map +1 -0
  737. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.js +30 -0
  738. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts +19 -0
  739. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts.map +1 -0
  740. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.js +73 -0
  741. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts +19 -0
  742. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts.map +1 -0
  743. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.js +25 -0
  744. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts +17 -0
  745. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts.map +1 -0
  746. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js +23 -0
  747. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts +26 -0
  748. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts.map +1 -0
  749. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js +55 -0
  750. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts +52 -0
  751. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts.map +1 -0
  752. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.js +65 -0
  753. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts +13 -0
  754. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts.map +1 -0
  755. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.js +229 -0
  756. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts +23 -0
  757. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts.map +1 -0
  758. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.js +278 -0
  759. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts +23 -0
  760. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts.map +1 -0
  761. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.js +58 -0
  762. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts +23 -0
  763. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts.map +1 -0
  764. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.js +75 -0
  765. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts +13 -0
  766. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts.map +1 -0
  767. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.js +70 -0
  768. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts +23 -0
  769. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts.map +1 -0
  770. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.js +95 -0
  771. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts +13 -0
  772. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts.map +1 -0
  773. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.js +89 -0
  774. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts +23 -0
  775. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts.map +1 -0
  776. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.js +118 -0
  777. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts +13 -0
  778. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts.map +1 -0
  779. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.js +111 -0
  780. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts +23 -0
  781. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts.map +1 -0
  782. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.js +144 -0
  783. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts +13 -0
  784. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts.map +1 -0
  785. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.js +136 -0
  786. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts +23 -0
  787. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts.map +1 -0
  788. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.js +173 -0
  789. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts +13 -0
  790. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts.map +1 -0
  791. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.js +164 -0
  792. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts +23 -0
  793. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts.map +1 -0
  794. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.js +205 -0
  795. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts +13 -0
  796. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts.map +1 -0
  797. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.js +195 -0
  798. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts +23 -0
  799. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts.map +1 -0
  800. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.js +240 -0
  801. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +0 -6
  802. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
  803. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +46 -1
  804. package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts +7 -7
  805. package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js +7 -7
  806. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +42 -10
  807. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  808. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +104 -48
  809. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +20 -4
  810. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  811. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +186 -74
  812. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +2 -1
  813. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  814. package/src/shade/renderer/shadow/map/Shadowmap.js +2 -1
  815. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts +30 -0
  816. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts.map +1 -0
  817. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.js +52 -0
  818. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts +14 -0
  819. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.d.ts.map +1 -0
  820. package/src/shade/renderer/shadow/map/csm/CSM_SHADOWMAP_STRUCT.js +20 -0
  821. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts +8 -0
  822. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts.map +1 -0
  823. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js +7 -0
  824. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +8 -6
  825. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -1
  826. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +28 -34
  827. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts +3 -2
  828. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts.map +1 -1
  829. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.js +19 -14
  830. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +4 -3
  831. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
  832. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +12 -7
  833. package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.d.ts +4 -4
  834. package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.js +4 -4
  835. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +1 -1
  836. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +39 -17
  837. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +1 -1
  838. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +5 -36
  839. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +1 -1
  840. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +3 -2
  841. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +1 -1
  842. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
  843. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +49 -35
  844. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +4 -1
  845. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +1 -1
  846. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +8 -9
  847. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +2 -2
  848. package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +1 -1
  849. package/src/shade/renderer/shadow/vsm/decode_tile_address.js +15 -23
  850. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +1 -1
  851. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +6 -9
  852. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +1 -1
  853. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +19 -9
  854. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +1 -1
  855. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +18 -6
  856. package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts +1 -1
  857. package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts.map +1 -1
  858. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts +18 -1
  859. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts.map +1 -1
  860. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.js +24 -3
  861. package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts +1 -1
  862. package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts.map +1 -1
  863. package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts +0 -1
  864. package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts.map +1 -1
  865. package/src/shade/renderer/texture/util/get_single_pixel_texture.js +2 -23
  866. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts +11 -0
  867. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts.map +1 -0
  868. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.js +34 -0
  869. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +17 -8
  870. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  871. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +35 -64
  872. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +21 -0
  873. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -0
  874. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +70 -0
  875. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts +31 -0
  876. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts.map +1 -0
  877. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.js +86 -0
  878. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  879. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  880. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  881. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +6 -7
  882. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +7 -7
  883. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +13 -1
  884. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  885. package/src/shade/renderer/water/GPUWaterRenderer.js +74 -25
  886. package/src/shade/renderer/water/chunk_water_gi.d.ts +14 -0
  887. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -0
  888. package/src/shade/renderer/water/chunk_water_gi.js +56 -0
  889. package/src/shade/renderer/water/chunk_water_transport.d.ts +2 -0
  890. package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
  891. package/src/shade/renderer/water/chunk_water_transport.js +51 -40
  892. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +29 -0
  893. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -0
  894. package/src/shade/renderer/water/medium/GPUWaterBodies.js +116 -0
  895. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +23 -0
  896. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -0
  897. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +42 -0
  898. package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts +9 -0
  899. package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts.map +1 -0
  900. package/src/shade/renderer/water/medium/chunk_water_medium_derived.js +55 -0
  901. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts +8 -0
  902. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts.map +1 -0
  903. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.js +17 -0
  904. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +8 -0
  905. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -0
  906. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +30 -0
  907. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts +28 -0
  908. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -0
  909. package/src/shade/renderer/water/optics/chunk_water_inscatter.js +123 -0
  910. package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts +23 -0
  911. package/src/shade/renderer/water/optics/chunk_water_light_transmittance.d.ts.map +1 -0
  912. package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts +18 -0
  913. package/src/shade/renderer/water/optics/chunk_water_light_transmittance_dry.d.ts.map +1 -0
  914. package/src/shade/renderer/water/optics/chunk_water_optics.d.ts +12 -0
  915. package/src/shade/renderer/water/optics/chunk_water_optics.d.ts.map +1 -0
  916. package/src/shade/renderer/water/optics/chunk_water_optics.js +75 -0
  917. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts +27 -0
  918. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -0
  919. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +74 -0
  920. package/src/shade/renderer/water/shader_water.d.ts +10 -4
  921. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  922. package/src/shade/renderer/water/shader_water.js +406 -384
  923. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
  924. package/src/shade/renderer/water/shader_water_avboit.js +19 -9
  925. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +98 -0
  926. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -0
  927. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +408 -0
  928. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts +12 -0
  929. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.d.ts.map +1 -0
  930. package/src/shade/renderer/water/surface/WATER_SURFACE_VERTEX_STRUCT.js +27 -0
  931. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts +14 -0
  932. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.d.ts.map +1 -0
  933. package/src/shade/renderer/water/surface/WATER_WAVE_PARAMETERS_STRUCT.js +49 -0
  934. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +15 -0
  935. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -0
  936. package/src/shade/renderer/water/surface/chunk_water_wave.js +48 -0
  937. package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts +9 -0
  938. package/src/shade/renderer/water/surface/chunk_water_wave_grid.d.ts.map +1 -0
  939. package/src/shade/renderer/water/surface/chunk_water_wave_grid.js +47 -0
  940. package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts +10 -0
  941. package/src/shade/renderer/water/surface/shader_water_surface_write.d.ts.map +1 -0
  942. package/src/shade/renderer/water/surface/shader_water_surface_write.js +51 -0
  943. package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts +12 -0
  944. package/src/shade/renderer/water/surface/shader_water_wave_step.d.ts.map +1 -0
  945. package/src/shade/renderer/water/surface/shader_water_wave_step.js +54 -0
  946. package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts +13 -0
  947. package/src/shade/renderer/water/surface/water_surface_grid_indices.d.ts.map +1 -0
  948. package/src/shade/renderer/water/surface/water_surface_grid_indices.js +39 -0
  949. package/src/shade/renderer/water/water_missing_receiver_path.d.ts +17 -0
  950. package/src/shade/renderer/water/water_missing_receiver_path.d.ts.map +1 -0
  951. package/src/shade/renderer/water/water_missing_receiver_path.js +40 -0
  952. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  953. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +247 -23
  954. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts +18 -14
  955. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  956. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +48 -6
  957. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +0 -29
  958. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +0 -1
  959. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +0 -43
  960. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts +0 -7
  961. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts.map +0 -1
  962. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.js +0 -6
@@ -12,13 +12,14 @@
12
12
  * is reordered in place and the caller reads the first `maxKept` records.
13
13
  *
14
14
  * Shared by {@link box_box_manifold} / {@link convex_convex_manifold} (stride 4,
15
- * depth lane 3), {@link box_triangle_contact} (stride 7, depth lane 6) and the
16
- * narrowphase dispatcher's pair-candidate buffer (stride 13, depth lane 9 —
17
- * lanes 10..12 are feature id / friction / restitution). Each previously
18
- * carried its own byte-identical copy.
15
+ * depth lane 3), {@link box_triangle_contact} (stride 7, depth lane 6) and,
16
+ * through {@link reduce_manifold_contacts_by_plane} when its candidates lie on
17
+ * one plane, the narrowphase dispatcher's pair-candidate buffer (stride 14,
18
+ * depth lane 9 — lanes 10..13 are feature id / friction / restitution / flags).
19
+ * Each previously carried its own byte-identical copy.
19
20
  *
20
21
  * `depth_lane` is deliberately REQUIRED, not defaulted to `stride - 1`: the
21
- * candidate layouts genuinely differ (the dispatcher's lane 12 is RESTITUTION),
22
+ * candidate layouts genuinely differ (the dispatcher's last lane is FLAGS),
22
23
  * and a stride-derived default is exactly the trap that would silently rank
23
24
  * contacts by the wrong lane (REVIEW_003 E2).
24
25
  *
@@ -33,4 +34,54 @@
33
34
  * @copyright Company Named Limited (c) 2026
34
35
  */
35
36
  export function reduce_manifold_contacts(buf: Float64Array, n: number, stride: number, maxKept: number, depth_lane: number): number;
37
+ /**
38
+ * In-place reduction of a body pair's contact candidates to at most `maxKept`, sharing the slots
39
+ * between the planes the contacts lie on.
40
+ *
41
+ * One body pair's candidates can lie on several surfaces at once: a floor and a wall, a floor and a
42
+ * ramp, the faces of two colliders. {@link reduce_manifold_contacts} keeps the deepest and then the
43
+ * widest spread, blind to the normals, so one surface could take every slot and leave another none. A
44
+ * cube sliding along a floor and a wall cut from one mesh had no floor contact in 40 of 240 frames, and
45
+ * a box meeting a 45° flank square along its leading edge kept one contact on the flank, turned about
46
+ * it and sank twice the step that carried it in (107 mm at 3 m/s, where the step is 50 mm).
47
+ *
48
+ * Here the candidates are grouped into planes by normal (cosine above {@link PLANE_COS}), and
49
+ * 1. each plane's deepest candidate takes a slot, the deepest planes first — slot 0 is the deepest
50
+ * of all, as before;
51
+ * 2. the planes then take turns adding the candidate farthest from the points they already keep (the
52
+ * far end of an edge, the opposite corner of a face) until the slots are full.
53
+ * Candidates on one plane — every box resting on a floor — are reduced by
54
+ * {@link reduce_manifold_contacts} itself, unchanged.
55
+ *
56
+ * Box3D keeps up to four points for every plane, each its own manifold (mesh_contact.c,
57
+ * `b3ComputeMeshManifolds`, MIT, Erin Catto). Here the planes share {@link MAX_CONTACTS_PER_MANIFOLD}
58
+ * slots, so a cube pressed into a corner gets two contacts on the floor and two on the wall where Box3D,
59
+ * or two separate bodies, would give it four and four — and still rocks as it slides along the corner.
60
+ *
61
+ * A candidate founds no plane when a deeper candidate at the same point already pushes it out: when
62
+ * moving the body that deeper depth along the deeper normal clears it too
63
+ * (`depth ≤ deeper_depth · (normal · deeper_normal)`). A flat face resting on a sharp convex edge of a
64
+ * mesh gets, beside its own contacts, contacts on the planes of the edge's two faces, each the face's
65
+ * depth projected on that plane; given slots of their own they pushed a box resting on two knife-edged
66
+ * rails sideways off them. A wall's contact at the bottom corner of a box in a corner is not like that:
67
+ * the wall's push does nothing for the floor's.
68
+ *
69
+ * Nor does a plane that is a curb under another ({@link is_curb_under}): a wall met only within the
70
+ * depth a body has sunk into the floor beside it, as the far rim of a slot is. Its contacts are left out
71
+ * altogether — lifting the body out of the floor clears them.
72
+ *
73
+ * Planes are told apart by normal alone, not by which collider pair made them: a compound slab of six
74
+ * boxes resting on a floor is one plane whose four slots span the slab. Told apart, its colliders were
75
+ * six planes, four of them got one corner each, and the slab never slept and sank 11 mm (a 4×4 slab:
76
+ * 35 to 67 mm).
77
+ *
78
+ * @param {Float64Array} buf strided candidate buffer, position at lanes 0..2
79
+ * @param {number} n input candidate count
80
+ * @param {number} stride floats per candidate
81
+ * @param {number} maxKept maximum candidates to keep
82
+ * @param {number} depth_lane lane holding penetration depth
83
+ * @param {number} normal_lane first of the three lanes holding the unit normal
84
+ * @returns {number} kept count, at most min(n, maxKept); the kept candidates are the first records
85
+ */
86
+ export function reduce_manifold_contacts_by_plane(buf: Float64Array, n: number, stride: number, maxKept: number, depth_lane: number, normal_lane: number): number;
36
87
  //# sourceMappingURL=reduce_manifold_contacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reduce_manifold_contacts.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/narrowphase/reduce_manifold_contacts.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,8CAVW,YAAY,KACZ,MAAM,UACN,MAAM,WACN,MAAM,cACN,MAAM,GACJ,MAAM,CAmClB"}
1
+ {"version":3,"file":"reduce_manifold_contacts.d.ts","sourceRoot":"","sources":["../../../../../src/engine/physics/narrowphase/reduce_manifold_contacts.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,8CAVW,YAAY,KACZ,MAAM,UACN,MAAM,WACN,MAAM,cACN,MAAM,GACJ,MAAM,CAmClB;AAmED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,uDARW,YAAY,KACZ,MAAM,UACN,MAAM,WACN,MAAM,cACN,MAAM,eACN,MAAM,GACJ,MAAM,CAyKlB"}
@@ -12,13 +12,14 @@
12
12
  * is reordered in place and the caller reads the first `maxKept` records.
13
13
  *
14
14
  * Shared by {@link box_box_manifold} / {@link convex_convex_manifold} (stride 4,
15
- * depth lane 3), {@link box_triangle_contact} (stride 7, depth lane 6) and the
16
- * narrowphase dispatcher's pair-candidate buffer (stride 13, depth lane 9 —
17
- * lanes 10..12 are feature id / friction / restitution). Each previously
18
- * carried its own byte-identical copy.
15
+ * depth lane 3), {@link box_triangle_contact} (stride 7, depth lane 6) and,
16
+ * through {@link reduce_manifold_contacts_by_plane} when its candidates lie on
17
+ * one plane, the narrowphase dispatcher's pair-candidate buffer (stride 14,
18
+ * depth lane 9 — lanes 10..13 are feature id / friction / restitution / flags).
19
+ * Each previously carried its own byte-identical copy.
19
20
  *
20
21
  * `depth_lane` is deliberately REQUIRED, not defaulted to `stride - 1`: the
21
- * candidate layouts genuinely differ (the dispatcher's lane 12 is RESTITUTION),
22
+ * candidate layouts genuinely differ (the dispatcher's last lane is FLAGS),
22
23
  * and a stride-derived default is exactly the trap that would silently rank
23
24
  * contacts by the wrong lane (REVIEW_003 E2).
24
25
  *
@@ -64,6 +65,546 @@ export function reduce_manifold_contacts(buf, n, stride, maxKept, depth_lane) {
64
65
  return maxKept;
65
66
  }
66
67
 
68
+ /**
69
+ * Two contact normals whose cosine is at most this lie on different planes: Box3D's cluster tolerance
70
+ * for mesh manifolds (mesh_contact.c, `b3ComputeMeshManifolds`), about 5°.
71
+ * @type {number}
72
+ */
73
+ const PLANE_COS = 0.996;
74
+
75
+ /**
76
+ * How many candidates the search for a further plane passes over as already pushed out, or planes it
77
+ * drops as curbs (see {@link reduce_manifold_contacts_by_plane}), before it settles for the planes it has.
78
+ * A bound on the cost — each pass scans the candidates — not a tolerance.
79
+ * @type {number}
80
+ */
81
+ const MAX_PUSHED_OUT_SKIPS = 8;
82
+
83
+ /**
84
+ * Two contacts are at one point when they lie within the deeper one's depth plus this, m. Two
85
+ * surfaces' contacts at one corner of a body sit up to about that depth apart, each on its own surface.
86
+ * @type {number}
87
+ */
88
+ const SAME_POINT_SLACK = 0.001;
89
+
90
+ /**
91
+ * Depth slack of "already pushed out", m: rounding only.
92
+ * @type {number}
93
+ */
94
+ const PUSHED_OUT_SLACK = 1e-6;
95
+
96
+ /**
97
+ * A further point of a plane must lie farther than this (squared, m²: 1 mm) from the points the plane
98
+ * already keeps; a nearer one adds nothing.
99
+ * @type {number}
100
+ */
101
+ const SPREAD_MIN_D2 = 1e-6;
102
+
103
+ /** Candidate index of each plane's deepest candidate, in the order the planes were found. */
104
+ let plane_seed = new Int32Array(4);
105
+
106
+ /**
107
+ * A curb's slab may be this fraction of the support's depth wider on either side: the support's deepest
108
+ * point is where its depth is measured, and a body pitched a hair nose-down meets the curb a little lower.
109
+ * @type {number}
110
+ */
111
+ const CURB_SLAB_SLACK = 0.25;
112
+
113
+ /**
114
+ * A curb's contacts span at least this fraction of the support's depth along its normal: they run from
115
+ * the support's surface down to the body's — a contact patch confined to one corner of the slab is a
116
+ * body touching a surface with one corner, not a curb.
117
+ * @type {number}
118
+ */
119
+ const CURB_MIN_SPAN = 0.5;
120
+
121
+ /** {@link settled}: a plane's deepest, or passed over as already pushed out. */
122
+ const SETTLED = 1;
123
+
124
+ /** {@link settled}: on a curb (see {@link is_curb_under}); left out of the reduction. */
125
+ const CURB = 2;
126
+
127
+ /** Per-candidate: 0, {@link SETTLED} or {@link CURB}. */
128
+ let settled = new Uint8Array(64);
129
+
130
+ /** Per-candidate: the plane (slot of its deepest candidate) the candidate lies on, -1 for none kept. */
131
+ let plane_of = new Int32Array(64);
132
+
133
+ /**
134
+ * In-place reduction of a body pair's contact candidates to at most `maxKept`, sharing the slots
135
+ * between the planes the contacts lie on.
136
+ *
137
+ * One body pair's candidates can lie on several surfaces at once: a floor and a wall, a floor and a
138
+ * ramp, the faces of two colliders. {@link reduce_manifold_contacts} keeps the deepest and then the
139
+ * widest spread, blind to the normals, so one surface could take every slot and leave another none. A
140
+ * cube sliding along a floor and a wall cut from one mesh had no floor contact in 40 of 240 frames, and
141
+ * a box meeting a 45° flank square along its leading edge kept one contact on the flank, turned about
142
+ * it and sank twice the step that carried it in (107 mm at 3 m/s, where the step is 50 mm).
143
+ *
144
+ * Here the candidates are grouped into planes by normal (cosine above {@link PLANE_COS}), and
145
+ * 1. each plane's deepest candidate takes a slot, the deepest planes first — slot 0 is the deepest
146
+ * of all, as before;
147
+ * 2. the planes then take turns adding the candidate farthest from the points they already keep (the
148
+ * far end of an edge, the opposite corner of a face) until the slots are full.
149
+ * Candidates on one plane — every box resting on a floor — are reduced by
150
+ * {@link reduce_manifold_contacts} itself, unchanged.
151
+ *
152
+ * Box3D keeps up to four points for every plane, each its own manifold (mesh_contact.c,
153
+ * `b3ComputeMeshManifolds`, MIT, Erin Catto). Here the planes share {@link MAX_CONTACTS_PER_MANIFOLD}
154
+ * slots, so a cube pressed into a corner gets two contacts on the floor and two on the wall where Box3D,
155
+ * or two separate bodies, would give it four and four — and still rocks as it slides along the corner.
156
+ *
157
+ * A candidate founds no plane when a deeper candidate at the same point already pushes it out: when
158
+ * moving the body that deeper depth along the deeper normal clears it too
159
+ * (`depth ≤ deeper_depth · (normal · deeper_normal)`). A flat face resting on a sharp convex edge of a
160
+ * mesh gets, beside its own contacts, contacts on the planes of the edge's two faces, each the face's
161
+ * depth projected on that plane; given slots of their own they pushed a box resting on two knife-edged
162
+ * rails sideways off them. A wall's contact at the bottom corner of a box in a corner is not like that:
163
+ * the wall's push does nothing for the floor's.
164
+ *
165
+ * Nor does a plane that is a curb under another ({@link is_curb_under}): a wall met only within the
166
+ * depth a body has sunk into the floor beside it, as the far rim of a slot is. Its contacts are left out
167
+ * altogether — lifting the body out of the floor clears them.
168
+ *
169
+ * Planes are told apart by normal alone, not by which collider pair made them: a compound slab of six
170
+ * boxes resting on a floor is one plane whose four slots span the slab. Told apart, its colliders were
171
+ * six planes, four of them got one corner each, and the slab never slept and sank 11 mm (a 4×4 slab:
172
+ * 35 to 67 mm).
173
+ *
174
+ * @param {Float64Array} buf strided candidate buffer, position at lanes 0..2
175
+ * @param {number} n input candidate count
176
+ * @param {number} stride floats per candidate
177
+ * @param {number} maxKept maximum candidates to keep
178
+ * @param {number} depth_lane lane holding penetration depth
179
+ * @param {number} normal_lane first of the three lanes holding the unit normal
180
+ * @returns {number} kept count, at most min(n, maxKept); the kept candidates are the first records
181
+ */
182
+ export function reduce_manifold_contacts_by_plane(buf, n, stride, maxKept, depth_lane, normal_lane) {
183
+ if (n <= maxKept) return n;
184
+
185
+ if (settled.length < n) {
186
+ settled = new Uint8Array(n * 2);
187
+ plane_of = new Int32Array(n * 2);
188
+ }
189
+
190
+ if (plane_seed.length < maxKept) {
191
+ plane_seed = new Int32Array(maxKept);
192
+ }
193
+
194
+ settled.fill(0, 0, n);
195
+
196
+ // 1. Each plane's deepest candidate, deepest planes first. Nothing moves yet, so that one plane
197
+ // falls through to reduce_manifold_contacts with the buffer as it came.
198
+ let planes = 0;
199
+ let skips = 0;
200
+ let curbs = 0;
201
+
202
+ while (planes < maxKept) {
203
+ const seed = deepest_off_planes(buf, n, stride, depth_lane, normal_lane, planes);
204
+
205
+ if (seed === -1) {
206
+ break;
207
+ }
208
+
209
+ settled[seed] = SETTLED;
210
+
211
+ if (planes > 0 && is_pushed_out(buf, n, stride, depth_lane, normal_lane, seed)) {
212
+ if (++skips === MAX_PUSHED_OUT_SKIPS) {
213
+ break;
214
+ }
215
+
216
+ continue;
217
+ }
218
+
219
+ if (planes > 0 && is_curb_under_any(buf, n, stride, depth_lane, normal_lane, seed, planes)) {
220
+ drop_plane(buf, n, stride, normal_lane, seed);
221
+ curbs++;
222
+
223
+ if (++skips === MAX_PUSHED_OUT_SKIPS) {
224
+ break;
225
+ }
226
+
227
+ continue;
228
+ }
229
+
230
+ // a plane found earlier may be a curb under this one: deeper than it, but no step at all
231
+ for (let p = 0; p < planes; p++) {
232
+ const earlier = plane_seed[p];
233
+
234
+ if (!is_curb_under(buf, n, stride, depth_lane, normal_lane, earlier, seed)) {
235
+ continue;
236
+ }
237
+
238
+ drop_plane(buf, n, stride, normal_lane, earlier);
239
+ curbs++;
240
+ skips++;
241
+
242
+ for (let q = p; q < planes - 1; q++) {
243
+ plane_seed[q] = plane_seed[q + 1];
244
+ }
245
+
246
+ planes--;
247
+ p--;
248
+ }
249
+
250
+ plane_seed[planes++] = seed;
251
+
252
+ if (skips >= MAX_PUSHED_OUT_SKIPS) {
253
+ break;
254
+ }
255
+ }
256
+
257
+ if (planes <= 1) {
258
+ // A curb's contacts are left out; the rest are reduced as one plane's.
259
+ return reduce_manifold_contacts(buf, curbs > 0 ? drop_curbs(buf, n, stride) : n, stride, maxKept, depth_lane);
260
+ }
261
+
262
+ // The deepest candidates of the planes into slots [0, planes).
263
+ for (let p = 0; p < planes; p++) {
264
+ const s = plane_seed[p];
265
+
266
+ if (s === p) {
267
+ continue;
268
+ }
269
+
270
+ swap(buf, stride, p, s);
271
+
272
+ const t = settled[p];
273
+ settled[p] = settled[s];
274
+ settled[s] = t;
275
+
276
+ // a later plane's seed that sat in slot p is where slot p's record went
277
+ for (let q = p + 1; q < planes; q++) {
278
+ if (plane_seed[q] === p) {
279
+ plane_seed[q] = s;
280
+ }
281
+ }
282
+ }
283
+
284
+ for (let i = 0; i < n; i++) {
285
+ if (i < planes) {
286
+ plane_of[i] = i;
287
+ } else {
288
+ plane_of[i] = settled[i] === CURB ? -1 : plane_matching(buf, stride, normal_lane, i, planes);
289
+ }
290
+ }
291
+
292
+ // 2. The planes take turns, each adding its candidate farthest from its kept points.
293
+ let kept = planes;
294
+ let idle = 0;
295
+
296
+ for (let p = 0; kept < maxKept && idle < planes; p = (p + 1 === planes) ? 0 : p + 1) {
297
+ let best = -1;
298
+ let best_d2 = SPREAD_MIN_D2;
299
+
300
+ for (let i = kept; i < n; i++) {
301
+ if (plane_of[i] !== p) {
302
+ continue;
303
+ }
304
+
305
+ const io = i * stride;
306
+ let min_d2 = Infinity;
307
+
308
+ for (let j = 0; j < kept; j++) {
309
+ if (plane_of[j] !== p) {
310
+ continue;
311
+ }
312
+
313
+ const jo = j * stride;
314
+ const dx = buf[io] - buf[jo];
315
+ const dy = buf[io + 1] - buf[jo + 1];
316
+ const dz = buf[io + 2] - buf[jo + 2];
317
+ const d2 = dx * dx + dy * dy + dz * dz;
318
+
319
+ if (d2 < min_d2) {
320
+ min_d2 = d2;
321
+ }
322
+ }
323
+
324
+ if (min_d2 > best_d2) {
325
+ best_d2 = min_d2;
326
+ best = i;
327
+ }
328
+ }
329
+
330
+ if (best === -1) {
331
+ idle++;
332
+ continue;
333
+ }
334
+
335
+ idle = 0;
336
+
337
+ if (best !== kept) {
338
+ swap(buf, stride, kept, best);
339
+
340
+ const t = plane_of[kept];
341
+ plane_of[kept] = plane_of[best];
342
+ plane_of[best] = t;
343
+ }
344
+
345
+ kept++;
346
+ }
347
+
348
+ return kept;
349
+ }
350
+
351
+ /**
352
+ * The deepest candidate not yet {@link settled} whose normal is on none of the first `planes` planes
353
+ * found ({@link plane_seed}), or -1.
354
+ *
355
+ * @param {Float64Array} buf
356
+ * @param {number} n
357
+ * @param {number} stride
358
+ * @param {number} depth_lane
359
+ * @param {number} normal_lane
360
+ * @param {number} planes
361
+ * @returns {number}
362
+ */
363
+ function deepest_off_planes(buf, n, stride, depth_lane, normal_lane, planes) {
364
+ let best = -1;
365
+ let best_depth = -Infinity;
366
+
367
+ for (let i = 0; i < n; i++) {
368
+ if (settled[i] !== 0) {
369
+ continue;
370
+ }
371
+
372
+ const o = i * stride;
373
+ const depth = buf[o + depth_lane];
374
+
375
+ if (!(depth > best_depth)) {
376
+ continue;
377
+ }
378
+
379
+ const nx = buf[o + normal_lane], ny = buf[o + normal_lane + 1], nz = buf[o + normal_lane + 2];
380
+
381
+ let on_plane = false;
382
+
383
+ for (let p = 0; p < planes && !on_plane; p++) {
384
+ const so = plane_seed[p] * stride + normal_lane;
385
+
386
+ on_plane = buf[so] * nx + buf[so + 1] * ny + buf[so + 2] * nz > PLANE_COS;
387
+ }
388
+
389
+ if (!on_plane) {
390
+ best = i;
391
+ best_depth = depth;
392
+ }
393
+ }
394
+
395
+ return best;
396
+ }
397
+
398
+ /**
399
+ * Whether a deeper candidate at the same point as candidate `c` pushes it out: moving the body that
400
+ * deeper depth along the deeper normal clears `c` too.
401
+ *
402
+ * @param {Float64Array} buf
403
+ * @param {number} n
404
+ * @param {number} stride
405
+ * @param {number} depth_lane
406
+ * @param {number} normal_lane
407
+ * @param {number} c
408
+ * @returns {boolean}
409
+ */
410
+ function is_pushed_out(buf, n, stride, depth_lane, normal_lane, c) {
411
+ const co = c * stride;
412
+ const depth = buf[co + depth_lane];
413
+ const nx = buf[co + normal_lane], ny = buf[co + normal_lane + 1], nz = buf[co + normal_lane + 2];
414
+
415
+ for (let j = 0; j < n; j++) {
416
+ const jo = j * stride;
417
+ const deeper = buf[jo + depth_lane];
418
+
419
+ if (!(deeper > depth)) {
420
+ continue;
421
+ }
422
+
423
+ const dx = buf[jo] - buf[co];
424
+ const dy = buf[jo + 1] - buf[co + 1];
425
+ const dz = buf[jo + 2] - buf[co + 2];
426
+ const reach = deeper + SAME_POINT_SLACK;
427
+
428
+ if (dx * dx + dy * dy + dz * dz > reach * reach) {
429
+ continue;
430
+ }
431
+
432
+ const cos = buf[jo + normal_lane] * nx + buf[jo + normal_lane + 1] * ny + buf[jo + normal_lane + 2] * nz;
433
+
434
+ if (depth <= deeper * cos + PUSHED_OUT_SLACK) {
435
+ return true;
436
+ }
437
+ }
438
+
439
+ return false;
440
+ }
441
+
442
+ /**
443
+ * Whether the plane of candidate `c` is a curb under the plane of candidate `s` (the support): all of its
444
+ * contacts lie in the support's penetration slab — between the support's surface and the body's, `s`'s
445
+ * depth apart along `s`'s normal — and run from one face of it to the other.
446
+ *
447
+ * A body resting on a floor sinks the solver's few millimetres of slop into it. Where the floor has an
448
+ * edge whose far side is no higher — the far rim of a slot across it — the body's leading face meets that
449
+ * side's wall just below the floor's top: a contact on the wall, pushing the body back, as deep as the
450
+ * step it took past the rim. It is a curb no higher than the body's own penetration, cleared by the
451
+ * floor's push lifting the body back out; given two of the four slots it stopped the body dead. A box
452
+ * sliding at 1 m/s across a 2 to 10 cm slot in a floor was turned back in 13 of 72 starting phases.
453
+ *
454
+ * The wall of a corner is no curb: its contacts climb the body's side, out of the floor's slab. Nor is a
455
+ * floor that a body pressed into a wall touches with one bottom corner: that contact sits in the wall's
456
+ * slab, but at one depth, not across it. The slab is measured from the support's deepest contact,
457
+ * widened by {@link CURB_SLAB_SLACK} of its depth for a body pitched a little; the span must be at least
458
+ * {@link CURB_MIN_SPAN} of the depth.
459
+ *
460
+ * A contact's two witnesses are its position `a` and `a + normal · depth` — the narrowphase's convention.
461
+ *
462
+ * @param {Float64Array} buf
463
+ * @param {number} n
464
+ * @param {number} stride
465
+ * @param {number} depth_lane
466
+ * @param {number} normal_lane
467
+ * @param {number} c a candidate on the plane tested
468
+ * @param {number} s the support's deepest candidate
469
+ * @returns {boolean}
470
+ */
471
+ function is_curb_under(buf, n, stride, depth_lane, normal_lane, c, s) {
472
+ const so = s * stride;
473
+ const snx = buf[so + normal_lane], sny = buf[so + normal_lane + 1], snz = buf[so + normal_lane + 2];
474
+
475
+ const depth = buf[so + depth_lane] > 0 ? buf[so + depth_lane] : 0;
476
+ const surface = snx * buf[so] + sny * buf[so + 1] + snz * buf[so + 2];
477
+ const slack = depth * CURB_SLAB_SLACK + PUSHED_OUT_SLACK;
478
+ const lo = surface - slack;
479
+ const hi = surface + depth + slack;
480
+
481
+ const co = c * stride + normal_lane;
482
+ const cnx = buf[co], cny = buf[co + 1], cnz = buf[co + 2];
483
+
484
+ let low = Infinity;
485
+ let high = -Infinity;
486
+
487
+ for (let i = 0; i < n; i++) {
488
+ const o = i * stride;
489
+ const nx = buf[o + normal_lane], ny = buf[o + normal_lane + 1], nz = buf[o + normal_lane + 2];
490
+
491
+ if (!(nx * cnx + ny * cny + nz * cnz > PLANE_COS)) {
492
+ continue;
493
+ }
494
+
495
+ // the two witnesses, along the support's normal
496
+ const ta = snx * buf[o] + sny * buf[o + 1] + snz * buf[o + 2];
497
+ const tb = ta + (snx * nx + sny * ny + snz * nz) * buf[o + depth_lane];
498
+
499
+ if (!(ta >= lo && ta <= hi && tb >= lo && tb <= hi)) {
500
+ return false;
501
+ }
502
+
503
+ const t0 = ta < tb ? ta : tb;
504
+ const t1 = ta < tb ? tb : ta;
505
+
506
+ if (t0 < low) low = t0;
507
+ if (t1 > high) high = t1;
508
+ }
509
+
510
+ return high - low >= depth * CURB_MIN_SPAN;
511
+ }
512
+
513
+ /**
514
+ * Whether the plane of candidate `c` is a curb under any of the first `planes` planes found.
515
+ *
516
+ * @param {Float64Array} buf
517
+ * @param {number} n
518
+ * @param {number} stride
519
+ * @param {number} depth_lane
520
+ * @param {number} normal_lane
521
+ * @param {number} c
522
+ * @param {number} planes
523
+ * @returns {boolean}
524
+ */
525
+ function is_curb_under_any(buf, n, stride, depth_lane, normal_lane, c, planes) {
526
+ for (let p = 0; p < planes; p++) {
527
+ if (is_curb_under(buf, n, stride, depth_lane, normal_lane, c, plane_seed[p])) {
528
+ return true;
529
+ }
530
+ }
531
+
532
+ return false;
533
+ }
534
+
535
+ /**
536
+ * Mark every candidate on the plane of candidate `c` a {@link CURB}.
537
+ *
538
+ * @param {Float64Array} buf
539
+ * @param {number} n
540
+ * @param {number} stride
541
+ * @param {number} normal_lane
542
+ * @param {number} c
543
+ */
544
+ function drop_plane(buf, n, stride, normal_lane, c) {
545
+ const co = c * stride + normal_lane;
546
+ const cnx = buf[co], cny = buf[co + 1], cnz = buf[co + 2];
547
+
548
+ for (let i = 0; i < n; i++) {
549
+ const o = i * stride + normal_lane;
550
+
551
+ if (buf[o] * cnx + buf[o + 1] * cny + buf[o + 2] * cnz > PLANE_COS) {
552
+ settled[i] = CURB;
553
+ }
554
+ }
555
+ }
556
+
557
+ /**
558
+ * Move every candidate not on a curb to the front, in order, and return how many there are.
559
+ *
560
+ * @param {Float64Array} buf
561
+ * @param {number} n
562
+ * @param {number} stride
563
+ * @returns {number}
564
+ */
565
+ function drop_curbs(buf, n, stride) {
566
+ let kept = 0;
567
+
568
+ for (let i = 0; i < n; i++) {
569
+ if (settled[i] === CURB) {
570
+ continue;
571
+ }
572
+
573
+ if (kept !== i) {
574
+ buf.copyWithin(kept * stride, i * stride, i * stride + stride);
575
+ }
576
+
577
+ kept++;
578
+ }
579
+
580
+ return kept;
581
+ }
582
+
583
+ /**
584
+ * The first of the planes in slots [0, planes) whose normal candidate `i`'s is on, or -1.
585
+ *
586
+ * @param {Float64Array} buf
587
+ * @param {number} stride
588
+ * @param {number} normal_lane
589
+ * @param {number} i
590
+ * @param {number} planes
591
+ * @returns {number}
592
+ */
593
+ function plane_matching(buf, stride, normal_lane, i, planes) {
594
+ const o = i * stride + normal_lane;
595
+ const nx = buf[o], ny = buf[o + 1], nz = buf[o + 2];
596
+
597
+ for (let p = 0; p < planes; p++) {
598
+ const so = p * stride + normal_lane;
599
+
600
+ if (buf[so] * nx + buf[so + 1] * ny + buf[so + 2] * nz > PLANE_COS) {
601
+ return p;
602
+ }
603
+ }
604
+
605
+ return -1;
606
+ }
607
+
67
608
  function swap(buf, stride, a, b) {
68
609
  const ao = a * stride, bo = b * stride;
69
610
  for (let k = 0; k < stride; k++) {
@@ -2,7 +2,7 @@
2
2
  * @param {AbstractShape3D} shape a concave shape (`is_convex === false`)
3
3
  * @param {ArrayLike<number>} position body world position, indexed as
4
4
  * [x, y, z] — read by index like `rotation`, so an `{x, y, z}` object
5
- * sends a NaN ray into the decomposition and returns NaN
5
+ * makes a NaN ray, which misses (`Infinity`)
6
6
  * @param {ArrayLike<number>} rotation body rotation quaternion (x,y,z,w)
7
7
  * @param {number} ox ray origin x (world)
8
8
  * @param {number} oy ray origin y (world)
@@ -10,9 +10,36 @@
10
10
  * @param {number} dx ray dir x (world, unit)
11
11
  * @param {number} dy ray dir y (world, unit)
12
12
  * @param {number} dz ray dir z (world, unit)
13
- * @param {number} tMax
13
+ * @param {number} tMax reach; NaN reaches nothing (a miss)
14
14
  * @param {Float64Array|Vector3} outNormal world surface normal, written on hit
15
15
  * @returns {number} hit distance, or `Infinity` on miss
16
16
  */
17
17
  export function refine_ray_concave(shape: AbstractShape3D, position: ArrayLike<number>, rotation: ArrayLike<number>, ox: number, oy: number, oz: number, dx: number, dy: number, dz: number, tMax: number, outNormal: Float64Array | Vector3): number;
18
+ /**
19
+ * The feature id of the triangle the most recent {@link refine_ray_concave}
20
+ * that returned a hit struck — the enumerators' id, the triangle's index in
21
+ * its shape's triangulation plus one. Read straight after that call: a later
22
+ * hit overwrites it, a miss leaves it alone.
23
+ *
24
+ * @returns {number}
25
+ */
26
+ export function refine_ray_concave_hit_feature(): number;
27
+ /**
28
+ * How many triangles {@link heightmap_enumerate_triangles} emits for a query box
29
+ * in the heightmap's own frame, in O(1): the enumerator's own cell-range
30
+ * arithmetic, expression for expression, without the emitting — so the same
31
+ * number for the same box. For sizing a walk's pieces before enumerating any
32
+ * (this one's, and `shape_cast`'s over a heightmap): enumerating an over-full
33
+ * box only to learn that it was samples every height in it.
34
+ *
35
+ * @param {HeightMapShape3D} shape
36
+ * @param {number} aabb_min_x query box in the heightmap's frame
37
+ * @param {number} aabb_min_y
38
+ * @param {number} aabb_min_z
39
+ * @param {number} aabb_max_x
40
+ * @param {number} aabb_max_y
41
+ * @param {number} aabb_max_z
42
+ * @returns {number}
43
+ */
44
+ export function heightmap_box_triangles(shape: HeightMapShape3D, aabb_min_x: number, aabb_min_y: number, aabb_min_z: number, aabb_max_x: number, aabb_max_y: number, aabb_max_z: number): number;
18
45
  //# sourceMappingURL=refine_ray_concave.d.ts.map