@woosh/meep-engine 3.38.0 → 3.40.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 (1183) 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/EngineHarness.d.ts.map +1 -1
  139. package/src/engine/EngineHarness.js +17 -4
  140. package/src/engine/asset/loaders/image/avif/threaded_image_encoder.js +1 -1
  141. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +135 -10
  142. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  143. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +338 -105
  144. package/src/engine/control/first-person/abilities/Ability.d.ts +14 -5
  145. package/src/engine/control/first-person/abilities/Ability.d.ts.map +1 -1
  146. package/src/engine/control/first-person/abilities/Ability.js +14 -5
  147. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  148. package/src/engine/control/first-person/abilities/LedgeGrab.js +16 -12
  149. package/src/engine/control/first-person/abilities/Mantle.d.ts.map +1 -1
  150. package/src/engine/control/first-person/abilities/Mantle.js +5 -1
  151. package/src/engine/control/first-person/abilities/Slide.js +1 -1
  152. package/src/engine/control/first-person/collision/KinematicMover.d.ts +92 -14
  153. package/src/engine/control/first-person/collision/KinematicMover.d.ts.map +1 -1
  154. package/src/engine/control/first-person/collision/KinematicMover.js +218 -37
  155. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts +5 -0
  156. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  157. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +17 -10
  158. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  159. package/src/engine/ecs/EntityComponentDataset.js +27 -13
  160. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  161. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +8 -0
  162. package/src/engine/ecs/transform/Transform64.d.ts +4 -2
  163. package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
  164. package/src/engine/ecs/transform/Transform64.js +10 -16
  165. package/src/engine/graphics/ecs/water/Water.d.ts +31 -72
  166. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  167. package/src/engine/graphics/ecs/water/Water.js +59 -84
  168. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  169. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +11 -49
  170. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts +1 -1
  171. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.d.ts.map +1 -1
  172. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_1_2.js +27 -18
  173. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts +12 -0
  174. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.d.ts.map +1 -0
  175. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_2_3.js +45 -0
  176. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts +6 -0
  177. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.d.ts.map +1 -0
  178. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_3_4.js +10 -0
  179. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +33 -0
  180. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -0
  181. package/src/engine/graphics/ecs/water/WaterWaves.js +46 -0
  182. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts +17 -0
  183. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -0
  184. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +26 -0
  185. package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts +22 -0
  186. package/src/engine/graphics/texture/3d/scs3d_sample_linear.d.ts.map +1 -1
  187. package/src/engine/graphics/texture/3d/scs3d_sample_linear.js +43 -1
  188. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +29 -3
  189. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  190. package/src/engine/graphics/texture/sampler/Sampler2D.js +102 -14
  191. package/src/engine/graphics/texture/sampler/sampler2d_to_avif.d.ts.map +1 -1
  192. package/src/engine/graphics/texture/sampler/sampler2d_to_avif.js +8 -5
  193. package/src/engine/graphics3/WaterSystem.d.ts +31 -48
  194. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  195. package/src/engine/graphics3/WaterSystem.js +177 -261
  196. package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts +10 -4
  197. package/src/engine/interpolation/BinaryInterpolationAdapter.d.ts.map +1 -1
  198. package/src/engine/interpolation/BinaryInterpolationAdapter.js +11 -5
  199. package/src/engine/interpolation/InterpolationLog.d.ts +11 -5
  200. package/src/engine/interpolation/InterpolationLog.d.ts.map +1 -1
  201. package/src/engine/interpolation/InterpolationLog.js +12 -6
  202. package/src/engine/interpolation/InterpolationSystem.d.ts.map +1 -1
  203. package/src/engine/interpolation/InterpolationSystem.js +39 -8
  204. package/src/engine/interpolation/PoseInterpolationAdapter.d.ts +1 -1
  205. package/src/engine/interpolation/PoseInterpolationAdapter.d.ts.map +1 -1
  206. package/src/engine/interpolation/PoseInterpolationAdapter.js +51 -22
  207. package/src/engine/interpolation/TransformPoseSerializationAdapter.d.ts.map +1 -1
  208. package/src/engine/interpolation/TransformPoseSerializationAdapter.js +18 -23
  209. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts +1 -1
  210. package/src/engine/network/adapters/QuaternionInterpolationAdapter.d.ts.map +1 -1
  211. package/src/engine/network/adapters/QuaternionInterpolationAdapter.js +3 -1
  212. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts +1 -1
  213. package/src/engine/network/adapters/TransformInterpolationAdapter.d.ts.map +1 -1
  214. package/src/engine/network/adapters/TransformInterpolationAdapter.js +3 -1
  215. package/src/engine/network/adapters/Vector3InterpolationAdapter.d.ts.map +1 -1
  216. package/src/engine/network/adapters/Vector3InterpolationAdapter.js +5 -2
  217. package/src/engine/physics/body/SolverBodyState.d.ts.map +1 -1
  218. package/src/engine/physics/body/SolverBodyState.js +4 -5
  219. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts +12 -0
  220. package/src/engine/physics/broadphase/compute_fat_world_aabb.d.ts.map +1 -1
  221. package/src/engine/physics/broadphase/compute_fat_world_aabb.js +28 -3
  222. package/src/engine/physics/ccd/linear_sweep.d.ts +42 -12
  223. package/src/engine/physics/ccd/linear_sweep.d.ts.map +1 -1
  224. package/src/engine/physics/ccd/linear_sweep.js +1131 -97
  225. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts +13 -0
  226. package/src/engine/physics/cloth/collider/ClothColliderIndex.d.ts.map +1 -1
  227. package/src/engine/physics/cloth/collider/ClothColliderIndex.js +90 -22
  228. package/src/engine/physics/cloth/collider/cloth_collider_bounds.js +84 -24
  229. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +46 -3
  230. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
  231. package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +116 -68
  232. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  233. package/src/engine/physics/cloth/ecs/ClothWorld.js +59 -47
  234. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.d.ts.map +1 -1
  235. package/src/engine/physics/cloth/ecs/cloth_gather_colliders.js +62 -55
  236. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.d.ts.map +1 -1
  237. package/src/engine/physics/cloth/ecs/cloth_reconstruct_pose.js +46 -39
  238. package/src/engine/physics/cloth/ecs/cloth_write_back.d.ts.map +1 -1
  239. package/src/engine/physics/cloth/ecs/cloth_write_back.js +41 -36
  240. package/src/engine/physics/cloth/playground/garment_build.js +6 -6
  241. package/src/engine/physics/cloth/playground/garment_main.js +18 -14
  242. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  243. package/src/engine/physics/cloth/solver/cloth_contact_find.js +8 -5
  244. package/src/engine/physics/cloth/solver/cloth_solve_vertex.d.ts.map +1 -1
  245. package/src/engine/physics/cloth/solver/cloth_solve_vertex.js +8 -5
  246. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  247. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +15 -15
  248. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts +5 -0
  249. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.d.ts.map +1 -1
  250. package/src/engine/physics/cloth/solver/find_non_finite_cloth_state.js +32 -9
  251. package/src/engine/physics/constraint/solve_constraints.d.ts +50 -8
  252. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  253. package/src/engine/physics/constraint/solve_constraints.js +703 -429
  254. package/src/engine/physics/contact/ManifoldStore.d.ts +12 -0
  255. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  256. package/src/engine/physics/contact/ManifoldStore.js +32 -0
  257. package/src/engine/physics/ecs/BodyKind.d.ts +16 -8
  258. package/src/engine/physics/ecs/BodyKind.d.ts.map +1 -1
  259. package/src/engine/physics/ecs/BodyKind.js +16 -8
  260. package/src/engine/physics/ecs/Collider.d.ts +7 -2
  261. package/src/engine/physics/ecs/Collider.d.ts.map +1 -1
  262. package/src/engine/physics/ecs/Collider.js +7 -2
  263. package/src/engine/physics/ecs/PhysicsEvents.d.ts +13 -0
  264. package/src/engine/physics/ecs/PhysicsEvents.d.ts.map +1 -1
  265. package/src/engine/physics/ecs/PhysicsEvents.js +13 -0
  266. package/src/engine/physics/ecs/PhysicsSystem.d.ts +320 -36
  267. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  268. package/src/engine/physics/ecs/PhysicsSystem.js +779 -81
  269. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  270. package/src/engine/physics/fluid/FluidField.js +5 -1
  271. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +11 -9
  272. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  273. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +7 -5
  274. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  275. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +9 -7
  276. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  277. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +3 -4
  278. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  279. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +9 -7
  280. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.d.ts.map +1 -1
  281. package/src/engine/physics/fluid/solver/v3_mac_advect_maccormack_velocity.js +65 -43
  282. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts +23 -0
  283. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.d.ts.map +1 -0
  284. package/src/engine/physics/inertia/MASS_PROPERTIES_SIZE.js +22 -0
  285. package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts +29 -0
  286. package/src/engine/physics/inertia/convex_hull_mass_properties.d.ts.map +1 -0
  287. package/src/engine/physics/inertia/convex_hull_mass_properties.js +117 -0
  288. package/src/engine/physics/inertia/mass_properties_accumulate.d.ts +24 -0
  289. package/src/engine/physics/inertia/mass_properties_accumulate.d.ts.map +1 -0
  290. package/src/engine/physics/inertia/mass_properties_accumulate.js +93 -0
  291. package/src/engine/physics/inertia/primitive_mass_properties.d.ts +46 -0
  292. package/src/engine/physics/inertia/primitive_mass_properties.d.ts.map +1 -0
  293. package/src/engine/physics/inertia/primitive_mass_properties.js +118 -0
  294. package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts +27 -0
  295. package/src/engine/physics/inertia/rigid_body_set_mass_properties.d.ts.map +1 -0
  296. package/src/engine/physics/inertia/rigid_body_set_mass_properties.js +62 -0
  297. package/src/engine/physics/inertia/world_inverse_inertia.d.ts +67 -25
  298. package/src/engine/physics/inertia/world_inverse_inertia.d.ts.map +1 -1
  299. package/src/engine/physics/inertia/world_inverse_inertia.js +149 -26
  300. package/src/engine/physics/integration/integrate_position.d.ts +18 -19
  301. package/src/engine/physics/integration/integrate_position.d.ts.map +1 -1
  302. package/src/engine/physics/integration/integrate_position.js +40 -37
  303. package/src/engine/physics/integration/integrate_velocity.d.ts.map +1 -1
  304. package/src/engine/physics/integration/integrate_velocity.js +13 -4
  305. package/src/engine/physics/island/IslandBuilder.d.ts +124 -6
  306. package/src/engine/physics/island/IslandBuilder.d.ts.map +1 -1
  307. package/src/engine/physics/island/IslandBuilder.js +322 -19
  308. package/src/engine/physics/narrowphase/box_box_manifold.d.ts +13 -0
  309. package/src/engine/physics/narrowphase/box_box_manifold.d.ts.map +1 -1
  310. package/src/engine/physics/narrowphase/box_box_manifold.js +95 -39
  311. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts +40 -0
  312. package/src/engine/physics/narrowphase/box_triangle_contact.d.ts.map +1 -1
  313. package/src/engine/physics/narrowphase/box_triangle_contact.js +415 -120
  314. package/src/engine/physics/narrowphase/capsule_contacts.d.ts +63 -0
  315. package/src/engine/physics/narrowphase/capsule_contacts.d.ts.map +1 -1
  316. package/src/engine/physics/narrowphase/capsule_contacts.js +234 -46
  317. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts +13 -0
  318. package/src/engine/physics/narrowphase/capsule_triangle_contact.d.ts.map +1 -1
  319. package/src/engine/physics/narrowphase/capsule_triangle_contact.js +141 -93
  320. package/src/engine/physics/narrowphase/compute_penetration.d.ts +29 -11
  321. package/src/engine/physics/narrowphase/compute_penetration.d.ts.map +1 -1
  322. package/src/engine/physics/narrowphase/compute_penetration.js +157 -34
  323. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +76 -0
  324. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  325. package/src/engine/physics/narrowphase/convex_convex_manifold.js +243 -48
  326. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts +13 -0
  327. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.d.ts.map +1 -1
  328. package/src/engine/physics/narrowphase/decomposition/decompose_to_triangles.js +28 -12
  329. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts +13 -0
  330. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.d.ts.map +1 -1
  331. package/src/engine/physics/narrowphase/decomposition/heightmap_enumerate_triangles.js +27 -0
  332. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts +42 -0
  333. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.d.ts.map +1 -0
  334. package/src/engine/physics/narrowphase/decomposition/heightmap_triangle_edge_flags.js +250 -0
  335. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts +27 -11
  336. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.d.ts.map +1 -1
  337. package/src/engine/physics/narrowphase/decomposition/mesh_enumerate_triangles.js +291 -12
  338. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts +7 -1
  339. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.d.ts.map +1 -1
  340. package/src/engine/physics/narrowphase/decomposition/triangle_buffer_layout.js +7 -1
  341. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts +35 -0
  342. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.d.ts.map +1 -0
  343. package/src/engine/physics/narrowphase/decomposition/triangle_edge_flags.js +61 -0
  344. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts +54 -0
  345. package/src/engine/physics/narrowphase/hull_sphere_contact.d.ts.map +1 -0
  346. package/src/engine/physics/narrowphase/hull_sphere_contact.js +244 -0
  347. package/src/engine/physics/narrowphase/mesh_convex_hull.js +5 -1
  348. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts +2 -0
  349. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.d.ts.map +1 -1
  350. package/src/engine/physics/narrowphase/mesh_mesh_tet_manifold.js +56 -31
  351. package/src/engine/physics/narrowphase/narrowphase_step.d.ts +6 -5
  352. package/src/engine/physics/narrowphase/narrowphase_step.d.ts.map +1 -1
  353. package/src/engine/physics/narrowphase/narrowphase_step.js +2185 -483
  354. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts +56 -5
  355. package/src/engine/physics/narrowphase/reduce_manifold_contacts.d.ts.map +1 -1
  356. package/src/engine/physics/narrowphase/reduce_manifold_contacts.js +546 -5
  357. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +29 -2
  358. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
  359. package/src/engine/physics/narrowphase/refine_ray_concave.js +628 -75
  360. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +3 -2
  361. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
  362. package/src/engine/physics/narrowphase/refine_ray_hit.js +3 -2
  363. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts +27 -0
  364. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts.map +1 -0
  365. package/src/engine/physics/narrowphase/rigid_subject_pose.js +96 -0
  366. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts +14 -0
  367. package/src/engine/physics/narrowphase/sphere_box_contact.d.ts.map +1 -1
  368. package/src/engine/physics/narrowphase/sphere_box_contact.js +51 -5
  369. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts +12 -0
  370. package/src/engine/physics/narrowphase/sphere_sphere_contact.d.ts.map +1 -1
  371. package/src/engine/physics/narrowphase/sphere_sphere_contact.js +30 -0
  372. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts +12 -0
  373. package/src/engine/physics/narrowphase/sphere_triangle_contact.d.ts.map +1 -1
  374. package/src/engine/physics/narrowphase/sphere_triangle_contact.js +37 -8
  375. package/src/engine/physics/narrowphase/support_feature_manifold.d.ts +139 -0
  376. package/src/engine/physics/narrowphase/support_feature_manifold.d.ts.map +1 -0
  377. package/src/engine/physics/narrowphase/support_feature_manifold.js +949 -0
  378. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts +32 -13
  379. package/src/engine/physics/queries/PhysicsSurfacePoint.d.ts.map +1 -1
  380. package/src/engine/physics/queries/PhysicsSurfacePoint.js +36 -13
  381. package/src/engine/physics/queries/convex_overlaps_shape.d.ts +27 -0
  382. package/src/engine/physics/queries/convex_overlaps_shape.d.ts.map +1 -0
  383. package/src/engine/physics/queries/convex_overlaps_shape.js +169 -0
  384. package/src/engine/physics/queries/overlap_shape.d.ts.map +1 -1
  385. package/src/engine/physics/queries/overlap_shape.js +57 -79
  386. package/src/engine/physics/queries/raycast.d.ts +10 -4
  387. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  388. package/src/engine/physics/queries/raycast.js +133 -9
  389. package/src/engine/physics/queries/shape_cast.d.ts +55 -24
  390. package/src/engine/physics/queries/shape_cast.d.ts.map +1 -1
  391. package/src/engine/physics/queries/shape_cast.js +2061 -245
  392. package/src/engine/physics/solver/apply_impulse_to_body.d.ts +32 -10
  393. package/src/engine/physics/solver/apply_impulse_to_body.d.ts.map +1 -1
  394. package/src/engine/physics/solver/apply_impulse_to_body.js +69 -28
  395. package/src/engine/physics/solver/solve_contacts.d.ts +65 -18
  396. package/src/engine/physics/solver/solve_contacts.d.ts.map +1 -1
  397. package/src/engine/physics/solver/solve_contacts.js +458 -234
  398. package/src/engine/physics/vehicle/RaycastVehicle.d.ts.map +1 -1
  399. package/src/engine/physics/vehicle/RaycastVehicle.js +5 -6
  400. package/src/format/image/avif/api/convert_to_rgba.d.ts +2 -2
  401. package/src/format/image/avif/api/convert_to_rgba.d.ts.map +1 -1
  402. package/src/format/image/avif/api/convert_to_rgba.js +10 -9
  403. package/src/format/image/avif/api/decode_avif.d.ts +2 -2
  404. package/src/format/image/avif/api/decode_avif.d.ts.map +1 -1
  405. package/src/format/image/avif/api/decode_avif.js +1 -1
  406. package/src/shade/assets/textures/split_sum.bin +0 -0
  407. package/src/shade/device/mock/SoftwareGPUQueue.d.ts.map +1 -1
  408. package/src/shade/device/mock/SoftwareGPUQueue.js +2 -1
  409. package/src/shade/playground/path_traced_media/README.md +78 -0
  410. package/src/shade/playground/path_traced_media/capture_radiance.d.ts +33 -0
  411. package/src/shade/playground/path_traced_media/capture_radiance.d.ts.map +1 -0
  412. package/src/shade/playground/path_traced_media/capture_radiance.js +174 -0
  413. package/src/shade/playground/path_traced_media/checks.d.ts +160 -0
  414. package/src/shade/playground/path_traced_media/checks.d.ts.map +1 -0
  415. package/src/shade/playground/path_traced_media/checks.js +921 -0
  416. package/src/shade/playground/path_traced_media/index.html +71 -0
  417. package/src/shade/playground/path_traced_media/main.d.ts +2 -0
  418. package/src/shade/playground/path_traced_media/main.d.ts.map +1 -0
  419. package/src/shade/playground/path_traced_media/main.js +440 -0
  420. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts +26 -0
  421. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.d.ts.map +1 -0
  422. package/src/shade/playground/path_traced_media/make_wave_pool_geometry.js +117 -0
  423. package/src/shade/playground/path_traced_media/views.d.ts +21 -0
  424. package/src/shade/playground/path_traced_media/views.d.ts.map +1 -0
  425. package/src/shade/playground/path_traced_media/views.js +161 -0
  426. package/src/shade/playground/sh_exponential/README.md +43 -0
  427. package/src/shade/playground/sh_exponential/index.html +59 -0
  428. package/src/shade/playground/sh_exponential/main.d.ts +2 -0
  429. package/src/shade/playground/sh_exponential/main.d.ts.map +1 -0
  430. package/src/shade/playground/sh_exponential/main.js +571 -0
  431. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts +46 -0
  432. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -0
  433. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +270 -0
  434. package/src/shade/playground/ssr_reprojection/README.md +111 -103
  435. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +68 -68
  436. package/src/shade/playground/ssr_reprojection/index.html +80 -79
  437. package/src/shade/playground/ssr_reprojection/main.js +256 -247
  438. package/src/shade/playground/ssr_variance/capture.js +96 -96
  439. package/src/shade/playground/ssr_variance/reference.js +78 -78
  440. package/src/shade/playground/vsm/README.md +96 -0
  441. package/src/shade/playground/vsm/VSMDebugOverlay.d.ts +49 -0
  442. package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -0
  443. package/src/shade/playground/vsm/VSMDebugOverlay.js +351 -0
  444. package/src/shade/playground/vsm/clipmap_panel.d.ts +8 -0
  445. package/src/shade/playground/vsm/clipmap_panel.d.ts.map +1 -0
  446. package/src/shade/playground/vsm/clipmap_panel.js +138 -0
  447. package/src/shade/playground/vsm/index.html +170 -0
  448. package/src/shade/playground/vsm/main.d.ts +2 -0
  449. package/src/shade/playground/vsm/main.d.ts.map +1 -0
  450. package/src/shade/playground/vsm/main.js +389 -0
  451. package/src/shade/playground/vsm/scenes.d.ts +52 -0
  452. package/src/shade/playground/vsm/scenes.d.ts.map +1 -0
  453. package/src/shade/playground/vsm/scenes.js +320 -0
  454. package/src/shade/playground/vsm/verify_vsm.d.ts +38 -0
  455. package/src/shade/playground/vsm/verify_vsm.d.ts.map +1 -0
  456. package/src/shade/playground/vsm/verify_vsm.js +305 -0
  457. package/src/shade/playground/water_refraction/README.md +76 -19
  458. package/src/shade/playground/water_refraction/index.html +6 -8
  459. package/src/shade/playground/water_refraction/main.js +22 -12
  460. package/src/shade/playground/water_refraction/world.d.ts +3 -0
  461. package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
  462. package/src/shade/playground/water_refraction/world.js +19 -5
  463. package/src/shade/renderer/Renderer.d.ts +21 -0
  464. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  465. package/src/shade/renderer/Renderer.js +95 -1
  466. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +8 -0
  467. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  468. package/src/shade/renderer/animation/GPUAnimationManager.js +18 -0
  469. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +7 -0
  470. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  471. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +11 -0
  472. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts +3 -1
  473. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
  474. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +10 -1
  475. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.d.ts.map +1 -1
  476. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_read_code.js +28 -0
  477. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.d.ts.map +1 -1
  478. package/src/shade/renderer/buffer/table/serde/table_wgsl_gen_write_code.js +31 -1
  479. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
  480. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +9 -1
  481. package/src/shade/renderer/geometry/MeshletGeometry.d.ts +3 -0
  482. package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
  483. package/src/shade/renderer/geometry/MeshletGeometry.js +1 -0
  484. package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.d.ts.map +1 -1
  485. package/src/shade/renderer/geometry/sdf/chunk_scene_point_query_volume_sign.js +6 -4
  486. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  487. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
  488. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts +7 -0
  489. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.d.ts.map +1 -1
  490. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_rand1.js +12 -12
  491. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts +4 -0
  492. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.d.ts.map +1 -1
  493. package/src/shade/renderer/global_illumination/brick4/gpu/bake/sampling/chunk_direction_by_index_spherical.js +13 -9
  494. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  495. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +2 -0
  496. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  497. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +3 -0
  498. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
  499. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +4 -9
  500. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
  501. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +79 -11
  502. package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts +2 -1
  503. package/src/shade/renderer/light/environment/rgbe/load_environment_map.d.ts.map +1 -1
  504. package/src/shade/renderer/light/environment/rgbe/load_environment_map.js +2 -1
  505. package/src/shade/renderer/light/environment/rgbe/parse_rgbe.d.ts +1 -1
  506. package/src/shade/renderer/light/environment/rgbe/parse_rgbe.js +2 -2
  507. package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts +2 -2
  508. package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.d.ts.map +1 -1
  509. package/src/shade/renderer/light/environment/rgbe/rgbe_byte_to_rgb_half.js +6 -14
  510. package/src/shade/renderer/light/environment/sh_exponential/README.md +171 -0
  511. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts +170 -0
  512. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.d.ts.map +1 -0
  513. package/src/shade/renderer/light/environment/sh_exponential/SHExpEncoder.js +377 -0
  514. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts +16 -0
  515. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.d.ts.map +1 -0
  516. package/src/shade/renderer/light/environment/sh_exponential/SH_EXP_ENCODE_PARAMETERS_STRUCT.js +27 -0
  517. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts +21 -0
  518. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.d.ts.map +1 -0
  519. package/src/shade/renderer/light/environment/sh_exponential/chunk_sh_exp_workgroup_sum.js +57 -0
  520. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts +33 -0
  521. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.d.ts.map +1 -0
  522. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_design_row.js +90 -0
  523. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts +28 -0
  524. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.d.ts.map +1 -0
  525. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_fit_samples.js +92 -0
  526. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts +39 -0
  527. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.d.ts.map +1 -0
  528. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_layout.js +44 -0
  529. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts +42 -0
  530. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.d.ts.map +1 -0
  531. package/src/shade/renderer/light/environment/sh_exponential/sh_exp_solve_matrix.js +123 -0
  532. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +30 -0
  533. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -0
  534. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +147 -0
  535. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts +24 -0
  536. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -0
  537. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +79 -0
  538. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts +17 -0
  539. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -0
  540. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +99 -0
  541. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts +24 -0
  542. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -0
  543. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +104 -0
  544. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts +12 -0
  545. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -0
  546. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +93 -0
  547. package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
  548. package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
  549. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
  550. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +4 -0
  551. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
  552. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +4 -0
  553. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  554. package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts +1 -1
  555. package/src/shade/renderer/material/PIXEL_TEXTURE_ORM.d.ts.map +1 -1
  556. package/src/shade/renderer/material/StandardShadeMaterial.d.ts +15 -0
  557. package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
  558. package/src/shade/renderer/material/StandardShadeMaterial.js +17 -0
  559. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +36 -2
  560. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  561. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +218 -18
  562. package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.d.ts.map +1 -1
  563. package/src/shade/renderer/material/resident/INDIRECT_MATERIAL_STRUCT.js +10 -0
  564. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts +17 -0
  565. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.d.ts.map +1 -0
  566. package/src/shade/renderer/medium/MEDIA_TABLE_STRUCT.js +24 -0
  567. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts +24 -0
  568. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.d.ts.map +1 -0
  569. package/src/shade/renderer/medium/MEDIUM_PHASE_LOBE_KIND.js +18 -0
  570. package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts +20 -0
  571. package/src/shade/renderer/medium/MEDIUM_STRUCT.d.ts.map +1 -0
  572. package/src/shade/renderer/medium/MEDIUM_STRUCT.js +43 -0
  573. package/src/shade/renderer/medium/ParticipatingMedium.d.ts +111 -0
  574. package/src/shade/renderer/medium/ParticipatingMedium.d.ts.map +1 -0
  575. package/src/shade/renderer/medium/ParticipatingMedium.js +211 -0
  576. package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts +13 -0
  577. package/src/shade/renderer/medium/chunk_medium_lobe_phase.d.ts.map +1 -0
  578. package/src/shade/renderer/medium/chunk_medium_lobe_phase.js +33 -0
  579. package/src/shade/renderer/medium/participating_medium_serialization.d.ts +32 -0
  580. package/src/shade/renderer/medium/participating_medium_serialization.d.ts.map +1 -0
  581. package/src/shade/renderer/medium/participating_medium_serialization.js +181 -0
  582. package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts +48 -0
  583. package/src/shade/renderer/medium/phase/MediumPhaseFunction.d.ts.map +1 -0
  584. package/src/shade/renderer/medium/phase/MediumPhaseFunction.js +42 -0
  585. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts +23 -0
  586. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.d.ts.map +1 -0
  587. package/src/shade/renderer/medium/phase/PhaseCornetteShanks.js +45 -0
  588. package/src/shade/renderer/medium/phase/PhaseDraine.d.ts +30 -0
  589. package/src/shade/renderer/medium/phase/PhaseDraine.d.ts.map +1 -0
  590. package/src/shade/renderer/medium/phase/PhaseDraine.js +58 -0
  591. package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts +24 -0
  592. package/src/shade/renderer/medium/phase/PhaseFournierForand.d.ts.map +1 -0
  593. package/src/shade/renderer/medium/phase/PhaseFournierForand.js +53 -0
  594. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts +21 -0
  595. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.d.ts.map +1 -0
  596. package/src/shade/renderer/medium/phase/PhaseHenyeyGreenstein.js +43 -0
  597. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts +25 -0
  598. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.d.ts.map +1 -0
  599. package/src/shade/renderer/medium/phase/PhaseJendersieDeon.js +66 -0
  600. package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts +9 -0
  601. package/src/shade/renderer/medium/phase/PhaseRayleigh.d.ts.map +1 -0
  602. package/src/shade/renderer/medium/phase/PhaseRayleigh.js +21 -0
  603. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts +28 -0
  604. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.d.ts.map +1 -0
  605. package/src/shade/renderer/medium/phase/PhaseWaterMolecular.js +49 -0
  606. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts +10 -0
  607. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.d.ts.map +1 -0
  608. package/src/shade/renderer/medium/water/WATER_DEFAULT_PATH_LENGTHS.js +25 -0
  609. package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts +47 -0
  610. package/src/shade/renderer/medium/water/water_iop_from_appearance.d.ts.map +1 -0
  611. package/src/shade/renderer/medium/water/water_iop_from_appearance.js +174 -0
  612. package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts +57 -0
  613. package/src/shade/renderer/medium/water/water_iop_from_constituents.d.ts.map +1 -0
  614. package/src/shade/renderer/medium/water/water_iop_from_constituents.js +242 -0
  615. package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts +41 -0
  616. package/src/shade/renderer/medium/water/water_iop_jerlov.d.ts.map +1 -0
  617. package/src/shade/renderer/medium/water/water_iop_jerlov.js +231 -0
  618. package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts +66 -0
  619. package/src/shade/renderer/medium/water/water_iop_spectral_reference.d.ts.map +1 -0
  620. package/src/shade/renderer/medium/water/water_iop_spectral_reference.js +223 -0
  621. package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts +96 -0
  622. package/src/shade/renderer/medium/water/water_medium_from_iop.d.ts.map +1 -0
  623. package/src/shade/renderer/medium/water/water_medium_from_iop.js +145 -0
  624. package/src/shade/renderer/medium/water/water_presets.d.ts +69 -0
  625. package/src/shade/renderer/medium/water/water_presets.d.ts.map +1 -0
  626. package/src/shade/renderer/medium/water/water_presets.js +119 -0
  627. package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts +69 -0
  628. package/src/shade/renderer/medium/water/water_rgb_from_spectral.d.ts.map +1 -0
  629. package/src/shade/renderer/medium/water/water_rgb_from_spectral.js +341 -0
  630. package/src/shade/renderer/particles/DESIGN.md +4 -2
  631. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts +26 -0
  632. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.d.ts.map +1 -0
  633. package/src/shade/renderer/particles/shaders/chunk_particle_avboit_voxel_fade.js +71 -0
  634. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  635. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +16 -1
  636. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.d.ts.map +1 -1
  637. package/src/shade/renderer/particles/shaders/shader_particle_avboit_splat.js +6 -13
  638. package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +520 -0
  639. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  640. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
  641. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  642. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +2 -0
  643. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  644. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +188 -185
  645. package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.d.ts.map +1 -1
  646. package/src/shade/renderer/path_tracer/shader/STANDARD_MATERIAL_DATA_STRUCT.js +4 -1
  647. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts +13 -0
  648. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.d.ts.map +1 -0
  649. package/src/shade/renderer/path_tracer/shader/chunk_indirect_sample_tangent_normal.js +29 -0
  650. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts +79 -0
  651. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.d.ts.map +1 -1
  652. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +360 -70
  653. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.d.ts.map +1 -1
  654. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +4 -3
  655. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts +24 -0
  656. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.d.ts.map +1 -0
  657. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_beam.js +99 -0
  658. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts +68 -0
  659. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.d.ts.map +1 -0
  660. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_connect.js +263 -0
  661. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts +55 -0
  662. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.d.ts.map +1 -0
  663. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_constraint.js +148 -0
  664. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts +17 -0
  665. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.d.ts.map +1 -0
  666. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light.js +41 -0
  667. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts +20 -0
  668. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.d.ts.map +1 -0
  669. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_light_sample.js +105 -0
  670. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts +28 -0
  671. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.d.ts.map +1 -0
  672. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle.js +97 -0
  673. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts +12 -0
  674. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.d.ts.map +1 -0
  675. package/src/shade/renderer/path_tracer/shader/manifold/chunk_manifold_triangle_of_hit.js +46 -0
  676. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts +25 -0
  677. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.d.ts.map +1 -0
  678. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_interface.js +75 -0
  679. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts +54 -0
  680. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.d.ts.map +1 -0
  681. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_path.js +245 -0
  682. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts +42 -0
  683. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.d.ts.map +1 -0
  684. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_phase.js +236 -0
  685. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts +24 -0
  686. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.d.ts.map +1 -0
  687. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_scatter_nee.js +97 -0
  688. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts +57 -0
  689. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.d.ts.map +1 -0
  690. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_stack.js +222 -0
  691. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts +88 -0
  692. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.d.ts.map +1 -0
  693. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_transport.js +304 -0
  694. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts +35 -0
  695. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.d.ts.map +1 -0
  696. package/src/shade/renderer/path_tracer/shader/media/chunk_medium_volumes.js +137 -0
  697. package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.d.ts.map +1 -1
  698. package/src/shade/renderer/postprocess/eye/shader_autoexposure_build_histogram.js +5 -35
  699. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  700. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +12 -4
  701. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  702. package/src/shade/renderer/postprocess/ssr/SSR.js +36 -8
  703. package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts +3 -0
  704. package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.d.ts.map +1 -0
  705. package/src/shade/renderer/postprocess/ssr/SSR_DENOISE_TILE_SIZE.js +2 -0
  706. package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts +8 -0
  707. package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.d.ts.map +1 -0
  708. package/src/shade/renderer/postprocess/ssr/chunk_ssr_denoise_tile_active.js +40 -0
  709. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.d.ts.map +1 -1
  710. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_sample_history.js +85 -84
  711. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.d.ts.map +1 -1
  712. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +150 -137
  713. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts +3 -0
  714. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.d.ts.map +1 -0
  715. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_classify.js +44 -0
  716. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts +5 -0
  717. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.d.ts.map +1 -0
  718. package/src/shade/renderer/postprocess/ssr/shader_ssr_denoise_tile_dilate.js +35 -0
  719. package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts +26 -0
  720. package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.d.ts.map +1 -0
  721. package/src/shade/renderer/postprocess/ssr/ssr_graph_denoise_tiles.js +42 -0
  722. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts +1 -0
  723. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.d.ts.map +1 -1
  724. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +113 -105
  725. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts +2 -0
  726. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.d.ts.map +1 -1
  727. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +177 -167
  728. package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.d.ts.map +1 -1
  729. package/src/shade/renderer/rasterize/DEPTH_STENCIL_STATE_SHADOW.js +10 -0
  730. package/src/shade/renderer/rasterize/RasterizationJob.d.ts +1 -2
  731. package/src/shade/renderer/rasterize/RasterizationJob.d.ts.map +1 -1
  732. package/src/shade/renderer/rasterize/RasterizationJob.js +1 -2
  733. package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts +5 -6
  734. package/src/shade/renderer/rasterize/bucket/construct_primitive_state.d.ts.map +1 -1
  735. package/src/shade/renderer/rasterize/bucket/construct_primitive_state.js +5 -6
  736. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts +8 -0
  737. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.d.ts.map +1 -1
  738. package/src/shade/renderer/rasterize/native/avboit/AVBOITSettings.js +9 -0
  739. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +14 -4
  740. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  741. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +13 -4
  742. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +13 -7
  743. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
  744. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +13 -7
  745. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +309 -0
  746. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +54 -9
  747. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  748. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +9 -1
  749. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts +33 -0
  750. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.d.ts.map +1 -0
  751. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_footprint_bias.js +45 -0
  752. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts +4 -0
  753. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.d.ts.map +1 -1
  754. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_integral_depth_coordinate.js +6 -2
  755. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts +2 -1
  756. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.d.ts.map +1 -1
  757. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_sample_transmittance.js +4 -2
  758. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts +14 -0
  759. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.d.ts.map +1 -0
  760. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_level_word.js +28 -0
  761. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts +10 -0
  762. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.d.ts.map +1 -0
  763. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_lut_entry.js +18 -0
  764. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts +19 -0
  765. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.d.ts.map +1 -0
  766. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_marks.js +44 -0
  767. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts +10 -0
  768. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.d.ts.map +1 -0
  769. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_warp_step_count.js +17 -0
  770. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  771. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +3 -1
  772. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.d.ts.map +1 -1
  773. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_build_warp.js +163 -64
  774. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  775. package/src/shade/renderer/scene/GPUSceneContext.js +4 -1
  776. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.d.ts.map +1 -1
  777. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +16 -0
  778. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts +12 -1
  779. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.d.ts.map +1 -1
  780. package/src/shade/renderer/shader/chunk/atmosphere/C_MIE_SCATTERING_DECLARATION.js +22 -3
  781. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts +18 -0
  782. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.d.ts.map +1 -0
  783. package/src/shade/renderer/shader/chunk/atmosphere/phase/chunk_sample_henyey_greenstein_cos.js +31 -0
  784. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts +43 -0
  785. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.d.ts.map +1 -0
  786. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_phase_fournier_forand.js +153 -0
  787. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts +13 -0
  788. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.d.ts.map +1 -0
  789. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/chunk_sample_fournier_forand.js +57 -0
  790. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts +45 -0
  791. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.d.ts.map +1 -0
  792. package/src/shade/renderer/shader/chunk/atmosphere/phase/ff/fournier_forand_parameters_from_backscatter.js +109 -0
  793. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.d.ts.map +1 -1
  794. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/build_lut_fog_parameters_jendersie_deon.js +4 -5
  795. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.d.ts.map +1 -1
  796. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_phase_draine.js +6 -3
  797. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts +24 -0
  798. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.d.ts.map +1 -0
  799. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine.js +49 -0
  800. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts +18 -0
  801. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.d.ts.map +1 -1
  802. package/src/shade/renderer/shader/chunk/atmosphere/phase/jd/chunk_sample_draine_cos.js +18 -0
  803. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts +3 -0
  804. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts.map +1 -1
  805. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js +3 -0
  806. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.d.ts.map +1 -1
  807. package/src/shade/renderer/shader/chunk/brdf/dfg/generate_dfg_texture.js +1 -5
  808. package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.d.ts.map +1 -1
  809. package/src/shade/renderer/shader/chunk/brdf/dfg/shader_split_sum_dgf_lut.js +3 -1
  810. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts +24 -0
  811. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.d.ts.map +1 -0
  812. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_dielectric.js +53 -0
  813. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts +7 -1
  814. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.d.ts.map +1 -1
  815. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_scene_point_query_is_inside_geometry.js +12 -60
  816. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts +26 -6
  817. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.d.ts.map +1 -1
  818. package/src/shade/renderer/shader/chunk/geometry/sphere/chunk_compute_spherical_excess.js +30 -20
  819. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.d.ts.map +1 -1
  820. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_directional.js +3 -1
  821. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.d.ts.map +1 -1
  822. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_point.js +3 -1
  823. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.d.ts.map +1 -1
  824. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_importance_spot.js +3 -1
  825. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts +14 -0
  826. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.d.ts.map +1 -0
  827. package/src/shade/renderer/shader/chunk/light/sample/chunk_light_receiver_cosine.js +25 -0
  828. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts +9 -2
  829. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.d.ts.map +1 -1
  830. package/src/shade/renderer/shader/chunk/light/sample/chunk_select_light_importance.js +33 -10
  831. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts +30 -0
  832. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.d.ts.map +1 -0
  833. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_importance.js +54 -0
  834. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.d.ts.map +1 -1
  835. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +71 -37
  836. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts +14 -0
  837. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.d.ts.map +1 -0
  838. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_band_of_index.js +30 -0
  839. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts +19 -0
  840. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.d.ts.map +1 -0
  841. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_basis_function.js +73 -0
  842. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts +19 -0
  843. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.d.ts.map +1 -0
  844. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh_vmf_window.js +25 -0
  845. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts +17 -0
  846. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.d.ts.map +1 -0
  847. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js +23 -0
  848. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts +26 -0
  849. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.d.ts.map +1 -0
  850. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js +55 -0
  851. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts +52 -0
  852. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts.map +1 -0
  853. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.js +65 -0
  854. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts +13 -0
  855. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.d.ts.map +1 -0
  856. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_basis_at.js +229 -0
  857. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts +23 -0
  858. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.d.ts.map +1 -0
  859. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh10_color_evaluate_vmf.js +278 -0
  860. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts +23 -0
  861. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.d.ts.map +1 -0
  862. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh2_color_evaluate_vmf.js +58 -0
  863. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts +23 -0
  864. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.d.ts.map +1 -0
  865. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh3_color_evaluate_vmf.js +75 -0
  866. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts +13 -0
  867. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.d.ts.map +1 -0
  868. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_basis_at.js +70 -0
  869. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts +23 -0
  870. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.d.ts.map +1 -0
  871. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh4_color_evaluate_vmf.js +95 -0
  872. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts +13 -0
  873. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.d.ts.map +1 -0
  874. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_basis_at.js +89 -0
  875. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts +23 -0
  876. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.d.ts.map +1 -0
  877. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh5_color_evaluate_vmf.js +118 -0
  878. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts +13 -0
  879. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.d.ts.map +1 -0
  880. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_basis_at.js +111 -0
  881. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts +23 -0
  882. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.d.ts.map +1 -0
  883. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh6_color_evaluate_vmf.js +144 -0
  884. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts +13 -0
  885. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.d.ts.map +1 -0
  886. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_basis_at.js +136 -0
  887. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts +23 -0
  888. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.d.ts.map +1 -0
  889. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh7_color_evaluate_vmf.js +173 -0
  890. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts +13 -0
  891. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.d.ts.map +1 -0
  892. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_basis_at.js +164 -0
  893. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts +23 -0
  894. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.d.ts.map +1 -0
  895. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh8_color_evaluate_vmf.js +205 -0
  896. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts +13 -0
  897. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.d.ts.map +1 -0
  898. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_basis_at.js +195 -0
  899. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts +23 -0
  900. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.d.ts.map +1 -0
  901. package/src/shade/renderer/shader/chunk/spherical_harmonics/generated/chunk_sh9_color_evaluate_vmf.js +240 -0
  902. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +0 -6
  903. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
  904. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +46 -1
  905. package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.d.ts.map +1 -1
  906. package/src/shade/renderer/shader/type/serde/read_gpu_typed_buffer.js +3 -2
  907. package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.d.ts +7 -7
  908. package/src/shade/renderer/shadow/map/DEFAULT_SHADOWMAP_UPDATE_BUDGET.js +7 -7
  909. package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts +19 -0
  910. package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.d.ts.map +1 -0
  911. package/src/shade/renderer/shadow/map/DIRECTIONAL_SHADOWMAP_STRUCT.js +27 -0
  912. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +43 -10
  913. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  914. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +108 -48
  915. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +74 -4
  916. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  917. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +681 -77
  918. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +3 -1
  919. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  920. package/src/shade/renderer/shadow/map/Shadowmap.js +3 -1
  921. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts +30 -0
  922. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.d.ts.map +1 -0
  923. package/src/shade/renderer/shadow/map/csm/CSM_CASCADE_STRUCT.js +52 -0
  924. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts +8 -0
  925. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.d.ts.map +1 -0
  926. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_DEFAULT_CASCADE_COUNT.js +7 -0
  927. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +8 -6
  928. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -1
  929. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +28 -34
  930. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts +8 -0
  931. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts.map +1 -1
  932. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.js +34 -3
  933. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts +3 -2
  934. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.d.ts.map +1 -1
  935. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_csm_compute_cascade_blended.js +19 -14
  936. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts +5 -3
  937. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.d.ts.map +1 -1
  938. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_directional.js +27 -7
  939. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts.map +1 -1
  940. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.js +137 -133
  941. package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.d.ts +4 -4
  942. package/src/shade/renderer/shadow/map/shadowmap_budget_carry_over.js +4 -4
  943. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts +15 -0
  944. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.d.ts.map +1 -0
  945. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_FIRST_TEXEL_SIZE.js +14 -0
  946. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts +16 -0
  947. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.d.ts.map +1 -0
  948. package/src/shade/renderer/shadow/vsm/DEFAULT_VSM_PAGE_BUDGET.js +15 -0
  949. package/src/shade/renderer/shadow/vsm/PLAN.md +440 -0
  950. package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +43 -0
  951. package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts +42 -0
  952. package/src/shade/renderer/shadow/vsm/VSMMoverTracker.d.ts.map +1 -0
  953. package/src/shade/renderer/shadow/vsm/VSMMoverTracker.js +153 -0
  954. package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +327 -0
  955. package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -0
  956. package/src/shade/renderer/shadow/vsm/VSMPageManager.js +1408 -0
  957. package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts +14 -0
  958. package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.d.ts.map +1 -0
  959. package/src/shade/renderer/shadow/vsm/VSM_COVER_LEVEL_STEP.js +13 -0
  960. package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts +63 -0
  961. package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.d.ts.map +1 -0
  962. package/src/shade/renderer/shadow/vsm/VSM_FEEDBACK_LAYOUT.js +70 -0
  963. package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts +11 -0
  964. package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.d.ts.map +1 -0
  965. package/src/shade/renderer/shadow/vsm/VSM_LEVEL_LIMIT.js +10 -0
  966. package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts +54 -0
  967. package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.d.ts.map +1 -0
  968. package/src/shade/renderer/shadow/vsm/VSM_MOVER_LAYOUT.js +75 -0
  969. package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts +23 -0
  970. package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.d.ts.map +1 -0
  971. package/src/shade/renderer/shadow/vsm/VSM_RECORD_STRUCT.js +85 -0
  972. package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts +16 -0
  973. package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.d.ts.map +1 -0
  974. package/src/shade/renderer/shadow/vsm/VSM_SLOT_STRUCT.js +29 -0
  975. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts +136 -25
  976. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
  977. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +280 -100
  978. package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts +39 -0
  979. package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.d.ts.map +1 -0
  980. package/src/shade/renderer/shadow/vsm/graph_vsm_feedback.js +289 -0
  981. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts +18 -0
  982. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.d.ts.map +1 -0
  983. package/src/shade/renderer/shadow/vsm/shader/chunk_shadowmap_sample_virtual.js +65 -0
  984. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts +17 -0
  985. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.d.ts.map +1 -0
  986. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_addressing.js +75 -0
  987. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +14 -0
  988. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +1 -0
  989. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.js +45 -0
  990. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts +17 -0
  991. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.d.ts.map +1 -0
  992. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_find_page.js +100 -0
  993. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts +15 -0
  994. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.d.ts.map +1 -0
  995. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_page_view_projection.js +47 -0
  996. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts +26 -0
  997. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.d.ts.map +1 -0
  998. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_demand.js +156 -0
  999. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts +13 -0
  1000. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.d.ts.map +1 -0
  1001. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_gather_counts.js +65 -0
  1002. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts +30 -0
  1003. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.d.ts.map +1 -0
  1004. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_movers.js +184 -0
  1005. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts +23 -0
  1006. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.d.ts.map +1 -0
  1007. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_skinned_movers.js +109 -0
  1008. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts +56 -0
  1009. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.d.ts.map +1 -0
  1010. package/src/shade/renderer/shadow/vsm/shader/shader_vsm_stale.js +211 -0
  1011. package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts +1 -1
  1012. package/src/shade/renderer/texture/format/decode_typed_gpu_data.d.ts.map +1 -1
  1013. package/src/shade/renderer/texture/format/decode_typed_gpu_data.js +3 -13
  1014. package/src/shade/renderer/texture/format/infer_format_from_parameters.d.ts.map +1 -1
  1015. package/src/shade/renderer/texture/format/infer_format_from_parameters.js +2 -3
  1016. package/src/shade/renderer/texture/texture_write_to_gpu.d.ts.map +1 -1
  1017. package/src/shade/renderer/texture/texture_write_to_gpu.js +16 -16
  1018. package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts +1 -1
  1019. package/src/shade/renderer/texture/util/BLACK_PIXEL_TEXTURE.d.ts.map +1 -1
  1020. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts +18 -1
  1021. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.d.ts.map +1 -1
  1022. package/src/shade/renderer/texture/util/PIXEL_TEXTURE_NORMAL.js +24 -3
  1023. package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts +1 -1
  1024. package/src/shade/renderer/texture/util/WHITE_PIXEL_TEXTURE.d.ts.map +1 -1
  1025. package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts +0 -1
  1026. package/src/shade/renderer/texture/util/get_single_pixel_texture.d.ts.map +1 -1
  1027. package/src/shade/renderer/texture/util/get_single_pixel_texture.js +2 -23
  1028. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts +11 -0
  1029. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.d.ts.map +1 -0
  1030. package/src/shade/renderer/texture/util/single_pixel_texture_from_sampler.js +34 -0
  1031. package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts +4 -90
  1032. package/src/shade/renderer/texture/virtual/VTPhysicalCache.d.ts.map +1 -1
  1033. package/src/shade/renderer/texture/virtual/VTPhysicalCache.js +6 -210
  1034. package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts +119 -0
  1035. package/src/shade/renderer/texture/virtual/VTPhysicalSlots.d.ts.map +1 -0
  1036. package/src/shade/renderer/texture/virtual/VTPhysicalSlots.js +245 -0
  1037. package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts +1 -1
  1038. package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.d.ts.map +1 -1
  1039. package/src/shade/renderer/texture/virtual/build_chunk_vt_lookup.js +3 -19
  1040. package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts +13 -0
  1041. package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.d.ts.map +1 -0
  1042. package/src/shade/renderer/texture/virtual/chunk_vt_page_table_entry.js +34 -0
  1043. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +17 -8
  1044. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  1045. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +35 -64
  1046. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +21 -0
  1047. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -0
  1048. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +70 -0
  1049. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts +31 -0
  1050. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.d.ts.map +1 -0
  1051. package/src/shade/renderer/volumetrics/chunk_participating_media_volumes_iterate.js +86 -0
  1052. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  1053. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -4
  1054. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  1055. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +6 -7
  1056. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +7 -7
  1057. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +20 -3
  1058. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  1059. package/src/shade/renderer/water/GPUWaterRenderer.js +84 -35
  1060. package/src/shade/renderer/water/chunk_water_gi.d.ts +14 -0
  1061. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -0
  1062. package/src/shade/renderer/water/chunk_water_gi.js +56 -0
  1063. package/src/shade/renderer/water/chunk_water_transport.d.ts +2 -0
  1064. package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
  1065. package/src/shade/renderer/water/chunk_water_transport.js +52 -41
  1066. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +15 -0
  1067. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -0
  1068. package/src/shade/renderer/water/medium/GPUWaterBodies.js +64 -0
  1069. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts +4 -0
  1070. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.d.ts.map +1 -0
  1071. package/src/shade/renderer/water/medium/WATER_BODIES_STRUCT.js +10 -0
  1072. package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts +3 -0
  1073. package/src/shade/renderer/water/medium/chunk_water_bodies.d.ts.map +1 -0
  1074. package/src/shade/renderer/water/medium/chunk_water_bodies.js +3 -0
  1075. package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts +9 -0
  1076. package/src/shade/renderer/water/medium/chunk_water_medium_derived.d.ts.map +1 -0
  1077. package/src/shade/renderer/water/medium/chunk_water_medium_derived.js +55 -0
  1078. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts +8 -0
  1079. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.d.ts.map +1 -0
  1080. package/src/shade/renderer/water/medium/chunk_water_medium_scattering.js +17 -0
  1081. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +4 -0
  1082. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +1 -0
  1083. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +32 -0
  1084. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +4 -0
  1085. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -0
  1086. package/src/shade/renderer/water/medium/shader_water_meshlets.js +69 -0
  1087. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts +28 -0
  1088. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -0
  1089. package/src/shade/renderer/water/optics/chunk_water_inscatter.js +124 -0
  1090. package/src/shade/renderer/water/optics/chunk_water_optics.d.ts +12 -0
  1091. package/src/shade/renderer/water/optics/chunk_water_optics.d.ts.map +1 -0
  1092. package/src/shade/renderer/water/optics/chunk_water_optics.js +75 -0
  1093. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts +27 -0
  1094. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -0
  1095. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +75 -0
  1096. package/src/shade/renderer/water/shader_water.d.ts +11 -5
  1097. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  1098. package/src/shade/renderer/water/shader_water.js +262 -156
  1099. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
  1100. package/src/shade/renderer/water/shader_water_avboit.js +19 -9
  1101. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +25 -0
  1102. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +1 -0
  1103. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +128 -0
  1104. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +6 -0
  1105. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -0
  1106. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +23 -0
  1107. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +9 -0
  1108. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +1 -0
  1109. package/src/shade/renderer/water/surface/chunk_water_tessellation.js +144 -0
  1110. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +13 -0
  1111. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +1 -0
  1112. package/src/shade/renderer/water/surface/chunk_water_wave.js +40 -0
  1113. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +14 -0
  1114. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -0
  1115. package/src/shade/renderer/water/surface/graph_water_tessellation.js +34 -0
  1116. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +4 -0
  1117. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +1 -0
  1118. package/src/shade/renderer/water/surface/shader_water_tiles.js +123 -0
  1119. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +6 -0
  1120. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +1 -0
  1121. package/src/shade/renderer/water/surface/shader_water_wave_batch.js +85 -0
  1122. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +6 -0
  1123. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +1 -0
  1124. package/src/shade/renderer/water/surface/shader_water_wave_domain.js +83 -0
  1125. package/src/shade/renderer/water/water_height_texture_from_sampler.d.ts.map +1 -1
  1126. package/src/shade/renderer/water/water_height_texture_from_sampler.js +4 -3
  1127. package/src/shade/renderer/water/water_missing_receiver_path.d.ts +17 -0
  1128. package/src/shade/renderer/water/water_missing_receiver_path.d.ts.map +1 -0
  1129. package/src/shade/renderer/water/water_missing_receiver_path.js +40 -0
  1130. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  1131. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +247 -23
  1132. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts +18 -14
  1133. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  1134. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +48 -6
  1135. package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts +0 -2
  1136. package/src/engine/graphics/ecs/water/WATER_SIZE.d.ts.map +0 -1
  1137. package/src/engine/graphics/ecs/water/WATER_SIZE.js +0 -1
  1138. package/src/shade/renderer/light/GPUViewLightContext.d.ts +0 -22
  1139. package/src/shade/renderer/light/GPUViewLightContext.d.ts.map +0 -1
  1140. package/src/shade/renderer/light/GPUViewLightContext.js +0 -62
  1141. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +0 -29
  1142. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +0 -1
  1143. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +0 -43
  1144. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts +0 -7
  1145. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.d.ts.map +0 -1
  1146. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASCADE_COUNT.js +0 -6
  1147. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts +0 -27
  1148. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.d.ts.map +0 -1
  1149. package/src/shade/renderer/shadow/vsm/GPUViewShadowMaps.js +0 -125
  1150. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts +0 -7
  1151. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.d.ts.map +0 -1
  1152. package/src/shade/renderer/shadow/vsm/GPUVirtualShadowTextureResidence.js +0 -41
  1153. package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts +0 -2
  1154. package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.d.ts.map +0 -1
  1155. package/src/shade/renderer/shadow/vsm/VSM_RESIDENCE_WORKGROUP_TILE_RESOLUTION.js +0 -1
  1156. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts +0 -3
  1157. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.d.ts.map +0 -1
  1158. package/src/shade/renderer/shadow/vsm/VSM_UNIFORMS_STRUCT.js +0 -7
  1159. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts +0 -24
  1160. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.d.ts.map +0 -1
  1161. package/src/shade/renderer/shadow/vsm/VirtualShadowmapRenderer.js +0 -103
  1162. package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts +0 -8
  1163. package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.d.ts.map +0 -1
  1164. package/src/shade/renderer/shadow/vsm/debug_inspect_coarse_bounds_buffer.js +0 -34
  1165. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts +0 -10
  1166. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.d.ts.map +0 -1
  1167. package/src/shade/renderer/shadow/vsm/debug_inspect_residence_buffer.js +0 -64
  1168. package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts +0 -11
  1169. package/src/shade/renderer/shadow/vsm/decode_tile_address.d.ts.map +0 -1
  1170. package/src/shade/renderer/shadow/vsm/decode_tile_address.js +0 -34
  1171. package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts +0 -2
  1172. package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.d.ts.map +0 -1
  1173. package/src/shade/renderer/shadow/vsm/render/vms_render_tiles.js +0 -11
  1174. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts +0 -20
  1175. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.d.ts.map +0 -1
  1176. package/src/shade/renderer/shadow/vsm/vms_pipeline_compute_coarse_bounds.js +0 -187
  1177. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts +0 -25
  1178. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.d.ts.map +0 -1
  1179. package/src/shade/renderer/shadow/vsm/vsm_residence_pipeline.js +0 -220
  1180. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts +0 -19
  1181. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.d.ts.map +0 -1
  1182. package/src/shade/renderer/shadow/vsm/vsm_tile_allocation_pipeline.js +0 -115
  1183. package/src/shade/renderer/texture/encode/ENCODE_NOTES_2026_09_02.md +0 -462
@@ -0,0 +1,270 @@
1
+ import { chunk_get_ibl_radiance } from "../../renderer/deferred/indirect/chunk_get_ibl_radiance.js";
2
+ import { chunk_sh_exp_p4q2_base_reflectance } from "../../renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_p4q2_base_reflectance.js";
3
+ import { SH_EXP_P4Q2_PROBE_STRUCT } from "../../renderer/shader/chunk/spherical_harmonics/exponential/SH_EXP_P4Q2_PROBE_STRUCT.js";
4
+ import { chunk_D_GGX } from "../../renderer/shader/chunk/brdf/chunk_D_GGX.js";
5
+ import { chunk_V_GGX_SmithCorrelated } from "../../renderer/shader/chunk/brdf/chunk_V_GGX_SmithCorrelated.js";
6
+ import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
7
+ import { ComputeShader } from "../../renderer/shader/ComputeShader.js";
8
+ import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
9
+ import { WebGPUArray } from "../../renderer/shader/type/WebGPUArray.js";
10
+ import { f32, u32, vec4f } from "../../renderer/shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
11
+ import { WebGPUStruct } from "../../renderer/shader/type/WebGPUStruct.js";
12
+ import { SAMPLER_LINEAR_UPSCALE } from "../../renderer/texture/SAMPLER_LINEAR_UPSCALE.js";
13
+
14
+ /**
15
+ * Rows of the sphere grid, top to bottom.
16
+ * @type {string[]}
17
+ */
18
+ export const PLAYGROUND_ROWS = [
19
+ 'reference (quadrature)',
20
+ 'SH exponential, P4 Q2',
21
+ 'engine IBL (split sum)',
22
+ 'SH exponential − reference',
23
+ ];
24
+
25
+ /**
26
+ * Step through the reference grid's cells: odd, so it visits every cell of a power-of-two grid once
27
+ * per pass, and large, so any run of consecutive steps is spread over the sphere and a partial sum
28
+ * is already a fair estimate of the whole.
29
+ *
30
+ * @type {number}
31
+ */
32
+ export const REFERENCE_CELL_STRIDE = 7919;
33
+
34
+ /**
35
+ * What both playground kernels read.
36
+ *
37
+ * - `right`, `up`, `back`: the orthographic camera's basis; `back` points at the viewer and is every
38
+ * pixel's view direction;
39
+ * - `cell_size`: pixels per sphere cell, `columns` spheres per row, one per roughness;
40
+ * - `alpha_first_root`, `alpha_root_step`: column `c` is at roughness `first + step * c`, GGX alpha
41
+ * its square — the paper's own sweep is 0.3 to 1 in steps of 0.1;
42
+ * - `slice_start`, `slice_count`: which reference cells this frame adds; `processed` how many will
43
+ * have been added after it, of `cell_count`;
44
+ * - `exposure`, `error_gain`: display only.
45
+ *
46
+ * @type {WebGPUStruct}
47
+ */
48
+ export const PLAYGROUND_VIEW_STRUCT = WebGPUStruct.from({
49
+ right: vec4f,
50
+ up: vec4f,
51
+ back: vec4f,
52
+ cell_size: u32,
53
+ columns: u32,
54
+ slice_start: u32,
55
+ slice_count: u32,
56
+ cell_count: u32,
57
+ processed: u32,
58
+ alpha_first_root: f32,
59
+ alpha_root_step: f32,
60
+ exposure: f32,
61
+ error_gain: f32,
62
+ }, "SHExpPlaygroundView");
63
+
64
+ /**
65
+ * The sphere a pixel of a cell sees: `w` is 1 on the sphere and 0 off it, `xyz` the world normal.
66
+ */
67
+ const chunk_playground_sphere = CodeChunk.from(
68
+ //language=WGSL
69
+ `
70
+ const SPHERE_RADIUS : f32 = 0.92;
71
+
72
+ fn playground_sphere_normal(local: vec2<u32>) -> vec4<f32> {
73
+ let p = (vec2<f32>(local) + 0.5) / f32(view.cell_size) * 2.0 - 1.0;
74
+ // screen y grows downwards
75
+ let q = vec2<f32>(p.x, -p.y) / SPHERE_RADIUS;
76
+ let r2 = dot(q, q);
77
+
78
+ if (r2 >= 1.0) {
79
+ return vec4<f32>(0.0);
80
+ }
81
+
82
+ let normal = view.right.xyz * q.x + view.up.xyz * q.y + view.back.xyz * sqrt(1.0 - r2);
83
+
84
+ return vec4<f32>(normalize(normal), 1.0);
85
+ }
86
+
87
+ fn playground_alpha(column: u32) -> f32 {
88
+ let root = view.alpha_first_root + view.alpha_root_step * f32(column);
89
+ return root * root;
90
+ }
91
+ `);
92
+
93
+ const accumulate_resources = new ShaderResourceSetDescriptor();
94
+
95
+ accumulate_resources.createGroup()
96
+ .addUniform("view", PLAYGROUND_VIEW_STRUCT)
97
+ .addStorageBuffer("cells", WebGPUArray.from(vec4f), false)
98
+ .addStorageBuffer("accumulation", WebGPUArray.from(vec4f), true);
99
+
100
+ /**
101
+ * Adds one slice of the reference quadrature to every sphere pixel: `E0` summed over
102
+ * `slice_count` cells of an octahedral grid made by `shader_sh_exp_environment_cells`, at a finer
103
+ * resolution than the encoder fits on. Spread over frames, so no invocation loops over the sphere.
104
+ *
105
+ * @type {ComputeShader}
106
+ */
107
+ export const shader_playground_accumulate_reference = ComputeShader.from({
108
+ label: "SH exponential playground / accumulate reference",
109
+ resources: accumulate_resources,
110
+ body: CodeChunk.from(
111
+ //language=WGSL
112
+ `
113
+ @compute @workgroup_size(8, 8)
114
+ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
115
+ let width = view.columns * view.cell_size;
116
+
117
+ if (id.x >= width || id.y >= view.cell_size) {
118
+ return;
119
+ }
120
+
121
+ let column = id.x / view.cell_size;
122
+ let local = vec2<u32>(id.x % view.cell_size, id.y);
123
+ let sphere = playground_sphere_normal(local);
124
+
125
+ if (sphere.w == 0.0) {
126
+ return;
127
+ }
128
+
129
+ let normal = sphere.xyz;
130
+ let view_direction = view.back.xyz;
131
+ let NoV = max(dot(normal, view_direction), 1e-4);
132
+ let alpha = playground_alpha(column);
133
+ let alpha2 = alpha * alpha;
134
+
135
+ var sum = vec3<f32>(0.0);
136
+
137
+ // a uniform trip count: the slice is the same for every pixel
138
+ for (var k = 0u; k < view.slice_count; k++) {
139
+ let cell = ((view.slice_start + k) * ${REFERENCE_CELL_STRIDE}u) % view.cell_count;
140
+ let light = cells[2u * cell].xyz;
141
+ let NoL = dot(normal, light);
142
+
143
+ if (NoL > 0.0) {
144
+ let half_vector = normalize(light + view_direction);
145
+ let NoH = saturate(dot(normal, half_vector));
146
+
147
+ sum += cells[2u * cell + 1u].xyz * (D_GGX(alpha2, NoH * NoH) * V_GGX_SmithCorrelated(alpha, NoL, NoV) * NoL);
148
+ }
149
+ }
150
+
151
+ let pixel = column * view.cell_size * view.cell_size + local.y * view.cell_size + local.x;
152
+
153
+ accumulation[pixel] += vec4<f32>(sum, 0.0);
154
+ }
155
+ `, [
156
+ chunk_playground_sphere,
157
+ chunk_D_GGX,
158
+ chunk_V_GGX_SmithCorrelated,
159
+ ]),
160
+ });
161
+
162
+ const view_resources = new ShaderResourceSetDescriptor();
163
+
164
+ view_resources.createGroup()
165
+ .addUniform("view", PLAYGROUND_VIEW_STRUCT)
166
+ .addTexture("tEnvironment")
167
+ .addTexture("tSplitSum", "float")
168
+ .addSampler("sLinear", "filtering", SAMPLER_LINEAR_UPSCALE)
169
+ .addStorageBuffer("probe", SH_EXP_P4Q2_PROBE_STRUCT, false)
170
+ .addStorageBuffer("accumulation", WebGPUArray.from(vec4f), false)
171
+ .addStorageBuffer("values", WebGPUArray.from(vec4f), true)
172
+ .addStorageTexture("output", "rgba8unorm", "2d", "write-only");
173
+
174
+ /**
175
+ * Draws the four rows of {@link PLAYGROUND_ROWS}, and writes the linear values of the first three
176
+ * into `values` (`[row][column][pixel]`, `w` = 1 on the sphere) for `verify()` to read.
177
+ *
178
+ * @type {ComputeShader}
179
+ */
180
+ export const shader_playground_view = ComputeShader.from({
181
+ label: "SH exponential playground / view",
182
+ resources: view_resources,
183
+ body: CodeChunk.from(
184
+ //language=WGSL
185
+ `
186
+ const BACKGROUND = vec3<f32>(0.035);
187
+
188
+ fn tonemap(x: vec3<f32>) -> vec3<f32> {
189
+ return vec3<f32>(1.0) - exp(-max(x, vec3<f32>(0.0)) * view.exposure);
190
+ }
191
+
192
+ fn srgb_encode(x: vec3<f32>) -> vec3<f32> {
193
+ let low = x * 12.92;
194
+ let high = 1.055 * pow(x, vec3<f32>(1.0 / 2.4)) - 0.055;
195
+ return select(high, low, x <= vec3<f32>(0.0031308));
196
+ }
197
+
198
+ fn luminance(x: vec3<f32>) -> f32 {
199
+ return dot(x, vec3<f32>(0.2126, 0.7152, 0.0722));
200
+ }
201
+
202
+ @compute @workgroup_size(8, 8)
203
+ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
204
+ let width = view.columns * view.cell_size;
205
+
206
+ if (id.x >= width || id.y >= 4u * view.cell_size) {
207
+ return;
208
+ }
209
+
210
+ let column = id.x / view.cell_size;
211
+ let row = id.y / view.cell_size;
212
+ let local = vec2<u32>(id.x % view.cell_size, id.y % view.cell_size);
213
+ let pixel = column * view.cell_size * view.cell_size + local.y * view.cell_size + local.x;
214
+ let slots = view.columns * view.cell_size * view.cell_size;
215
+
216
+ let sphere = playground_sphere_normal(local);
217
+
218
+ if (sphere.w == 0.0) {
219
+ if (row < 3u) {
220
+ values[row * slots + pixel] = vec4<f32>(0.0);
221
+ }
222
+
223
+ textureStore(output, id.xy, vec4<f32>(srgb_encode(BACKGROUND), 1.0));
224
+ return;
225
+ }
226
+
227
+ let normal = sphere.xyz;
228
+ let view_direction = view.back.xyz;
229
+ let alpha = playground_alpha(column);
230
+ let roughness = sqrt(alpha);
231
+
232
+ // the partial sum so far stands for the whole sphere: the cells it has seen are spread over it
233
+ let reference = accumulation[pixel].xyz * (f32(view.cell_count) / f32(max(view.processed, 1u)));
234
+ let sh_exp = sh_exp_p4q2_base_reflectance(probe, view_direction, normal, alpha);
235
+
236
+ var value = vec3<f32>(0.0);
237
+
238
+ if (row == 0u) {
239
+ value = reference;
240
+ } else if (row == 1u) {
241
+ value = sh_exp;
242
+ } else if (row == 2u) {
243
+ // the forward path's specular with Fresnel taken out: prefiltered radiance times the
244
+ // split sum's F0 scale plus F90 bias, which together are the GGX directional albedo (the engine's
245
+ // LUT, to within 0.06%; see chunk_sh_exp_split_sum)
246
+ let NoV = saturate(dot(normal, view_direction));
247
+ let dfg = textureSampleLevel(tSplitSum, sLinear, vec2<f32>(NoV, roughness), 0.0).rg;
248
+
249
+ value = get_ibl_radiance(view_direction, normal, roughness) * (dfg.x + dfg.y);
250
+ }
251
+
252
+ var color: vec3<f32>;
253
+
254
+ if (row < 3u) {
255
+ values[row * slots + pixel] = vec4<f32>(value, 1.0);
256
+ color = tonemap(value);
257
+ } else {
258
+ // red: SH exponential brighter than the reference, blue: darker; on the tonemapped scale
259
+ let difference = (luminance(tonemap(sh_exp)) - luminance(tonemap(reference))) * view.error_gain;
260
+ color = vec3<f32>(max(difference, 0.0), 0.0, max(-difference, 0.0));
261
+ }
262
+
263
+ textureStore(output, id.xy, vec4<f32>(srgb_encode(saturate(color)), 1.0));
264
+ }
265
+ `, [
266
+ chunk_playground_sphere,
267
+ chunk_sh_exp_p4q2_base_reflectance,
268
+ chunk_get_ibl_radiance,
269
+ ]),
270
+ });
@@ -1,103 +1,111 @@
1
- # SSR reflection lab
2
-
3
- Run `npm run dev` from `packages/meep-engine`, then open
4
- <http://localhost:5173/src/shade/playground/ssr_reprojection/>.
5
- The page uses the actual WebGPU renderer and production SSR shaders. Geometry and
6
- environment lighting are procedural; only the engine's bundled lookup/noise textures
7
- are loaded. The browser must meet the renderer's WebGPU feature requirements.
8
-
9
- ## Five-minute check
10
-
11
- 1. Start with **Lateral camera**, **Parallax**, roughness **0.03**, and final TAA off.
12
- Watch the reflected coloured blocks move relative to the floor grid. Solid crosses
13
- mark ideal planar-mirror image centres. Dashed crosses are fixed floor positions,
14
- aligned at the start of the path. Their separation illustrates surface sticking.
15
- 2. Select **Surface only**, then **No temporal history**. Switching mode restarts
16
- the path and resets histories. Compare edge lag and noise at the same part of the
17
- repeatable path. Surface only uses the new validation/blending, not the old shader.
18
- 3. Try **Forward camera** and **Orbit camera**, then raise roughness through 0.2.
19
- The virtual candidate is deliberately restricted to smooth, coherent reflections.
20
- 4. Use **Moving object** and **Occluder** to expose residual trails and disocclusion.
21
- Moving reflected geometry is an acknowledged limitation. Missing off-screen or
22
- hidden source geometry is also an SSR limitation, not necessarily a reprojection bug.
23
- 5. Press **Camera cut**, **Reset reflection history**, and change resolution.
24
- Old reflections should not persist. **SSR off** is a useful control proving that
25
- the visible reflection comes from SSR rather than the flat environment.
26
-
27
- The guides reflect physical object centres across y=0 independently of the temporal
28
- ray-extension formula. They are geometry guides, not colour references: visible
29
- front faces, occlusion and roughness do not necessarily centre on the marker. The
30
- floor is planar and its top is exactly y=0. Grid strips slightly above it are visible
31
- surface landmarks. Guides do not perform occlusion testing.
32
-
33
- The page fixes exposure and disables bloom, sharpening, ambient occlusion and motion
34
- blur. Final-image TAA defaults off to expose SSR's own temporal behaviour. Pause
35
- motion leaves temporal sampling running; **Still camera / noise** does the same at
36
- the initial view. **Step frame** advances the motion by 1/60 second. For exact manual
37
- frame counts, append `?manual` to the URL: no animation loop is scheduled, and the
38
- step button submits one frame at a time. From the browser console,
39
- `ssr_lab.step(60)` advances 60 deterministic frames at 1/60 second.
40
-
41
- **Validate GPU shaders** compiles trace, both resolves, both spatial variants, and
42
- temporal reprojection on the live GPU. This checks native WGSL compilation, while
43
- running the playground also exercises IBL pipeline creation and frame-graph wiring.
44
- The page reports and stops on uncaptured GPU errors. LPV composition is checked but
45
- the procedural scene uses IBL, so this does not test LPV atlas content or lighting.
46
-
47
- Production integration is small: `renderer.ssr.reprojection_mode` selects
48
- `SSRReprojectionMode.Parallax`, `.Surface`, or `.CurrentFrame`. Changing it invalidates
49
- SSR history. Default rendering continues to use Parallax.
50
-
51
- Do not use frame rate on this page as an SSR-only GPU timing measurement. It includes
52
- the entire renderer, the browser, and the overlay. Profile the actual passes before
53
- making performance claims. HMR is disabled by the playground Vite config; reload
54
- the browser explicitly after source edits.
55
-
56
- ## Validation performed
57
-
58
- The page was exercised on the native NVIDIA adapter: IBL rendering, all four
59
- comparison modes, a moving target and occluder, camera cut, resolution change,
60
- and final TAA toggle. The SSR-off control visibly removes the reflections.
61
- All six SSR shader modules compile on that device, and the 14 SSR regression
62
- tests pass. Declaration emission and consumer API pins pass; the existing
63
- repository type-error budget is still exceeded (899 errors versus 897).
64
-
65
- ## Spatial denoising
66
-
67
- The **Spatial denoising** checkbox defaults on. It toggles one spatial pass before
68
- reprojection and two afterward; the chosen reprojection mode stays unchanged.
69
- Changing this setting resets SSR history so filtered and unfiltered inputs are not
70
- mixed across the transition. The runtime setting is
71
- `renderer.ssr.spatial_denoising_enabled`. With the box unchecked and **No temporal
72
- history** selected, the output comes directly from resolve. Resolve still borrows
73
- neighbouring ray hits and uses roughness-dependent radiance filtering; this switch
74
- does not turn the resolve stage into a raw one-ray-per-pixel view.
75
-
76
- ## Measuring actual filter effectiveness
77
-
78
- **Measure spatial filter** records the first spatial pass's input and output in
79
- one GPU frame. It reports the fraction of upward-facing mirror pixels whose maximum
80
- RGB-channel difference exceeds 0.001, mean/max difference in linear HDR radiance,
81
- and the fraction whose input variance is effectively zero. It is an effect check,
82
- not an image-quality score or an SSR performance benchmark. Readback runs only on
83
- request; its temporary texture is released afterward. Ordinary playback has no
84
- probe passes. SSR must be enabled. With spatial filtering off, the bypass is compared
85
- with itself and the measured difference is zero.
86
-
87
- This probe exposed a filter failure on 2026-09-08: roughly 98% of this scene's mirror
88
- pixels had resolve variance ≤1e-6. The old first pass changed radiance by just 0.00137
89
- on average; the sparse noisy samples were being rejected as colour edges. Resolve's
90
- within-pixel ray variance is not sufficient evidence of low spatial noise when only
91
- one hit supplies radiance or the hit confidence switches between SSR and fallback.
92
-
93
- The first pass now bootstraps uncertainty from a Gaussian-weighted 3×3 luminance
94
- neighbourhood, using the existing geometry weights, and carries that uncertainty
95
- through the subsequent spatial passes. It does not bootstrap again at larger radii.
96
- A representative corrected GPU measurement gave mean change 0.00552 with filtering
97
- on, and 0 with it off. These are separate frames, not a matched-noise quality metric.
98
- The native images visibly differ, and an emulator regression verifies reduced
99
- checker noise with zero input variance, unchanged constant colour (within float
100
- precision), and rejection across opposite normals. The full SSR suite has 16 tests.
101
-
102
- Spatial filtering trades sharpness for noise reduction, including at reflected
103
- colour edges; these guides and tests do not establish an optimal filter bandwidth.
1
+ # SSR reflection lab
2
+
3
+ Run `npm run dev` from `packages/meep-engine`, then open
4
+ <http://localhost:5173/src/shade/playground/ssr_reprojection/>.
5
+ The page uses the actual WebGPU renderer and production SSR shaders. Geometry and
6
+ environment lighting are procedural; only the engine's bundled lookup/noise textures
7
+ are loaded. The browser must meet the renderer's WebGPU feature requirements.
8
+
9
+ ## Five-minute check
10
+
11
+ 1. Start with **Lateral camera**, **Parallax**, roughness **0.03**, and final TAA off.
12
+ Watch the reflected coloured blocks move relative to the floor grid. Solid crosses
13
+ mark ideal planar-mirror image centres. Dashed crosses are fixed floor positions,
14
+ aligned at the start of the path. Their separation illustrates surface sticking.
15
+ 2. Select **Surface only**, then **No temporal history**. Switching mode restarts
16
+ the path and resets histories. Compare edge lag and noise at the same part of the
17
+ repeatable path. Surface only uses the new validation/blending, not the old shader.
18
+ 3. Try **Forward camera** and **Orbit camera**, then raise roughness through 0.2.
19
+ The virtual candidate is deliberately restricted to smooth, coherent reflections.
20
+ 4. Use **Moving object** and **Occluder** to expose residual trails and disocclusion.
21
+ Moving reflected geometry is an acknowledged limitation. Missing off-screen or
22
+ hidden source geometry is also an SSR limitation, not necessarily a reprojection bug.
23
+ 5. Press **Camera cut**, **Reset reflection history**, and change resolution.
24
+ Old reflections should not persist. **SSR off** is a useful control proving that
25
+ the visible reflection comes from SSR rather than the flat environment.
26
+
27
+ The guides reflect physical object centres across y=0 independently of the temporal
28
+ ray-extension formula. They are geometry guides, not colour references: visible
29
+ front faces, occlusion and roughness do not necessarily centre on the marker. The
30
+ floor is planar and its top is exactly y=0. Grid strips slightly above it are visible
31
+ surface landmarks. Guides do not perform occlusion testing.
32
+
33
+ The page fixes exposure and disables bloom, sharpening, ambient occlusion and motion
34
+ blur. Final-image TAA defaults off to expose SSR's own temporal behaviour. Pause
35
+ motion leaves temporal sampling running; **Still camera / noise** does the same at
36
+ the initial view. **Step frame** advances the motion by 1/60 second. For exact manual
37
+ frame counts, append `?manual` to the URL: no animation loop is scheduled, and the
38
+ step button submits one frame at a time. From the browser console,
39
+ `ssr_lab.step(60)` advances 60 deterministic frames at 1/60 second.
40
+
41
+ **Validate GPU shaders** compiles trace, both resolves, both spatial variants, and
42
+ temporal reprojection on the live GPU. This checks native WGSL compilation, while
43
+ running the playground also exercises IBL pipeline creation and frame-graph wiring.
44
+ The page reports and stops on uncaptured GPU errors. LPV composition is checked but
45
+ the procedural scene uses IBL, so this does not test LPV atlas content or lighting.
46
+
47
+ Production integration is small: `renderer.ssr.reprojection_mode` selects
48
+ `SSRReprojectionMode.Parallax`, `.Surface`, or `.CurrentFrame`. Changing it invalidates
49
+ SSR history. Default rendering continues to use Parallax.
50
+
51
+ Do not use frame rate on this page as an SSR-only GPU timing measurement. It includes
52
+ the entire renderer, the browser, and the overlay. Profile the actual passes before
53
+ making performance claims. HMR is disabled by the playground Vite config; reload
54
+ the browser explicitly after source edits.
55
+
56
+ ## Validation performed
57
+
58
+ The page was exercised on the native NVIDIA adapter: IBL rendering, all four
59
+ comparison modes, a moving target and occluder, camera cut, resolution change,
60
+ and final TAA toggle. The SSR-off control visibly removes the reflections.
61
+ All six SSR shader modules compile on that device, and the 14 SSR regression
62
+ tests pass. Declaration emission and consumer API pins pass; the existing
63
+ repository type-error budget is still exceeded (899 errors versus 897).
64
+
65
+ ## Spatial denoising
66
+
67
+ The **Spatial denoising** checkbox defaults on. It toggles one spatial pass before
68
+ reprojection and two afterward; the chosen reprojection mode stays unchanged.
69
+ Changing this setting resets SSR history so filtered and unfiltered inputs are not
70
+ mixed across the transition. The runtime setting is
71
+ `renderer.ssr.spatial_denoising_enabled`. With the box unchecked and **No temporal
72
+ history** selected, the output comes directly from resolve. Resolve still borrows
73
+ neighbouring ray hits and uses roughness-dependent radiance filtering; this switch
74
+ does not turn the resolve stage into a raw one-ray-per-pixel view.
75
+
76
+ **Coverage tile denoising** is opt-in through `renderer.ssr.tile_denoising_enabled`.
77
+ It classifies 8×8 internal-pixel tiles and protects the full spatial/temporal filter
78
+ reach with a two-tile halo. Only stationary, constant radiance with no SSR support,
79
+ uncertainty, or changing history can skip spatial work. Temporal geometry validation
80
+ and history age still run; only proven constant neighborhood statistics are bypassed.
81
+ Changing the setting resets history. Classification adds overhead, so profile
82
+ the intended scene and device before enabling it, especially at low resolutions.
83
+
84
+ ## Measuring actual filter effectiveness
85
+
86
+ **Measure spatial filter** records the first spatial pass's input and output in
87
+ one GPU frame. It reports the fraction of upward-facing mirror pixels whose maximum
88
+ RGB-channel difference exceeds 0.001, mean/max difference in linear HDR radiance,
89
+ and the fraction whose input variance is effectively zero. It is an effect check,
90
+ not an image-quality score or an SSR performance benchmark. Readback runs only on
91
+ request; its temporary texture is released afterward. Ordinary playback has no
92
+ probe passes. SSR must be enabled. With spatial filtering off, the bypass is compared
93
+ with itself and the measured difference is zero.
94
+
95
+ This probe exposed a filter failure on 2026-09-08: roughly 98% of this scene's mirror
96
+ pixels had resolve variance ≤1e-6. The old first pass changed radiance by just 0.00137
97
+ on average; the sparse noisy samples were being rejected as colour edges. Resolve's
98
+ within-pixel ray variance is not sufficient evidence of low spatial noise when only
99
+ one hit supplies radiance or the hit confidence switches between SSR and fallback.
100
+
101
+ The first pass now bootstraps uncertainty from a Gaussian-weighted 3×3 luminance
102
+ neighbourhood, using the existing geometry weights, and carries that uncertainty
103
+ through the subsequent spatial passes. It does not bootstrap again at larger radii.
104
+ A representative corrected GPU measurement gave mean change 0.00552 with filtering
105
+ on, and 0 with it off. These are separate frames, not a matched-noise quality metric.
106
+ The native images visibly differ, and an emulator regression verifies reduced
107
+ checker noise with zero input variance, unchanged constant colour (within float
108
+ precision), and rejection across opposite normals. The full SSR suite has 16 tests.
109
+
110
+ Spatial filtering trades sharpness for noise reduction, including at reflected
111
+ colour edges; these guides and tests do not establish an optimal filter bandwidth.
@@ -1,68 +1,68 @@
1
- import { RenderExtension } from "../../renderer/extension/RenderExtension.js";
2
- import { ImageShader } from "../../renderer/shader/ImageShader.js";
3
- import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
4
- import { chunk_decode_g_buffer_normal } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
5
- import { graph_image_pass } from "../../renderer/shader/graph/graph_image_pass.js";
6
- import { graph_import_texture } from "../../renderer/shader/graph/graph_import_texture.js";
7
- import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
8
- import { ShaderDescriptor } from "../../renderer/shader/ShaderDescriptor.js";
9
- import { GPUTextureContext } from "../../renderer/texture/GPUTextureContext.js";
10
- import { download_texture_data } from "../../renderer/texture/download_texture_data.js";
11
-
12
- const resources = new ShaderResourceSetDescriptor();
13
- resources.createGroup().addTexture('tBefore').addTexture('tAfter').addTexture('tNormal', 'uint');
14
- const shader = new ImageShader({
15
- descriptor: ShaderDescriptor.from({label:'SSR lab / spatial effect',resources,
16
- body:CodeChunk.from(/* language=WGSL */ `
17
- @fragment fn main(@builtin(position) coord:vec4f) -> @location(0) vec4f {
18
- let p = vec2i(coord.xy);
19
- if (decode_g_buffer_normal(textureLoad(tNormal,p,0).xy).y < 0.99) { return vec4f(-1.0); }
20
- let a = textureLoad(tBefore,p,0);
21
- let b = textureLoad(tAfter,p,0);
22
- let difference = abs(a.rgb-b.rgb);
23
- return vec4f(max(difference.r,max(difference.g,difference.b)),a.w,b.w,1.0);
24
- }`, [chunk_decode_g_buffer_normal])}),
25
- targets:[{format:'rgba32float'}],
26
- });
27
-
28
- /** Same-frame GPU input/output comparison. Opt-in; no cost during ordinary playback. */
29
- export class SpatialFilterProbe extends RenderExtension {
30
- name = 'SSR lab / measure spatial filter';
31
- enabled = false;
32
- texture;
33
- device;
34
- constructor(device) { super(); this.device=device; }
35
- record(frame) {
36
- if (!this.enabled) { return; }
37
- // This diagnostic intentionally inspects the playground's production graph.
38
- const pass=frame.graph.__pass_nodes.find(p=>p.name==='SSR / spatial denoise with metadata');
39
- const resolve=frame.graph.__pass_nodes.find(p=>p.name==='SSR resolve / IBL');
40
- if (!resolve) { throw new Error('Enable SSR to measure its spatial filter.'); }
41
- const before=pass ? pass.data.tInput : resolve.data['@output'][0];
42
- const after=pass ? pass.data['@output'][0] : before;
43
- const [width,height]=frame.resolution;
44
- if (!this.texture || this.texture.width!==width || this.texture.height!==height) {
45
- this.texture?.destroy();
46
- this.texture=GPUTextureContext.fromTexture(this.device.createTexture({
47
- size:[width,height,1],format:'rgba32float',
48
- usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,
49
- }),this.device);
50
- }
51
- graph_image_pass({graph:frame.graph,shader,
52
- inputs:{tBefore:before,tAfter:after,tNormal:resolve.data.tNormal},
53
- output:[graph_import_texture(frame.graph,this.texture,'SSR spatial measurement')],
54
- });
55
- }
56
- async read() {
57
- const data=await download_texture_data({device:this.device,source:this.texture.gpu_texture});
58
- let pixels=0,changed=0,zero_variance=0,mean=0,max=0;
59
- for(let i=0;i<data.length;i+=4) {
60
- if(data[i]<0) { continue; }
61
- if(!Number.isFinite(data[i])) { throw new Error('Non-finite denoising output.'); }
62
- pixels++; changed+=data[i]>0.001 ? 1 : 0; zero_variance+=data[i+1]<=1e-6 ? 1 : 0;
63
- mean+=data[i]; max=Math.max(max,data[i]);
64
- }
65
- if(pixels===0) { throw new Error('No upward-facing mirror pixels in this view.'); }
66
- return {pixels,changed_percent:100*changed/pixels,zero_variance_percent:100*zero_variance/pixels,mean:mean/pixels,max};
67
- }
68
- }
1
+ import { RenderExtension } from "../../renderer/extension/RenderExtension.js";
2
+ import { ImageShader } from "../../renderer/shader/ImageShader.js";
3
+ import { CodeChunk } from "../../renderer/shader/compiler/CodeChunk.js";
4
+ import { chunk_decode_g_buffer_normal } from "../../renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
5
+ import { graph_image_pass } from "../../renderer/shader/graph/graph_image_pass.js";
6
+ import { graph_import_texture } from "../../renderer/shader/graph/graph_import_texture.js";
7
+ import { ShaderResourceSetDescriptor } from "../../renderer/shader/resource/ShaderResourceSetDescriptor.js";
8
+ import { ShaderDescriptor } from "../../renderer/shader/ShaderDescriptor.js";
9
+ import { GPUTextureContext } from "../../renderer/texture/GPUTextureContext.js";
10
+ import { download_texture_data } from "../../renderer/texture/download_texture_data.js";
11
+
12
+ const resources = new ShaderResourceSetDescriptor();
13
+ resources.createGroup().addTexture('tBefore').addTexture('tAfter').addTexture('tNormal', 'uint');
14
+ const shader = new ImageShader({
15
+ descriptor: ShaderDescriptor.from({label:'SSR lab / spatial effect',resources,
16
+ body:CodeChunk.from(/* language=WGSL */ `
17
+ @fragment fn main(@builtin(position) coord:vec4f) -> @location(0) vec4f {
18
+ let p = vec2i(coord.xy);
19
+ if (decode_g_buffer_normal(textureLoad(tNormal,p,0).xy).y < 0.99) { return vec4f(-1.0); }
20
+ let a = textureLoad(tBefore,p,0);
21
+ let b = textureLoad(tAfter,p,0);
22
+ let difference = abs(a.rgb-b.rgb);
23
+ return vec4f(max(difference.r,max(difference.g,difference.b)),a.w,b.w,1.0);
24
+ }`, [chunk_decode_g_buffer_normal])}),
25
+ targets:[{format:'rgba32float'}],
26
+ });
27
+
28
+ /** Same-frame GPU input/output comparison. Opt-in; no cost during ordinary playback. */
29
+ export class SpatialFilterProbe extends RenderExtension {
30
+ name = 'SSR lab / measure spatial filter';
31
+ enabled = false;
32
+ texture;
33
+ device;
34
+ constructor(device) { super(); this.device=device; }
35
+ record(frame) {
36
+ if (!this.enabled) { return; }
37
+ // This diagnostic intentionally inspects the playground's production graph.
38
+ const pass=frame.graph.__pass_nodes.find(p=>p.name.startsWith('SSR / spatial denoise with metadata'));
39
+ const resolve=frame.graph.__pass_nodes.find(p=>p.name==='SSR resolve / IBL');
40
+ if (!resolve) { throw new Error('Enable SSR to measure its spatial filter.'); }
41
+ const before=pass ? pass.data.tInput : resolve.data['@output'][0];
42
+ const after=pass ? pass.data['@output'][0] : before;
43
+ const [width,height]=frame.resolution;
44
+ if (!this.texture || this.texture.width!==width || this.texture.height!==height) {
45
+ this.texture?.destroy();
46
+ this.texture=GPUTextureContext.fromTexture(this.device.createTexture({
47
+ size:[width,height,1],format:'rgba32float',
48
+ usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,
49
+ }),this.device);
50
+ }
51
+ graph_image_pass({graph:frame.graph,shader,
52
+ inputs:{tBefore:before,tAfter:after,tNormal:resolve.data.tNormal},
53
+ output:[graph_import_texture(frame.graph,this.texture,'SSR spatial measurement')],
54
+ });
55
+ }
56
+ async read() {
57
+ const data=await download_texture_data({device:this.device,source:this.texture.gpu_texture});
58
+ let pixels=0,changed=0,zero_variance=0,mean=0,max=0;
59
+ for(let i=0;i<data.length;i+=4) {
60
+ if(data[i]<0) { continue; }
61
+ if(!Number.isFinite(data[i])) { throw new Error('Non-finite denoising output.'); }
62
+ pixels++; changed+=data[i]>0.001 ? 1 : 0; zero_variance+=data[i+1]<=1e-6 ? 1 : 0;
63
+ mean+=data[i]; max=Math.max(max,data[i]);
64
+ }
65
+ if(pixels===0) { throw new Error('No upward-facing mirror pixels in this view.'); }
66
+ return {pixels,changed_percent:100*changed/pixels,zero_variance_percent:100*zero_variance/pixels,mean:mean/pixels,max};
67
+ }
68
+ }