@woosh/meep-engine 3.33.0 → 3.34.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 (419) 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/playground/caldera/main.js +73 -60
  71. package/src/shade/playground/vgeo_runtime/main.js +25 -77
  72. package/src/shade/playground/vgeo_scene/main.js +2231 -2217
  73. package/src/shade/renderer/GraphicsContext.d.ts +7 -0
  74. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  75. package/src/shade/renderer/GraphicsContext.js +11 -2
  76. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  77. package/src/shade/renderer/Renderer.js +38 -0
  78. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +8 -0
  79. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  80. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +21 -0
  81. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +1 -1
  82. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  83. package/src/shade/renderer/geometry/GPUGeometryManager.js +9 -10
  84. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +5 -0
  85. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +11 -0
  87. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts +12 -0
  88. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.d.ts.map +1 -1
  89. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js +25 -0
  90. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts +115 -101
  91. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  92. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +282 -140
  93. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +30 -0
  94. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +4 -1
  95. package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +536 -0
  96. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts +6 -2
  97. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.d.ts.map +1 -1
  98. package/src/shade/renderer/geometry/virtual/runtime/VGeoFeedbackLoop.js +68 -19
  99. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts +2 -1
  100. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.d.ts.map +1 -1
  101. package/src/shade/renderer/geometry/virtual/runtime/VGeoPageFetcher.js +17 -1
  102. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts +4 -0
  103. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
  104. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +42 -12
  105. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts +93 -12
  106. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.d.ts.map +1 -1
  107. package/src/shade/renderer/geometry/virtual/runtime/VGeoViewCut.js +166 -20
  108. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.d.ts.map +1 -1
  109. package/src/shade/renderer/geometry/virtual/runtime/cut/VGEO_CUT_PARAMS_STRUCT.js +30 -7
  110. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.d.ts.map +1 -1
  111. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_access.js +12 -5
  112. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.d.ts.map +1 -1
  113. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_claim.js +2 -2
  114. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
  115. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +23 -13
  116. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.d.ts.map +1 -1
  117. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_queue_remainder.js +1 -2
  118. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.d.ts.map +1 -1
  119. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_seed.js +1 -2
  120. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.d.ts.map +1 -1
  121. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_traverse.js +10 -6
  122. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts +45 -17
  123. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.d.ts.map +1 -1
  124. package/src/shade/renderer/geometry/virtual/runtime/cut/vgeo_cut_feedback_layout.js +61 -19
  125. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts +8 -11
  126. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.d.ts.map +1 -1
  127. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_if_enabled.js +9 -16
  128. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.d.ts.map +1 -1
  129. package/src/shade/renderer/geometry/virtual/runtime/graph_vgeo_expand_instances_to_meshlets.js +25 -10
  130. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_FEEDBACK_OFFSET.js +10 -8
  131. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.d.ts +1 -0
  132. package/src/shade/renderer/geometry/virtual/runtime/layout/VGEO_INSTANCE_OFFSET.js +19 -7
  133. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts +4 -2
  134. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.d.ts.map +1 -1
  135. package/src/shade/renderer/geometry/virtual/runtime/make_vgeo_page_worker.js +4 -2
  136. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts +4 -0
  137. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.d.ts.map +1 -1
  138. package/src/shade/renderer/global_illumination/brick4/Brick4LightMap.js +7 -0
  139. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.d.ts.map +1 -1
  140. package/src/shade/renderer/global_illumination/lpv/GPULightProbeVolume.js +1 -0
  141. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  142. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  143. package/src/shade/renderer/material/GPUMaterialManager.js +2 -0
  144. package/src/shade/renderer/particles/DESIGN.md +4 -10
  145. package/src/shade/renderer/particles/ParticleConstants.d.ts +1 -3
  146. package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
  147. package/src/shade/renderer/particles/ParticleConstants.js +1 -3
  148. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts +3 -4
  149. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.d.ts.map +1 -1
  150. package/src/shade/renderer/particles/shaders/chunk_particle_billboard_vertex.js +3 -4
  151. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +45 -0
  152. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -0
  153. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +99 -0
  154. package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.d.ts +4 -4
  155. package/src/shade/renderer/rasterize/bucket/rasterization_opaque_buckets.js +36 -36
  156. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts +15 -0
  157. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.d.ts.map +1 -0
  158. package/src/shade/renderer/rasterize/bucket/shader_gather_bucket.js +103 -0
  159. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts +3 -0
  160. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  161. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +6 -1
  162. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts +26 -0
  163. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.d.ts.map +1 -0
  164. package/src/shade/renderer/rasterize/expand/bucket/meshlet/graph_extract_meshlets_from_bucket.js +91 -0
  165. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts +22 -0
  166. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.d.ts.map +1 -0
  167. package/src/shade/renderer/rasterize/fast/graph_gather_meshes_from_buckets.js +102 -0
  168. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts +2 -1
  169. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.d.ts.map +1 -1
  170. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +28 -24
  171. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  172. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +32 -28
  173. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  174. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +9 -105
  175. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +5 -0
  176. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  177. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +11 -0
  178. package/src/shade/renderer/scene/GPUSceneContext.d.ts +11 -3
  179. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  180. package/src/shade/renderer/scene/GPUSceneContext.js +93 -21
  181. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +4 -1
  182. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
  183. package/src/shade/renderer/scene/rows/GPUSceneRows.js +5 -23
  184. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  185. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +63 -0
  186. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts +12 -0
  187. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.d.ts.map +1 -0
  188. package/src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.js +11 -0
  189. package/src/shade/renderer/shadow/map/Shadowmap.d.ts +15 -0
  190. package/src/shade/renderer/shadow/map/Shadowmap.d.ts.map +1 -1
  191. package/src/shade/renderer/shadow/map/Shadowmap.js +17 -0
  192. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts +25 -0
  193. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.d.ts.map +1 -0
  194. package/src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.js +22 -0
  195. package/src/shade/renderer/shadow/map/shadowmap_update_score.d.ts.map +1 -1
  196. package/src/shade/renderer/shadow/map/shadowmap_update_score.js +5 -2
  197. package/src/shade/renderer/texture/TextureManager.d.ts +2 -1
  198. package/src/shade/renderer/texture/TextureManager.d.ts.map +1 -1
  199. package/src/shade/renderer/texture/TextureManager.js +4 -1
  200. package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +1 -1
  201. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts +9 -1
  202. package/src/shade/renderer/util/Uint32BufferSamplingStats.d.ts.map +1 -1
  203. package/src/shade/renderer/util/Uint32BufferSamplingStats.js +55 -5
  204. package/src/shade/renderer/view/ViewManager.d.ts +7 -1
  205. package/src/shade/renderer/view/ViewManager.d.ts.map +1 -1
  206. package/src/shade/renderer/view/ViewManager.js +17 -1
  207. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  208. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +1 -0
  209. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts +0 -20
  210. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.d.ts.map +0 -1
  211. package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +0 -35
  212. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts +0 -12
  213. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.d.ts.map +0 -1
  214. package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +0 -17
  215. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts +0 -14
  216. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.d.ts.map +0 -1
  217. package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +0 -18
  218. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts +0 -52
  219. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.d.ts.map +0 -1
  220. package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +0 -58
  221. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts +0 -47
  222. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.d.ts.map +0 -1
  223. package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +0 -58
  224. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts +0 -16
  225. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.d.ts.map +0 -1
  226. package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +0 -21
  227. package/editor/particles/rebuildParticleEmitter.d.ts +0 -11
  228. package/editor/particles/rebuildParticleEmitter.d.ts.map +0 -1
  229. package/editor/particles/rebuildParticleEmitter.js +0 -31
  230. package/editor/process/ParticleEmitterRebuildProcess.d.ts +0 -66
  231. package/editor/process/ParticleEmitterRebuildProcess.d.ts.map +0 -1
  232. package/editor/process/ParticleEmitterRebuildProcess.js +0 -217
  233. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts +0 -18
  234. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.d.ts.map +0 -1
  235. package/editor/process/symbolic/ParticleEmitterSymbolicDisplay.js +0 -140
  236. package/src/engine/animation/removeEntityGenericEffect.d.ts +0 -18
  237. package/src/engine/animation/removeEntityGenericEffect.d.ts.map +0 -1
  238. package/src/engine/animation/removeEntityGenericEffect.js +0 -160
  239. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts +0 -16
  240. package/src/engine/animation/removeEntityWithMeshParticlesEffect.d.ts.map +0 -1
  241. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +0 -194
  242. package/src/engine/graphics/ecs/sprite/Sprite.d.ts +0 -15
  243. package/src/engine/graphics/ecs/sprite/Sprite.d.ts.map +0 -1
  244. package/src/engine/graphics/ecs/sprite/Sprite.js +0 -14
  245. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts +0 -11
  246. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +0 -1
  247. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +0 -144
  248. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.d.ts.map +0 -1
  249. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +0 -61
  250. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +0 -1
  251. package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +0 -229
  252. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts +0 -6
  253. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.d.ts.map +0 -1
  254. package/src/engine/graphics/particles/particular/engine/emitter/EmissionFromType.js +0 -8
  255. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts +0 -7
  256. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.d.ts.map +0 -1
  257. package/src/engine/graphics/particles/particular/engine/emitter/EmissionShapeType.js +0 -9
  258. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts +0 -13
  259. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.d.ts.map +0 -1
  260. package/src/engine/graphics/particles/particular/engine/emitter/PARTICLE_ATTRIBUTES.js +0 -12
  261. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts +0 -3
  262. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.d.ts.map +0 -1
  263. package/src/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +0 -84
  264. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +0 -285
  265. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +0 -1
  266. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +0 -1201
  267. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts +0 -19
  268. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.d.ts.map +0 -1
  269. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +0 -67
  270. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts +0 -197
  271. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.d.ts.map +0 -1
  272. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +0 -398
  273. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts +0 -5
  274. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.d.ts.map +0 -1
  275. package/src/engine/graphics/particles/particular/engine/emitter/ParticleParameters.js +0 -4
  276. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +0 -162
  277. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +0 -1
  278. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -472
  279. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +0 -10
  280. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +0 -1
  281. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +0 -37
  282. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts +0 -9
  283. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.d.ts.map +0 -1
  284. package/src/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +0 -25
  285. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts +0 -19
  286. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.d.ts.map +0 -1
  287. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +0 -28
  288. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts +0 -19
  289. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.d.ts.map +0 -1
  290. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +0 -162
  291. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts +0 -5
  292. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.d.ts.map +0 -1
  293. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationUpgrader_0_1.js +0 -103
  294. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts +0 -8
  295. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.d.ts.map +0 -1
  296. package/src/engine/graphics/particles/particular/engine/emitter/write_particle_patch_uv.js +0 -28
  297. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts +0 -2
  298. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.d.ts.map +0 -1
  299. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +0 -2
  300. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts +0 -2
  301. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.d.ts.map +0 -1
  302. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTableFlags.js +0 -2
  303. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts +0 -60
  304. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.d.ts.map +0 -1
  305. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.js +0 -128
  306. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts +0 -47
  307. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.d.ts.map +0 -1
  308. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +0 -77
  309. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts +0 -45
  310. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.d.ts.map +0 -1
  311. package/src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js +0 -93
  312. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts +0 -95
  313. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.d.ts.map +0 -1
  314. package/src/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +0 -239
  315. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts +0 -3
  316. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGBA_LUT_HEATMAP_IR.d.ts.map +0 -1
  317. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts +0 -6
  318. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_INFERNO.d.ts.map +0 -1
  319. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_TURBO.d.ts.map +0 -1
  320. package/src/engine/graphics/particles/particular/engine/parameter/sample/RGB_LUT_VIRIDIS.d.ts.map +0 -1
  321. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts +0 -13
  322. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.d.ts.map +0 -1
  323. package/src/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +0 -28
  324. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts +0 -9
  325. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.d.ts.map +0 -1
  326. package/src/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +0 -24
  327. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts +0 -13
  328. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.d.ts.map +0 -1
  329. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +0 -27
  330. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts +0 -33
  331. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.d.ts.map +0 -1
  332. package/src/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +0 -80
  333. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +0 -49
  334. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +0 -1
  335. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +0 -135
  336. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts +0 -7
  337. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.d.ts.map +0 -1
  338. package/src/engine/graphics/particles/particular/engine/shader/debugAtlas.js +0 -14
  339. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts +0 -41
  340. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.d.ts.map +0 -1
  341. package/src/engine/graphics/particles/particular/engine/simulator/AbstractSimulationStep.js +0 -59
  342. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts +0 -4
  343. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.d.ts.map +0 -1
  344. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +0 -56
  345. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts +0 -4
  346. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.d.ts.map +0 -1
  347. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +0 -84
  348. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts +0 -4
  349. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.d.ts.map +0 -1
  350. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +0 -80
  351. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts +0 -29
  352. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.d.ts.map +0 -1
  353. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepDefinition.js +0 -43
  354. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts +0 -5
  355. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.d.ts.map +0 -1
  356. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +0 -104
  357. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts +0 -9
  358. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.d.ts.map +0 -1
  359. package/src/engine/graphics/particles/particular/engine/simulator/SimulationStepType.js +0 -11
  360. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts +0 -9
  361. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.d.ts.map +0 -1
  362. package/src/engine/graphics/particles/particular/engine/simulator/update_parameters.js +0 -64
  363. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts +0 -9
  364. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.d.ts.map +0 -1
  365. package/src/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +0 -172
  366. package/src/engine/graphics/particles/particular/engine/utils/distribute_points_on_indexed_triangles.d.ts.map +0 -1
  367. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +0 -20
  368. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +0 -1
  369. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +0 -84
  370. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts +0 -81
  371. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.d.ts.map +0 -1
  372. package/src/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +0 -200
  373. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts +0 -6
  374. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.d.ts.map +0 -1
  375. package/src/engine/graphics/particles/particular/engine/utils/volume/SamplingFunctionKind.js +0 -8
  376. package/src/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.d.ts.map +0 -1
  377. package/src/engine/graphics/particles/particular/group/Operation.d.ts +0 -20
  378. package/src/engine/graphics/particles/particular/group/Operation.d.ts.map +0 -1
  379. package/src/engine/graphics/particles/particular/group/Operation.js +0 -20
  380. package/src/engine/graphics/particles/particular/group/OperationType.d.ts +0 -7
  381. package/src/engine/graphics/particles/particular/group/OperationType.d.ts.map +0 -1
  382. package/src/engine/graphics/particles/particular/group/OperationType.js +0 -9
  383. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts +0 -27
  384. package/src/engine/graphics/particles/particular/group/ParticleAttribute.d.ts.map +0 -1
  385. package/src/engine/graphics/particles/particular/group/ParticleAttribute.js +0 -27
  386. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts +0 -8
  387. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.d.ts.map +0 -1
  388. package/src/engine/graphics/particles/particular/group/ParticleAttributeType.js +0 -11
  389. package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts +0 -7
  390. package/src/engine/graphics/particles/particular/group/ParticleDataType.d.ts.map +0 -1
  391. package/src/engine/graphics/particles/particular/group/ParticleDataType.js +0 -10
  392. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts +0 -24
  393. package/src/engine/graphics/particles/particular/group/ParticleSpecification.d.ts.map +0 -1
  394. package/src/engine/graphics/particles/particular/group/ParticleSpecification.js +0 -48
  395. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts +0 -7
  396. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.d.ts.map +0 -1
  397. package/src/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +0 -20
  398. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts +0 -6
  399. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.d.ts.map +0 -1
  400. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.js +0 -162
  401. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts +0 -8
  402. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +0 -19
  404. package/src/engine/graphics3/ParticleEmitterSystem.d.ts +0 -77
  405. package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +0 -1
  406. package/src/engine/graphics3/ParticleEmitterSystem.js +0 -307
  407. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +0 -10
  408. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +0 -1
  409. package/src/engine/graphics3/ParticleEmitterSystem3.js +0 -10
  410. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts +0 -61
  411. package/src/engine/graphics3/particles/GPUParticularRenderer.d.ts.map +0 -1
  412. package/src/engine/graphics3/particles/GPUParticularRenderer.js +0 -627
  413. package/src/engine/graphics3/particles/particle_gpu_records.d.ts +0 -85
  414. package/src/engine/graphics3/particles/particle_gpu_records.d.ts.map +0 -1
  415. package/src/engine/graphics3/particles/particle_gpu_records.js +0 -227
  416. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts +0 -35
  417. package/src/shade/renderer/particles/shaders/shader_particle_render.d.ts.map +0 -1
  418. package/src/shade/renderer/particles/shaders/shader_particle_render.js +0 -135
  419. /package/src/engine/graphics/{particles/particular/engine/utils → geometry}/distribute_points_on_indexed_triangles.d.ts +0 -0
@@ -134,6 +134,13 @@ export class GraphicsContext {
134
134
  get gpu_memory_usage(): number;
135
135
  initialize(): Promise<void>;
136
136
  update(): void;
137
+ /**
138
+ * Release what this context holds on the device: the texture cache and the mipmap generator,
139
+ * the materials, the geometry manager — the meshlet arena every scene shares, the geometry table
140
+ * and the BLAS — the buffer pools and the texture pool. The scene contexts go first, because a
141
+ * scene gives its skinned clones back to the geometry manager; `Renderer.destroy()` keeps that
142
+ * order.
143
+ */
137
144
  destroy(): void;
138
145
  /**
139
146
  * @readonly
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AAmCA;IAqKI,yBAiCC;IArMD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;;OAIG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;;OAIG;IACH,2BAFU,0BAA0B,CAEV;IAE1B;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAQC;IAED;;;OAGG;IACH,wBAEC;IAqCD;;;;;;;;OAQG;IACH,6DANW,sBAAsB,aACtB,oBAAoB,EAAE,cACtB;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,QA2B9D;IAED;;;;;;;;;OASG;IACH,8DAJW,sBAAsB,SACtB,MAAM,aACN,oBAAoB,QA0C9B;IAED;;;;OAIG;IACH,gCAHW,gBAAgB,GACd,gBAAgB,CAI5B;IAED;;OAEG;IACH,+BAgBC;IAED,4BAEC;IAED,eAoDC;IAED,gBAoBC;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;+BArZY,OAAO,0CAA0C,EAAE,gBAAgB;qCACnE,OAAO,kDAAkD,EAAE,sBAAsB;2BAKjF,OAAO,mCAAmC,EAAE,YAAY;mCAjBlC,kCAAkC;mCAGlC,kCAAkC;kCADnC,wBAAwB;2CAEf,mDAAmD;oCAH1D,2CAA2C;sCAbzC,6CAA6C;sCAC7C,6CAA6C;uCAF5C,8CAA8C;qCAIhD,0CAA0C;+BAgBhD,6BAA6B;sCACtB,4CAA4C;iCAfjD,+BAA+B;mCAC7B,gCAAgC;yCAC1B,sCAAsC;0CAGrC,uCAAuC;yCACxC,sCAAsC;2CAFpC,wCAAwC;oCAS/C,kCAAkC;iCAVtB,8BAA8B"}
1
+ {"version":3,"file":"GraphicsContext.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/GraphicsContext.js"],"names":[],"mappings":"AAmCA;IAqKI,yBAiCC;IArMD;;OAEG;IACH,YAFU,kBAAkB,CAEjB;IAEX;;OAEG;IACH,WAFU,kBAAkB,CAElB;IAOV;;OAEG;IACH,UAFU,iBAAiB,CAElB;IAET;;;OAGG;IACH,qDAOC;IAOD;;;OAGG;IACH,6CAEC;IAED;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,mBAFU,sBAAsB,CAEd;IAGlB;;OAEG;IACH,gBAFU,oBAAoB,CAEf;IAEf;;OAEG;IACH,UAFU,cAAc,CAEf;IAET;;;;OAIG;IACH,kBAFU,qBAAqB,CAEd;IAEjB;;OAEG;IACH,aAFU,gBAAgB,CAEd;IAQZ;;;OAGG;IACH,uBAFU,kBAAkB,CAEN;IAEtB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;;OAIG;IACH,0BAFU,yBAAyB,CAEV;IAEzB;;;;OAIG;IACH,yBAFU,wBAAwB,CAEV;IAExB;;;;OAIG;IACH,2BAFU,0BAA0B,CAEV;IAE1B;;;OAGG;IACH,oBAFU,mBAAmB,CAEV;IAUnB;;;OAGG;IACH,8BAEC;IAED,uBAQC;IAED;;;OAGG;IACH,wBAEC;IAqCD;;;;;;;;OAQG;IACH,6DANW,sBAAsB,aACtB,oBAAoB,EAAE,cACtB;QAAC,MAAM,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,QA2B9D;IAED;;;;;;;;;OASG;IACH,8DAJW,sBAAsB,SACtB,MAAM,aACN,oBAAoB,QA0C9B;IAED;;;;OAIG;IACH,gCAHW,gBAAgB,GACd,gBAAgB,CAI5B;IAED;;OAEG;IACH,+BAgBC;IAED,4BAEC;IAED,eAoDC;IAED;;;;;;OAMG;IACH,gBAsBC;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;+BA9ZY,OAAO,0CAA0C,EAAE,gBAAgB;qCACnE,OAAO,kDAAkD,EAAE,sBAAsB;2BAKjF,OAAO,mCAAmC,EAAE,YAAY;mCAjBlC,kCAAkC;mCAGlC,kCAAkC;kCADnC,wBAAwB;2CAEf,mDAAmD;oCAH1D,2CAA2C;sCAbzC,6CAA6C;sCAC7C,6CAA6C;uCAF5C,8CAA8C;qCAIhD,0CAA0C;+BAgBhD,6BAA6B;sCACtB,4CAA4C;iCAfjD,+BAA+B;mCAC7B,gCAAgC;yCAC1B,sCAAsC;0CAGrC,uCAAuC;yCACxC,sCAAsC;2CAFpC,wCAAwC;oCAS/C,kCAAkC;iCAVtB,8BAA8B"}
@@ -407,9 +407,14 @@ export class GraphicsContext {
407
407
  this.buffer_allocator_upload.update();
408
408
  }
409
409
 
410
+ /**
411
+ * Release what this context holds on the device: the texture cache and the mipmap generator,
412
+ * the materials, the geometry manager — the meshlet arena every scene shares, the geometry table
413
+ * and the BLAS — the buffer pools and the texture pool. The scene contexts go first, because a
414
+ * scene gives its skinned clones back to the geometry manager; `Renderer.destroy()` keeps that
415
+ * order.
416
+ */
410
417
  destroy() {
411
- // TODO implement
412
-
413
418
  this.textures.destroy();
414
419
 
415
420
  this.virtual_textures.destroy();
@@ -420,12 +425,16 @@ export class GraphicsContext {
420
425
  this.#materials_resident.destroy();
421
426
  }
422
427
 
428
+ this.geometries.destroy();
429
+
423
430
  this.buffer_allocator_main.destroy();
424
431
  this.buffer_allocator_native.destroy();
425
432
  this.buffer_allocator_staging.destroy();
426
433
  this.buffer_allocator_upload.destroy();
427
434
  this.buffer_allocator_readback.destroy();
428
435
 
436
+ this.allocator_textures.destroy();
437
+
429
438
  this.#collection_limits.destroy();
430
439
  }
431
440
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../../../src/shade/renderer/Renderer.js"],"names":[],"mappings":"AA8GA;IAOI,0BAEC;IAED;;OAEG;IACH,0BAAQ;IAER;;;;;;OAMG;IACH,kDAEC;IAED;;OAEG;IACH,kBAAO;IAYP;;;OAGG;IACH,2BAEC;IAaD,wCAGC;IAED,uCAEC;IAED;;;;OAIG;IACH,wBAFU,yBAAyB,CAEoB;IAEvD;;;;;;;OAOG;IACH,mBAFU,qBAAqB,CAEkB;IAEjD;;;OAGG;IACH,QAFU,cAAc,CAEM;IAE9B;;;;;;;;;OASG;IACH,2BAFU,OAAO,CAEiB;IAElC,6BAA4B;IAC5B,8BAA4B;IAC5B;;;;OAIG;IACH,mCAAkC;IAClC;;;;;;;OAOG;IACH,mCAFU,OAAO,CAEyB;IAW1C,oCAIC;IAED,mCAEC;IAED,+BAA6B;IAC7B,4CAA0C;IAkB1C,qCAKC;IArBD;;;;;;;;;;OAUG;IACH,oCAGC;IASD;;;;;;;OAOG;IACH,0BAFU,OAAO,CAEe;IAQhC;;;;;OAKG;IACH,oCAOC;IAjBD,mCAEC;IAiBD;;;;;;;;;OASG;IACH,6BAFU,OAAO,CAEmB;IAWpC;;;;;OAKG;IACH,8BAA+C;IAE/C;;;;;;;;OAQG;IACH,6BAFU,OAAO,CAEmB;IAEpC;;;;;;;;;;;;;;OAcG;IACH,8BAFU,OAAO,CAEoB;IAErC;;;;;;;;;;OAUG;IACH,qBAFU,OAAO,CAEW;IAU5B;;;;;OAKG;IACH,wBAA0C;IAE1C;;;;;;;;OAQG;IACH,eAFU,UAAU,GAAC,QAAQ,CAEF;IAU3B;;;;OAIG;IACH,gCAAwD;IAExD;;;OAGG;IACH,4BAFU,OAAO,CAEiB;IAKlC;;;OAGG;IACH,yBAEC;IAOD;;;OAGG;IACH,gCAEC;IAcD;;;;;;;;;OASG;IACH,qBAA+B;IAE/B;;;;;;;;;;OAUG;IACH,qBAA+B;IAgB/B;;;OAGG;IACH,yCAeC;IAED;;;OAGG;IACH,wCAEC;IA0BD;;;OAGG;IACH,iCAEC;IAED;;;;OAIG;IACH,2BAEC;IAQD;;;OAGG;IACH,+CAIC;IAED;;;OAGG;IACH,gDAIC;IAwCD;;;OAGG;IACH,+BAcC;IA1BD;;;OAGG;IACH,0BAEC;IAsBD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAFU,iBAAiB,GAAC,IAAI,CAET;IAEvB;;OAEG;IACH;;;;;;;;;;;;;;OAcG;IACH,yBAHW,eAAe,GACb,eAAe,CAI3B;IAED;;;;;OAKG;IACH,4BAHW,eAAe,GACb,OAAO,CAInB;IAED;;;OAGG;IACH,uBAHW,UAAU,GACR,MAAM,CAIlB;IAUD;;;;;;;;;;;;;;;;;OAiBG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAsB7B;IAED;;;;;OAKG;IACH,qCAHW,iBAAiB,GACf,OAAO,CAYnB;IAED;;OAEG;IACH,8BAFa,MAAM,CAIlB;IAgBD;;;;OAIG;IACH,yBAHW,KAAK,GACJ,gBAAgB,CAW3B;IAED;;;OAGG;IACH,6BAYC;IAED;;;;OAIG;IACH,gCAHW,KAAK,GACH,2BAA2B,CAcvC;IAGD;;;OAGG;IACH,kBAFW,KAAK,QAyBf;IA8OD,oGAAoG;IACpG,kDAA2C;IAO3C;;;;OAIG;IACH,0BAEC;IAiBD;;;;;;OAMG;IACH,qBAHW,eAAe,GACb,iBAAiB,CAW7B;IAgBD;;;;;;OAMG;IACH,cAFU,iBAAiB,CAEU;IAErC;;;;;;OAMG;IACH,eAgBC;IAiFD;;;;;;OAMG;IACH;QAJsC,OAAO;QACd,MAAM;QACT,UAAU,GAA3B,MAAM;sBAoOhB;IAUD;;;;;;;;;;;;;;;;;OAiBG;IACH,WAFa,IAAI,CAuChB;IAgCD,4BAwBC;IAqID;;;;;OAKG;IACH,UAHW,MAAM,KACN,MAAM,QAgBhB;IAoFD,0CAMC;IAED;;;;;;;;;;;;;;;OAeG;IACH,eAVW,iBAAiB,SACjB,KAAK,uBACL,MAAM,GAIJ,OAAO,CAyBnB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,yBARW,iBAAiB,SACjB,KAAK,sBACL,MAAM,UACN,iBAAiB,GACf,OAAO,CAiBnB;;CA4gCJ;+BAv2FY,OAAO,8CAA8C,EAAE,gBAAgB;gCACvE,OAAO,+CAA+C,EAAE,iBAAiB;gCACzE,OAAO,+BAA+B,EAAE,iBAAiB;8BACzD,OAAO,gCAAgC,EAAE,eAAe;gCACxD,OAAO,gDAAgD,EAAE,iBAAiB;8BAC1E,OAAO,4BAA4B,EAAE,eAAe;oBACpD,OAAO,kBAAkB,EAAE,KAAK;6BAvBhB,yBAAyB;0CACZ,gCAAgC;sCACpC,4BAA4B;+BACnC,6CAA6C;2BA1BjD,yCAAyC;6BAFvC,4CAA4C;8BAD3C,2CAA2C;4BAwC7C,uBAAuB;gCA7CnB,sBAAsB;oBApClC,4BAA4B;kCA8Ed,gCAAgC;2BA3DvC,2BAA2B;iCAyDrB,0CAA0C;4CA3C/B,+DAA+D;yBAgClF,yBAAyB;kCAChB,kCAAkC;kCAQlC,wBAAwB;oBA7BtC,0BAA0B;uCAPP,sDAAsD"}
@@ -1994,6 +1994,14 @@ export class Renderer {
1994
1994
  */
1995
1995
  #frame_profile_session = null;
1996
1996
 
1997
+ /**
1998
+ * The virtual-geometry runtime whose frame the frame in {@link #frame_command_ctx} opened, and
1999
+ * null otherwise — so a frame that throws before closing it still closes it.
2000
+ *
2001
+ * @type {import("./geometry/virtual/runtime/GPUVirtualGeometryRuntime.js").GPUVirtualGeometryRuntime|null}
2002
+ */
2003
+ #frame_virtual_geometry = null;
2004
+
1997
2005
  /**
1998
2006
  * Finish the context a frame left behind when it threw before its teardown: the scene tick, the
1999
2007
  * shadow draw and every extension phase run between the context's creation and the teardown,
@@ -2014,6 +2022,10 @@ export class Renderer {
2014
2022
  this.#frame_profile_recorder = null;
2015
2023
  this.#frame_profile_session = null;
2016
2024
 
2025
+ // a frame that threw between opening virtual geometry and closing it leaves it closed
2026
+ this.#frame_virtual_geometry?.end_frame();
2027
+ this.#frame_virtual_geometry = null;
2028
+
2017
2029
  if (stranded === null) {
2018
2030
  return;
2019
2031
  }
@@ -2148,6 +2160,23 @@ export class Renderer {
2148
2160
  // culling samples it. No-op when nothing's registered.
2149
2161
  view_ctx.scene.tick(command_ctx, time_delta_seconds);
2150
2162
 
2163
+ /*
2164
+ The virtual-geometry frame, which spans every graph this render records: the shadow maps
2165
+ draw into graphs of their own before the `Shading` graph exists, and a shadow view cuts like
2166
+ any other view (SHADOW_PLAN_2026_09_28). So it opens here — before the shadow block and
2167
+ outside its `if`, so a frame with shadows off still opens and closes — for the view this
2168
+ frame is rendered for, which takes the feedback's first slot. The readback is recorded into
2169
+ the `Shading` graph once everything has cut, and the frame is closed whether or not the
2170
+ frame gets that far.
2171
+ */
2172
+ const virtual_geometry = view_ctx.scene.virtual_geometry;
2173
+
2174
+ if (virtual_geometry !== undefined) {
2175
+ virtual_geometry.begin_frame({ view: view_ctx.virtual_geometry_cut });
2176
+
2177
+ this.#frame_virtual_geometry = virtual_geometry;
2178
+ }
2179
+
2151
2180
  const viz_rt = this.#vis_render_target;
2152
2181
 
2153
2182
  // prepare shadows (process_lights already ran inside lights.update via view_ctx.update,
@@ -2895,6 +2924,11 @@ export class Renderer {
2895
2924
 
2896
2925
  this.#extensions.run(frame);
2897
2926
 
2927
+ if (virtual_geometry !== undefined) {
2928
+ // every view of the frame has cut by now, shadow maps included; read while recording
2929
+ view_ctx.scene.virtual_geometry_feedback.read(graph);
2930
+ }
2931
+
2898
2932
  frame.close();
2899
2933
 
2900
2934
  if (profile_recorder !== null) {
@@ -2919,6 +2953,10 @@ export class Renderer {
2919
2953
  frame_error = e;
2920
2954
  }
2921
2955
 
2956
+ // nothing records after the `Shading` graph, so nothing may cut
2957
+ this.#frame_virtual_geometry = null;
2958
+ virtual_geometry?.end_frame();
2959
+
2922
2960
  /*
2923
2961
  `finish()` is what resolves `profiling_absorbed`, destroys this frame's query set and its
2924
2962
  resolve/readback buffers, and — through the block below — lets the recorder drop the
@@ -188,6 +188,14 @@ export class GPUMeshSkinningContext {
188
188
  * its bounds, moved this frame
189
189
  */
190
190
  update(cmd_ctx: ShadeGPUCommandContext): boolean;
191
+ /**
192
+ * Release this context's buffers, and give back what it holds in the shared geometry manager,
193
+ * which outlives it: every clone's vertex region, and every binding's watch on the batch records
194
+ * it follows — a source's record is the manager's, and would go on announcing its moves to a
195
+ * context that is gone. For the scene context's teardown, after its tables are destroyed: no
196
+ * mesh row names a clone by then, and the bindings go here, so each clone is named by nothing
197
+ * when it is given back.
198
+ */
191
199
  destroy(): void;
192
200
  #private;
193
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GPUMeshSkinningContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js"],"names":[],"mappings":"AAmFA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IAgNI;;;;;;;OAOG;IACH,sEAPW;QACV,UAAgB,EAAE,kBAAkB,CAAC;QACrC,iBAAuB,EAAE,mBAAmB,CAAC;QAC7C,aAAmB,EAAE,eAAe,CAAC;QACrC,MAAY,YAAY;KACrB,EAcH;IAED;;;;;;OAMG;IACH,iCAEC;IAED;;;;;;;OAOG;IACH,yCAEC;IAED;;;;;;OAMG;IACH,2BAEC;IAED;;;;;;;OAOG;IACH,wCAEC;IAED;;;;;;;;;;;;OAYG;IACH,qBAJW,MAAM,YACN,eAAe,GACb,mBAAmB,CAqB/B;IAED;;;;;OAKG;IACH,iBAHW,MAAM,GACJ,mBAAmB,GAAC,SAAS,CAMzC;IAED;;;;;;;;;;OAUG;IACH,aAHW,MAAM,WACN,MAAM,QAwBhB;IAED;;;;;;;OAOG;IACH,oBAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAI5B;IAED;;;;;;;;;;OAUG;IACH,eAFW,MAAM,QAYhB;IAED;;;;;;;;OAQG;IACH,4BAFW,MAAM,QAUhB;IA4FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAFW,MAAM,QAqBhB;IAuBD;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAJW,sBAAsB,GACpB,OAAO,CA0NnB;IAkXD,gBAkBC;;CACJ;qCA1vCY,OAAO,2CAA2C,EAAE,sBAAsB;iCAC1E,OAAO,sCAAsC,EAAE,kBAAkB;8BACjE,OAAO,gCAAgC,EAAE,eAAe;8BACxD,OAAO,mCAAmC,EAAE,eAAe;kCAC3D,OAAO,uCAAuC,EAAE,mBAAmB;kCACnE,OAAO,2BAA2B,EAAE,mBAAmB"}
1
+ {"version":3,"file":"GPUMeshSkinningContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js"],"names":[],"mappings":"AAmFA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH;IAgNI;;;;;;;OAOG;IACH,sEAPW;QACV,UAAgB,EAAE,kBAAkB,CAAC;QACrC,iBAAuB,EAAE,mBAAmB,CAAC;QAC7C,aAAmB,EAAE,eAAe,CAAC;QACrC,MAAY,YAAY;KACrB,EAcH;IAED;;;;;;OAMG;IACH,iCAEC;IAED;;;;;;;OAOG;IACH,yCAEC;IAED;;;;;;OAMG;IACH,2BAEC;IAED;;;;;;;OAOG;IACH,wCAEC;IAED;;;;;;;;;;;;OAYG;IACH,qBAJW,MAAM,YACN,eAAe,GACb,mBAAmB,CAqB/B;IAED;;;;;OAKG;IACH,iBAHW,MAAM,GACJ,mBAAmB,GAAC,SAAS,CAMzC;IAED;;;;;;;;;;OAUG;IACH,aAHW,MAAM,WACN,MAAM,QAwBhB;IAED;;;;;;;OAOG;IACH,oBAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAI5B;IAED;;;;;;;;;;OAUG;IACH,eAFW,MAAM,QAYhB;IAED;;;;;;;;OAQG;IACH,4BAFW,MAAM,QAUhB;IA4FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,sBAFW,MAAM,QAqBhB;IAuBD;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAJW,sBAAsB,GACpB,OAAO,CA0NnB;IAkXD;;;;;;;OAOG;IACH,gBA+BC;;CACJ;qCA/wCY,OAAO,2CAA2C,EAAE,sBAAsB;iCAC1E,OAAO,sCAAsC,EAAE,kBAAkB;8BACjE,OAAO,gCAAgC,EAAE,eAAe;8BACxD,OAAO,mCAAmC,EAAE,eAAe;kCAC3D,OAAO,uCAAuC,EAAE,mBAAmB;kCACnE,OAAO,2BAA2B,EAAE,mBAAmB"}
@@ -1284,7 +1284,28 @@ export class GPUMeshSkinningContext {
1284
1284
  this.#device.queue.writeBuffer(this.#dispatch_lookup_buffer, 0, data);
1285
1285
  }
1286
1286
 
1287
+ /**
1288
+ * Release this context's buffers, and give back what it holds in the shared geometry manager,
1289
+ * which outlives it: every clone's vertex region, and every binding's watch on the batch records
1290
+ * it follows — a source's record is the manager's, and would go on announcing its moves to a
1291
+ * context that is gone. For the scene context's teardown, after its tables are destroyed: no
1292
+ * mesh row names a clone by then, and the bindings go here, so each clone is named by nothing
1293
+ * when it is given back.
1294
+ */
1287
1295
  destroy() {
1296
+ for (const binding of this.#bindings) {
1297
+ binding.unfollow();
1298
+ }
1299
+
1300
+ this.#bindings.length = 0;
1301
+ this.#total_meshlet_count = 0;
1302
+
1303
+ for (const { clone } of this.#clones.values()) {
1304
+ this.#geometries.remove_clone(clone);
1305
+ }
1306
+
1307
+ this.#clones.clear();
1308
+
1288
1309
  if (this.#bindings_buffer !== null) {
1289
1310
  this.#bindings_buffer.destroy();
1290
1311
  this.#bindings_buffer = null;
@@ -720,7 +720,7 @@ value becomes a publication.
720
720
  | `DecalSystem` | `AfterGBuffer` | `relative_order = 1`, which is what the comment in `TerrainSystem` was hand-enforcing; stops assigning through `context.gbuffer` |
721
721
  | `WaterSystem` | `AfterLighting` | publication instead of return; a candidate first consumer of `FrameProduct.ColorCopy` if refraction is wanted |
722
722
  | `FogOfWarSystem` | `AfterTransparency` | the grid update becomes a `FrameStart` extension publishing `FogOfWarVisibility`, and the composite reads it; `relative_order = 1` — **this is where §1.3a's shipped bug is fixed** |
723
- | `ParticleEmitterSystem` | `AfterTransparency` | — (at the default, so before the fog) |
723
+ | ~~`ParticleEmitterSystem`~~ | ~~`AfterTransparency`~~ | *removed 2026-09-28 with the CPU particle system; the GPU particles draw inside the transparency pipeline* |
724
724
  | `PathDisplaySystem` | `AfterTransparency` | — |
725
725
  | `HighlightSystem` | `AfterTransparency` | reads `ViewTextures.visibility_*`, unchanged in meaning |
726
726
  | `DebugDrawSystem` | `AfterTransparency` | `relative_order = 2` |
@@ -1 +1 @@
1
- {"version":3,"file":"GPUGeometryManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/geometry/GPUGeometryManager.js"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH;IA6JI;;;OAGG;IACH,+BAUC;IArKD;;;OAGG;IACH,iBAFU,YAAU,IAAI,CAED;IAkDvB;;;OAGG;IACH,4GAEC;IAED;;;;OAIG;IACH,8BAA0B;IAE1B;;;;OAIG;IACH,uBAAsB;IAOtB;;;OAGG;IACH,kCAEC;IAwBD;;;OAGG;IACH,kCAEC;IAGD;;;OAGG;IACH,0EAEC;IAED;;;OAGG;IACH,+BAiBC;IAkBD;;;;OAIG;IACH,qBAHW,mBAAmB,GAClB,MAAM,CAMjB;IAED;;;;OAIG;IACH,cAHW,eAAe,GACd,OAAO,CAIlB;IAGD;;;;OAIG;IACH,cAHW,eAAe,GACb,OAAO,CAwEnB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,2BAPW,eAAe,GACb,mBAAmB,CAmC/B;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,uBAHW,mBAAmB,GACjB,OAAO,CAsBnB;IAED;;;;;;;OAOG;IACH,uBAHW,eAAe,GACb,mBAAmB,GAAC,SAAS,CAIzC;IAED;;;;OAIG;IACH,iBAHW,eAAe,GACb,OAAO,CAuCnB;IAyBD,gBAWC;IAED;;;;;;OAMG;IACH,qBANW,sBAAsB,QAuChC;IAmDD,cAqCC;IAED,0CAWC;;CAuFJ;qCAlsBY,OAAO,wCAAwC,EAAE,sBAAsB;8BACvE,OAAO,sBAAsB,EAAE,eAAe;oCAC9C,OAAO,gCAAgC,EAAE,qBAAqB;oCANvC,0BAA0B;kCAC5B,gCAAgC;sCAH5B,gCAAgC"}
1
+ {"version":3,"file":"GPUGeometryManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/geometry/GPUGeometryManager.js"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH;IAiKI;;;OAGG;IACH,+BAUC;IAzKD;;;OAGG;IACH,iBAFU,YAAU,IAAI,CAED;IAsDvB;;;OAGG;IACH,4GAEC;IAED;;;;OAIG;IACH,8BAA0B;IAE1B;;;;OAIG;IACH,uBAAsB;IAOtB;;;OAGG;IACH,kCAEC;IAwBD;;;OAGG;IACH,kCAEC;IAGD;;;OAGG;IACH,0EAEC;IAED;;;OAGG;IACH,+BAiBC;IAkBD;;;;OAIG;IACH,qBAHW,mBAAmB,GAClB,MAAM,CAMjB;IAED;;;;OAIG;IACH,cAHW,eAAe,GACd,OAAO,CAIlB;IAGD;;;;OAIG;IACH,cAHW,eAAe,GACb,OAAO,CAwEnB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,2BAPW,eAAe,GACb,mBAAmB,CAmC/B;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,uBAHW,mBAAmB,GACjB,OAAO,CAkBnB;IAED;;;;;;;OAOG;IACH,uBAHW,eAAe,GACb,mBAAmB,GAAC,SAAS,CAIzC;IAED;;;;OAIG;IACH,iBAHW,eAAe,GACb,OAAO,CAuCnB;IAyBD,gBAUC;IAED;;;;;;OAMG;IACH,qBANW,sBAAsB,QAuChC;IAmDD,cAqCC;IAED,0CAWC;;CAuFJ;qCAjsBY,OAAO,wCAAwC,EAAE,sBAAsB;8BACvE,OAAO,sBAAsB,EAAE,eAAe;oCAC9C,OAAO,gCAAgC,EAAE,qBAAqB;oCANvC,0BAA0B;kCAC5B,gCAAgC;sCAH5B,gCAAgC"}
@@ -70,9 +70,13 @@ export class GPUGeometryManager {
70
70
  * collections share the same `index` space — `__last_geometry_index`
71
71
  * advances for both.
72
72
  *
73
- * @type {GPUGeometryMetadata[]}
73
+ * A set rather than an array, because a clone is given back by record: finding it in an
74
+ * array and splicing it out cost the length of the array, so a scene giving back all of its
75
+ * skinned clones at once paid the square of their count.
76
+ *
77
+ * @type {Set<GPUGeometryMetadata>}
74
78
  */
75
- #clone_metadata = [];
79
+ #clone_metadata = new Set();
76
80
 
77
81
  /**
78
82
  * How to stop following a record's meshlet batch, per record that follows one. A record
@@ -343,7 +347,7 @@ export class GPUGeometryManager {
343
347
 
344
348
  this.#follow_batch(metadata);
345
349
 
346
- this.#clone_metadata.push(metadata);
350
+ this.#clone_metadata.add(metadata);
347
351
 
348
352
  this.__needs_update = true;
349
353
 
@@ -377,14 +381,10 @@ export class GPUGeometryManager {
377
381
  remove_clone(metadata) {
378
382
  assert.defined(metadata, 'metadata');
379
383
 
380
- const index = this.#clone_metadata.indexOf(metadata);
381
-
382
- if (index === -1) {
384
+ if (!this.#clone_metadata.delete(metadata)) {
383
385
  return false;
384
386
  }
385
387
 
386
- this.#clone_metadata.splice(index, 1);
387
-
388
388
  this.#unfollow_batch(metadata);
389
389
  this.#meshlets.remove_batch(metadata.meshlets);
390
390
  this.#blas.remove(metadata);
@@ -482,8 +482,7 @@ export class GPUGeometryManager {
482
482
  }
483
483
 
484
484
  this.#meshlets.destroy();
485
-
486
- // TODO ensure BVH and others are destroyed
485
+ this.#blas.destroy();
487
486
 
488
487
  this.__needs_update = true;
489
488
  }
@@ -160,6 +160,11 @@ export class GPUGeometryBVHManager {
160
160
  * version, because that record's refit answer has changed all the same.
161
161
  */
162
162
  update(): void;
163
+ /**
164
+ * Release the arena and its tables. For the geometry manager's own teardown: nothing is
165
+ * obtained, uploaded or traced afterwards. Safe to call twice.
166
+ */
167
+ destroy(): void;
163
168
  #private;
164
169
  }
165
170
  export type MeshletGeometry = import("../MeshletGeometry.js").MeshletGeometry;
@@ -1 +1 @@
1
- {"version":3,"file":"GPUGeometryBVHManager.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js"],"names":[],"mappings":"AAkBA;;;GAGG;AAEH;;;;;GAKG;AACH,gDAGG;AAEH;;;;;;;;;;;GAWG;AACH,sCAFU,MAAM,CAEyB;AA0CzC;;;;;;;;;;;;;;GAcG;AACH;IA8JI;;;OAGG;IACH,+BAoDC;IA9MD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,6BAEC;IAuCD;;OAEG;IACH,gCAEC;IAOD;;OAEG;IACH,mCAEC;IAmDD;;OAEG;IACH,gCAEC;IA6ED;;;;OAIG;IACH,iCAEC;IAED,+BAoBC;IAED;;;;;;;;;OASG;IACH,wCAIC;IAED;;;;;;;;;;;;;;OAcG;IACH,cALW,MAAM,UACN,eAAe,GAEb,sBAAsB,CAalC;IA8DD;;;;;;;;;;;;OAYG;IACH,wBAHW,MAAM,GACJ;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CAqB3I;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAU5B;IAED;;;;;;;;;OASG;IACH,0BAFW,WAAW,QAQrB;IAED;;;;;;;;;;;OAWG;IACH,cAHW,MAAM,GACJ,OAAO,CA8BnB;IA8RD;;;;;;;OAOG;IACH,eAOC;;CAgIJ;8BA78BY,OAAO,uBAAuB,EAAE,eAAe;yBAC/C,OAAO,sDAAsD,EAAE,UAAU;6BAbzD,mCAAmC;uCASzB,6BAA6B"}
1
+ {"version":3,"file":"GPUGeometryBVHManager.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js"],"names":[],"mappings":"AAkBA;;;GAGG;AAEH;;;;;GAKG;AACH,gDAGG;AAEH;;;;;;;;;;;GAWG;AACH,sCAFU,MAAM,CAEyB;AA0CzC;;;;;;;;;;;;;;GAcG;AACH;IA8JI;;;OAGG;IACH,+BAoDC;IA9MD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,6BAEC;IAuCD;;OAEG;IACH,gCAEC;IAOD;;OAEG;IACH,mCAEC;IAmDD;;OAEG;IACH,gCAEC;IA6ED;;;;OAIG;IACH,iCAEC;IAED,+BAoBC;IAED;;;;;;;;;OASG;IACH,wCAIC;IAED;;;;;;;;;;;;;;OAcG;IACH,cALW,MAAM,UACN,eAAe,GAEb,sBAAsB,CAalC;IA8DD;;;;;;;;;;;;OAYG;IACH,wBAHW,MAAM,GACJ;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CAqB3I;IAED;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAU5B;IAED;;;;;;;;;OASG;IACH,0BAFW,WAAW,QAQrB;IAED;;;;;;;;;;;OAWG;IACH,cAHW,MAAM,GACJ,OAAO,CA8BnB;IA8RD;;;;;;;OAOG;IACH,eAOC;IAiID;;;OAGG;IACH,gBAKC;;CACJ;8BAx9BY,OAAO,uBAAuB,EAAE,eAAe;yBAC/C,OAAO,sDAAsD,EAAE,UAAU;6BAbzD,mCAAmC;uCASzB,6BAA6B"}
@@ -990,4 +990,15 @@ export class GPUGeometryBVHManager {
990
990
 
991
991
  return true;
992
992
  }
993
+
994
+ /**
995
+ * Release the arena and its tables. For the geometry manager's own teardown: nothing is
996
+ * obtained, uploaded or traced afterwards. Safe to call twice.
997
+ */
998
+ destroy() {
999
+ this.#buffer_metadata.destroy();
1000
+ this.#buffer_data.destroy();
1001
+ this.#buffer_parents.destroy();
1002
+ this.#buffer_leaf_nodes.destroy();
1003
+ }
993
1004
  }
@@ -39,6 +39,11 @@ export class GPUVirtualGeometryPool {
39
39
  table_options?: any;
40
40
  page_size?: number;
41
41
  });
42
+ /**
43
+ * The device every buffer of the pool lives on, and every buffer the runtime above it makes.
44
+ * @returns {GPUDevice}
45
+ */
46
+ get device(): GPUDevice;
42
47
  /**
43
48
  * @returns {GPUBuffer}
44
49
  */
@@ -174,6 +179,13 @@ export class GPUVirtualGeometryPool {
174
179
  * @returns {number} page row, or -1 when the tier could not make room
175
180
  */
176
181
  install(reader: VGeoContainerReader, page_index: number): number;
182
+ /**
183
+ * Pages installed into this tier since it was made — monotonic, so "has anything arrived since"
184
+ * is one comparison against a count taken then.
185
+ *
186
+ * @returns {number}
187
+ */
188
+ get installed_page_count(): number;
177
189
  /**
178
190
  * @param {number} page_row
179
191
  * @returns {boolean}
@@ -1 +1 @@
1
- {"version":3,"file":"GPUVirtualGeometryPool.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;IAoFI;;;;;;;;OAQG;IACH;QAP8B,MAAM;QACE,QAAQ,EAAnC,iBAAiB;QAEA,aAAa;QACb,SAAS,GAA1B,MAAM;OAyChB;IAkCD;;OAEG;IACH,+BAEC;IAED;;;OAGG;IACH,8BAEC;IAED;;OAEG;IACH,mCAEC;IAED;;;OAGG;IACH,oCAEC;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,6BAEC;IAGD;;;OAGG;IACH,wBAEC;IAED;;OAEG;IACH,8BAEC;IAED;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,iCAEC;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;OAEG;IACH,oBAEC;IAED;;;;;OAKG;IACH,uBAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;OAGG;IACH,gCAEC;IAED;;OAEG;IACH,gCAEC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBALW,mBAAmB,GACjB,MAAM,CAmClB;IAED;;;;;;;;;OASG;IACH,mBAHW,mBAAmB,GACjB,OAAO,CA+CnB;IAqCD;;;OAGG;IACH,wBAHW,mBAAmB,GACjB,MAAM,CAIlB;IAED;;;;OAIG;IACH,oBAJW,mBAAmB,cACnB,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,wBAJW,mBAAmB,cACnB,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAJW,mBAAmB,cACnB,MAAM,GACJ,MAAM,CAgElB;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,OAAO,CA0CnB;IAED;;;;;;;;;;;;;;OAcG;IACH,mBAHW,MAAM,GACJ;QAAC,MAAM,EAAE,mBAAmB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CAIhE;IAED;;;;;OAKG;IACH,iBAFa,IAAI,CAIhB;IA2ED;;;;;;;;;OASG;IACH,SAFa,IAAI,CAMhB;IAwDD,gBAcC;;CACJ;gCAp0BY,OAAO,oCAAoC,EAAE,iBAAiB;kCAC9D,OAAO,uCAAuC,EAAE,mBAAmB;kCAL9C,wBAAwB"}
1
+ {"version":3,"file":"GPUVirtualGeometryPool.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryPool.js"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;IAoFI;;;;;;;;OAQG;IACH;QAP8B,MAAM;QACE,QAAQ,EAAnC,iBAAiB;QAEA,aAAa;QACb,SAAS,GAA1B,MAAM;OAyChB;IAkCD;;;OAGG;IACH,wBAEC;IAED;;OAEG;IACH,+BAEC;IAED;;;OAGG;IACH,8BAEC;IAED;;OAEG;IACH,mCAEC;IAED;;;OAGG;IACH,oCAEC;IAED;;OAEG;IACH,gCAEC;IAED;;OAEG;IACH,6BAEC;IAGD;;;OAGG;IACH,wBAEC;IAED;;OAEG;IACH,8BAEC;IAED;;OAEG;IACH,kCAEC;IAED;;OAEG;IACH,iCAEC;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;OAEG;IACH,oBAEC;IAED;;;;;OAKG;IACH,uBAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;OAGG;IACH,gCAEC;IAED;;OAEG;IACH,gCAEC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBALW,mBAAmB,GACjB,MAAM,CAmClB;IAED;;;;;;;;;OASG;IACH,mBAHW,mBAAmB,GACjB,OAAO,CA+CnB;IAqCD;;;OAGG;IACH,wBAHW,mBAAmB,GACjB,MAAM,CAIlB;IAED;;;;OAIG;IACH,oBAJW,mBAAmB,cACnB,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;;OAOG;IACH,wBAJW,mBAAmB,cACnB,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAJW,mBAAmB,cACnB,MAAM,GACJ,MAAM,CAkElB;IAOD;;;;;OAKG;IACH,mCAEC;IAED;;;OAGG;IACH,gBAHW,MAAM,GACJ,OAAO,CA0CnB;IAED;;;;;;;;;;;;;;OAcG;IACH,mBAHW,MAAM,GACJ;QAAC,MAAM,EAAE,mBAAmB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CAIhE;IAED;;;;;OAKG;IACH,iBAFa,IAAI,CAIhB;IA2ED;;;;;;;;;OASG;IACH,SAFa,IAAI,CAMhB;IAwDD,gBAcC;;CACJ;gCA71BY,OAAO,oCAAoC,EAAE,iBAAiB;kCAC9D,OAAO,uCAAuC,EAAE,mBAAmB;kCAL9C,wBAAwB"}
@@ -239,6 +239,14 @@ export class GPUVirtualGeometryPool {
239
239
  });
240
240
  }
241
241
 
242
+ /**
243
+ * The device every buffer of the pool lives on, and every buffer the runtime above it makes.
244
+ * @returns {GPUDevice}
245
+ */
246
+ get device() {
247
+ return this.#device;
248
+ }
249
+
242
250
  /**
243
251
  * @returns {GPUBuffer}
244
252
  */
@@ -609,9 +617,26 @@ export class GPUVirtualGeometryPool {
609
617
  // flags flipped are whatever they say, not this page's alone
610
618
  this.#mark_activated();
611
619
 
620
+ this.#installed_page_count++;
621
+
612
622
  return page_row;
613
623
  }
614
624
 
625
+ /**
626
+ * @type {number}
627
+ */
628
+ #installed_page_count = 0;
629
+
630
+ /**
631
+ * Pages installed into this tier since it was made — monotonic, so "has anything arrived since"
632
+ * is one comparison against a count taken then.
633
+ *
634
+ * @returns {number}
635
+ */
636
+ get installed_page_count() {
637
+ return this.#installed_page_count;
638
+ }
639
+
615
640
  /**
616
641
  * @param {number} page_row
617
642
  * @returns {boolean}