@woosh/meep-engine 3.33.0 → 3.35.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 (503) hide show
  1. package/editor/Editor.d.ts.map +1 -1
  2. package/editor/Editor.js +0 -3
  3. package/editor/ecs/component/prototypeObjectEditor.js +1 -165
  4. package/editor/ecs/component/registerBasicTypeEditors.d.ts.map +1 -1
  5. package/editor/ecs/component/registerBasicTypeEditors.js +0 -5
  6. package/editor/ecs/component/registerEngineComponentEditors.d.ts.map +1 -1
  7. package/editor/ecs/component/registerEngineComponentEditors.js +0 -20
  8. package/editor/process/SymbolicDisplayProcess.d.ts.map +1 -1
  9. package/editor/process/SymbolicDisplayProcess.js +100 -106
  10. package/editor/prototypeEditorShell.d.ts.map +1 -1
  11. package/editor/prototypeEditorShell.js +190 -186
  12. package/editor/templates/entity_templates.d.ts.map +1 -1
  13. package/editor/templates/entity_templates.js +10 -27
  14. package/editor/view/makeEntityDecorators.js +2 -2
  15. package/package.json +1 -1
  16. package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.d.ts +3 -3
  17. package/src/core/geom/3d/aabb/MovingBoundingBox.d.ts.map +1 -0
  18. package/src/{engine/graphics/particles/particular/engine → core/geom/3d/aabb}/MovingBoundingBox.js +5 -5
  19. package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts +3 -0
  20. package/src/core/math/lookup/RGBA_LUT_HEATMAP_IR.d.ts.map +1 -0
  21. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGBA_LUT_HEATMAP_IR.js +1 -1
  22. package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts +6 -0
  23. package/src/core/math/lookup/RGB_LUT_INFERNO.d.ts.map +1 -0
  24. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_INFERNO.js +1 -1
  25. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.d.ts +1 -1
  26. package/src/core/math/lookup/RGB_LUT_TURBO.d.ts.map +1 -0
  27. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_TURBO.js +1 -1
  28. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.d.ts +1 -1
  29. package/src/core/math/lookup/RGB_LUT_VIRIDIS.d.ts.map +1 -0
  30. package/src/{engine/graphics/particles/particular/engine/parameter/sample → core/math/lookup}/RGB_LUT_VIRIDIS.js +1 -1
  31. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  32. package/src/engine/animation/AnimatedActions.js +2 -4
  33. package/src/engine/animation/AnimationUtils.d.ts +1 -17
  34. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  35. package/src/engine/animation/AnimationUtils.js +138 -246
  36. package/src/engine/ecs/EntityManager.d.ts +1 -1
  37. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  38. package/src/engine/ecs/EntityManager.js +2 -2
  39. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +268 -275
  40. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  41. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +0 -10
  42. package/src/engine/graphics/geometry/distribute_points_on_indexed_triangles.d.ts.map +1 -0
  43. package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.js +3 -3
  44. package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.d.ts +1 -1
  45. package/src/engine/graphics/texture/sampler/lut_to_sampler.d.ts.map +1 -0
  46. package/src/engine/graphics/{particles/particular/engine/utils/volume → texture/sampler}/lut_to_sampler.js +1 -1
  47. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +0 -3
  48. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  49. package/src/engine/graphics3/GPUParticleEmitterSystem.js +0 -3
  50. package/src/engine/network/NetworkSession.d.ts +1 -1
  51. package/src/engine/network/NetworkSession.js +1 -1
  52. package/src/engine/physics/cloth/MEASUREMENTS.md +115 -0
  53. package/src/engine/physics/cloth/solver/cloth_contact_find.d.ts.map +1 -1
  54. package/src/engine/physics/cloth/solver/cloth_contact_find.js +2 -0
  55. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts +9 -0
  56. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.d.ts.map +1 -1
  57. package/src/engine/physics/cloth/solver/constraint/cloth_contact_row.js +30 -7
  58. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  59. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  60. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +12 -2
  61. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts +11 -2
  62. package/src/engine/sound/ecs/audio/LiveEmitterSet.d.ts.map +1 -1
  63. package/src/engine/sound/ecs/audio/LiveEmitterSet.js +14 -7
  64. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts +6 -15
  65. package/src/engine/sound/ecs/audio/SpatialAudioIndex.d.ts.map +1 -1
  66. package/src/engine/sound/ecs/audio/SpatialAudioIndex.js +161 -174
  67. package/src/shade/device/mock/SoftwareGPUBuffer.d.ts +5 -3
  68. package/src/shade/device/mock/SoftwareGPUBuffer.d.ts.map +1 -1
  69. package/src/shade/device/mock/SoftwareGPUBuffer.js +32 -3
  70. package/src/shade/device/timing/profile/GPUProfileSession.d.ts +25 -11
  71. package/src/shade/device/timing/profile/GPUProfileSession.d.ts.map +1 -1
  72. package/src/shade/device/timing/profile/GPUProfileSession.js +553 -474
  73. package/src/shade/playground/avboit/main.d.ts.map +1 -1
  74. package/src/shade/playground/avboit/main.js +888 -916
  75. package/src/shade/playground/caldera/main.js +73 -60
  76. package/src/shade/playground/particle_ecs/README.md +13 -7
  77. package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +5 -5
  78. package/src/shade/playground/particle_ecs/bonfire_effects.js +5 -5
  79. package/src/shade/playground/particle_ecs/effects/smoke.json +1859 -1859
  80. package/src/shade/playground/particle_ecs/effects/soot.json +1605 -1605
  81. package/src/shade/playground/particle_system/README.md +1 -2
  82. package/src/shade/playground/profile_hotkey.d.ts.map +1 -1
  83. package/src/shade/playground/profile_hotkey.js +4 -40
  84. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
  85. package/src/shade/playground/skinned_blas_refit/main.js +4 -39
  86. package/src/shade/playground/vgeo_runtime/main.js +25 -77
  87. package/src/shade/playground/vgeo_scene/main.js +2231 -2217
  88. package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
  89. package/src/shade/playground/volumetrics_froxel/main.js +4 -39
  90. package/src/shade/playground/volumetrics_froxel/measure.d.ts.map +1 -1
  91. package/src/shade/playground/volumetrics_froxel/measure.js +2 -4
  92. package/src/shade/renderer/GraphicsContext.d.ts +7 -0
  93. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  94. package/src/shade/renderer/GraphicsContext.js +11 -2
  95. package/src/shade/renderer/Renderer.d.ts +1 -1
  96. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  97. package/src/shade/renderer/Renderer.js +41 -1
  98. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +8 -0
  99. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  100. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +21 -0
  101. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +1 -1
  102. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  103. package/src/shade/renderer/geometry/GPUGeometryManager.js +9 -10
  104. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +5 -0
  105. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  106. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +11 -0
  107. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +12 -0
  108. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
  109. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +25 -0
  110. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +115 -101
  111. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  112. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +282 -140
  113. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +30 -0
  114. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +4 -1
  115. package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +536 -0
  116. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +6 -2
  117. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
  118. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +68 -19
  119. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +2 -1
  120. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
  121. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +17 -1
  122. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +4 -0
  123. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
  124. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +42 -12
  125. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +93 -12
  126. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
  127. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +166 -20
  128. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
  129. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -7
  130. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
  131. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +12 -5
  132. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -1
  133. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +2 -2
  134. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
  135. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +23 -13
  136. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -1
  137. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +1 -2
  138. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
  139. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +1 -2
  140. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
  141. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +10 -6
  142. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +45 -17
  143. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
  144. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +61 -19
  145. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +8 -11
  146. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -1
  147. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +9 -16
  148. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
  149. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +25 -10
  150. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +10 -8
  151. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +1 -0
  152. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +19 -7
  153. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +4 -2
  154. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -1
  155. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +4 -2
  156. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts +4 -0
  157. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts.map +1 -1
  158. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.js +7 -0
  159. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts.map +1 -1
  160. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.js +1 -0
  161. package/src/shade/renderer/light/GPULightCollection.d.ts +9 -1
  162. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  163. package/src/shade/renderer/light/GPULightCollection.js +41 -0
  164. package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts +37 -0
  165. package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -0
  166. package/src/shade/renderer/light/environment/shader_project_environment_sh.js +105 -0
  167. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  168. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  169. package/src/shade/renderer/material/GPUMaterialManager.js +2 -0
  170. package/src/shade/renderer/particles/DESIGN.md +69 -18
  171. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +7 -1
  172. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  173. package/src/shade/renderer/particles/GPUParticleSystem.js +1247 -1244
  174. package/src/shade/renderer/particles/ParticleConstants.d.ts +1 -3
  175. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  176. package/src/shade/renderer/particles/ParticleConstants.js +1 -3
  177. package/src/shade/renderer/particles/graph_particles_avboit.d.ts +7 -1
  178. package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
  179. package/src/shade/renderer/particles/graph_particles_avboit.js +9 -0
  180. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +3 -4
  181. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
  182. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +7 -6
  183. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts +15 -9
  184. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.d.ts.map +1 -1
  185. package/src/shade/renderer/particles/shaders/chunk_particle_lighting.js +29 -11
  186. package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.d.ts +24 -0
  187. package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.d.ts.map +1 -0
  188. package/src/shade/renderer/particles/shaders/chunk_particle_lighting_model.js +45 -0
  189. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts +3 -0
  190. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.d.ts.map +1 -1
  191. package/src/shade/renderer/particles/shaders/chunk_particle_render_math.js +38 -0
  192. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.d.ts.map +1 -1
  193. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +190 -185
  194. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +45 -0
  195. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -0
  196. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +99 -0
  197. package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts +4 -4
  198. package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.js +36 -36
  199. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts +15 -0
  200. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts.map +1 -0
  201. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.js +103 -0
  202. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts +3 -0
  203. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  204. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +6 -1
  205. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +26 -0
  206. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -0
  207. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +91 -0
  208. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts +22 -0
  209. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts.map +1 -0
  210. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.js +102 -0
  211. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts +2 -1
  212. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
  213. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +28 -24
  214. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +8 -0
  215. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  216. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +5 -0
  217. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +8 -1
  218. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  219. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +9 -0
  220. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  221. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +32 -28
  222. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  223. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +9 -105
  224. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +5 -0
  225. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  226. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +11 -0
  227. package/src/shade/renderer/scene/GPUSceneContext.d.ts +11 -3
  228. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  229. package/src/shade/renderer/scene/GPUSceneContext.js +93 -21
  230. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +4 -1
  231. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
  232. package/src/shade/renderer/scene/rows/GPUSceneRows.js +5 -23
  233. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  234. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +63 -0
  235. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts +12 -0
  236. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts.map +1 -0
  237. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.js +11 -0
  238. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +15 -0
  239. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  240. package/src/shade/renderer/shadow/map/Shadowmap.js +17 -0
  241. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts +25 -0
  242. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts.map +1 -0
  243. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.js +22 -0
  244. package/src/shade/renderer/shadow/map/shadowmap_update_score.d.ts.map +1 -1
  245. package/src/shade/renderer/shadow/map/shadowmap_update_score.js +5 -2
  246. package/src/shade/renderer/texture/TextureManager.d.ts +2 -1
  247. package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
  248. package/src/shade/renderer/texture/TextureManager.js +4 -1
  249. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +1 -1
  250. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts +9 -1
  251. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts.map +1 -1
  252. package/src/shade/renderer/util/Uint32BufferSamplingStats.js +55 -5
  253. package/src/shade/renderer/view/ViewManager.d.ts +7 -1
  254. package/src/shade/renderer/view/ViewManager.d.ts.map +1 -1
  255. package/src/shade/renderer/view/ViewManager.js +17 -1
  256. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  257. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -0
  258. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +13 -3
  259. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  260. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +9 -1
  261. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts +39 -0
  262. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.d.ts.map +1 -0
  263. package/src/shade/renderer/volumetrics/chunk_volumetrics_irradiance_sh.js +107 -0
  264. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts +15 -0
  265. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +1 -0
  266. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +44 -0
  267. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +19 -0
  268. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +1 -0
  269. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +48 -0
  270. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +29 -0
  271. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +1 -0
  272. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +90 -0
  273. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts +10 -0
  274. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts.map +1 -0
  275. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.js +55 -0
  276. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts +10 -0
  277. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts.map +1 -0
  278. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.js +47 -0
  279. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts +10 -0
  280. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts.map +1 -0
  281. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.js +63 -0
  282. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +17 -0
  283. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +1 -0
  284. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +26 -0
  285. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts +8 -1
  286. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  287. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +50 -2
  288. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  289. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +488 -436
  290. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +1 -1
  291. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  292. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +254 -63
  293. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +0 -20
  294. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +0 -1
  295. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +0 -35
  296. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +0 -12
  297. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +0 -1
  298. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +0 -17
  299. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +0 -14
  300. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +0 -1
  301. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +0 -18
  302. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +0 -52
  303. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +0 -1
  304. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +0 -58
  305. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +0 -47
  306. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +0 -1
  307. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +0 -58
  308. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +0 -16
  309. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +0 -1
  310. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +0 -21
  311. package/editor/particles/rebuildParticleEmitter.d.ts +0 -11
  312. package/editor/particles/rebuildParticleEmitter.d.ts.map +0 -1
  313. package/editor/particles/rebuildParticleEmitter.js +0 -31
  314. package/editor/process/ParticleEmitterRebuildProcess.d.ts +0 -66
  315. package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +0 -1
  316. package/editor/process/ParticleEmitterRebuildProcess.js +0 -217
  317. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +0 -18
  318. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +0 -1
  319. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +0 -140
  320. package/src/engine/animation/removeEntityGenericEffect.d.ts +0 -18
  321. package/src/engine/animation/removeEntityGenericEffect.d.ts.map +0 -1
  322. package/src/engine/animation/removeEntityGenericEffect.js +0 -160
  323. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts +0 -16
  324. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +0 -1
  325. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +0 -194
  326. package/src/engine/graphics/ecs/sprite/Sprite.d.ts +0 -15
  327. package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +0 -1
  328. package/src/engine/graphics/ecs/sprite/Sprite.js +0 -14
  329. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +0 -11
  330. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +0 -1
  331. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +0 -144
  332. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +0 -1
  333. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +0 -61
  334. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +0 -1
  335. package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +0 -229
  336. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts +0 -6
  337. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts.map +0 -1
  338. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.js +0 -8
  339. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts +0 -7
  340. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts.map +0 -1
  341. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.js +0 -9
  342. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts +0 -13
  343. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts.map +0 -1
  344. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.js +0 -12
  345. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts +0 -3
  346. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts.map +0 -1
  347. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +0 -84
  348. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +0 -285
  349. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +0 -1
  350. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +0 -1201
  351. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts +0 -19
  352. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts.map +0 -1
  353. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +0 -67
  354. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +0 -197
  355. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +0 -1
  356. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +0 -398
  357. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts +0 -5
  358. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts.map +0 -1
  359. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.js +0 -4
  360. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +0 -162
  361. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +0 -1
  362. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -472
  363. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +0 -10
  364. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +0 -1
  365. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +0 -37
  366. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts +0 -9
  367. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts.map +0 -1
  368. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +0 -25
  369. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts +0 -19
  370. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +0 -1
  371. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +0 -28
  372. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts +0 -19
  373. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts.map +0 -1
  374. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +0 -162
  375. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts +0 -5
  376. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts.map +0 -1
  377. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js +0 -103
  378. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts +0 -8
  379. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts.map +0 -1
  380. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.js +0 -28
  381. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts +0 -2
  382. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +0 -1
  383. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +0 -2
  384. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +0 -2
  385. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +0 -1
  386. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +0 -2
  387. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts +0 -60
  388. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +0 -1
  389. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +0 -128
  390. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts +0 -47
  391. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts.map +0 -1
  392. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +0 -77
  393. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts +0 -45
  394. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts.map +0 -1
  395. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js +0 -93
  396. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts +0 -95
  397. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts.map +0 -1
  398. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +0 -239
  399. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts +0 -3
  400. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts.map +0 -1
  401. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts +0 -6
  402. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts.map +0 -1
  404. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts.map +0 -1
  405. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts +0 -13
  406. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts.map +0 -1
  407. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +0 -28
  408. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts +0 -9
  409. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts.map +0 -1
  410. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +0 -24
  411. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts +0 -13
  412. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts.map +0 -1
  413. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +0 -27
  414. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts +0 -33
  415. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts.map +0 -1
  416. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +0 -80
  417. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +0 -49
  418. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +0 -1
  419. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +0 -135
  420. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts +0 -7
  421. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts.map +0 -1
  422. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.js +0 -14
  423. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts +0 -41
  424. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts.map +0 -1
  425. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.js +0 -59
  426. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts +0 -4
  427. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts.map +0 -1
  428. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +0 -56
  429. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts +0 -4
  430. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts.map +0 -1
  431. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +0 -84
  432. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts +0 -4
  433. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts.map +0 -1
  434. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +0 -80
  435. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts +0 -29
  436. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts.map +0 -1
  437. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.js +0 -43
  438. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts +0 -5
  439. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts.map +0 -1
  440. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +0 -104
  441. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts +0 -9
  442. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts.map +0 -1
  443. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.js +0 -11
  444. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts +0 -9
  445. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts.map +0 -1
  446. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.js +0 -64
  447. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts +0 -9
  448. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +0 -1
  449. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +0 -172
  450. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +0 -1
  451. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +0 -20
  452. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +0 -1
  453. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +0 -84
  454. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +0 -81
  455. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +0 -1
  456. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +0 -200
  457. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts +0 -6
  458. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts.map +0 -1
  459. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.js +0 -8
  460. package/src/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.d.ts.map +0 -1
  461. package/src/engine/graphics/particles/particular/group/Operation.d.ts +0 -20
  462. package/src/engine/graphics/particles/particular/group/Operation.d.ts.map +0 -1
  463. package/src/engine/graphics/particles/particular/group/Operation.js +0 -20
  464. package/src/engine/graphics/particles/particular/group/OperationType.d.ts +0 -7
  465. package/src/engine/graphics/particles/particular/group/OperationType.d.ts.map +0 -1
  466. package/src/engine/graphics/particles/particular/group/OperationType.js +0 -9
  467. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts +0 -27
  468. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts.map +0 -1
  469. package/src/engine/graphics/particles/particular/group/ParticleAttribute.js +0 -27
  470. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts +0 -8
  471. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts.map +0 -1
  472. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.js +0 -11
  473. package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts +0 -7
  474. package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts.map +0 -1
  475. package/src/engine/graphics/particles/particular/group/ParticleDataType.js +0 -10
  476. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts +0 -24
  477. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +0 -1
  478. package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +0 -48
  479. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts +0 -7
  480. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts.map +0 -1
  481. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +0 -20
  482. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts +0 -6
  483. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts.map +0 -1
  484. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.js +0 -162
  485. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts +0 -8
  486. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts.map +0 -1
  487. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +0 -19
  488. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +0 -77
  489. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +0 -1
  490. package/src/engine/graphics3/ParticleEmitterSystem.js +0 -307
  491. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +0 -10
  492. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +0 -1
  493. package/src/engine/graphics3/ParticleEmitterSystem3.js +0 -10
  494. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +0 -61
  495. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +0 -1
  496. package/src/engine/graphics3/particles/GPUParticularRenderer.js +0 -627
  497. package/src/engine/graphics3/particles/particle_gpu_records.d.ts +0 -85
  498. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +0 -1
  499. package/src/engine/graphics3/particles/particle_gpu_records.js +0 -227
  500. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts +0 -35
  501. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +0 -1
  502. package/src/shade/renderer/particles/shaders/shader_particle_render.js +0 -135
  503. /package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.d.ts +0 -0
@@ -1,174 +1,161 @@
1
- import { BVH } from "../../../../core/bvh2/bvh3/BVH.js";
2
- import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
3
- import { BVHQueryIntersectsSphere } from "../../../../core/bvh2/bvh3/query/BVHQueryIntersectsSphere.js";
4
- import { bvh_query_user_data_generic } from "../../../../core/bvh2/bvh3/query/bvh_query_user_data_generic.js";
5
-
6
- /**
7
- * Spatial broadphase for 3D audio emitters (P5.1, cull-only).
8
- *
9
- * Holds a dynamic BVH whose leaves are each emitter's AUDIBLE region — an axis-aligned box of
10
- * half-extent `event.distanceMax` centred on the emitter. So "which emitters can possibly be heard
11
- * from point P" is one O(log n + k) BVH point-query instead of an O(n) scan over every emitter. This
12
- * is the registered/dormant tier: a registered emitter is a record plus one BVH leaf — no
13
- * `EventInstance`, no WebAudio nodes, no per-frame work. Promoting in-range emitters to live instances
14
- * (voice slots, stealing, fades) is layered on top later; this class only answers the cull.
15
- *
16
- * Leaf bounds track the emitter REACTIVELY: each leaf subscribes to its position's `onChanged`, so a
17
- * still emitter costs nothing per frame and a moving one refits only when it actually moves. (meep is
18
- * fully dynamic — there is no static/dynamic distinction and no per-tick refit loop.)
19
- *
20
- * The cull is conservative: the leaf is a cube of half-extent `distanceMax`, so its corners admit a
21
- * few emitters whose true (spherical) distance slightly exceeds `distanceMax`. That is correct
22
- * broadphase behaviour — the exact distance test belongs to the narrowphase (the live instance).
23
- */
24
- export class SpatialAudioIndex {
25
-
26
- /**
27
- * @type {BVH}
28
- */
29
- #bvh = new BVH();
30
-
31
- /**
32
- * entity id -> { entity, event, position, bvhClient, onMove }
33
- * @type {Map<number, {entity:number, event:EventDescription, position:Vector3, bvhClient:BvhClient, onMove:function}>}
34
- */
35
- #records = new Map();
36
-
37
- /**
38
- * Reused point-query. The sphere `[x, y, z, radius]` is mutated in place each query; radius stays 0,
39
- * so the test is "listener point inside the leaf AABB".
40
- * @type {number[]}
41
- */
42
- #querySphere = [0, 0, 0, 0];
43
-
44
- /**
45
- * @type {BVHQueryIntersectsSphere}
46
- */
47
- #query = BVHQueryIntersectsSphere.from(this.#querySphere);
48
-
49
- /**
50
- * @returns {number} number of registered emitters
51
- */
52
- get size() {
53
- return this.#records.size;
54
- }
55
-
56
- /**
57
- * @param {number} entity
58
- * @returns {boolean}
59
- */
60
- has(entity) {
61
- return this.#records.has(entity);
62
- }
63
-
64
- /**
65
- * Register an emitter: insert a BVH leaf sized to its audible region and start tracking its
66
- * position. The entity id is the leaf's user data (so queries return entity ids).
67
- *
68
- * @param {number} entity non-negative integer id
69
- * @param {EventDescription} event read for `distanceMax` (and retained for later promotion)
70
- * @param {Float64Array} position shared translation view over the entity's transform. It has no
71
- * signals, so the owner calls {@link refresh} when the entity moves.
72
- */
73
- add(entity, event, position) {
74
- if (this.#records.has(entity)) {
75
- throw new Error(`SpatialAudioIndex: entity ${entity} already registered`);
76
- }
77
-
78
- const bvhClient = new BvhClient();
79
-
80
- const record = { entity, event, position, bvhClient, onMove: null };
81
-
82
- this.#writeBounds(record); // size the leaf AABB before linking (resize no-ops the write pre-link)
83
- bvhClient.link(this.#bvh, entity); // user_data = entity id
84
-
85
- this.#records.set(entity, record);
86
- }
87
-
88
- /**
89
- * Unregister an emitter: stop tracking its position and drop its BVH leaf. No-op for an unknown
90
- * entity.
91
- * @param {number} entity
92
- */
93
- remove(entity) {
94
- const record = this.#records.get(entity);
95
-
96
- if (record === undefined) {
97
- return;
98
- }
99
-
100
- record.bvhClient.unlink();
101
-
102
- this.#records.delete(entity);
103
- }
104
-
105
- /**
106
- * Refit a record's leaf to `position ± distanceMax`. Called once at registration and again
107
- * (reactively) whenever the position changes.
108
- * @param {{event:EventDescription, position:Vector3, bvhClient:BvhClient}} record
109
- */
110
- #writeBounds(record) {
111
- const p = record.position;
112
- const d = record.event.distanceMax;
113
-
114
- record.bvhClient.resize(
115
- p[0] - d, p[1] - d, p[2] - d,
116
- p[0] + d, p[1] + d, p[2] + d
117
- );
118
- }
119
-
120
- /**
121
- * Write the entity ids whose audible region contains `listenerPosition` into `out` (starting at
122
- * `out_offset`) and return how many — every emitter that can possibly be heard from there (a
123
- * conservative superset; see the class note), in unspecified order. Allocation-free: `out` is a
124
- * caller-owned reusable buffer, grown as needed (never shrunk), so only `out[out_offset .. out_offset
125
- * + count)` is meaningful — entries elsewhere may be stale from a prior query and must be ignored.
126
- *
127
- * @param {number[]} out caller-owned result buffer, reused across calls (grows, never shrinks)
128
- * @param {number} out_offset index in `out` to start writing at
129
- * @param {Vector3} listenerPosition
130
- * @returns {number} number of matches written to `out`
131
- */
132
- queryAudible(out, out_offset, listenerPosition) {
133
- this.#querySphere[0] = listenerPosition[0];
134
- this.#querySphere[1] = listenerPosition[1];
135
- this.#querySphere[2] = listenerPosition[2];
136
- // radius stays 0 -> point-in-AABB
137
-
138
- return bvh_query_user_data_generic(out, out_offset, this.#bvh, this.#bvh.root, this.#query);
139
- }
140
- /**
141
- * Re-fit the entity's leaf to its current pose.
142
- *
143
- * The translation this index holds is a live view over the transform's buffer, so it is already
144
- * up to date - what it cannot do is announce itself. The owner calls this when the dataset says
145
- * the transform changed.
146
- *
147
- * @param {number} entity
148
- */
149
- /**
150
- * Re-fit every leaf.
151
- *
152
- * The translations are live views over their transforms, so the data is already current - what
153
- * is stale is the leaf AABB in the BVH. One pass per tick costs what the per-move refits cost
154
- * before, and it is what the emitters' own "next tick re-attenuates" behaviour expects.
155
- *
156
- * @returns {void}
157
- */
158
- refresh_all() {
159
- for (const record of this.#records.values()) {
160
- this.#writeBounds(record);
161
- }
162
- }
163
-
164
- refresh(entity) {
165
- const record = this.#records.get(entity);
166
-
167
- if (record === undefined) {
168
- return;
169
- }
170
-
171
- this.#writeBounds(record);
172
- }
173
-
174
- }
1
+ import { BVH } from "../../../../core/bvh2/bvh3/BVH.js";
2
+ import { BvhClient } from "../../../../core/bvh2/bvh3/BvhClient.js";
3
+ import { BVHQueryIntersectsSphere } from "../../../../core/bvh2/bvh3/query/BVHQueryIntersectsSphere.js";
4
+ import { bvh_query_user_data_generic } from "../../../../core/bvh2/bvh3/query/bvh_query_user_data_generic.js";
5
+
6
+ /**
7
+ * Spatial broadphase for 3D audio emitters (P5.1, cull-only).
8
+ *
9
+ * Holds a dynamic BVH whose leaves are each emitter's AUDIBLE region — an axis-aligned box of
10
+ * half-extent `event.distanceMax` centred on the emitter. So "which emitters can possibly be heard
11
+ * from point P" is one O(log n + k) BVH point-query instead of an O(n) scan over every emitter. This
12
+ * is the registered/dormant tier: a registered emitter is a record plus one BVH leaf — no
13
+ * `EventInstance`, no WebAudio nodes, no per-frame work. Promoting in-range emitters to live instances
14
+ * (voice slots, stealing, fades) is layered on top later; this class only answers the cull.
15
+ *
16
+ * Leaf bounds track the emitter on demand: a position is a live view with no signal of its own, so the
17
+ * owner calls {@link refresh} for an entity when the dataset announces its transform changed. A still
18
+ * emitter costs nothing per frame and a moving one refits only when it actually moves. (meep is fully
19
+ * dynamic — there is no static/dynamic distinction and no per-tick refit loop.)
20
+ *
21
+ * The cull is conservative: the leaf is a cube of half-extent `distanceMax`, so its corners admit a
22
+ * few emitters whose true (spherical) distance slightly exceeds `distanceMax`. That is correct
23
+ * broadphase behaviour — the exact distance test belongs to the narrowphase (the live instance).
24
+ */
25
+ export class SpatialAudioIndex {
26
+
27
+ /**
28
+ * @type {BVH}
29
+ */
30
+ #bvh = new BVH();
31
+
32
+ /**
33
+ * entity id -> { entity, event, position, bvhClient }
34
+ * @type {Map<number, {entity:number, event:EventDescription, position:Float64Array, bvhClient:BvhClient}>}
35
+ */
36
+ #records = new Map();
37
+
38
+ /**
39
+ * Reused point-query. The sphere `[x, y, z, radius]` is mutated in place each query; radius stays 0,
40
+ * so the test is "listener point inside the leaf AABB".
41
+ * @type {number[]}
42
+ */
43
+ #querySphere = [0, 0, 0, 0];
44
+
45
+ /**
46
+ * @type {BVHQueryIntersectsSphere}
47
+ */
48
+ #query = BVHQueryIntersectsSphere.from(this.#querySphere);
49
+
50
+ /**
51
+ * @returns {number} number of registered emitters
52
+ */
53
+ get size() {
54
+ return this.#records.size;
55
+ }
56
+
57
+ /**
58
+ * @param {number} entity
59
+ * @returns {boolean}
60
+ */
61
+ has(entity) {
62
+ return this.#records.has(entity);
63
+ }
64
+
65
+ /**
66
+ * Register an emitter: insert a BVH leaf sized to its audible region and start tracking its
67
+ * position. The entity id is the leaf's user data (so queries return entity ids).
68
+ *
69
+ * @param {number} entity non-negative integer id
70
+ * @param {EventDescription} event read for `distanceMax` (and retained for later promotion)
71
+ * @param {Float64Array} position shared translation view over the entity's transform. It has no
72
+ * signals, so the owner calls {@link refresh} when the entity moves.
73
+ */
74
+ add(entity, event, position) {
75
+ if (this.#records.has(entity)) {
76
+ throw new Error(`SpatialAudioIndex: entity ${entity} already registered`);
77
+ }
78
+
79
+ const bvhClient = new BvhClient();
80
+
81
+ const record = { entity, event, position, bvhClient };
82
+
83
+ this.#writeBounds(record); // size the leaf AABB before linking (resize no-ops the write pre-link)
84
+ bvhClient.link(this.#bvh, entity); // user_data = entity id
85
+
86
+ this.#records.set(entity, record);
87
+ }
88
+
89
+ /**
90
+ * Unregister an emitter: stop tracking its position and drop its BVH leaf. No-op for an unknown
91
+ * entity.
92
+ * @param {number} entity
93
+ */
94
+ remove(entity) {
95
+ const record = this.#records.get(entity);
96
+
97
+ if (record === undefined) {
98
+ return;
99
+ }
100
+
101
+ record.bvhClient.unlink();
102
+
103
+ this.#records.delete(entity);
104
+ }
105
+
106
+ /**
107
+ * Refit a record's leaf to `position ± distanceMax`. Called once at registration and again from
108
+ * {@link refresh} whenever the owner reports a move.
109
+ * @param {{event:EventDescription, position:Float64Array, bvhClient:BvhClient}} record
110
+ */
111
+ #writeBounds(record) {
112
+ const p = record.position;
113
+ const d = record.event.distanceMax;
114
+
115
+ record.bvhClient.resize(
116
+ p[0] - d, p[1] - d, p[2] - d,
117
+ p[0] + d, p[1] + d, p[2] + d
118
+ );
119
+ }
120
+
121
+ /**
122
+ * Write the entity ids whose audible region contains `listenerPosition` into `out` (starting at
123
+ * `out_offset`) and return how many — every emitter that can possibly be heard from there (a
124
+ * conservative superset; see the class note), in unspecified order. Allocation-free: `out` is a
125
+ * caller-owned reusable buffer, grown as needed (never shrunk), so only `out[out_offset .. out_offset
126
+ * + count)` is meaningful — entries elsewhere may be stale from a prior query and must be ignored.
127
+ *
128
+ * @param {number[]} out caller-owned result buffer, reused across calls (grows, never shrinks)
129
+ * @param {number} out_offset index in `out` to start writing at
130
+ * @param {Vector3} listenerPosition
131
+ * @returns {number} number of matches written to `out`
132
+ */
133
+ queryAudible(out, out_offset, listenerPosition) {
134
+ this.#querySphere[0] = listenerPosition[0];
135
+ this.#querySphere[1] = listenerPosition[1];
136
+ this.#querySphere[2] = listenerPosition[2];
137
+ // radius stays 0 -> point-in-AABB
138
+
139
+ return bvh_query_user_data_generic(out, out_offset, this.#bvh, this.#bvh.root, this.#query);
140
+ }
141
+
142
+ /**
143
+ * Re-fit the entity's leaf to its current pose. No-op for an unknown entity.
144
+ *
145
+ * The translation this index holds is a live view over the transform's buffer, so it is already
146
+ * up to date - what it cannot do is announce itself. The owner calls this when the dataset says
147
+ * the transform changed.
148
+ *
149
+ * @param {number} entity
150
+ */
151
+ refresh(entity) {
152
+ const record = this.#records.get(entity);
153
+
154
+ if (record === undefined) {
155
+ return;
156
+ }
157
+
158
+ this.#writeBounds(record);
159
+ }
160
+
161
+ }
@@ -80,7 +80,8 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase implements GPUBuffe
80
80
  * @param {number} [offset]
81
81
  * @param {number} [size] defaults to the rest of the buffer
82
82
  * @returns {Promise<undefined>} rejects with an `OperationError` for a range this device will
83
- * not map, and raises the matching validation error on the device
83
+ * not map, and raises the matching validation error on the device; rejects with an `AbortError`,
84
+ * and raises nothing, when the buffer is unmapped or destroyed before the mapping resolves
84
85
  */
85
86
  mapAsync(mode: GPUMapModeFlags, offset?: number, size?: number): Promise<undefined>;
86
87
  /**
@@ -103,7 +104,7 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase implements GPUBuffe
103
104
  /**
104
105
  * End the mapping: every range handed out is written back into the buffer and then detached, so
105
106
  * a caller holding one sees the zero-length buffer a browser gives it rather than a stale view
106
- * that still appears to work.
107
+ * that still appears to work. A mapping still in flight is abandoned — see {@link mapAsync}.
107
108
  */
108
109
  unmap(): void;
109
110
  /**
@@ -112,7 +113,8 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase implements GPUBuffe
112
113
  * careful.
113
114
  *
114
115
  * An outstanding mapping goes with it: WebGPU detaches every mapped range when the buffer is
115
- * destroyed, so a range that kept working would hide a use-after-destroy.
116
+ * destroyed, so a range that kept working would hide a use-after-destroy. So does one still in
117
+ * flight, which is rejected with an `AbortError` — see {@link mapAsync}.
116
118
  */
117
119
  destroy(): void;
118
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SoftwareGPUBuffer.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/mock/SoftwareGPUBuffer.js"],"names":[],"mappings":"AAkBA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wEAFgB,SAAS;IAiJrB;;;;;;;OAOG;IACH,4EAFa,iBAAiB,CAI7B;IA5CD;;;;;OAKG;IACH,gFAFW,OAAO,EA4BjB;IAlID;;;OAGG;IACH,mBAEC;IAID;;;OAGG;IACH,8BAEC;IAQD;;;OAGG;IACH,kCAEC;IA4BD;;;;;;;;OAQG;IACH,wBAEC;IAID;;;;;;;;;;OAUG;IACH,uBAEC;IAID;;;OAGG;IACH,2BAEC;IA0HD;;;;;;;;;;;;OAYG;IACH,yCALW,MAAM,SACN,MAAM,GACJ,QAAQ,SAAS,CAAC,CAoB9B;IAsCD;;;;;;;;;;;;;;;OAeG;IACH,wBAPW,MAAM,SACN,MAAM,GAIJ,WAAW,CAgBvB;IAED;;;;OAIG;IACH,cAYC;IAED;;;;;;;OAOG;IACH,gBAiBC;IAGL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;;CAN9C;;;;;;;;YA/Xa,MAAM;;;;UACN,MAAM;;;;UACN,WAAW;;sCAtBa,4BAA4B"}
1
+ {"version":3,"file":"SoftwareGPUBuffer.d.ts","sourceRoot":"","sources":["../../../../../src/shade/device/mock/SoftwareGPUBuffer.js"],"names":[],"mappings":"AAkBA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wEAFgB,SAAS;IA2JrB;;;;;;;OAOG;IACH,4EAFa,iBAAiB,CAI7B;IA5CD;;;;;OAKG;IACH,gFAFW,OAAO,EA4BjB;IA5ID;;;OAGG;IACH,mBAEC;IAID;;;OAGG;IACH,8BAEC;IAQD;;;OAGG;IACH,kCAEC;IAsCD;;;;;;;;OAQG;IACH,wBAEC;IAID;;;;;;;;;;OAUG;IACH,uBAEC;IAID;;;OAGG;IACH,2BAEC;IA0HD;;;;;;;;;;;;;OAaG;IACH,yCANW,MAAM,SACN,MAAM,GACJ,QAAQ,SAAS,CAAC,CAkC9B;IAsCD;;;;;;;;;;;;;;;OAeG;IACH,wBAPW,MAAM,SACN,MAAM,GAIJ,WAAW,CAgBvB;IAED;;;;OAIG;IACH,cAcC;IAED;;;;;;;;OAQG;IACH,gBAmBC;IAGL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;;CAN9C;;;;;;;;YA5Za,MAAM;;;;UACN,MAAM;;;;UACN,WAAW;;sCAtBa,4BAA4B"}
@@ -72,6 +72,16 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase {
72
72
  return this.#mapState;
73
73
  }
74
74
 
75
+ /**
76
+ * The mapping in flight, while {@link mapState} is `"pending"`: a token only that call holds.
77
+ * {@link unmap} and {@link destroy} drop it, which is how the call learns on resolving that the
78
+ * mapping it was making has been abandoned — WebGPU rejects it with an `AbortError` rather than
79
+ * mapping a buffer somebody has since unmapped or released.
80
+ *
81
+ * @type {Object|null}
82
+ */
83
+ #pending_map = null;
84
+
75
85
  /**
76
86
  * The mapped region, meaningful only while {@link mapState} is `"mapped"`.
77
87
  *
@@ -269,7 +279,8 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase {
269
279
  * @param {number} [offset]
270
280
  * @param {number} [size] defaults to the rest of the buffer
271
281
  * @returns {Promise<undefined>} rejects with an `OperationError` for a range this device will
272
- * not map, and raises the matching validation error on the device
282
+ * not map, and raises the matching validation error on the device; rejects with an `AbortError`,
283
+ * and raises nothing, when the buffer is unmapped or destroyed before the mapping resolves
273
284
  */
274
285
  async mapAsync(mode, offset = 0, size = this.#size - offset) {
275
286
  const refusal = this.#map_refusal(mode, offset, size);
@@ -278,12 +289,25 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase {
278
289
  throw this.#refuse_mapping(refusal);
279
290
  }
280
291
 
292
+ const pending = {};
293
+
294
+ this.#pending_map = pending;
281
295
  this.#mapState = "pending";
282
296
 
283
297
  // a real mapping completes on another turn, and host code is written around that — resolving
284
298
  // synchronously would let code that forgot to await appear to work
285
299
  await Promise.resolve();
286
300
 
301
+ if (this.#pending_map !== pending) {
302
+ // unmap() or destroy() got there first. Not a validation error: abandoning a mapping is
303
+ // legal, and the rejection is the whole of what the caller hears about it
304
+ throw new DOMException(
305
+ `mapAsync: buffer '${this.label}' was ${this.#destroyed ? 'destroyed' : 'unmapped'} before mapping was resolved`,
306
+ 'AbortError'
307
+ );
308
+ }
309
+
310
+ this.#pending_map = null;
287
311
  this.#mapState = "mapped";
288
312
  this.#map_offset = offset;
289
313
  this.#map_size = size;
@@ -361,9 +385,11 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase {
361
385
  /**
362
386
  * End the mapping: every range handed out is written back into the buffer and then detached, so
363
387
  * a caller holding one sees the zero-length buffer a browser gives it rather than a stale view
364
- * that still appears to work.
388
+ * that still appears to work. A mapping still in flight is abandoned — see {@link mapAsync}.
365
389
  */
366
390
  unmap() {
391
+ this.#pending_map = null;
392
+
367
393
  for (const range of this.#mapped_ranges) {
368
394
  array_buffer_copy(range.data, 0, this.#data, range.offset, range.size);
369
395
 
@@ -383,13 +409,16 @@ export class SoftwareGPUBuffer extends SoftwareGPUObjectBase {
383
409
  * careful.
384
410
  *
385
411
  * An outstanding mapping goes with it: WebGPU detaches every mapped range when the buffer is
386
- * destroyed, so a range that kept working would hide a use-after-destroy.
412
+ * destroyed, so a range that kept working would hide a use-after-destroy. So does one still in
413
+ * flight, which is rejected with an `AbortError` — see {@link mapAsync}.
387
414
  */
388
415
  destroy() {
389
416
  if (this.#destroyed) {
390
417
  return;
391
418
  }
392
419
 
420
+ this.#pending_map = null;
421
+
393
422
  for (const range of this.#mapped_ranges) {
394
423
  range.data.transfer();
395
424
  }
@@ -72,7 +72,8 @@ export class GPUProfileSession {
72
72
  readonly onBytesWritten: any;
73
73
  /**
74
74
  * Fires once, with the finished capture, however the session ended — `stop()` or the frame
75
- * limit running out. Both paths land here so a caller can await one thing.
75
+ * limit running out — once the frames begun before that have landed. Both paths land here so a
76
+ * caller can await one thing.
76
77
  *
77
78
  * @readonly
78
79
  * @type {Signal<ArrayBuffer>}
@@ -83,6 +84,10 @@ export class GPUProfileSession {
83
84
  */
84
85
  get level(): number;
85
86
  /**
87
+ * Whether new frames are being taken: from `start()` until `stop()` or the frame limit. A session
88
+ * that is no longer running can still be waiting on frames begun before that; {@link done} says
89
+ * when it has them.
90
+ *
86
91
  * @returns {boolean}
87
92
  */
88
93
  get is_running(): boolean;
@@ -123,7 +128,8 @@ export class GPUProfileSession {
123
128
  */
124
129
  begin_frame(frame_index: number, cpu_begin_ms: number): GPUFrameRecorder | null;
125
130
  /**
126
- * Close a recorder opened by {@link begin_frame} and commit what it collected.
131
+ * Close a recorder opened by {@link begin_frame} and commit what it collected — after `stop()`
132
+ * too, which is waiting for exactly this.
127
133
  *
128
134
  * @param {GPUFrameRecorder} recorder
129
135
  * @param {number} cpu_submit_ms
@@ -133,9 +139,10 @@ export class GPUProfileSession {
133
139
  /**
134
140
  * Commit one frame.
135
141
  *
136
- * Ignored when the session is not running, so a frame that lands after `stop()` — the readback
137
- * for a frame already submitted, which is the ordinary case — is dropped rather than throwing
138
- * inside somebody's render loop.
142
+ * Taken for as long as the stream is open: from `start()` until the capture is finished, which
143
+ * `stop()` holds off until every frame already begun has landed. Ignored before `start()`, once
144
+ * the capture is finished, and past the frame limit — frames begun before the limit was reached
145
+ * still land after it — rather than throwing inside somebody's render loop.
139
146
  *
140
147
  * @param {GPUProfileFrame} frame
141
148
  * @returns {void}
@@ -151,17 +158,24 @@ export class GPUProfileSession {
151
158
  */
152
159
  snapshot(): ArrayBuffer;
153
160
  /**
154
- * End the recording and hand back the capture.
161
+ * End the recording, and resolve with the capture once every frame already begun has landed.
162
+ *
163
+ * No frame is begun after this — {@link begin_frame} hands out nothing — but the ones that were
164
+ * are kept. A frame is committed when its timestamp readback resolves, a `mapAsync` behind its
165
+ * submit, so when `stop()` is called the last frame or two are always still on their way; behind
166
+ * a first-use pipeline compile, which holds the queue for seconds, every frame of a short capture
167
+ * can be. Finishing the stream on the spot threw all of those away without a word.
155
168
  *
156
- * Calling it twice returns the same bytes rather than complaining; a session that hit its
157
- * frame limit has already stopped itself, and the caller awaiting `stop()` should still get
169
+ * Calling it again resolves with the same capture rather than complaining; a session that hit
170
+ * its frame limit has already stopped itself, and the caller awaiting `stop()` should still get
158
171
  * the capture.
159
172
  *
160
- * @returns {ArrayBuffer}
173
+ * @returns {Promise<ArrayBuffer>}
161
174
  */
162
- stop(): ArrayBuffer;
175
+ stop(): Promise<ArrayBuffer>;
163
176
  /**
164
- * Resolves with the capture when the session ends, whichever way it ends.
177
+ * Resolves with the capture when the session ends, whichever way it ends — after the frames
178
+ * begun before the end have landed.
165
179
  *
166
180
  * @returns {Promise<ArrayBuffer>}
167
181
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GPUProfileSession.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/device/timing/profile/GPUProfileSession.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IAqGI;;;;;;OAMG;IACH;QAL4B,KAAK,GAAtB,MAAM;QACW,WAAW,GAA5B,MAAM;QAEW,IAAI,GAArB,MAAM;OAkBhB;IA7DD;;;;;;;OAOG;IACH,6BAEC;IAED;;;;;;OAMG;IACH,aAFU,MAAM,CAEkB;IAElC;;;;;OAKG;IACH,6BAA8B;IAE9B;;;;;;OAMG;IACH,yBAA0B;IA2B1B;;OAEG;IACH,oBAEC;IAED;;OAEG;IACH,0BAEC;IAED;;OAEG;IACH,8BAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;;;OAKG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,SAFa,IAAI,CAqBhB;IAED;;;;;;;;;;;OAWG;IACH,yBAJW,MAAM,gBACN,MAAM,GACJ,gBAAgB,GAAC,IAAI,CAkBjC;IAED;;;;;;OAMG;IACH,oBAJW,gBAAgB,iBAChB,MAAM,GACJ,IAAI,CAMhB;IAsCD;;;;;;;;;OASG;IACH,oBAHW,eAAe,GACb,IAAI,CAkEhB;IAED;;;;;;;OAOG;IACH,YAFa,WAAW,CAMvB;IAED;;;;;;;;OAQG;IACH,QAFa,WAAW,CAiBvB;IAOD;;;;OAIG;IACH,iCAaC;;CACJ;8BAzcY,OAAO,sBAAsB,EAAE,eAAe;+BAZ5B,qBAAqB;iCAFnB,uBAAuB"}
1
+ {"version":3,"file":"GPUProfileSession.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/device/timing/profile/GPUProfileSession.js"],"names":[],"mappings":"AA2BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH;IAkHI;;;;;;OAMG;IACH;QAL4B,KAAK,GAAtB,MAAM;QACW,WAAW,GAA5B,MAAM;QAEW,IAAI,GAArB,MAAM;OAkBhB;IA9DD;;;;;;;OAOG;IACH,6BAEC;IAED;;;;;;OAMG;IACH,aAFU,MAAM,CAEkB;IAElC;;;;;OAKG;IACH,6BAA8B;IAE9B;;;;;;;OAOG;IACH,yBAA0B;IA2B1B;;OAEG;IACH,oBAEC;IAED;;;;;;OAMG;IACH,0BAEC;IAED;;OAEG;IACH,8BAEC;IAED;;OAEG;IACH,4BAEC;IAED;;;;;OAKG;IACH,2BAEC;IAED;;;;;;OAMG;IACH,SAFa,IAAI,CAqBhB;IAED;;;;;;;;;;;OAWG;IACH,yBAJW,MAAM,gBACN,MAAM,GACJ,gBAAgB,GAAC,IAAI,CAoBjC;IAED;;;;;;;OAOG;IACH,oBAJW,gBAAgB,iBAChB,MAAM,GACJ,IAAI,CAiBhB;IAwDD;;;;;;;;;;OAUG;IACH,oBAHW,eAAe,GACb,IAAI,CAWhB;IAsED;;;;;;;OAOG;IACH,YAFa,WAAW,CAMvB;IAED;;;;;;;;;;;;;;OAcG;IACH,QAFa,QAAQ,WAAW,CAAC,CAehC;IAkBD;;;;;OAKG;IACH,iCAaC;;CACJ;8BAxhBY,OAAO,sBAAsB,EAAE,eAAe;+BAZ5B,qBAAqB;iCAFnB,uBAAuB"}