@woosh/meep-engine 3.41.0 → 3.43.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 (384) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/editor/selection/editor_pick.d.ts.map +1 -1
  4. package/editor/selection/editor_pick.js +2 -1
  5. package/editor/tools/TransformToolV2.d.ts.map +1 -1
  6. package/editor/tools/TransformToolV2.js +7 -1
  7. package/editor/tools/engine/ToolEngine.d.ts.map +1 -1
  8. package/editor/tools/engine/ToolEngine.js +10 -0
  9. package/editor/tools/v2/TransformControls.d.ts.map +1 -1
  10. package/editor/tools/v2/TransformControls.js +7 -20
  11. package/editor/tools/v2/handle/gizmo_drag_plane.d.ts.map +1 -1
  12. package/editor/tools/v2/handle/gizmo_drag_plane.js +4 -0
  13. package/editor/view/ecs/EntityEditor.d.ts.map +1 -1
  14. package/editor/view/ecs/EntityEditor.js +3 -1
  15. package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
  16. package/editor/view/node-graph/NodeGraphView.js +28 -12
  17. package/package.json +91 -96
  18. package/samples/engine/first-scene/index.html +4 -1
  19. package/samples/engine/first-scene/main.js +14 -9
  20. package/src/core/binary/utf8/utf8_decode.js +3 -3
  21. package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.d.ts.map +1 -1
  22. package/src/core/bvh2/binary/2/bvh32_query_user_data_ray.js +112 -113
  23. package/src/core/bvh2/bvh3/ebvh_nodes_sort_sah_local4.js +2 -2
  24. package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +14 -14
  25. package/src/core/collection/RingBuffer.d.ts.map +1 -1
  26. package/src/core/collection/RingBuffer.js +4 -0
  27. package/src/core/collection/array/array_contains_duplicates.d.ts.map +1 -1
  28. package/src/core/collection/array/array_contains_duplicates.js +2 -1
  29. package/src/core/collection/array/array_copy.d.ts.map +1 -1
  30. package/src/core/collection/array/array_copy.js +23 -0
  31. package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts +2 -2
  32. package/src/core/collection/array/typed/sparse_typed_array_hash.d.ts.map +1 -1
  33. package/src/core/collection/array/typed/sparse_typed_array_hash.js +9 -8
  34. package/src/core/collection/array/typed/uint16_array_hash.d.ts +2 -2
  35. package/src/core/collection/array/typed/uint16_array_hash.js +4 -4
  36. package/src/core/collection/array/typed/uint8_array_hash.d.ts +2 -2
  37. package/src/core/collection/array/typed/uint8_array_hash.js +4 -4
  38. package/src/core/collection/array/weightedRandomFromArray.d.ts +1 -0
  39. package/src/core/collection/array/weightedRandomFromArray.d.ts.map +1 -1
  40. package/src/core/collection/array/weightedRandomFromArray.js +9 -1
  41. package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
  42. package/src/core/collection/heap/BinaryHeap.js +4 -0
  43. package/src/core/collection/list/List.d.ts.map +1 -1
  44. package/src/core/collection/list/List.js +4 -2
  45. package/src/core/collection/set/ArraySet.js +1 -1
  46. package/src/core/collection/set/HashSet.d.ts +1 -1
  47. package/src/core/collection/set/HashSet.d.ts.map +1 -1
  48. package/src/core/collection/set/HashSet.js +4 -2
  49. package/src/core/debug/matchers/IsEqual.js +1 -1
  50. package/src/core/debug/matchers/IsIterableContaining.d.ts.map +1 -1
  51. package/src/core/debug/matchers/IsIterableContaining.js +61 -74
  52. package/src/core/events/signal/SignalBinding.js +101 -101
  53. package/src/core/function/extractFunctionBody.js +13 -13
  54. package/src/core/function/objectsEqual.d.ts.map +1 -1
  55. package/src/core/function/objectsEqual.js +15 -14
  56. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.d.ts.map +1 -1
  57. package/src/core/geom/3d/frustum/frustum3_compute_closest_point.js +207 -172
  58. package/src/core/geom/3d/gjk/gjk_epa_penetration.d.ts.map +1 -1
  59. package/src/core/geom/3d/gjk/gjk_epa_penetration.js +5 -4
  60. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.d.ts.map +1 -1
  61. package/src/core/geom/3d/line/line3_compute_segment_point_distance_eikonal.js +8 -2
  62. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts +20 -0
  63. package/src/core/geom/3d/triangle/tri3_ray_intersection.d.ts.map +1 -1
  64. package/src/core/geom/3d/triangle/tri3_ray_intersection.js +182 -0
  65. package/src/core/math/noise/curl_noise_3dt.d.ts.map +1 -1
  66. package/src/core/math/noise/curl_noise_3dt.js +20 -10
  67. package/src/core/math/noise/sdnoise.d.ts +16 -5
  68. package/src/core/math/noise/sdnoise.d.ts.map +1 -1
  69. package/src/core/math/noise/sdnoise.js +43 -9
  70. package/src/core/math/spline/spline3_hermite_nearest_point.d.ts +16 -1
  71. package/src/core/math/spline/spline3_hermite_nearest_point.d.ts.map +1 -1
  72. package/src/core/math/spline/spline3_hermite_nearest_point.js +44 -3
  73. package/src/engine/Engine.d.ts.map +1 -1
  74. package/src/engine/Engine.js +6 -2
  75. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts +9 -0
  76. package/src/engine/control/first-person/FirstPersonPlayerController.d.ts.map +1 -1
  77. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts +26 -0
  78. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.d.ts.map +1 -1
  79. package/src/engine/control/first-person/FirstPersonPlayerControllerConfig.js +2 -0
  80. package/src/engine/control/first-person/abilities/AbilitySet.d.ts.map +1 -1
  81. package/src/engine/control/first-person/abilities/AbilitySet.js +9 -0
  82. package/src/engine/control/first-person/abilities/LedgeGrab.d.ts.map +1 -1
  83. package/src/engine/control/first-person/abilities/LedgeGrab.js +6 -0
  84. package/src/engine/control/first-person/abilities/Slide.d.ts.map +1 -1
  85. package/src/engine/control/first-person/abilities/Slide.js +1 -0
  86. package/src/engine/control/first-person/abilities/WallRun.d.ts +4 -1
  87. package/src/engine/control/first-person/abilities/WallRun.d.ts.map +1 -1
  88. package/src/engine/control/first-person/abilities/WallRun.js +13 -1
  89. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts +1 -1
  90. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.d.ts.map +1 -1
  91. package/src/engine/control/first-person/mastery/SlideInitiationTimingEvaluator.js +6 -5
  92. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts +3 -3
  93. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.d.ts.map +1 -1
  94. package/src/engine/control/first-person/mastery/StrideTimingJumpEvaluator.js +9 -8
  95. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.d.ts.map +1 -1
  96. package/src/engine/control/first-person/sensors/FirstPersonSensorsSystem.js +13 -4
  97. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  98. package/src/engine/ecs/EntityManager.js +18 -15
  99. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
  100. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +2 -1
  101. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
  102. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -0
  103. package/src/engine/ecs/fow/FogOfWarRevealerSystem.d.ts.map +1 -1
  104. package/src/engine/ecs/fow/FogOfWarRevealerSystem.js +3 -0
  105. package/src/engine/ecs/parent/EntityNode.js +3 -3
  106. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  107. package/src/engine/ecs/speaker/VoiceSystem.js +4 -0
  108. package/src/engine/ecs/storage/BinaryBufferDeSerializer.js +5 -5
  109. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.d.ts.map +1 -1
  110. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.js +3 -2
  111. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.js +1 -1
  112. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.d.ts.map +1 -1
  113. package/src/engine/ecs/storage/binary/object-v2/BinaryObjectDeSerializer.js +8 -1
  114. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  115. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +8 -0
  116. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
  117. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +5 -2
  118. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.d.ts.map +1 -1
  119. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -0
  120. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.d.ts.map +1 -1
  121. package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -0
  122. package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +1 -1
  123. package/src/engine/ecs/terrain/tiles/TerrainTile.d.ts.map +1 -1
  124. package/src/engine/ecs/terrain/tiles/TerrainTile.js +13 -1
  125. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  126. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -0
  127. package/src/engine/graphics/ecs/light/LightSerializationAdapter.d.ts.map +1 -1
  128. package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +13 -1
  129. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts +5 -0
  130. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.d.ts.map +1 -0
  131. package/src/engine/graphics/ecs/light/LightSerializationUpgrader_0_1.js +27 -0
  132. package/src/engine/graphics/ecs/water/Water.d.ts +11 -0
  133. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  134. package/src/engine/graphics/ecs/water/Water.js +17 -0
  135. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.d.ts.map +1 -1
  136. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +3 -1
  137. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts +9 -0
  138. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.d.ts.map +1 -0
  139. package/src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js +24 -0
  140. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +30 -9
  141. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
  142. package/src/engine/graphics/ecs/water/WaterWaves.js +41 -9
  143. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
  144. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +30 -26
  145. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts +6 -0
  146. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.d.ts.map +1 -0
  147. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js +22 -0
  148. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.d.ts.map +1 -1
  149. package/src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js +3 -5
  150. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +20 -0
  151. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
  152. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +36 -0
  153. package/src/engine/graphics3/WaterSystem.d.ts +12 -3
  154. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  155. package/src/engine/graphics3/WaterSystem.js +78 -46
  156. package/src/engine/input/devices/PointerDevice.d.ts.map +1 -1
  157. package/src/engine/input/devices/PointerDevice.js +29 -4
  158. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts +1 -0
  159. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.d.ts.map +1 -1
  160. package/src/engine/intelligence/behavior/selector/WeightedRandomBehavior.js +14 -3
  161. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  162. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.d.ts.map +1 -1
  163. package/src/engine/physics/fluid/solver/v3_grid_advect_maccormack_velocity.js +12 -3
  164. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.d.ts.map +1 -1
  165. package/src/engine/physics/fluid/solver/v3_grid_advect_sl_velocity.js +8 -2
  166. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts +19 -0
  167. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.d.ts.map +1 -1
  168. package/src/engine/physics/fluid/solver/v3_grid_sample_scalar_masked.js +41 -2
  169. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.d.ts.map +1 -1
  170. package/src/engine/physics/fluid/solver/v3_mac_advect_scalar.js +9 -3
  171. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.d.ts.map +1 -1
  172. package/src/engine/physics/fluid/solver/v3_mac_advect_sl_velocity.js +26 -10
  173. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts +3 -6
  174. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.d.ts.map +1 -1
  175. package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +22 -9
  176. package/src/engine/ui/DraggableAspect.d.ts +5 -1
  177. package/src/engine/ui/DraggableAspect.d.ts.map +1 -1
  178. package/src/engine/ui/DraggableAspect.js +61 -4
  179. package/src/format/image/avif/heif/ItemProperty.d.ts +1 -1
  180. package/src/format/image/avif/heif/ItemProperty.js +1 -1
  181. package/src/format/image/png/chunk/png_chunk_decode_iTXt.d.ts.map +1 -1
  182. package/src/format/image/png/chunk/png_chunk_decode_iTXt.js +17 -6
  183. package/src/shade/device/mock/SoftwareGPUDevice.d.ts +2 -4
  184. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  185. package/src/shade/device/mock/SoftwareGPUDevice.js +20 -13
  186. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
  187. package/src/shade/playground/skinned_blas_refit/sweep_views.js +2 -1
  188. package/src/shade/playground/vgeo_runtime/README.md +5 -4
  189. package/src/shade/playground/water_refraction/README.md +10 -11
  190. package/src/shade/playground/water_refraction/main.js +9 -8
  191. package/src/shade/playground/water_refraction/world.js +1 -1
  192. package/src/shade/playground/water_surface/README.md +43 -0
  193. package/src/shade/playground/water_surface/index.html +30 -0
  194. package/src/shade/playground/water_surface/main.d.ts +2 -0
  195. package/src/shade/playground/water_surface/main.d.ts.map +1 -0
  196. package/src/shade/playground/water_surface/main.js +154 -0
  197. package/src/shade/playground/water_surface/world.d.ts +44 -0
  198. package/src/shade/playground/water_surface/world.d.ts.map +1 -0
  199. package/src/shade/playground/water_surface/world.js +160 -0
  200. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  201. package/src/shade/renderer/Renderer.js +6 -5
  202. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  203. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +5 -0
  204. package/src/shade/renderer/atmosphere/GPUSky.d.ts +12 -0
  205. package/src/shade/renderer/atmosphere/GPUSky.d.ts.map +1 -1
  206. package/src/shade/renderer/atmosphere/GPUSky.js +162 -147
  207. package/src/shade/renderer/binding/BufferBinding.js +2 -2
  208. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  209. package/src/shade/renderer/buffer/table/GPUTypedTable.js +5 -3
  210. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts +10 -3
  211. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.d.ts.map +1 -1
  212. package/src/shade/renderer/buffer/table/GPUTypedTableDescriptor.js +17 -9
  213. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +3 -0
  214. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +1 -1
  215. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +16 -0
  216. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +2 -0
  217. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +1 -1
  218. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +11 -0
  219. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts +1 -1
  220. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.d.ts.map +1 -1
  221. package/src/shade/renderer/geometry/meshlet/build/meshoptimizer/geometry_to_meshlets_meshoptimizer.js +9 -3
  222. package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.d.ts.map +1 -1
  223. package/src/shade/renderer/geometry/util/geometry_simplify_redundant_topology.js +2 -2
  224. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.d.ts.map +1 -1
  225. package/src/shade/renderer/geometry/virtual/format/vgeo_validate_container.js +85 -0
  226. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  227. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +12 -6
  228. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
  229. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +7 -0
  230. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.d.ts.map +1 -1
  231. package/src/shade/renderer/geometry/virtual/runtime/VGeoRuntimeTables.js +3 -1
  232. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.d.ts.map +1 -1
  233. package/src/shade/renderer/lightmap/bake/shader_lightmap_denoise_sh.js +10 -3
  234. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  235. package/src/shade/renderer/particles/DESIGN.md +13 -9
  236. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +1 -1
  237. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +1 -1
  238. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  239. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +3 -2
  240. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  241. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +3 -2
  242. package/src/shade/renderer/scene/GPUSceneContext.d.ts +9 -1
  243. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  244. package/src/shade/renderer/scene/GPUSceneContext.js +23 -1
  245. package/src/shade/renderer/scene/SCENE_DATABASE_SPEC.js +2 -1
  246. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts +13 -0
  247. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.d.ts.map +1 -0
  248. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128_inverse.js +42 -0
  249. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts +15 -0
  250. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.d.ts.map +1 -0
  251. package/src/shade/renderer/shader/chunk/math/fft/chunk_fft128x4_inverse_workgroup.js +39 -0
  252. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.d.ts.map +1 -1
  253. package/src/shade/renderer/shader/resource/ShaderResourceSetDescriptor.js +2 -0
  254. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +4 -1
  255. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  256. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +74 -3
  257. package/src/shade/renderer/volumetrics/NOTES.md +1023 -957
  258. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts +5 -4
  259. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts.map +1 -1
  260. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.js +5 -4
  261. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +1 -1
  262. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +1 -1
  263. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +1 -1
  264. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +1 -1
  265. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +41 -0
  266. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -0
  267. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +112 -0
  268. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +9 -23
  269. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  270. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +18 -126
  271. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +22 -0
  272. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +1 -0
  273. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +228 -0
  274. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  275. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +0 -53
  276. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +15 -0
  277. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  278. package/src/shade/renderer/water/GPUWaterRenderer.js +110 -30
  279. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +16 -8
  280. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +1 -1
  281. package/src/shade/renderer/water/medium/GPUWaterBodies.js +31 -26
  282. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts +0 -1
  283. package/src/shade/renderer/water/medium/shader_water_meshlets.d.ts.map +1 -1
  284. package/src/shade/renderer/water/medium/shader_water_meshlets.js +1 -39
  285. package/src/shade/renderer/water/shader_water.d.ts +0 -1
  286. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  287. package/src/shade/renderer/water/shader_water.js +201 -72
  288. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +70 -0
  289. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -0
  290. package/src/shade/renderer/water/surface/GPUWaterSurface.js +199 -0
  291. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +5 -2
  292. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
  293. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +32 -12
  294. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +23 -0
  295. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -0
  296. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +227 -0
  297. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +65 -11
  298. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts.map +1 -1
  299. package/src/shade/renderer/water/surface/graph_water_tessellation.js +163 -28
  300. package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts +51 -0
  301. package/src/shade/renderer/water/surface/lod/WATER_LOD.d.ts.map +1 -0
  302. package/src/shade/renderer/water/surface/lod/WATER_LOD.js +95 -0
  303. package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts +10 -0
  304. package/src/shade/renderer/water/surface/lod/chunk_water_lod.d.ts.map +1 -0
  305. package/src/shade/renderer/water/surface/lod/chunk_water_lod.js +127 -0
  306. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts +17 -0
  307. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.d.ts.map +1 -0
  308. package/src/shade/renderer/water/surface/lod/chunk_water_lod_cell.js +246 -0
  309. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts +118 -0
  310. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -0
  311. package/src/shade/renderer/water/surface/lod/shader_water_lod.js +727 -0
  312. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts +60 -0
  313. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -0
  314. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +274 -0
  315. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +17 -0
  316. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -0
  317. package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +57 -0
  318. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +43 -0
  319. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -0
  320. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +268 -0
  321. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +20 -0
  322. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -0
  323. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +239 -0
  324. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +153 -0
  325. package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -0
  326. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +874 -0
  327. package/src/shade/renderer/water/surface/shader_water_cull.d.ts +42 -0
  328. package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -0
  329. package/src/shade/renderer/water/surface/shader_water_cull.js +269 -0
  330. package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts +15 -0
  331. package/src/shade/renderer/water/surface/shader_water_waves_combine.d.ts.map +1 -0
  332. package/src/shade/renderer/water/surface/shader_water_waves_combine.js +73 -0
  333. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +11 -0
  334. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -0
  335. package/src/shade/renderer/water/surface/shader_water_waves_derive.js +78 -0
  336. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts +35 -0
  337. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.d.ts.map +1 -0
  338. package/src/shade/renderer/water/surface/spectrum/GPUWaterSpectrum.js +103 -0
  339. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts +22 -0
  340. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.d.ts.map +1 -0
  341. package/src/shade/renderer/water/surface/spectrum/WATER_BAND_STATE.js +57 -0
  342. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts +22 -0
  343. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.d.ts.map +1 -0
  344. package/src/shade/renderer/water/surface/spectrum/WATER_SPECTRUM.js +25 -0
  345. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts +14 -0
  346. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.d.ts.map +1 -0
  347. package/src/shade/renderer/water/surface/spectrum/chunk_water_jonswap.js +48 -0
  348. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts +23 -0
  349. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.d.ts.map +1 -0
  350. package/src/shade/renderer/water/surface/spectrum/chunk_water_spectrum.js +169 -0
  351. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts +26 -0
  352. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.d.ts.map +1 -0
  353. package/src/shade/renderer/water/surface/spectrum/shader_water_spectrum.js +161 -0
  354. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  355. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +29 -9
  356. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  357. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +14 -3
  358. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +0 -28
  359. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +0 -1
  360. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +0 -86
  361. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts +0 -29
  362. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.d.ts.map +0 -1
  363. package/src/engine/ecs/storage/binary/object-v2/serializerTestHarness.js +0 -44
  364. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts +0 -4
  365. package/src/shade/renderer/water/medium/shader_water_bodies_derive.d.ts.map +0 -1
  366. package/src/shade/renderer/water/medium/shader_water_bodies_derive.js +0 -32
  367. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts +0 -25
  368. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.d.ts.map +0 -1
  369. package/src/shade/renderer/water/surface/GPUWaterWaveSimulation.js +0 -128
  370. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts +0 -9
  371. package/src/shade/renderer/water/surface/chunk_water_tessellation.d.ts.map +0 -1
  372. package/src/shade/renderer/water/surface/chunk_water_tessellation.js +0 -144
  373. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts +0 -13
  374. package/src/shade/renderer/water/surface/chunk_water_wave.d.ts.map +0 -1
  375. package/src/shade/renderer/water/surface/chunk_water_wave.js +0 -40
  376. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts +0 -4
  377. package/src/shade/renderer/water/surface/shader_water_tiles.d.ts.map +0 -1
  378. package/src/shade/renderer/water/surface/shader_water_tiles.js +0 -123
  379. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts +0 -6
  380. package/src/shade/renderer/water/surface/shader_water_wave_batch.d.ts.map +0 -1
  381. package/src/shade/renderer/water/surface/shader_water_wave_batch.js +0 -85
  382. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts +0 -6
  383. package/src/shade/renderer/water/surface/shader_water_wave_domain.d.ts.map +0 -1
  384. package/src/shade/renderer/water/surface/shader_water_wave_domain.js +0 -83
@@ -28,6 +28,15 @@ declare class Water {
28
28
  * @type {Vector1}
29
29
  */
30
30
  roughness: Vector1;
31
+ /**
32
+ * Whether the body's surface keeps moving while no view sees it. Off (the default), a hidden body is paused:
33
+ * its wave particles stand still and its wind turn holds until it comes back into view, and it costs one
34
+ * culling test a frame. On, it is simulated every frame wherever the camera looks, at the cost of a visible
35
+ * body's simulation — for water whose ripples must have travelled on when the camera turns back.
36
+ * Ambient waves follow time, not state: they are current either way.
37
+ * @type {ObservedBoolean}
38
+ */
39
+ simulateWhenHidden: ObservedBoolean;
31
40
  /** Optical edits queue a scene row update. */
32
41
  onChanged: Signal;
33
42
  /** @param {ParticipatingMedium} value */
@@ -42,6 +51,7 @@ declare class Water {
42
51
  toJSON(): {
43
52
  ior: number;
44
53
  roughness: number;
54
+ simulateWhenHidden: boolean;
45
55
  medium: any;
46
56
  };
47
57
  #private;
@@ -50,6 +60,7 @@ declare namespace Water {
50
60
  let typeName: string;
51
61
  }
52
62
  import Vector1 from "../../../../core/geom/Vector1.js";
63
+ import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
53
64
  import Signal from "../../../../core/events/signal/Signal.js";
54
65
  import { ParticipatingMedium } from "../../../../shade/renderer/medium/ParticipatingMedium.js";
55
66
  //# sourceMappingURL=Water.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Water.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/Water.js"],"names":[],"mappings":";AASA;;;;;;;;;;;;;;;GAeG;AACH;IAmCI,0BAQC;IA1CD;;;OAGG;IACH,KAFU,OAAO,CAEQ;IAEzB;;;;OAIG;IACH,WAFU,OAAO,CAEa;IAE9B,8CAA8C;IAC9C,kBAAyB;IAWzB,yCAAyC;IACzC,uCAMC;IAbD;;;;OAIG;IACH,kCAAqC;IAoBrC,0BAgBC;IAED;;;;MAMC;;CACJ;;;;oBA9FmB,kCAAkC;mBADnC,0CAA0C;oCAEzB,0DAA0D"}
1
+ {"version":3,"file":"Water.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/Water.js"],"names":[],"mappings":";AAUA;;;;;;;;;;;;;;;GAeG;AACH;IA6CI,0BASC;IArDD;;;OAGG;IACH,KAFU,OAAO,CAEQ;IAEzB;;;;OAIG;IACH,WAFU,OAAO,CAEa;IAE9B;;;;;;;OAOG;IACH,oBAFU,eAAe,CAEuB;IAEhD,8CAA8C;IAC9C,kBAAyB;IAWzB,yCAAyC;IACzC,uCAMC;IAbD;;;;OAIG;IACH,kCAAqC;IAqBrC,0BAoBC;IAED;;;;;MAOC;;CACJ;;;;oBA/GmB,kCAAkC;4BAC1B,2CAA2C;mBAFpD,0CAA0C;oCAGzB,0DAA0D"}
@@ -1,5 +1,6 @@
1
1
  import Signal from "../../../../core/events/signal/Signal.js";
2
2
  import Vector1 from "../../../../core/geom/Vector1.js";
3
+ import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
3
4
  import { ParticipatingMedium } from "../../../../shade/renderer/medium/ParticipatingMedium.js";
4
5
  import {
5
6
  participating_medium_from_json,
@@ -37,6 +38,16 @@ class Water {
37
38
  */
38
39
  roughness = new Vector1(0.02);
39
40
 
41
+ /**
42
+ * Whether the body's surface keeps moving while no view sees it. Off (the default), a hidden body is paused:
43
+ * its wave particles stand still and its wind turn holds until it comes back into view, and it costs one
44
+ * culling test a frame. On, it is simulated every frame wherever the camera looks, at the cost of a visible
45
+ * body's simulation — for water whose ripples must have travelled on when the camera turns back.
46
+ * Ambient waves follow time, not state: they are current either way.
47
+ * @type {ObservedBoolean}
48
+ */
49
+ simulateWhenHidden = new ObservedBoolean(false);
50
+
40
51
  /** Optical edits queue a scene row update. */
41
52
  onChanged = new Signal();
42
53
  /** @type {ParticipatingMedium|null} */
@@ -61,6 +72,7 @@ class Water {
61
72
  constructor(options) {
62
73
  this.ior.onChanged.add(this.#changed);
63
74
  this.roughness.onChanged.add(this.#changed);
75
+ this.simulateWhenHidden.onChanged.add(this.#changed);
64
76
  this.medium = water_medium_default();
65
77
  if (options !== undefined) {
66
78
  console.error('Constructor options are deprecated');
@@ -81,6 +93,10 @@ class Water {
81
93
  this.roughness.fromJSON(json.roughness);
82
94
  }
83
95
 
96
+ if (typeof json.simulateWhenHidden === 'boolean') {
97
+ this.simulateWhenHidden.fromJSON(json.simulateWhenHidden);
98
+ }
99
+
84
100
  if (json.medium !== null && typeof json.medium === 'object') {
85
101
  participating_medium_from_json(this.medium, json.medium);
86
102
  }
@@ -90,6 +106,7 @@ class Water {
90
106
  return {
91
107
  ior: this.ior.toJSON(),
92
108
  roughness: this.roughness.toJSON(),
109
+ simulateWhenHidden: this.simulateWhenHidden.toJSON(),
93
110
  medium: participating_medium_to_json(this.medium),
94
111
  };
95
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WaterSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterSerializationAdapter.js"],"names":[],"mappings":"AAOA;;IAEI,oBAAc;IAGd;;;;OAIG;IACH,uCAFW,KAAK,QAOf;IAED;;;;OAIG;IACH,yCAFW,KAAK,QAOf;CACJ;gDAnC+C,gEAAgE;kBAK9F,YAAY"}
1
+ {"version":3,"file":"WaterSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterSerializationAdapter.js"],"names":[],"mappings":"AAOA;;IAEI,oBAAc;IAGd;;;;OAIG;IACH,uCAFW,KAAK,QAQf;IAED;;;;OAIG;IACH,yCAFW,KAAK,QAQf;CACJ;gDArC+C,gEAAgE;kBAK9F,YAAY"}
@@ -8,7 +8,7 @@ import Water from "./Water.js";
8
8
  export class WaterSerializationAdapter extends BinaryClassSerializationAdapter {
9
9
 
10
10
  klass = Water;
11
- version = 4;
11
+ version = 5;
12
12
 
13
13
  /**
14
14
  *
@@ -20,6 +20,7 @@ export class WaterSerializationAdapter extends BinaryClassSerializationAdapter {
20
20
  buffer.writeFloat32(value.roughness.getValue());
21
21
 
22
22
  serialize_participating_medium(buffer, value.medium);
23
+ value.simulateWhenHidden.toBinaryBuffer(buffer);
23
24
  }
24
25
 
25
26
  /**
@@ -32,5 +33,6 @@ export class WaterSerializationAdapter extends BinaryClassSerializationAdapter {
32
33
  value.roughness.set(buffer.readFloat32());
33
34
 
34
35
  deserialize_participating_medium(buffer, value.medium);
36
+ value.simulateWhenHidden.fromBinaryBuffer(buffer);
35
37
  }
36
38
  }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Keep version 4's optics and append `simulateWhenHidden` as version 5 introduced it: off, so a body saved before
3
+ * pauses while hidden, like every body by default.
4
+ */
5
+ export class WaterSerializationUpgrader_4_5 extends BinaryClassUpgrader {
6
+ upgrade(source: any, target: any): void;
7
+ }
8
+ import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
9
+ //# sourceMappingURL=WaterSerializationUpgrader_4_5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaterSerializationUpgrader_4_5.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterSerializationUpgrader_4_5.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH;IAII,wCAOC;CACJ;oCAvBmC,oDAAoD"}
@@ -0,0 +1,24 @@
1
+ import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
2
+ import {
3
+ deserialize_participating_medium,
4
+ serialize_participating_medium
5
+ } from "../../../../shade/renderer/medium/participating_medium_serialization.js";
6
+ import { water_medium_default } from "../../../../shade/renderer/medium/water/water_presets.js";
7
+
8
+ /**
9
+ * Keep version 4's optics and append `simulateWhenHidden` as version 5 introduced it: off, so a body saved before
10
+ * pauses while hidden, like every body by default.
11
+ */
12
+ export class WaterSerializationUpgrader_4_5 extends BinaryClassUpgrader {
13
+ __startVersion = 4;
14
+ __targetVersion = 5;
15
+
16
+ upgrade(source, target) {
17
+ target.writeFloat32(source.readFloat32());
18
+ target.writeFloat32(source.readFloat32());
19
+ const medium = water_medium_default();
20
+ deserialize_participating_medium(source, medium);
21
+ serialize_participating_medium(target, medium);
22
+ target.writeUint8(0);
23
+ }
24
+ }
@@ -1,29 +1,50 @@
1
+ /** Amplitude reflection coefficient of a water body's outline when nothing says otherwise. */
2
+ export const WATER_WAVES_SHORE_REFLECTION_DEFAULT: 0.5;
1
3
  export default WaterWaves;
2
4
  /**
3
- * What drives the waves of the {@link Water} on the same entity, for the primitive wave
4
- * simulation.
5
+ * The waves of the {@link Water} on the same entity: the wind that raises them and how the body's outline
6
+ * treats them (WATER_SURFACE_SIMULATION_PLAN_2026_10_06.md §6.1).
5
7
  *
6
- * Kept apart from `Water` on purpose: `Water` describes the body and its optics, and says nothing
7
- * about how the surface moves. The production surface simulation replaces this component, its
8
- * system and its producer together, and `Water` stays as it is. A body without this component
9
- * tessellates its authored rest surface and allocates no wave grid until a splash is queued.
8
+ * Kept apart from `Water`, which describes the body and its optics and says nothing about how the surface
9
+ * moves. A body without this component is calm, and its outline reflects wave particles (from
10
+ * `WaterSystem.splash`) at the default coefficient.
11
+ *
12
+ * The wind's waves follow from physics: a fetch-limited JONSWAP sea of this wind speed over the water upwind
13
+ * — the body's own extent along the wind plus {@link upwindFetch} — so the same wind raises centimetre ripples
14
+ * on a puddle and swell on an open sea.
10
15
  */
11
16
  declare class WaterWaves {
12
17
  /**
13
- * Wind speed at 10 m, m/s. Sets the forcing, which grows as its square, and the slope variance
14
- * of the waves the simulation's grid does not resolve (Cox-Munk).
18
+ * Wind speed at 10 m, m/s.
15
19
  * @type {Vector1}
16
20
  */
17
21
  windSpeed: Vector1;
18
22
  /**
19
- * Direction the wind blows towards, radians in the mesh's local xz plane, measured from +x towards +z.
23
+ * Direction the wind blows towards, radians in the body's local xz plane, measured from +x towards +z.
24
+ * The angle turns with the body's rotation and is not skewed by its scale. A change turns the waves over
25
+ * a few seconds.
20
26
  * @type {Vector1}
21
27
  */
22
28
  windDirection: Vector1;
29
+ /**
30
+ * Open water upwind of the mesh, metres, added to the mesh's own extent along the wind. Zero for a body
31
+ * that is all the water there is (a pool, a lake); an open sea states the distance to its far shore
32
+ * (a fully developed sea at 10 m/s needs about 170 km).
33
+ * @type {Vector1}
34
+ */
35
+ upwindFetch: Vector1;
36
+ /**
37
+ * Amplitude reflection coefficient of the mesh's outline for wave particles: 0 a beach that absorbs
38
+ * them, 1 a wall that returns them whole.
39
+ * @type {Vector1}
40
+ */
41
+ shoreReflection: Vector1;
23
42
  fromJSON(json: any): void;
24
43
  toJSON(): {
25
44
  windSpeed: number;
26
45
  windDirection: number;
46
+ upwindFetch: number;
47
+ shoreReflection: number;
27
48
  };
28
49
  }
29
50
  declare namespace WaterWaves {
@@ -1 +1 @@
1
- {"version":3,"file":"WaterWaves.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterWaves.js"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AACH;IACI;;;;OAIG;IACH,WAFU,OAAO,CAEU;IAE3B;;;OAGG;IACH,eAFU,OAAO,CAEc;IAE/B,0BAQC;IAED;;;MAKC;CACJ;;;;oBAzCmB,kCAAkC"}
1
+ {"version":3,"file":"WaterWaves.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterWaves.js"],"names":[],"mappings":"AAEA,8FAA8F;AAC9F,uDAAwD;;AAExD;;;;;;;;;;;GAWG;AACH;IACI;;;OAGG;IACH,WAFU,OAAO,CAEU;IAE3B;;;;;OAKG;IACH,eAFU,OAAO,CAEc;IAE/B;;;;;OAKG;IACH,aAFU,OAAO,CAEY;IAE7B;;;;OAIG;IACH,iBAFU,OAAO,CAEmD;IAEpE,0BAgBC;IAED;;;;;MAOC;CACJ;;;;oBAzEmB,kCAAkC"}
@@ -1,28 +1,50 @@
1
1
  import Vector1 from "../../../../core/geom/Vector1.js";
2
2
 
3
+ /** Amplitude reflection coefficient of a water body's outline when nothing says otherwise. */
4
+ export const WATER_WAVES_SHORE_REFLECTION_DEFAULT = 0.5;
5
+
3
6
  /**
4
- * What drives the waves of the {@link Water} on the same entity, for the primitive wave
5
- * simulation.
7
+ * The waves of the {@link Water} on the same entity: the wind that raises them and how the body's outline
8
+ * treats them (WATER_SURFACE_SIMULATION_PLAN_2026_10_06.md §6.1).
9
+ *
10
+ * Kept apart from `Water`, which describes the body and its optics and says nothing about how the surface
11
+ * moves. A body without this component is calm, and its outline reflects wave particles (from
12
+ * `WaterSystem.splash`) at the default coefficient.
6
13
  *
7
- * Kept apart from `Water` on purpose: `Water` describes the body and its optics, and says nothing
8
- * about how the surface moves. The production surface simulation replaces this component, its
9
- * system and its producer together, and `Water` stays as it is. A body without this component
10
- * tessellates its authored rest surface and allocates no wave grid until a splash is queued.
14
+ * The wind's waves follow from physics: a fetch-limited JONSWAP sea of this wind speed over the water upwind
15
+ * — the body's own extent along the wind plus {@link upwindFetch} — so the same wind raises centimetre ripples
16
+ * on a puddle and swell on an open sea.
11
17
  */
12
18
  class WaterWaves {
13
19
  /**
14
- * Wind speed at 10 m, m/s. Sets the forcing, which grows as its square, and the slope variance
15
- * of the waves the simulation's grid does not resolve (Cox-Munk).
20
+ * Wind speed at 10 m, m/s.
16
21
  * @type {Vector1}
17
22
  */
18
23
  windSpeed = new Vector1(3);
19
24
 
20
25
  /**
21
- * Direction the wind blows towards, radians in the mesh's local xz plane, measured from +x towards +z.
26
+ * Direction the wind blows towards, radians in the body's local xz plane, measured from +x towards +z.
27
+ * The angle turns with the body's rotation and is not skewed by its scale. A change turns the waves over
28
+ * a few seconds.
22
29
  * @type {Vector1}
23
30
  */
24
31
  windDirection = new Vector1(0);
25
32
 
33
+ /**
34
+ * Open water upwind of the mesh, metres, added to the mesh's own extent along the wind. Zero for a body
35
+ * that is all the water there is (a pool, a lake); an open sea states the distance to its far shore
36
+ * (a fully developed sea at 10 m/s needs about 170 km).
37
+ * @type {Vector1}
38
+ */
39
+ upwindFetch = new Vector1(0);
40
+
41
+ /**
42
+ * Amplitude reflection coefficient of the mesh's outline for wave particles: 0 a beach that absorbs
43
+ * them, 1 a wall that returns them whole.
44
+ * @type {Vector1}
45
+ */
46
+ shoreReflection = new Vector1(WATER_WAVES_SHORE_REFLECTION_DEFAULT);
47
+
26
48
  fromJSON(json) {
27
49
  if (typeof json.windSpeed === 'number') {
28
50
  this.windSpeed.fromJSON(json.windSpeed);
@@ -31,12 +53,22 @@ class WaterWaves {
31
53
  if (typeof json.windDirection === 'number') {
32
54
  this.windDirection.fromJSON(json.windDirection);
33
55
  }
56
+
57
+ if (typeof json.upwindFetch === 'number') {
58
+ this.upwindFetch.fromJSON(json.upwindFetch);
59
+ }
60
+
61
+ if (typeof json.shoreReflection === 'number') {
62
+ this.shoreReflection.fromJSON(json.shoreReflection);
63
+ }
34
64
  }
35
65
 
36
66
  toJSON() {
37
67
  return {
38
68
  windSpeed: this.windSpeed.toJSON(),
39
69
  windDirection: this.windDirection.toJSON(),
70
+ upwindFetch: this.upwindFetch.toJSON(),
71
+ shoreReflection: this.shoreReflection.toJSON(),
40
72
  };
41
73
  }
42
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WaterWavesSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js"],"names":[],"mappings":"AAGA;;IAEI,yBAAmB;IAGnB;;;OAGG;IACH,uCAFW,UAAU,QAKpB;IAED;;;OAGG;IACH,yCAFW,UAAU,QAKpB;CACJ;gDAzB+C,gEAAgE;uBACzF,iBAAiB"}
1
+ {"version":3,"file":"WaterWavesSerializationAdapter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js"],"names":[],"mappings":"AAGA;;IAEI,yBAAmB;IAGnB;;;OAGG;IACH,uCAFW,UAAU,QAOpB;IAED;;;OAGG;IACH,yCAFW,UAAU,QAOpB;CACJ;gDA7B+C,gEAAgE;uBACzF,iBAAiB"}
@@ -1,26 +1,30 @@
1
- import { BinaryClassSerializationAdapter } from "../../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
2
- import WaterWaves from "./WaterWaves.js";
3
-
4
- export class WaterWavesSerializationAdapter extends BinaryClassSerializationAdapter {
5
-
6
- klass = WaterWaves;
7
- version = 0;
8
-
9
- /**
10
- * @param {BinaryBuffer} buffer
11
- * @param {WaterWaves} value
12
- */
13
- serialize(buffer, value) {
14
- buffer.writeFloat32(value.windSpeed.getValue());
15
- buffer.writeFloat32(value.windDirection.getValue());
16
- }
17
-
18
- /**
19
- * @param {BinaryBuffer} buffer
20
- * @param {WaterWaves} value
21
- */
22
- deserialize(buffer, value) {
23
- value.windSpeed.set(buffer.readFloat32());
24
- value.windDirection.set(buffer.readFloat32());
25
- }
26
- }
1
+ import { BinaryClassSerializationAdapter } from "../../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
2
+ import WaterWaves from "./WaterWaves.js";
3
+
4
+ export class WaterWavesSerializationAdapter extends BinaryClassSerializationAdapter {
5
+
6
+ klass = WaterWaves;
7
+ version = 1;
8
+
9
+ /**
10
+ * @param {BinaryBuffer} buffer
11
+ * @param {WaterWaves} value
12
+ */
13
+ serialize(buffer, value) {
14
+ buffer.writeFloat32(value.windSpeed.getValue());
15
+ buffer.writeFloat32(value.windDirection.getValue());
16
+ buffer.writeFloat32(value.upwindFetch.getValue());
17
+ buffer.writeFloat32(value.shoreReflection.getValue());
18
+ }
19
+
20
+ /**
21
+ * @param {BinaryBuffer} buffer
22
+ * @param {WaterWaves} value
23
+ */
24
+ deserialize(buffer, value) {
25
+ value.windSpeed.set(buffer.readFloat32());
26
+ value.windDirection.set(buffer.readFloat32());
27
+ value.upwindFetch.set(buffer.readFloat32());
28
+ value.shoreReflection.set(buffer.readFloat32());
29
+ }
30
+ }
@@ -0,0 +1,6 @@
1
+ /** Keep version 0's wind and append the version-1 defaults. */
2
+ export class WaterWavesSerializationUpgrader_0_1 extends BinaryClassUpgrader {
3
+ upgrade(source: any, target: any): void;
4
+ }
5
+ import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
6
+ //# sourceMappingURL=WaterWavesSerializationUpgrader_0_1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaterWavesSerializationUpgrader_0_1.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_0_1.js"],"names":[],"mappings":"AAWA,+DAA+D;AAC/D;IAII,wCAIC;CACJ;oCArBmC,oDAAoD"}
@@ -0,0 +1,22 @@
1
+ import { BinaryClassUpgrader } from "../../../ecs/storage/binary/BinaryClassUpgrader.js";
2
+
3
+ /**
4
+ * The fields version 1 appended, with the defaults they had at that version: constants, not read off the
5
+ * current `WaterWaves`, since an upgrader writes the format of its target version.
6
+ */
7
+ const VERSION_1_DEFAULTS = [
8
+ 0, // upwind fetch, metres
9
+ 0.5, // shore reflection
10
+ ];
11
+
12
+ /** Keep version 0's wind and append the version-1 defaults. */
13
+ export class WaterWavesSerializationUpgrader_0_1 extends BinaryClassUpgrader {
14
+ __startVersion = 0;
15
+ __targetVersion = 1;
16
+
17
+ upgrade(source, target) {
18
+ target.writeFloat32(source.readFloat32());
19
+ target.writeFloat32(source.readFloat32());
20
+ for (const value of VERSION_1_DEFAULTS) { target.writeFloat32(value); }
21
+ }
22
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"bvh32_geometry_raycast.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;GAiBG;AACH,+CAhBW,aAAa,kCAEb,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,iBAC1B,MAAM,iBACN,MAAM,0BACN,OAAO,WACP,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,SAAS,YACpC,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,gBACN,MAAM,GACJ,OAAO,CA+DnB;8BA5F6B,8CAA8C"}
1
+ {"version":3,"file":"bvh32_geometry_raycast.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/geometry/buffered/query/bvh32_geometry_raycast.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;GAiBG;AACH,+CAhBW,aAAa,kCAEb,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,iBAC1B,MAAM,iBACN,MAAM,0BACN,OAAO,WACP,MAAM,EAAE,GAAC,UAAU,MAAM,CAAC,GAAC,SAAS,YACpC,MAAM,YACN,MAAM,YACN,MAAM,eACN,MAAM,eACN,MAAM,eACN,MAAM,gBACN,MAAM,GACJ,OAAO,CA6DnB;8BA1F6B,8CAA8C"}
@@ -1,7 +1,7 @@
1
1
  import { assert } from "../../../../../core/assert.js";
2
2
  import { bvh32_query_user_data_ray } from "../../../../../core/bvh2/binary/2/bvh32_query_user_data_ray.js";
3
3
  import { SurfacePoint3 } from "../../../../../core/geom/3d/SurfacePoint3.js";
4
- import { tri3_ray_intersection } from "../../../../../core/geom/3d/triangle/tri3_ray_intersection.js";
4
+ import { tri3_ray_intersection_triangle_array } from "../../../../../core/geom/3d/triangle/tri3_ray_intersection.js";
5
5
  import { read_triangle_vertices } from "../read_triangle_vertices.js";
6
6
 
7
7
  const scratch_array = []
@@ -68,13 +68,11 @@ export function bvh32_geometry_raycast(
68
68
  triangle_index
69
69
  );
70
70
 
71
- const triangle_hit_found = tri3_ray_intersection(
71
+ const triangle_hit_found = tri3_ray_intersection_triangle_array(
72
72
  scratch_hit,
73
73
  origin_x, origin_y, origin_z,
74
74
  direction_x, direction_y, direction_z,
75
- triangle_scratch[0], triangle_scratch[1], triangle_scratch[2],
76
- triangle_scratch[3], triangle_scratch[4], triangle_scratch[5],
77
- triangle_scratch[6], triangle_scratch[7], triangle_scratch[8]
75
+ triangle_scratch, 0
78
76
  )
79
77
 
80
78
  if (!triangle_hit_found) {
@@ -24,4 +24,24 @@
24
24
  * @return {Float32Array|number[]} `out`, for chaining.
25
25
  */
26
26
  export function scs3d_sample_linear3(out: Float32Array | number[], data_0: Float32Array, data_1: Float32Array, data_2: Float32Array, res_x: number, res_y: number, res_z: number, x: number, y: number, z: number): Float32Array | number[];
27
+ /**
28
+ * {@link scs3d_sample_linear3} with the position read from `position[position_offset ..+2]`.
29
+ * For per-cell callers, passing fractional coordinates in a reusable array avoids numeric argument
30
+ * boxes when the sampler is not inlined. Float64 coordinates preserve the scalar form's precision.
31
+ *
32
+ * The three coordinates are read before any output store, so `position` may overlap `out` and a
33
+ * reentrant output setter cannot change the coordinates used by the scalar facade's sample.
34
+ *
35
+ * @param {Float32Array|Float64Array|number[]} out length >= 3
36
+ * @param {Float32Array} data_0
37
+ * @param {Float32Array} data_1
38
+ * @param {Float32Array} data_2
39
+ * @param {number} res_x
40
+ * @param {number} res_y
41
+ * @param {number} res_z
42
+ * @param {Float64Array} position `[x, y, z]`, in grid index space
43
+ * @param {number} position_offset
44
+ * @return {Float32Array|Float64Array|number[]} `out`, for chaining.
45
+ */
46
+ export function scs3d_sample_linear3_array(out: Float32Array | Float64Array | number[], data_0: Float32Array, data_1: Float32Array, data_2: Float32Array, res_x: number, res_y: number, res_z: number, position: Float64Array, position_offset: number): Float32Array | Float64Array | number[];
27
47
  //# sourceMappingURL=scs3d_sample_linear3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scs3d_sample_linear3.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/3d/scs3d_sample_linear3.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,0CAZW,YAAY,GAAC,MAAM,EAAE,UACrB,YAAY,UACZ,YAAY,UACZ,YAAY,SACZ,MAAM,SACN,MAAM,SACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACL,YAAY,GAAC,MAAM,EAAE,CAsDhC"}
1
+ {"version":3,"file":"scs3d_sample_linear3.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/3d/scs3d_sample_linear3.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,0CAZW,YAAY,GAAC,MAAM,EAAE,UACrB,YAAY,UACZ,YAAY,UACZ,YAAY,SACZ,MAAM,SACN,MAAM,SACN,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACL,YAAY,GAAC,MAAM,EAAE,CAWhC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,gDAXW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,UAClC,YAAY,UACZ,YAAY,UACZ,YAAY,SACZ,MAAM,SACN,MAAM,SACN,MAAM,YACN,YAAY,mBACZ,MAAM,GACL,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,CA0D7C"}
@@ -1,6 +1,8 @@
1
1
  import { clamp } from "../../../../core/math/clamp.js";
2
2
  import { lerp } from "../../../../core/math/lerp.js";
3
3
 
4
+ const scratch_position = new Float64Array(3);
5
+
4
6
  /**
5
7
  * Trilinearly sample THREE single-channel 3D grids at the same fractional
6
8
  * position, sharing one set of corner indices and interpolation weights.
@@ -27,6 +29,40 @@ import { lerp } from "../../../../core/math/lerp.js";
27
29
  * @return {Float32Array|number[]} `out`, for chaining.
28
30
  */
29
31
  export function scs3d_sample_linear3(out, data_0, data_1, data_2, res_x, res_y, res_z, x, y, z) {
32
+ const position = scratch_position;
33
+ position[0] = x;
34
+ position[1] = y;
35
+ position[2] = z;
36
+
37
+ scs3d_sample_linear3_array(out, data_0, data_1, data_2, res_x, res_y, res_z, position, 0);
38
+
39
+ return out;
40
+ }
41
+
42
+ /**
43
+ * {@link scs3d_sample_linear3} with the position read from `position[position_offset ..+2]`.
44
+ * For per-cell callers, passing fractional coordinates in a reusable array avoids numeric argument
45
+ * boxes when the sampler is not inlined. Float64 coordinates preserve the scalar form's precision.
46
+ *
47
+ * The three coordinates are read before any output store, so `position` may overlap `out` and a
48
+ * reentrant output setter cannot change the coordinates used by the scalar facade's sample.
49
+ *
50
+ * @param {Float32Array|Float64Array|number[]} out length >= 3
51
+ * @param {Float32Array} data_0
52
+ * @param {Float32Array} data_1
53
+ * @param {Float32Array} data_2
54
+ * @param {number} res_x
55
+ * @param {number} res_y
56
+ * @param {number} res_z
57
+ * @param {Float64Array} position `[x, y, z]`, in grid index space
58
+ * @param {number} position_offset
59
+ * @return {Float32Array|Float64Array|number[]} `out`, for chaining.
60
+ */
61
+ export function scs3d_sample_linear3_array(out, data_0, data_1, data_2, res_x, res_y, res_z, position, position_offset) {
62
+ const x = position[position_offset];
63
+ const y = position[position_offset + 1];
64
+ const z = position[position_offset + 2];
65
+
30
66
  const x_max = res_x - 1;
31
67
  const y_max = res_y - 1;
32
68
  const z_max = res_z - 1;
@@ -2,6 +2,11 @@
2
2
  * Registers [Water, MeshletGeometry, Transform64] in the scene's existing GPU database. Authored
3
3
  * edits queue writes; idle frames never walk bodies. Transform rows follow the same change events
4
4
  * and GPU hierarchy as shaded geometry. Water does not enter the opaque mesh table or its TLAS.
5
+ *
6
+ * Every body has a surface row (WATER_SURFACE_SIMULATION_PLAN_2026_10_06.md §6.1): its wind from an
7
+ * optional {@link WaterWaves}, its queued splashes, and what the GPU derives from them each frame. The GPU culls
8
+ * every body against the frame's view before simulating; a hidden body is paused unless
9
+ * {@link Water#simulateWhenHidden} (WATER_SURFACE_DISTANCE_LOD_PROPOSAL_2026_10_06.md §3).
5
10
  */
6
11
  export class WaterSystem extends System<any> {
7
12
  constructor(graphics: any, scene: any);
@@ -19,7 +24,7 @@ export class WaterSystem extends System<any> {
19
24
  inscatter_segments: number;
20
25
  tessellation_pixels: number;
21
26
  };
22
- get waves(): GPUWaterWaveSimulation;
27
+ get waves(): GPUWaterSurface;
23
28
  get transparency_channel(): GPUWaterRenderer;
24
29
  get scene(): any;
25
30
  request_probe(uv: any): Promise<any>;
@@ -30,7 +35,11 @@ export class WaterSystem extends System<any> {
30
35
  link(water: any, geometry: any, transform: any, entity: any): void;
31
36
  unlink(water: any, geometry: any, transform: any, entity: any): void;
32
37
  update(dt: any): void;
33
- /** World-space radius and velocity kick; position is interpreted in the CPU-owned pose. */
38
+ /**
39
+ * A splash at a world position: rings of wave particles of the given world radius (half their wavelength)
40
+ * whose height is the given vertical velocity kick, m/s, over the time a crest takes to cross them. The
41
+ * position is interpreted in the CPU-owned pose; queued on the CPU and spent on the GPU, sixteen a body a frame.
42
+ */
34
43
  splash(entity: any, position: any, radius: any, strength: any): void;
35
44
  record_surface(frame: any): void;
36
45
  record(frame: any): void;
@@ -52,7 +61,7 @@ import { MeshletGeometry } from "../../shade/renderer/geometry/MeshletGeometry.j
52
61
  import Water from "../graphics/ecs/water/Water.js";
53
62
  import WaterWaves from "../graphics/ecs/water/WaterWaves.js";
54
63
  import { ResourceAccessSpecification } from "../../core/model/ResourceAccessSpecification.js";
55
- import { GPUWaterWaveSimulation } from "../../shade/renderer/water/surface/GPUWaterWaveSimulation.js";
64
+ import { GPUWaterSurface } from "../../shade/renderer/water/surface/GPUWaterSurface.js";
56
65
  import { GPUWaterRenderer } from "../../shade/renderer/water/GPUWaterRenderer.js";
57
66
  import { RenderExtension } from "../../shade/renderer/extension/RenderExtension.js";
58
67
  //# sourceMappingURL=WaterSystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WaterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/WaterSystem.js"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH;IAyBI,uCAcC;IAtCD,6EAAqD;IACrD,kEAA0F;IAY1F;;;;;;;;;;;MAAkD;IAClD,oCAAmC;IACnC,6CAAqD;IACrD,iBAAmC;IACnC,qCAA8D;IAE9D,0BAGC;IAJD,mBAAiC;IAsBjC,2CAOC;IAED,0BAMC;IAED,mEAoBC;IAUD,qEAkBC;IAED,sBAgBC;IA0CD,2FAA2F;IAC3F,qEASC;IAED,iCAKC;IACD,yBAGC;;CACJ;AAED;IAEI,yBAAsD;IAAvB,YAAoB;IACnD,yBAA4C;CAC/C;AACD;IAEI,yBAAsD;IAAvB,YAAoB;IACnD,yBAAoD;CACvD;uBAlOsB,kBAAkB;4BAEb,iCAAiC;gCAI7B,kDAAkD;kBARhE,gCAAgC;uBAC3B,qCAAqC;4CAShB,iDAAiD;uCAGtD,8DAA8D;iCAFpE,gDAAgD;gCAIjD,mDAAmD"}
1
+ {"version":3,"file":"WaterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/WaterSystem.js"],"names":[],"mappings":"AA+BA;;;;;;;;;GASG;AACH;IA2BI,uCAaC;IAvCD,6EAAqD;IACrD,kEAA0F;IAc1F;;;;;;;;;;;MAAkD;IAClD,6BAAmC;IACnC,6CAAqD;IACrD,iBAAmC;IACnC,qCAA8D;IAE9D,0BAGC;IAJD,mBAAiC;IAqBjC,2CAOC;IAED,0BAMC;IAED,mEAsBC;IAQD,qEAkBC;IAED,sBAoBC;IAqDD;;;;OAIG;IACH,qEASC;IAED,iCAMC;IACD,yBAGC;;CACJ;AAED;IAEI,yBAAsD;IAAvB,YAAoB;IACnD,yBAA4C;CAC/C;AACD;IAEI,yBAAsD;IAAvB,YAAoB;IACnD,yBAAoD;CACvD;uBAlQsB,kBAAkB;4BAEb,iCAAiC;gCAI7B,kDAAkD;kBARhE,gCAAgC;uBACe,qCAAqC;4CAS1D,iDAAiD;gCAG7D,uDAAuD;iCAFtD,gDAAgD;gCAIjD,mDAAmD"}