@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
@@ -16,6 +16,7 @@ import { Transform64 } from "../../ecs/transform/Transform64.js";
16
16
  import { Camera } from "../../graphics/ecs/camera/Camera.js";
17
17
  import { BodyKind } from "../../physics/ecs/BodyKind.js";
18
18
  import { Collider } from "../../physics/ecs/Collider.js";
19
+ import { is_sensor } from "../../physics/ecs/is_sensor.js";
19
20
  import { PhysicsSystem } from "../../physics/ecs/PhysicsSystem.js";
20
21
  import { RigidBody } from "../../physics/ecs/RigidBody.js";
21
22
  import { PhysicsSurfacePoint } from "../../physics/queries/PhysicsSurfacePoint.js";
@@ -46,6 +47,9 @@ const SCRATCH_Q_C = new Quaternion();
46
47
  /** the transform holds its rotation as four numbers, so euler and axis-angle work goes through here */
47
48
  const SCRATCH_Q_EULER = new Quaternion();
48
49
 
50
+ /** what a released body's velocities are set to; never written */
51
+ const ZERO_VELOCITY = new Float64Array(3);
52
+
49
53
  const TWO_PI = Math.PI * 2;
50
54
  const LN2 = Math.log(2);
51
55
 
@@ -103,9 +107,12 @@ function makePostureCapsule(radius, totalHeight) {
103
107
  class PerEntityRuntime {
104
108
  /**
105
109
  * Co-attached kinematic body. Set by {@link FirstPersonPlayerControllerSystem.link}
106
- * after asserting it's present. The controller writes Transform64.position
107
- * directly (existing motion logic); physics derives the body's velocity
108
- * from the per-step delta. Other physics systems (raycasts, contact
110
+ * after asserting it's present. Each tick ends by handing the pose the tick resolved
111
+ * ({@link bodyPosition}, {@link bodyRotation}) to {@link PhysicsSystem#setTargetPose}: the
112
+ * physics step that follows moves the body there with the velocity that covers the distance
113
+ * in the step, so what the player meets or carries sees a body moving at the player's speed,
114
+ * and the step ends with the body exactly on the pose. A warp ({@link bodyTeleport}) goes
115
+ * through {@link PhysicsSystem#setPose} instead. Other physics systems (raycasts, contact
109
116
  * events) see the player through this body.
110
117
  * @type {RigidBody|null}
111
118
  */
@@ -119,6 +126,25 @@ class PerEntityRuntime {
119
126
  */
120
127
  collider = null;
121
128
 
129
+ /**
130
+ * Query filter that leaves out every collider of the player's own body. A query asks its filter
131
+ * with the entity of the body a collider belongs to, so comparing that entity catches the
132
+ * capsule and anything else the body carries — a child trigger, a held item's collider — where
133
+ * comparing the capsule's Collider caught only the capsule, and a second collider on the body
134
+ * pushed the player out of itself. Made at link, so a tick allocates no closure.
135
+ * @type {((entity:number, collider:Collider)=>boolean)|null}
136
+ */
137
+ notSelf = null;
138
+
139
+ /**
140
+ * Shape-cast filter for the posture headroom probe: {@link notSelf}, and solid — a sensor (a
141
+ * collider or body flagged IsSensor) is no ceiling, as it is no wall to the mover. The shape cast
142
+ * reports sensors, so the probe drops them itself; it asks the physics system for the body behind
143
+ * the id the cast passes. Made at link.
144
+ * @type {((entity:number, collider:Collider, body_id:number)=>boolean)|null}
145
+ */
146
+ solidNotSelf = null;
147
+
122
148
  /**
123
149
  * This character's own mover.
124
150
  *
@@ -135,6 +161,43 @@ class PerEntityRuntime {
135
161
  */
136
162
  mover = null;
137
163
 
164
+ /**
165
+ * Where this tick puts the body. Read from the body's Transform64 at the top of the tick —
166
+ * the pose the body actually has — then moved by the mover, the flat-ground fallback or an
167
+ * ability, and handed to the body at the end of the tick (see {@link rigidBody}). Everything
168
+ * in the tick that asks where the player is reads it here, not from the transform, which
169
+ * does not move until the physics step: the land / apex bookkeeping, the posture probe, the
170
+ * published pose and the camera's interpolation endpoint.
171
+ * @type {Float64Array}
172
+ */
173
+ bodyPosition = new Float64Array(3);
174
+
175
+ /**
176
+ * The body's orientation this tick as `[x, y, z, w]`: the pure yaw of {@link bodyYaw}, made at
177
+ * the top of the tick and handed to the body with {@link bodyPosition}. The mover's and the
178
+ * posture probe's casts use it.
179
+ * @type {Float64Array}
180
+ */
181
+ bodyRotation = new Float64Array([0, 0, 0, 1]);
182
+
183
+ /**
184
+ * Where the body was at the top of this tick, as read into {@link bodyPosition}. Compared with
185
+ * the transform before the pose is handed over: a body moved under the tick by someone else —
186
+ * a respawn's `setPose` from a signal handler — is left where they put it, rather than pulled
187
+ * back to a pose resolved from where it used to be.
188
+ * @type {Float64Array}
189
+ */
190
+ bodyStartPosition = new Float64Array(3);
191
+
192
+ /**
193
+ * Set by whoever moved {@link bodyPosition} by a warp this tick rather than a motion — the
194
+ * ledge grab's snap onto the hang pose. The tick then ends with {@link PhysicsSystem#setPose}
195
+ * to the pose, so the body gets no velocity from the jump. Cleared when the pose is handed
196
+ * over.
197
+ * @type {boolean}
198
+ */
199
+ bodyTeleport = false;
200
+
138
201
  /**
139
202
  * Pre-built capsule colliders, one per posture. Cached at link
140
203
  * from `config.body.{height, crouchHeight, proneHeight, radius}`
@@ -400,6 +463,14 @@ class PerEntityRuntime {
400
463
  * - update runs L3 (camera composition) at render rate so the eye is never
401
464
  * smoother than the screen.
402
465
  *
466
+ * The body is moved by the physics step, onto the pose each fixedUpdate
467
+ * resolves ({@link PhysicsSystem#setTargetPose}). The order the EntityManager
468
+ * derives runs this system's fixedUpdate before {@link PhysicsSystem}'s in the
469
+ * same step, so the body is on the tick's pose when the step ends. Run after
470
+ * it instead, nothing lags but the transform: the tick's own state, the
471
+ * published `pose.rootPosition` and the camera all use the pose it resolved,
472
+ * and the next step puts the body there.
473
+ *
403
474
  * The system itself integrates a simple flat-floor at y = `config.gravity.magnitude > 0
404
475
  * ? state.groundY : -Infinity` for the prototype. A real physics layer should
405
476
  * write `state.grounded`/`state.groundNormal` from outside instead; the
@@ -518,18 +589,23 @@ export class FirstPersonPlayerControllerSystem extends System {
518
589
  // attached on this entity. The body is the spatial proxy used
519
590
  // for sensor raycasts and physics-side observers (other entities
520
591
  // raycasting against the player, dynamic bodies colliding with
521
- // the capsule, etc.). The controller writes Transform directly,
522
- // physics derives velocity from the per-step delta. If a body is
523
- // missing the controller could still drive the camera, but the
524
- // physics integration silently breaks — assert here so the
525
- // misconfiguration is caught at link time.
592
+ // the capsule, etc.). The controller moves it with
593
+ // PhysicsSystem.setTargetPose: each tick resolves a pose, and the
594
+ // physics step moves the body onto it at the velocity that covers
595
+ // the distance, so a dynamic body meets a wall moving at the
596
+ // player's speed. Only a warp (the ledge grab's snap) is a setPose.
597
+ // Without physics there is no step to move it, and the tick writes
598
+ // the Transform itself. If a body is missing the controller could
599
+ // still drive the camera, but the physics integration silently
600
+ // breaks — assert here so the misconfiguration is caught at link time.
526
601
  const rigidBody = ecd.getComponent(entity, RigidBody);
527
602
  assert.ok(rigidBody !== undefined,
528
603
  "FirstPersonPlayerController entity must have a co-attached RigidBody "
529
604
  + "(kinematic capsule). See prototype_first_person_controller.js for setup.");
530
605
  assert.equal(rigidBody.kind, BodyKind.KinematicPosition,
531
606
  "FirstPersonPlayerController RigidBody must be BodyKind.KinematicPosition; "
532
- + "the controller owns the Transform and physics derives velocity.");
607
+ + "the controller moves the body to each tick's pose with PhysicsSystem.setTargetPose, "
608
+ + "which takes only that kind.");
533
609
  // Collider is also required — the KinematicMover casts this shape
534
610
  // against the world (recover / sweep / ground probe). Asserted
535
611
  // here so a missing collider surfaces at link rather than
@@ -542,6 +618,12 @@ export class FirstPersonPlayerControllerSystem extends System {
542
618
  const runtime = new PerEntityRuntime();
543
619
  runtime.rigidBody = rigidBody;
544
620
  runtime.collider = collider;
621
+ runtime.notSelf = (other_entity) => other_entity !== entity;
622
+ runtime.solidNotSelf = (other_entity, other_collider, body_id) => {
623
+ if (other_entity === entity) return false;
624
+ const body = this.physicsSystem.bodyOf(body_id);
625
+ return body !== undefined && !is_sensor(body, other_collider);
626
+ };
545
627
 
546
628
  // Pre-build one capsule per posture from cfg.body. Eye-height
547
629
  // doubles as collider-top by convention here — the prototype's
@@ -612,6 +694,15 @@ export class FirstPersonPlayerControllerSystem extends System {
612
694
  runtime.bodyYaw = SCRATCH_V3_A.y;
613
695
  runtime.eyePitch = 0;
614
696
 
697
+ // The body's pose as the controller holds it, until the first tick reads it again.
698
+ runtime.bodyPosition[0] = runtime.bodyStartPosition[0] = bodyTransform.translation_x;
699
+ runtime.bodyPosition[1] = runtime.bodyStartPosition[1] = bodyTransform.translation_y;
700
+ runtime.bodyPosition[2] = runtime.bodyStartPosition[2] = bodyTransform.translation_z;
701
+ runtime.bodyRotation[0] = bodyTransform.rotation_x;
702
+ runtime.bodyRotation[1] = bodyTransform.rotation_y;
703
+ runtime.bodyRotation[2] = bodyTransform.rotation_z;
704
+ runtime.bodyRotation[3] = bodyTransform.rotation_w;
705
+
615
706
  // Seed render-rate-look + position-interpolation state to the spawn pose.
616
707
  runtime.prevFixedYaw = runtime.bodyYaw;
617
708
  runtime.renderPrevPos.set(bodyTransform.translation_x, bodyTransform.translation_y, bodyTransform.translation_z);
@@ -663,9 +754,41 @@ export class FirstPersonPlayerControllerSystem extends System {
663
754
  controller.eyeEntity = -1;
664
755
  }
665
756
 
757
+ const runtime = this.runtime.get(entity);
758
+ if (runtime !== undefined) {
759
+ this._releaseBody(runtime, bodyTransform);
760
+ }
761
+
666
762
  this.runtime.delete(entity);
667
763
  }
668
764
 
765
+ /**
766
+ * Leave the body standing where the controller last put it. The velocities a target pose
767
+ * derives stay on the body after its step, so a body the controller stops driving would walk
768
+ * on at its last speed. When the last pose is still in flight - handed over, its step not run
769
+ * yet, as when the controller is removed from inside its own tick - the body is put there now,
770
+ * so the pending target derives no velocity either.
771
+ *
772
+ * @private
773
+ * @param {PerEntityRuntime} runtime
774
+ * @param {Transform64} bodyTransform
775
+ */
776
+ _releaseBody(runtime, bodyTransform) {
777
+ const physics = this.physicsSystem;
778
+ const body = runtime.rigidBody;
779
+ if (physics === null || body === null || body === undefined) return;
780
+
781
+ const p = runtime.bodyPosition;
782
+ if (p[0] !== bodyTransform.translation_x
783
+ || p[1] !== bodyTransform.translation_y
784
+ || p[2] !== bodyTransform.translation_z) {
785
+ physics.setPose(body, p, runtime.bodyRotation);
786
+ }
787
+
788
+ physics.setLinearVelocity(body, ZERO_VELOCITY);
789
+ physics.setAngularVelocity(body, ZERO_VELOCITY);
790
+ }
791
+
669
792
  /**
670
793
  * Look up the per-entity runtime for an entity that has this
671
794
  * controller. Used by cross-system code (sensors system, future
@@ -743,14 +866,23 @@ export class FirstPersonPlayerControllerSystem extends System {
743
866
  runtime.yawRateRadPerSec = yawStep / Math.max(dt, 1e-4);
744
867
  runtime.prevFixedYaw = runtime.bodyYaw;
745
868
 
746
- // Write body yaw back to the transform (pure yaw, no pitch on body) —
747
- // the collision sweep + sensors use it. The camera uses runtime.bodyYaw
748
- // directly, which _consumeLook keeps current at render rate.
869
+ // The tick starts from the pose the body has: the last tick's pose, landed by the physics
870
+ // step since (or where a teleport put it). Everything below moves runtime.bodyPosition, and
871
+ // the body gets it at the end of the tick (_commitBodyPose).
872
+ const bodyPosition = runtime.bodyPosition;
873
+ bodyPosition[0] = runtime.bodyStartPosition[0] = bodyTransform.translation_x;
874
+ bodyPosition[1] = runtime.bodyStartPosition[1] = bodyTransform.translation_y;
875
+ bodyPosition[2] = runtime.bodyStartPosition[2] = bodyTransform.translation_z;
876
+
877
+ // Body yaw (pure yaw, no pitch on body) — the collision sweep uses it, and the body turns to
878
+ // it with the move. The camera uses runtime.bodyYaw directly, which _consumeLook keeps
879
+ // current at render rate.
749
880
  SCRATCH_Q_EULER.fromAxisAngle(Vector3.up, runtime.bodyYaw);
750
- bodyTransform.setRotation(
751
- SCRATCH_Q_EULER.x, SCRATCH_Q_EULER.y, SCRATCH_Q_EULER.z, SCRATCH_Q_EULER.w
752
- );
753
- bodyTransform.updateMatrix();
881
+ const bodyRotation = runtime.bodyRotation;
882
+ bodyRotation[0] = SCRATCH_Q_EULER.x;
883
+ bodyRotation[1] = SCRATCH_Q_EULER.y;
884
+ bodyRotation[2] = SCRATCH_Q_EULER.z;
885
+ bodyRotation[3] = SCRATCH_Q_EULER.w;
754
886
 
755
887
  // -- Shared flags. Computed BEFORE the ability tick so abilities
756
888
  // can read them. `isCrouchActive` is deliberately computed
@@ -790,7 +922,7 @@ export class FirstPersonPlayerControllerSystem extends System {
790
922
 
791
923
  // Now resolve crouch (updates prevCrouchHeld) — used by base and L2.
792
924
  // Headroom-aware: force-keeps the player crouched under an overhang.
793
- const isCrouchActive = this._resolveCrouchHeld(controller, runtime, bodyTransform);
925
+ const isCrouchActive = this._resolveCrouchHeld(controller, runtime);
794
926
 
795
927
  if (runBaseLocomotion) {
796
928
  this._runBaseLocomotion(
@@ -907,31 +1039,11 @@ export class FirstPersonPlayerControllerSystem extends System {
907
1039
  // Footstep on phase wraparound past 0 (R) or past 0.5 (L). Same
908
1040
  // posture gate as stride advance — feet must be striking.
909
1041
  if (feetStriking && state.grounded && horizSpeed > cfg.bob.minStepSpeed) {
910
- const fireFootstep = () => {
911
- state.stepCount++;
912
- const side = runtime.nextFootSide;
913
- runtime.nextFootSide = side === "R" ? "L" : "R";
914
- // The foot that just fired is now the one bearing weight
915
- // through the upcoming half-stride. Drives lateral-bob sign.
916
- runtime.standingFoot = side;
917
- sig.onFootStep.send1({ side, speed: horizSpeed, surfaceTag: state.surfaceTag });
918
- // Kick the vertical impact spring DOWNWARD. The kick magnitude
919
- // is the per-step desired peak dip × impactKickMultiplier; the
920
- // multiplier is empirical (depends on impact spring params) so
921
- // that "verticalAmpAtWalk" still corresponds approximately to
922
- // the visible peak dip depth. Scaled by bobIntensity so a
923
- // mid-deceleration footstep doesn't deliver a full-strength
924
- // impulse.
925
- const massBoost = (cfg.body.mass - 80) * cfg.bob.ampMassScale;
926
- const ampVMult = 1 + (cfg.bob.backwardVerticalAmpFactor - 1) * runtime.backwardness;
927
- const peakDip = (cfg.bob.verticalAmpAtWalk + massBoost) * runtime.bobIntensitySpring.value * ampVMult;
928
- runtime.verticalImpactSpring.kick(-peakDip * cfg.bob.impactKickMultiplier);
929
- };
930
1042
  if (phaseCrossed(runtime.prevStridePhase, state.stridePhase, 0)) {
931
- fireFootstep();
1043
+ this._fireFootstep(controller, runtime, horizSpeed);
932
1044
  }
933
1045
  if (phaseCrossed(runtime.prevStridePhase, state.stridePhase, 0.5)) {
934
- fireFootstep();
1046
+ this._fireFootstep(controller, runtime, horizSpeed);
935
1047
  }
936
1048
  }
937
1049
 
@@ -1027,15 +1139,17 @@ export class FirstPersonPlayerControllerSystem extends System {
1027
1139
  // Target is 0; under-damped (cfg zeta < 1) so it rings.
1028
1140
  runtime.landSpring.stepTo(0, cfg.landing.recovery.spring.halfLife, cfg.landing.recovery.spring.zeta, dt);
1029
1141
 
1142
+ // -- L2.h.0: Keep a teleport made under the tick ----------------
1143
+ // Every signal of the tick has been sent. A listener that moved the body - a respawn's
1144
+ // setPose on a hard landing - left the transform somewhere other than where the tick
1145
+ // started; the body stays there, and the camera jumps with it.
1146
+ this._adoptExternalMove(runtime, bodyTransform);
1147
+
1030
1148
  // -- L2.h: Publish pose channels --------------------------------
1031
- this._publishPose(controller, runtime, bodyTransform);
1149
+ this._publishPose(controller, runtime);
1032
1150
 
1033
- // -- L2.h.1: Say that the body moved ----------------------------
1034
- // The yaw write above and the mover's write into the translation both land straight on the
1035
- // component, and a Transform64 announces nothing on its own. One event here, at the point
1036
- // where the pose is final, covers every writer in the tick and covers them once - which is
1037
- // what wakes the mesh placement, the audio emitter and anything else that follows a player.
1038
- t64_announce_change(ecd, entity);
1151
+ // -- L2.h.1: Hand the pose to the body --------------------------
1152
+ this._commitBodyPose(ecd, entity, runtime, bodyTransform);
1039
1153
 
1040
1154
  // -- L2.i: Sync collider shape to posture -----------------------
1041
1155
  // All posture-writers (base locomotion + any active ability)
@@ -1048,11 +1162,123 @@ export class FirstPersonPlayerControllerSystem extends System {
1048
1162
  }
1049
1163
 
1050
1164
  /**
1165
+ * One footfall: count it, alternate the foot, send `onFootStep` and kick the vertical impact
1166
+ * spring. A method rather than a closure made in the tick, which cost an allocation a tick
1167
+ * while walking.
1168
+ *
1051
1169
  * @private
1052
1170
  * @param {FirstPersonPlayerController} controller
1053
1171
  * @param {PerEntityRuntime} runtime
1054
- * @returns {boolean}
1172
+ * @param {number} horizSpeed this tick's horizontal speed, m/s
1173
+ */
1174
+ _fireFootstep(controller, runtime, horizSpeed) {
1175
+ const cfg = controller.config;
1176
+ const state = controller.state;
1177
+
1178
+ state.stepCount++;
1179
+ const side = runtime.nextFootSide;
1180
+ runtime.nextFootSide = side === "R" ? "L" : "R";
1181
+ // The foot that just fired is now the one bearing weight
1182
+ // through the upcoming half-stride. Drives lateral-bob sign.
1183
+ runtime.standingFoot = side;
1184
+ controller.signals.onFootStep.send1({ side, speed: horizSpeed, surfaceTag: state.surfaceTag });
1185
+ // Kick the vertical impact spring DOWNWARD. The kick magnitude
1186
+ // is the per-step desired peak dip × impactKickMultiplier; the
1187
+ // multiplier is empirical (depends on impact spring params) so
1188
+ // that "verticalAmpAtWalk" still corresponds approximately to
1189
+ // the visible peak dip depth. Scaled by bobIntensity so a
1190
+ // mid-deceleration footstep doesn't deliver a full-strength
1191
+ // impulse.
1192
+ const massBoost = (cfg.body.mass - 80) * cfg.bob.ampMassScale;
1193
+ const ampVMult = 1 + (cfg.bob.backwardVerticalAmpFactor - 1) * runtime.backwardness;
1194
+ const peakDip = (cfg.bob.verticalAmpAtWalk + massBoost) * runtime.bobIntensitySpring.value * ampVMult;
1195
+ runtime.verticalImpactSpring.kick(-peakDip * cfg.bob.impactKickMultiplier);
1196
+ }
1197
+
1198
+ /**
1199
+ * Keep a move someone else made to the body during this tick. The tick resolved its pose from
1200
+ * where the body was when it started ({@link PerEntityRuntime#bodyStartPosition}); a transform
1201
+ * that is no longer there was moved under the tick - a signal listener's `setPose`, a respawn
1202
+ * on a hard landing - and handing the resolved pose over would pull the body back from where
1203
+ * it was put, at whatever velocity covers that distance in one step. The tick's pose becomes
1204
+ * the transform's instead, and the camera jumps to it.
1205
+ *
1206
+ * @private
1207
+ * @param {PerEntityRuntime} runtime
1208
+ * @param {Transform64} bodyTransform
1055
1209
  */
1210
+ _adoptExternalMove(runtime, bodyTransform) {
1211
+ const start = runtime.bodyStartPosition;
1212
+ const x = bodyTransform.translation_x;
1213
+ const y = bodyTransform.translation_y;
1214
+ const z = bodyTransform.translation_z;
1215
+
1216
+ if (x === start[0] && y === start[1] && z === start[2]) {
1217
+ return;
1218
+ }
1219
+
1220
+ const p = runtime.bodyPosition;
1221
+ p[0] = x;
1222
+ p[1] = y;
1223
+ p[2] = z;
1224
+
1225
+ // the body is where it was put, so there is nothing left for a warp of the tick's own to do
1226
+ runtime.bodyTeleport = false;
1227
+ runtime.renderSnap = true;
1228
+ }
1229
+
1230
+ /**
1231
+ * Hand the pose this tick resolved ({@link PerEntityRuntime#bodyPosition},
1232
+ * {@link PerEntityRuntime#bodyRotation}) to the body.
1233
+ *
1234
+ * With physics, it is a target ({@link PhysicsSystem#setTargetPose}): the next step sets the
1235
+ * body's velocities to cover the distance in the step and ends with the body exactly on the
1236
+ * pose, so what the player meets or carries sees a body moving at the player's speed, and the
1237
+ * step announces the move. Every tick sets one, standing still included - the velocities a
1238
+ * target derives stay on the body, and without a new target the last move's would carry the
1239
+ * player on. A warp ({@link PerEntityRuntime#bodyTeleport}) puts the body on the pose first with
1240
+ * {@link PhysicsSystem#setPose}, so the target derives no velocity from the jump.
1241
+ *
1242
+ * Without physics no step will move the body, so the tick writes the transform and announces
1243
+ * it itself: a Transform64 announces nothing on its own, and the announcement is what wakes the
1244
+ * mesh placement, the audio emitter and anything else that follows a player.
1245
+ *
1246
+ * @private
1247
+ * @param {import("../../ecs/EntityComponentDataset.js").EntityComponentDataset} ecd
1248
+ * @param {number} entity
1249
+ * @param {PerEntityRuntime} runtime
1250
+ * @param {Transform64} bodyTransform
1251
+ */
1252
+ _commitBodyPose(ecd, entity, runtime, bodyTransform) {
1253
+ const p = runtime.bodyPosition;
1254
+ const q = runtime.bodyRotation;
1255
+ const teleport = runtime.bodyTeleport;
1256
+ runtime.bodyTeleport = false;
1257
+
1258
+ const physics = this.physicsSystem;
1259
+
1260
+ if (physics === null) {
1261
+ bodyTransform.setTranslation(p[0], p[1], p[2]);
1262
+ bodyTransform.setRotation(q[0], q[1], q[2], q[3]);
1263
+ bodyTransform.updateMatrix();
1264
+ t64_announce_change(ecd, entity);
1265
+ return;
1266
+ }
1267
+
1268
+ const body = runtime.rigidBody;
1269
+
1270
+ // a hold on the pose the body already has is no warp, and needs none of setPose's work
1271
+ if (teleport && (
1272
+ p[0] !== bodyTransform.translation_x
1273
+ || p[1] !== bodyTransform.translation_y
1274
+ || p[2] !== bodyTransform.translation_z
1275
+ )) {
1276
+ physics.setPose(body, p, q);
1277
+ }
1278
+
1279
+ physics.setTargetPose(body, p, q);
1280
+ }
1281
+
1056
1282
  /**
1057
1283
  * Swap {@link Collider.shape} to the pre-built capsule that matches
1058
1284
  * the player's current posture. Cheap — just a reference swap when
@@ -1083,7 +1309,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1083
1309
  runtime.lastPosture = posture;
1084
1310
  }
1085
1311
 
1086
- _resolveCrouchHeld(controller, runtime, bodyTransform) {
1312
+ _resolveCrouchHeld(controller, runtime) {
1087
1313
  const cfg = controller.config;
1088
1314
  const intent = controller.intent;
1089
1315
  const state = controller.state;
@@ -1118,7 +1344,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1118
1344
  || runtime.lastPosture === FirstPersonPosture.Prone;
1119
1345
  if (!wantsCrouch && alreadyLow) {
1120
1346
  const growDelta = runtime.standTop - runtime.crouchTop;
1121
- if (!this._hasHeadroomToGrow(runtime, bodyTransform, runtime.colliderShapeCrouch, growDelta)) {
1347
+ if (!this._hasHeadroomToGrow(runtime, runtime.colliderShapeCrouch, growDelta)) {
1122
1348
  state.crouchBlocked = true;
1123
1349
  return true;
1124
1350
  }
@@ -1139,22 +1365,22 @@ export class FirstPersonPlayerControllerSystem extends System {
1139
1365
  * overlap would false-positive on a wall *beside* the player. The
1140
1366
  * up-cast sweeps parallel to (and, per the mover's skin clearance,
1141
1367
  * clear of) lateral walls so they aren't hit; the floor is below
1142
- * the rising probe; the player's own body is filtered out. Only
1143
- * genuine overhead geometry blocks the grow. Relies on the player
1368
+ * the rising probe; the player's own body, and sensors, are filtered
1369
+ * out ({@link PerEntityRuntime#solidNotSelf}). Only genuine overhead
1370
+ * geometry blocks the grow. Relies on the player
1144
1371
  * resting at `floor+skin` (the mover's stick-to-ground), so the
1145
1372
  * probe's bottom starts clear of the floor.
1146
1373
  *
1147
1374
  * @private
1148
1375
  */
1149
- _hasHeadroomToGrow(runtime, bodyTransform, fromShape, growDelta) {
1376
+ _hasHeadroomToGrow(runtime, fromShape, growDelta) {
1150
1377
  if (this.physicsSystem === null || growDelta <= 1e-4) return true;
1151
- const ownCollider = runtime.collider;
1152
- const filter = (_e, c) => c !== ownCollider;
1153
1378
  const ray = this._postureRay;
1154
- ray.setOrigin(bodyTransform.translation_x, bodyTransform.translation_y, bodyTransform.translation_z);
1379
+ const p = runtime.bodyPosition;
1380
+ ray.setOrigin(p[0], p[1], p[2]);
1155
1381
  ray.setDirection(0, 1, 0);
1156
1382
  ray.tMax = growDelta;
1157
- return !this.physicsSystem.shapeCast(ray, fromShape, bodyTransform.rotation, this._postureHit, filter);
1383
+ return !this.physicsSystem.shapeCast(ray, fromShape, runtime.bodyRotation, this._postureHit, runtime.solidNotSelf);
1158
1384
  }
1159
1385
 
1160
1386
  /**
@@ -1166,10 +1392,9 @@ export class FirstPersonPlayerControllerSystem extends System {
1166
1392
  * @private
1167
1393
  * @param {FirstPersonPlayerController} controller
1168
1394
  * @param {PerEntityRuntime} runtime
1169
- * @param {Transform64} bodyTransform
1170
1395
  * @param {number} dt
1171
1396
  */
1172
- _advanceJumpFsm(controller, runtime, bodyTransform, dt) {
1397
+ _advanceJumpFsm(controller, runtime, dt) {
1173
1398
  const cfg = controller.config;
1174
1399
  const intent = controller.intent;
1175
1400
  const state = controller.state;
@@ -1230,7 +1455,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1230
1455
  runtime.velocityY = runtime.jumpInitialVy * masteryMul;
1231
1456
  runtime.midJump = true;
1232
1457
  runtime.apexFired = false;
1233
- runtime.peakAltitude = bodyTransform.translation_y;
1458
+ runtime.peakAltitude = runtime.bodyPosition[1];
1234
1459
  state.inJumpAnticipation = false;
1235
1460
  state.isVariableJumpCut = false;
1236
1461
  state.isAscending = true;
@@ -1257,17 +1482,19 @@ export class FirstPersonPlayerControllerSystem extends System {
1257
1482
  * a physics layer is present; otherwise a lightweight flat-ground
1258
1483
  * integrator for headless / unit-test scenes with no collidable
1259
1484
  * geometry. Land / leave-ground events flow identically from either.
1485
+ * The move is resolved into {@link PerEntityRuntime#bodyPosition}.
1260
1486
  *
1261
1487
  * @private
1262
1488
  * @param {FirstPersonPlayerController} controller
1263
1489
  * @param {PerEntityRuntime} runtime
1264
- * @param {Transform64} bodyTransform
1490
+ * @param {Transform64} bodyTransform the body's transform, holding the pose the tick started
1491
+ * from; not written
1265
1492
  * @param {number} dt
1266
1493
  */
1267
1494
  _integrateVerticalAndResolveGround(controller, runtime, bodyTransform, dt) {
1268
1495
  this._applyGravity(controller, runtime, dt);
1269
1496
  this._resolveMotion(controller, runtime, bodyTransform, dt);
1270
- this._detectJumpApex(controller, runtime, bodyTransform);
1497
+ this._detectJumpApex(controller, runtime);
1271
1498
  }
1272
1499
 
1273
1500
  /**
@@ -1280,13 +1507,17 @@ export class FirstPersonPlayerControllerSystem extends System {
1280
1507
  * and then call this directly — so motion routes through one motor for
1281
1508
  * everyone (sweep-and-slide, anti-tunnel, land/leave events) rather than
1282
1509
  * a bespoke `position._add` + hand-rolled ground-catch.
1510
+ *
1511
+ * The move starts from {@link PerEntityRuntime#bodyPosition} and is resolved into it; the
1512
+ * body reaches it at the end of the tick. `bodyTransform` holds the pose the tick started from
1513
+ * and is not written.
1283
1514
  * @private
1284
1515
  */
1285
1516
  _resolveMotion(controller, runtime, bodyTransform, dt) {
1286
1517
  if (this.physicsSystem !== null) {
1287
- this._moveViaMover(controller, runtime, bodyTransform, dt);
1518
+ this._moveViaMover(controller, runtime, dt);
1288
1519
  } else {
1289
- this._moveFlatGround(controller, runtime, bodyTransform, dt);
1520
+ this._moveFlatGround(controller, runtime, dt);
1290
1521
  }
1291
1522
  }
1292
1523
 
@@ -1315,12 +1546,12 @@ export class FirstPersonPlayerControllerSystem extends System {
1315
1546
  * the result back to controller state and land / leave events.
1316
1547
  * @private
1317
1548
  */
1318
- _moveViaMover(controller, runtime, bodyTransform, dt) {
1549
+ _moveViaMover(controller, runtime, dt) {
1319
1550
  const state = controller.state;
1320
1551
 
1321
1552
  // per character, not per system - see the note on PerEntityRuntime#mover
1322
1553
  if (runtime.mover === null) {
1323
- runtime.mover = new KinematicMover(this.physicsSystem, this.entityManager.dataset);
1554
+ runtime.mover = new KinematicMover(this.physicsSystem);
1324
1555
  }
1325
1556
 
1326
1557
  // Fall speed captured BEFORE the move — the mover clips velocityY
@@ -1330,14 +1561,13 @@ export class FirstPersonPlayerControllerSystem extends System {
1330
1561
  const v = this._moverVelocity;
1331
1562
  v.set(runtime.velocityX, runtime.velocityY, runtime.velocityZ);
1332
1563
 
1333
- const ownCollider = runtime.collider;
1334
- const filter = (_e, c) => c !== ownCollider;
1335
-
1564
+ // From where the body is this tick (the pose it started from, or where an earlier move in
1565
+ // the same tick left it) to where the move ends; the body gets there in the physics step.
1336
1566
  const result = runtime.mover.move(
1337
- bodyTransform.translation,
1338
- bodyTransform.rotation,
1567
+ runtime.bodyPosition,
1568
+ runtime.bodyRotation,
1339
1569
  runtime.collider.shape,
1340
- v, dt, filter,
1570
+ v, dt, runtime.notSelf,
1341
1571
  );
1342
1572
 
1343
1573
  // Read back corrected horizontal velocity. Vertical follows the
@@ -1357,7 +1587,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1357
1587
  state.airborneTime = 0;
1358
1588
  state.timeSinceGrounded = 0;
1359
1589
  } else {
1360
- if (wasGrounded) this._onLeaveGround(controller, runtime, bodyTransform);
1590
+ if (wasGrounded) this._onLeaveGround(controller, runtime);
1361
1591
  state.grounded = false;
1362
1592
  state.verticalSpeed = runtime.velocityY;
1363
1593
  state.airborneTime += dt;
@@ -1375,28 +1605,24 @@ export class FirstPersonPlayerControllerSystem extends System {
1375
1605
  * `state.grounded`; we only advance timers.
1376
1606
  * @private
1377
1607
  */
1378
- _moveFlatGround(controller, runtime, bodyTransform, dt) {
1608
+ _moveFlatGround(controller, runtime, dt) {
1379
1609
  const state = controller.state;
1380
1610
 
1381
- // translation lands in the matrix as it is written, so no updateMatrix is owed here
1382
- bodyTransform.setTranslation(
1383
- bodyTransform.translation_x + runtime.velocityX * dt,
1384
- bodyTransform.translation_y + runtime.velocityY * dt,
1385
- bodyTransform.translation_z + runtime.velocityZ * dt
1386
- );
1611
+ const p = runtime.bodyPosition;
1612
+ p[0] += runtime.velocityX * dt;
1613
+ p[1] += runtime.velocityY * dt;
1614
+ p[2] += runtime.velocityZ * dt;
1387
1615
 
1388
1616
  if (this.useBuiltInFlatGround || this.groundResolver !== null) {
1389
1617
  // Effective ground = max(built-in flat ground, resolver).
1390
1618
  let testY = this.useBuiltInFlatGround ? this.groundY : Number.NEGATIVE_INFINITY;
1391
1619
  if (this.groundResolver !== null) {
1392
- const resolved = this.groundResolver(
1393
- bodyTransform.translation_x, bodyTransform.translation_y, bodyTransform.translation_z,
1394
- );
1620
+ const resolved = this.groundResolver(p[0], p[1], p[2]);
1395
1621
  if (resolved !== null && resolved > testY) testY = resolved;
1396
1622
  }
1397
1623
  const haveGround = testY !== Number.NEGATIVE_INFINITY;
1398
- if (haveGround && bodyTransform.translation_y <= testY) {
1399
- bodyTransform.setTranslation(bodyTransform.translation_x, testY, bodyTransform.translation_z);
1624
+ if (haveGround && p[1] <= testY) {
1625
+ p[1] = testY;
1400
1626
  if (!state.grounded) this._onLand(controller, runtime, -runtime.velocityY);
1401
1627
  state.grounded = true;
1402
1628
  state.groundNormal.set(0, 1, 0);
@@ -1405,7 +1631,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1405
1631
  state.airborneTime = 0;
1406
1632
  state.timeSinceGrounded = 0;
1407
1633
  } else {
1408
- if (state.grounded) this._onLeaveGround(controller, runtime, bodyTransform);
1634
+ if (state.grounded) this._onLeaveGround(controller, runtime);
1409
1635
  state.grounded = false;
1410
1636
  state.verticalSpeed = runtime.velocityY;
1411
1637
  state.airborneTime += dt;
@@ -1460,20 +1686,21 @@ export class FirstPersonPlayerControllerSystem extends System {
1460
1686
  * Shared by both move paths.
1461
1687
  * @private
1462
1688
  */
1463
- _onLeaveGround(controller, runtime, bodyTransform) {
1689
+ _onLeaveGround(controller, runtime) {
1464
1690
  controller.signals.onLeaveGround.send1({ reason: runtime.midJump ? "jump" : "fall" });
1465
1691
  runtime.takeoffVy = runtime.velocityY;
1466
- runtime.peakAltitude = bodyTransform.translation_y;
1692
+ runtime.peakAltitude = runtime.bodyPosition[1];
1467
1693
  }
1468
1694
 
1469
1695
  /**
1470
1696
  * Fire `onJumpApex` once, when an in-progress jump stops rising.
1471
1697
  * @private
1472
1698
  */
1473
- _detectJumpApex(controller, runtime, bodyTransform) {
1699
+ _detectJumpApex(controller, runtime) {
1474
1700
  if (runtime.midJump && !runtime.apexFired) {
1475
- if (bodyTransform.translation_y > runtime.peakAltitude) {
1476
- runtime.peakAltitude = bodyTransform.translation_y;
1701
+ const y = runtime.bodyPosition[1];
1702
+ if (y > runtime.peakAltitude) {
1703
+ runtime.peakAltitude = y;
1477
1704
  } else if (runtime.velocityY <= 0) {
1478
1705
  controller.signals.onJumpApex.send0();
1479
1706
  runtime.apexFired = true;
@@ -1605,7 +1832,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1605
1832
  }
1606
1833
 
1607
1834
  // -- L1.e/f/g/h: jump FSM + vertical integration --------------
1608
- this._advanceJumpFsm(controller, runtime, bodyTransform, dt);
1835
+ this._advanceJumpFsm(controller, runtime, dt);
1609
1836
  this._integrateVerticalAndResolveGround(controller, runtime, bodyTransform, dt);
1610
1837
 
1611
1838
  // -- Publish posture for L2 consumers (eye height, gait gating).
@@ -1626,7 +1853,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1626
1853
  if (posture === FirstPersonPosture.Crouch
1627
1854
  && runtime.lastPosture === FirstPersonPosture.Prone) {
1628
1855
  const proneGrow = runtime.crouchTop - runtime.proneTop;
1629
- if (!this._hasHeadroomToGrow(runtime, bodyTransform, runtime.colliderShapeProne, proneGrow)) {
1856
+ if (!this._hasHeadroomToGrow(runtime, runtime.colliderShapeProne, proneGrow)) {
1630
1857
  posture = FirstPersonPosture.Prone;
1631
1858
  }
1632
1859
  }
@@ -1716,17 +1943,21 @@ export class FirstPersonPlayerControllerSystem extends System {
1716
1943
  * Read-only with respect to controller state — this is purely a publish
1717
1944
  * step.
1718
1945
  *
1946
+ * The root position is the pose this tick resolved ({@link PerEntityRuntime#bodyPosition}),
1947
+ * which the body reaches in the physics step: published now, it is where the body is once
1948
+ * the step has run, whichever of the two systems runs first.
1949
+ *
1719
1950
  * @private
1720
1951
  * @param {FirstPersonPlayerController} controller
1721
1952
  * @param {PerEntityRuntime} runtime
1722
- * @param {Transform64} bodyTransform
1723
1953
  */
1724
- _publishPose(controller, runtime, bodyTransform) {
1954
+ _publishPose(controller, runtime) {
1725
1955
  const cfg = controller.config;
1726
1956
  const state = controller.state;
1727
1957
  const pose = controller.pose;
1728
1958
 
1729
- pose.rootPosition.set(bodyTransform.translation_x, bodyTransform.translation_y, bodyTransform.translation_z);
1959
+ const p = runtime.bodyPosition;
1960
+ pose.rootPosition.set(p[0], p[1], p[2]);
1730
1961
  pose.rootYawRad = runtime.bodyYaw;
1731
1962
  pose.headYawRad = runtime.bodyYaw;
1732
1963
  pose.headPitchRad = runtime.eyePitch;
@@ -1768,8 +1999,8 @@ export class FirstPersonPlayerControllerSystem extends System {
1768
1999
 
1769
2000
  pose.aimPitch = runtime.eyePitch;
1770
2001
 
1771
- this._assertTickInvariants(controller, runtime, bodyTransform);
1772
- this._snapshotRenderPose(runtime, bodyTransform);
2002
+ this._assertTickInvariants(controller, runtime);
2003
+ this._snapshotRenderPose(runtime);
1773
2004
  }
1774
2005
 
1775
2006
  /**
@@ -1779,18 +2010,20 @@ export class FirstPersonPlayerControllerSystem extends System {
1779
2010
  * position is smooth at any refresh rate. (Yaw/pitch aren't snapshotted —
1780
2011
  * they're render-rate.) On a teleport (`renderSnap`), prev and cur collapse
1781
2012
  * to the new position so the camera jumps rather than gliding across it.
2013
+ * The position is the pose this tick resolved, not the transform, which
2014
+ * reaches it only in the physics step.
1782
2015
  * @private
1783
2016
  */
1784
- _snapshotRenderPose(runtime, bodyTransform) {
1785
- const p = bodyTransform;
2017
+ _snapshotRenderPose(runtime) {
2018
+ const p = runtime.bodyPosition;
1786
2019
  if (runtime.renderSnap) {
1787
2020
  runtime.renderSnap = false;
1788
- runtime.renderPrevPos.set(p.translation_x, p.translation_y, p.translation_z);
1789
- runtime.renderCurPos.set(p.translation_x, p.translation_y, p.translation_z);
2021
+ runtime.renderPrevPos.set(p[0], p[1], p[2]);
2022
+ runtime.renderCurPos.set(p[0], p[1], p[2]);
1790
2023
  return;
1791
2024
  }
1792
2025
  runtime.renderPrevPos.copy(runtime.renderCurPos);
1793
- runtime.renderCurPos.set(p.translation_x, p.translation_y, p.translation_z);
2026
+ runtime.renderCurPos.set(p[0], p[1], p[2]);
1794
2027
  }
1795
2028
 
1796
2029
  /**
@@ -1803,8 +2036,8 @@ export class FirstPersonPlayerControllerSystem extends System {
1803
2036
  * jump frames (or seconds) later when something finally reads it.
1804
2037
  * @private
1805
2038
  */
1806
- _assertTickInvariants(controller, runtime, bodyTransform) {
1807
- const p = bodyTransform;
2039
+ _assertTickInvariants(controller, runtime) {
2040
+ const p = runtime.bodyPosition;
1808
2041
  assert.ok(Number.isFinite(runtime.bodyYaw),
1809
2042
  "FP invariant: runtime.bodyYaw is non-finite (camera yaw corrupted)");
1810
2043
  assert.ok(Number.isFinite(runtime.eyePitch),
@@ -1818,7 +2051,7 @@ export class FirstPersonPlayerControllerSystem extends System {
1818
2051
  "FP invariant: runtime.velocity is non-finite",
1819
2052
  );
1820
2053
  assert.ok(
1821
- Number.isFinite(p.translation_x) && Number.isFinite(p.translation_y) && Number.isFinite(p.translation_z),
2054
+ Number.isFinite(p[0]) && Number.isFinite(p[1]) && Number.isFinite(p[2]),
1822
2055
  "FP invariant: body position is non-finite",
1823
2056
  );
1824
2057
  }