@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,5 +1,6 @@
1
1
  import { assert } from "../../../../core/assert.js";
2
2
  import { shadowmap_budget_carry_over } from "./shadowmap_budget_carry_over.js";
3
+ import { SHADOWMAP_VGEO_TAU_SCALE } from "./SHADOWMAP_VGEO_TAU_SCALE.js";
3
4
  import AABB2 from "../../../../core/geom/2d/aabb/AABB2.js";
4
5
  import { MaxRectanglesPacker } from "../../../../core/geom/packing/max-rect/MaxRectanglesPacker.js";
5
6
  import { FrameGraph } from "../../../../engine/graphics/render/frame_graph/FrameGraph.js";
@@ -32,6 +33,8 @@ import {
32
33
  shader_csm_caster_range_publish,
33
34
  } from "./csm/shader/shader_csm_caster_range.js";
34
35
  import { DEFAULT_SHADOWMAP_UPDATE_BUDGET } from "./DEFAULT_SHADOWMAP_UPDATE_BUDGET.js";
36
+ import { VGEO_CUT_STAT } from "../../geometry/virtual/runtime/layout/VGEO_CUT_STAT.js";
37
+ import { shadowmap_caster_detail_pending } from "./shadowmap_caster_detail_pending.js";
35
38
  import { DirectionalLightShadowmap } from "./DirectionalLightShadowmap.js";
36
39
  import { POINT_SHADOW_CUBE_COLS, POINT_SHADOW_CUBE_ROWS } from "./POINT_SHADOW_CUBE_LAYOUT.js";
37
40
  import {
@@ -388,6 +391,8 @@ export class GPUSceneShadowmapContext {
388
391
  this.#cameras = new CameraManager(graphics.device);
389
392
  this.shadow_view_manager = new ViewManager(graphics, this.#cameras, {
390
393
  obtain: () => scene_ctx,
394
+ }, {
395
+ virtual_geometry_tau_scale: SHADOWMAP_VGEO_TAU_SCALE,
391
396
  });
392
397
 
393
398
  this.#render_target = RenderTarget.from({
@@ -523,6 +528,58 @@ export class GPUSceneShadowmapContext {
523
528
  });
524
529
  }
525
530
 
531
+ /**
532
+ * Pages the scene's virtual geometry has installed so far, or 0 for a scene without any.
533
+ *
534
+ * @returns {number}
535
+ */
536
+ #installed_page_count() {
537
+ return this.#scene_ctx.virtual_geometry?.pool.installed_page_count ?? 0;
538
+ }
539
+
540
+ /**
541
+ * Flag every cached local map whose last cut of virtual geometry could now be drawn finer.
542
+ *
543
+ * Directional maps redraw every frame and need nothing of this. A local map's views are its own
544
+ * view contexts, each of which holds what the last reading of its cut said — so the question is
545
+ * answered from the map's own readings, and a map that cut nothing clamped is left alone however
546
+ * many pages arrive for other views (SHADOW_PLAN_2026_09_28 §2.5).
547
+ *
548
+ * @param {Shadowmap[]} shadowmaps
549
+ */
550
+ #mark_caster_detail_pending(shadowmaps) {
551
+ if (this.#scene_ctx.virtual_geometry === undefined) {
552
+ return;
553
+ }
554
+
555
+ const installs_now = this.#installed_page_count();
556
+ const views = this.shadow_view_manager;
557
+
558
+ for (let i = 0; i < shadowmaps.length; i++) {
559
+ const map = shadowmaps[i];
560
+
561
+ if (map.light.isDirectionalLight || map.is_invalid) {
562
+ continue;
563
+ }
564
+
565
+ let clamped = 0;
566
+
567
+ for (let j = 0; j < map.views.length; j++) {
568
+ const view = map.views[j];
569
+
570
+ if (views.exists(view)) {
571
+ clamped += views.obtain(view).virtual_geometry_cut.stats[VGEO_CUT_STAT.CLAMPED];
572
+ }
573
+ }
574
+
575
+ map.caster_detail_pending = shadowmap_caster_detail_pending({
576
+ clamped,
577
+ installs_at_draw: map.installs_at_draw,
578
+ installs_now,
579
+ });
580
+ }
581
+ }
582
+
526
583
  /**
527
584
  *
528
585
  * @param {Light} light
@@ -602,6 +659,10 @@ export class GPUSceneShadowmapContext {
602
659
  m.projected_area_px = compute_light_projected_area_px(m.light, main_camera, view_resolution);
603
660
  }
604
661
 
662
+ // Step 2b: a cached map whose last cut of virtual geometry was clamped, and under which pages
663
+ // have installed since, would now draw finer — score it as if it had never been drawn.
664
+ this.#mark_caster_detail_pending(shadowmaps);
665
+
605
666
  // Step 3: policy reserves pending resize footprints alongside committed layouts. It
606
667
  // never mutates layout and never invalidates — sampling continues against the old
607
668
  // region until draw() commits the pending during a normal raster pass. Directionals and
@@ -799,6 +860,8 @@ export class GPUSceneShadowmapContext {
799
860
  map.should_draw = false;
800
861
  map.is_invalid = false;
801
862
  map.last_updated_frame_index = frame_index;
863
+ map.caster_detail_pending = false;
864
+ map.installs_at_draw = this.#installed_page_count();
802
865
  this.#debug_render_count++;
803
866
  }
804
867
 
@@ -0,0 +1,12 @@
1
+ /**
2
+ * How much coarser than the camera a shadow view cuts virtual geometry: its τ is the runtime's
3
+ * times this — see `VGeoViewCut.tau_scale`.
4
+ *
5
+ * Measured on Zorah (SHADOW_PLAN_2026_09_28 §7.2): at 2 the cascades draw 39% of the clusters they
6
+ * draw at 1, and false light against cascades at a quarter of the τ rises from 0.006–0.154% of the
7
+ * screen to 0.028–0.400%.
8
+ *
9
+ * @type {number}
10
+ */
11
+ export const SHADOWMAP_VGEO_TAU_SCALE: number;
12
+ //# sourceMappingURL=SHADOWMAP_VGEO_TAU_SCALE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SHADOWMAP_VGEO_TAU_SCALE.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/SHADOWMAP_VGEO_TAU_SCALE.js"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,uCAFU,MAAM,CAE0B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * How much coarser than the camera a shadow view cuts virtual geometry: its τ is the runtime's
3
+ * times this — see `VGeoViewCut.tau_scale`.
4
+ *
5
+ * Measured on Zorah (SHADOW_PLAN_2026_09_28 §7.2): at 2 the cascades draw 39% of the clusters they
6
+ * draw at 1, and false light against cascades at a quarter of the τ rises from 0.006–0.154% of the
7
+ * screen to 0.028–0.400%.
8
+ *
9
+ * @type {number}
10
+ */
11
+ export const SHADOWMAP_VGEO_TAU_SCALE = 2;
@@ -94,6 +94,21 @@ export class Shadowmap {
94
94
  * @type {boolean}
95
95
  */
96
96
  is_invalid: boolean;
97
+ /**
98
+ * True when this map's last draw cut virtual geometry that was clamped — coarser than its own
99
+ * threshold asked for, because pages were missing — and pages have installed since. Scored as if
100
+ * the map had never been drawn, so it wins its way back into the budget ahead of maps that are
101
+ * merely stale; set each frame by {@link GPUSceneShadowmapContext.select_for_draw} and cleared
102
+ * by a draw. See `shadowmap_caster_detail_pending`.
103
+ * @type {boolean}
104
+ */
105
+ caster_detail_pending: boolean;
106
+ /**
107
+ * The virtual-geometry pool's install count when this map was last drawn — what
108
+ * {@link caster_detail_pending} compares against.
109
+ * @type {number}
110
+ */
111
+ installs_at_draw: number;
97
112
  /**
98
113
  * Per-frame "draw this map now" signal set by
99
114
  * {@link GPUSceneShadowmapContext.select_for_draw} during selection and consumed by
@@ -1 +1 @@
1
- {"version":3,"file":"Shadowmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/Shadowmap.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;IACI,WAAO;IAEP;;OAEG;IACH,OAFU,KAAK,CAEV;IAEL;;;;OAIG;IACH,QAFU,KAAK,EAAE,CAEL;IAEZ;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,gBAFU,KAAK,EAAE,GAAG,IAAI,CAEF;IAEtB;;;OAGG;IACH,OAFU,IAAI,EAAE,CAEL;IAEX;;;;;;;;;;;OAWG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;;;;OAMG;IACH,0BAFU,MAAM,CAEc;IAE9B;;;;;;;OAOG;IACH,yBAFU,MAAM,CAEa;IAE7B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAFU,OAAO,CAEC;IAElB;;;;;;;;OAQG;IACH,aAFU,OAAO,CAEG;IAEpB;;;;;;;;;;;;;;OAcG;IACH,kBAFU,OAAO,CAEO;IAExB;;;;;;;;;;;OAWG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;;OAIG;IACH,oBAHW,MAAM,aACN,eAAe,QAIzB;IAED;;;;;;;OAOG;IACH,mBAEC;IAED,gBAEC;CACJ;oBA3KY,OAAO,wCAAwC,EAAE,OAAO;qBACxD,OAAO,wBAAwB,EAAE,MAAM;oBACvC,OAAO,4BAA4B,EAAE,KAAK;8BAC1C,OAAO,gCAAgC,EAAE,eAAe;mBACxD,OAAO,oBAAoB,EAAE,IAAI"}
1
+ {"version":3,"file":"Shadowmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/Shadowmap.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;IACI,WAAO;IAEP;;OAEG;IACH,OAFU,KAAK,CAEV;IAEL;;;;OAIG;IACH,QAFU,KAAK,EAAE,CAEL;IAEZ;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,gBAFU,KAAK,EAAE,GAAG,IAAI,CAEF;IAEtB;;;OAGG;IACH,OAFU,IAAI,EAAE,CAEL;IAEX;;;;;;;;;;;OAWG;IACH,mBAFU,MAAM,CAEM;IAEtB;;;;;;OAMG;IACH,0BAFU,MAAM,CAEc;IAE9B;;;;;;;OAOG;IACH,yBAFU,MAAM,CAEa;IAE7B;;;;;;;;;;;;;;;;;OAiBG;IACH,YAFU,OAAO,CAEC;IAElB;;;;;;;OAOG;IACH,uBAFU,OAAO,CAEa;IAE9B;;;;OAIG;IACH,kBAFU,MAAM,CAEK;IAErB;;;;;;;;OAQG;IACH,aAFU,OAAO,CAEG;IAEpB;;;;;;;;;;;;;;OAcG;IACH,kBAFU,OAAO,CAEO;IAExB;;;;;;;;;;;OAWG;IACH,iBAFU,MAAM,CAEI;IAEpB;;;;OAIG;IACH,oBAHW,MAAM,aACN,eAAe,QAIzB;IAED;;;;;;;OAOG;IACH,mBAEC;IAED,gBAEC;CACJ;oBA5LY,OAAO,wCAAwC,EAAE,OAAO;qBACxD,OAAO,wBAAwB,EAAE,MAAM;oBACvC,OAAO,4BAA4B,EAAE,KAAK;8BAC1C,OAAO,gCAAgC,EAAE,eAAe;mBACxD,OAAO,oBAAoB,EAAE,IAAI"}
@@ -104,6 +104,23 @@ export class Shadowmap {
104
104
  */
105
105
  is_invalid = true;
106
106
 
107
+ /**
108
+ * True when this map's last draw cut virtual geometry that was clamped — coarser than its own
109
+ * threshold asked for, because pages were missing — and pages have installed since. Scored as if
110
+ * the map had never been drawn, so it wins its way back into the budget ahead of maps that are
111
+ * merely stale; set each frame by {@link GPUSceneShadowmapContext.select_for_draw} and cleared
112
+ * by a draw. See `shadowmap_caster_detail_pending`.
113
+ * @type {boolean}
114
+ */
115
+ caster_detail_pending = false;
116
+
117
+ /**
118
+ * The virtual-geometry pool's install count when this map was last drawn — what
119
+ * {@link caster_detail_pending} compares against.
120
+ * @type {number}
121
+ */
122
+ installs_at_draw = 0;
123
+
107
124
  /**
108
125
  * Per-frame "draw this map now" signal set by
109
126
  * {@link GPUSceneShadowmapContext.select_for_draw} during selection and consumed by
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Whether a cached shadow map would draw finer virtual geometry if it were drawn again now.
3
+ *
4
+ * A spot or point map is kept until the scorer re-selects it, and its first draw is forced at
5
+ * creation — when little but the roots of the scene's virtual geometry is resident. A cut that was
6
+ * **clamped** drew coarser clusters over surface whose pages were missing and asked for them; once
7
+ * pages have **installed** since the map was drawn, a redraw is a different, finer map. Keyed on the
8
+ * map's own incomplete cut rather than on every install in the scene, so a map whose cut was
9
+ * complete is never redrawn for pages someone else wanted (SHADOW_PLAN_2026_09_28 §2.5).
10
+ *
11
+ * @param {Object} options
12
+ * @param {number} options.clamped clusters the map's views' last readings drew clamped, summed
13
+ * @param {number} options.installs_at_draw the pool's install count when the map was drawn
14
+ * @param {number} options.installs_now the pool's install count now
15
+ * @returns {boolean}
16
+ *
17
+ * @author Alex Goldring
18
+ * @copyright Company Named Limited (c) 2026
19
+ */
20
+ export function shadowmap_caster_detail_pending({ clamped, installs_at_draw, installs_now }: {
21
+ clamped: number;
22
+ installs_at_draw: number;
23
+ installs_now: number;
24
+ }): boolean;
25
+ //# sourceMappingURL=shadowmap_caster_detail_pending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadowmap_caster_detail_pending.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/shadowmap_caster_detail_pending.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH;IAR2B,OAAO,EAAvB,MAAM;IACU,gBAAgB,EAAhC,MAAM;IACU,YAAY,EAA5B,MAAM;IACJ,OAAO,CAOnB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Whether a cached shadow map would draw finer virtual geometry if it were drawn again now.
3
+ *
4
+ * A spot or point map is kept until the scorer re-selects it, and its first draw is forced at
5
+ * creation — when little but the roots of the scene's virtual geometry is resident. A cut that was
6
+ * **clamped** drew coarser clusters over surface whose pages were missing and asked for them; once
7
+ * pages have **installed** since the map was drawn, a redraw is a different, finer map. Keyed on the
8
+ * map's own incomplete cut rather than on every install in the scene, so a map whose cut was
9
+ * complete is never redrawn for pages someone else wanted (SHADOW_PLAN_2026_09_28 §2.5).
10
+ *
11
+ * @param {Object} options
12
+ * @param {number} options.clamped clusters the map's views' last readings drew clamped, summed
13
+ * @param {number} options.installs_at_draw the pool's install count when the map was drawn
14
+ * @param {number} options.installs_now the pool's install count now
15
+ * @returns {boolean}
16
+ *
17
+ * @author Alex Goldring
18
+ * @copyright Company Named Limited (c) 2026
19
+ */
20
+ export function shadowmap_caster_detail_pending({ clamped, installs_at_draw, installs_now }) {
21
+ return clamped > 0 && installs_now > installs_at_draw;
22
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"shadowmap_update_score.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/shadowmap_update_score.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,oFAHW,MAAM,GACJ,MAAM,CAWlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,oGAHW,UAAU,MAAM,CAAC,GACf,MAAM,CAuClB"}
1
+ {"version":3,"file":"shadowmap_update_score.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/shadowmap_update_score.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,oFAHW,MAAM,GACJ,MAAM,CAclB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,oGAHW,UAAU,MAAM,CAAC,GACf,MAAM,CAuClB"}
@@ -32,8 +32,11 @@ export function compute_shadowmap_update_score(map, current_frame_index) {
32
32
  return Infinity;
33
33
  }
34
34
 
35
- // staleness = frames since last refresh; -1 (never) maps to a large positive number
36
- const staleness = current_frame_index - map.last_updated_frame_index;
35
+ // staleness = frames since last refresh; -1 (never) maps to a large positive number, and so does
36
+ // a map whose last cut of virtual geometry was clamped and could now be drawn finer
37
+ const staleness = map.caster_detail_pending
38
+ ? current_frame_index + 1
39
+ : current_frame_index - map.last_updated_frame_index;
37
40
 
38
41
  return map.projected_area_px * (1 + Math.max(0, staleness));
39
42
  }
@@ -39,7 +39,8 @@ export class TextureManager {
39
39
  */
40
40
  release(shade: ShadeTexture): boolean;
41
41
  /**
42
- * Release every texture the manager is holding. Called by {@link GraphicsContext#destroy}.
42
+ * Release every texture the manager is holding, and the mipmap generator's buffer. Called by
43
+ * {@link GraphicsContext#destroy}.
43
44
  *
44
45
  * @returns {void}
45
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TextureManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/texture/TextureManager.js"],"names":[],"mappings":"AAsEA;IAuCI;;;OAGG;IACH,+BAIC;IA5BD;;;OAGG;IACH,qCAEC;IAwBD;;;;OAIG;IACH,cAHW,YAAY,GACV,iBAAiB,CAY7B;IAiCD,uDAqCC;IAeD;;;;OAIG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAa7B;IAED;;;;;;;;;;;;;;OAcG;IACH,eAHW,YAAY,GACV,OAAO,CAoBnB;IAED;;;;OAIG;IACH,WAFa,IAAI,CAShB;IAED,eAEC;IAED,+BAQC;;CACJ;2BAhSY,OAAO,mBAAmB,EAAE,YAAY;sCAPf,oCAAoC;kCADxC,wBAAwB;kCADxB,+CAA+C"}
1
+ {"version":3,"file":"TextureManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/texture/TextureManager.js"],"names":[],"mappings":"AAsEA;IAuCI;;;OAGG;IACH,+BAIC;IA5BD;;;OAGG;IACH,qCAEC;IAwBD;;;;OAIG;IACH,cAHW,YAAY,GACV,iBAAiB,CAY7B;IAiCD,uDAqCC;IAeD;;;;OAIG;IACH,kCAHW,iBAAiB,GACf,iBAAiB,CAa7B;IAED;;;;;;;;;;;;;;OAcG;IACH,eAHW,YAAY,GACV,OAAO,CAoBnB;IAED;;;;;OAKG;IACH,WAFa,IAAI,CAWhB;IAED,eAEC;IAED,+BAQC;;CACJ;2BAnSY,OAAO,mBAAmB,EAAE,YAAY;sCAPf,oCAAoC;kCADxC,wBAAwB;kCADxB,+CAA+C"}
@@ -271,7 +271,8 @@ export class TextureManager {
271
271
  }
272
272
 
273
273
  /**
274
- * Release every texture the manager is holding. Called by {@link GraphicsContext#destroy}.
274
+ * Release every texture the manager is holding, and the mipmap generator's buffer. Called by
275
+ * {@link GraphicsContext#destroy}.
275
276
  *
276
277
  * @returns {void}
277
278
  */
@@ -282,6 +283,8 @@ export class TextureManager {
282
283
 
283
284
  this.#cache.clear();
284
285
  this.#bound = new WeakMap();
286
+
287
+ this.#mipmaps.destroy();
285
288
  }
286
289
 
287
290
  update() {
@@ -241,7 +241,7 @@ export class WebGPUMipmapGenerator {
241
241
  #parameters_buffer_stride = 256;
242
242
 
243
243
  destroy() {
244
- this.#parameters_buffer.destroy();
244
+ this.#parameters_buffer?.destroy();
245
245
  this.#parameters_buffer = undefined;
246
246
  }
247
247
 
@@ -41,11 +41,19 @@ export class Uint32BufferSamplingStats {
41
41
  */
42
42
  setGlobalMax(column_id: number, value: number): void;
43
43
  /**
44
+ * Read the records back through a copy into a buffer taken from `buffers`, once `encoder` is
45
+ * submitted.
46
+ *
47
+ * A reading can be lost, and then nothing of it is applied: when this is destroyed while it is in
48
+ * flight, or when its buffer is destroyed under the mapping — which is what tearing `buffers` down
49
+ * does. A renderer torn down with a frame's reading still on the GPU does both, so a lost reading
50
+ * is an answer here, not an error.
44
51
  *
45
52
  * @param {ShadeGPUCommandContext} encoder
46
53
  * @param {GPUBufferAllocator} buffers
54
+ * @returns {Promise<boolean>} whether the reading was applied
47
55
  */
48
- readback_explicit(encoder: ShadeGPUCommandContext, buffers: GPUBufferAllocator): Promise<void>;
56
+ readback_explicit(encoder: ShadeGPUCommandContext, buffers: GPUBufferAllocator): Promise<boolean>;
49
57
  readback(): Promise<any>;
50
58
  upload(): void;
51
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Uint32BufferSamplingStats.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/util/Uint32BufferSamplingStats.js"],"names":[],"mappings":"AAWA;IAgMI;;;;;OAKG;IACH,wCAHW,MAAM,cACN,MAAM,EAwBhB;IArND;;;OAGG;IACH,sBAEC;IA4BD;;;OAGG;IACH,6BAEC;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,wBAHW,MAAM,SACN,MAAM,QAOhB;IAoBD;;;;OAIG;IACH,2BAHW,sBAAsB,WACtB,kBAAkB,iBA0B5B;IAED,yBASC;IAED,eAEC;IAED;;;;;;OAMG;IACH,8CAJW,MAAM,qCAEN,MAAM,QAmBhB;IAgCD;;;OAGG;IACH,gBAFW,MAAM,QAchB;IAED,gBAEC;;CACJ;qCAzPY,OAAO,wCAAwC,EAAE,sBAAsB;iCACvE,OAAO,iCAAiC,EAAE,kBAAkB"}
1
+ {"version":3,"file":"Uint32BufferSamplingStats.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/util/Uint32BufferSamplingStats.js"],"names":[],"mappings":"AAYA;IA+OI;;;;;OAKG;IACH,wCAHW,MAAM,cACN,MAAM,EAwBhB;IApQD;;;OAGG;IACH,sBAEC;IAkCD;;;OAGG;IACH,6BAEC;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,MAAM,CAclB;IAED;;;;OAIG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,wBAHW,MAAM,SACN,MAAM,QAOhB;IAoBD;;;;;;;;;;;;OAYG;IACH,2BAJW,sBAAsB,WACtB,kBAAkB,GAChB,QAAQ,OAAO,CAAC,CAqB5B;IAwCD,yBASC;IAED,eAEC;IAED;;;;;;OAMG;IACH,8CAJW,MAAM,qCAEN,MAAM,QAmBhB;IAgCD;;;OAGG;IACH,gBAFW,MAAM,QAchB;IAED,gBAIC;;CACJ;qCA1SY,OAAO,wCAAwC,EAAE,sBAAsB;iCACvE,OAAO,iCAAiC,EAAE,kBAAkB"}
@@ -1,5 +1,6 @@
1
1
  import { assert } from "../../../core/assert.js";
2
2
  import { BufferResourceDescriptor } from "../../device/graph/BufferResourceDescriptor.js";
3
+ import { warn_limited } from "../../util/warn_limited.js";
3
4
  import { inspect_via_copy } from "../buffer/inspect_gpu_buffer.js";
4
5
 
5
6
  /**
@@ -50,6 +51,12 @@ export class Uint32BufferSamplingStats {
50
51
  */
51
52
  #device;
52
53
 
54
+ /**
55
+ * Set by {@link destroy}. A reading still in flight then applies nothing.
56
+ * @type {boolean}
57
+ */
58
+ #destroyed = false;
59
+
53
60
  /**
54
61
  *
55
62
  * @returns {GPUBuffer}
@@ -130,9 +137,17 @@ export class Uint32BufferSamplingStats {
130
137
  }
131
138
 
132
139
  /**
140
+ * Read the records back through a copy into a buffer taken from `buffers`, once `encoder` is
141
+ * submitted.
142
+ *
143
+ * A reading can be lost, and then nothing of it is applied: when this is destroyed while it is in
144
+ * flight, or when its buffer is destroyed under the mapping — which is what tearing `buffers` down
145
+ * does. A renderer torn down with a frame's reading still on the GPU does both, so a lost reading
146
+ * is an answer here, not an error.
133
147
  *
134
148
  * @param {ShadeGPUCommandContext} encoder
135
149
  * @param {GPUBufferAllocator} buffers
150
+ * @returns {Promise<boolean>} whether the reading was applied
136
151
  */
137
152
  async readback_explicit(encoder, buffers) {
138
153
  const tmp_desc = new BufferResourceDescriptor();
@@ -146,18 +161,51 @@ export class Uint32BufferSamplingStats {
146
161
 
147
162
  encoder.copyBufferToBuffer(stat_buffer, 0, tmp_buffer, 0);
148
163
 
164
+ const applied = await this.#read(encoder, tmp_buffer, size);
165
+
166
+ // back unmapped, whatever became of the reading. A pool torn down while it was in flight has
167
+ // already destroyed the buffer and no longer holds it, so it declines it
168
+ buffers.release(tmp_buffer);
169
+
170
+ return applied;
171
+ }
172
+
173
+ /**
174
+ * @param {ShadeGPUCommandContext} encoder
175
+ * @param {GPUBuffer} tmp_buffer
176
+ * @param {number} size
177
+ * @returns {Promise<boolean>} whether the reading was applied; `tmp_buffer` is unmapped either way
178
+ */
179
+ async #read(encoder, tmp_buffer, size) {
149
180
  await encoder.done;
150
181
 
151
- await tmp_buffer.mapAsync(GPUMapMode.READ, 0, size);
182
+ if (this.#destroyed) {
183
+ // and the buffer may be too — mapping it would be a validation error, not an abort
184
+ return false;
185
+ }
186
+
187
+ try {
188
+ await tmp_buffer.mapAsync(GPUMapMode.READ, 0, size);
189
+ } catch (e) {
190
+ // An AbortError when the buffer was destroyed under the mapping. Torn down alongside this,
191
+ // that is the expected end of a reading in flight; on its own it is not
192
+ if (!this.#destroyed) {
193
+ warn_limited(`Uint32BufferSamplingStats: a reading was lost, its mapping failed (${e.name})`);
194
+ }
195
+
196
+ return false;
197
+ }
152
198
 
153
- const buffer = tmp_buffer.getMappedRange(0, size);
199
+ // destroyed while the mapping was in flight: the records it would land in are gone
200
+ const applied = !this.#destroyed;
154
201
 
155
- const uint32 = new Uint32Array(buffer);
156
- this.#write_data(uint32);
202
+ if (applied) {
203
+ this.#write_data(new Uint32Array(tmp_buffer.getMappedRange(0, size)));
204
+ }
157
205
 
158
206
  tmp_buffer.unmap();
159
207
 
160
- buffers.release(tmp_buffer);
208
+ return applied;
161
209
  }
162
210
 
163
211
  async readback() {
@@ -250,6 +298,8 @@ export class Uint32BufferSamplingStats {
250
298
  }
251
299
 
252
300
  destroy() {
301
+ this.#destroyed = true;
302
+
253
303
  this.#stat_buffer.destroy();
254
304
  }
255
305
  }
@@ -10,8 +10,14 @@ export class ViewManager {
10
10
  * @param {GraphicsContext} graphics
11
11
  * @param {CameraManager} cameras
12
12
  * @param {SceneManager} scenes
13
+ * @param {Object} [options]
14
+ * @param {number} [options.virtual_geometry_tau_scale] how much coarser than the runtime's
15
+ * threshold the views this hands out cut virtual geometry — the owner of the views decides,
16
+ * since nothing in the runtime knows what kind of view it is cutting for
13
17
  */
14
- constructor(graphics: GraphicsContext, cameras: CameraManager, scenes: SceneManager);
18
+ constructor(graphics: GraphicsContext, cameras: CameraManager, scenes: SceneManager, { virtual_geometry_tau_scale }?: {
19
+ virtual_geometry_tau_scale?: number;
20
+ });
15
21
  /**
16
22
  *
17
23
  * @return {SceneManager}
@@ -1 +1 @@
1
- {"version":3,"file":"ViewManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/view/ViewManager.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH;IAmCI;;;;;OAKG;IACH,sBAJW,eAAe,WACf,aAAa,UACb,YAAY,EAQtB;IA9BD;;;OAGG;IACH,8DAEC;IA2CD;;;;OAIG;IACH,aAHW,IAAI,GACF,OAAO,CAInB;IAED;;;;OAIG;IACH,aAHW,IAAI,GACF,cAAc,CAI1B;IAED;;;;;;;;;;;;;OAaG;IACH,cAFW,IAAI,QASd;IAED;;;;;;OAMG;IACH,WAFa,IAAI,CAQhB;;CACJ;8BA/HY,OAAO,uBAAuB,EAAE,eAAe;4BAC/C,OAAO,4BAA4B,EAAE,aAAa;2BAClD,OAAO,0BAA0B,EAAE,YAAY;mBAC/C,OAAO,WAAW,EAAE,IAAI;+BANN,qBAAqB"}
1
+ {"version":3,"file":"ViewManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/view/ViewManager.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH;IAyCI;;;;;;;;;OASG;IACH,sBARW,eAAe,WACf,aAAa,UACb,YAAY;QAEK,0BAA0B,GAA3C,MAAM;OAchB;IA5CD;;;OAGG;IACH,8DAEC;IA0DD;;;;OAIG;IACH,aAHW,IAAI,GACF,OAAO,CAInB;IAED;;;;OAIG;IACH,aAHW,IAAI,GACF,cAAc,CAI1B;IAED;;;;;;;;;;;;;OAaG;IACH,cAFW,IAAI,QASd;IAED;;;;;;OAMG;IACH,WAFa,IAAI,CAQhB;;CACJ;8BA9IY,OAAO,uBAAuB,EAAE,eAAe;4BAC/C,OAAO,4BAA4B,EAAE,aAAa;2BAClD,OAAO,0BAA0B,EAAE,YAAY;mBAC/C,OAAO,WAAW,EAAE,IAAI;+BANN,qBAAqB"}
@@ -1,3 +1,4 @@
1
+ import { assert } from "../../../core/assert.js";
1
2
  import { HashMap } from "../../../core/collection/map/HashMap.js";
2
3
  import { GPUViewContext } from "./GPUViewContext.js";
3
4
 
@@ -43,14 +44,28 @@ export class ViewManager {
43
44
  */
44
45
  #graphics;
45
46
 
47
+ /**
48
+ * What every view this hands out starts its `VGeoViewCut.tau_scale` at.
49
+ * @type {number}
50
+ */
51
+ #virtual_geometry_tau_scale;
52
+
46
53
  /**
47
54
  *
48
55
  * @param {GraphicsContext} graphics
49
56
  * @param {CameraManager} cameras
50
57
  * @param {SceneManager} scenes
58
+ * @param {Object} [options]
59
+ * @param {number} [options.virtual_geometry_tau_scale] how much coarser than the runtime's
60
+ * threshold the views this hands out cut virtual geometry — the owner of the views decides,
61
+ * since nothing in the runtime knows what kind of view it is cutting for
51
62
  */
52
- constructor(graphics, cameras, scenes) {
63
+ constructor(graphics, cameras, scenes, { virtual_geometry_tau_scale = 1 } = {}) {
64
+ assert.isNumber(virtual_geometry_tau_scale, 'virtual_geometry_tau_scale');
65
+ assert.greaterThan(virtual_geometry_tau_scale, 0, 'virtual_geometry_tau_scale');
66
+
53
67
  this.#graphics = graphics;
68
+ this.#virtual_geometry_tau_scale = virtual_geometry_tau_scale;
54
69
 
55
70
  this.#device = graphics.device;
56
71
  this.#cameras = cameras;
@@ -70,6 +85,7 @@ export class ViewManager {
70
85
  const gpu_ctx = new GPUViewContext(this.#graphics, scene, camera);
71
86
 
72
87
  gpu_ctx.label = view.label;
88
+ gpu_ctx.virtual_geometry_cut.tau_scale = this.#virtual_geometry_tau_scale;
73
89
 
74
90
  return gpu_ctx;
75
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GPUSceneVolumetrics.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/GPUSceneVolumetrics.js"],"names":[],"mappings":"AAOA;;;GAGG;AAEH;;;GAGG;AACH;IAkCI;;;;OAIG;IACH,4CAFW,gBAAgB,EAkB1B;IArDD;;OAEG;IACH,QAFU,gBAAgB,CAEpB;IAWN,gCAEC;IAOD,sCAEC;IA8BD,gBAEC;IAED;;;;OAIG;IACH,YAHW,eAAe,gBACf,MAAM,QA+ChB;;CAEJ;8BAzHY,OAAO,uBAAuB,EAAE,eAAe;+BAC/C,OAAO,uBAAuB,EAAE,gBAAgB;mCAN1B,8CAA8C;+BADlD,6BAA6B"}
1
+ {"version":3,"file":"GPUSceneVolumetrics.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/GPUSceneVolumetrics.js"],"names":[],"mappings":"AAOA;;;GAGG;AAEH;;;GAGG;AACH;IAkCI;;;;OAIG;IACH,4CAFW,gBAAgB,EAkB1B;IArDD;;OAEG;IACH,QAFU,gBAAgB,CAEpB;IAWN,gCAEC;IAOD,sCAEC;IA8BD,gBAGC;IAED;;;;OAIG;IACH,YAHW,eAAe,gBACf,MAAM,QA+ChB;;CAEJ;8BA1HY,OAAO,uBAAuB,EAAE,eAAe;+BAC/C,OAAO,uBAAuB,EAAE,gBAAgB;mCAN1B,8CAA8C;+BADlD,6BAA6B"}
@@ -73,6 +73,7 @@ export class GPUSceneVolumetrics {
73
73
 
74
74
  destroy() {
75
75
  this.#table.destroy();
76
+ this.#metadata_buffer.destroy();
76
77
  }
77
78
 
78
79
  /**
@@ -30,16 +30,26 @@ export class GPUViewVolumetrics {
30
30
  * @param {number} options.light_cluster_lookup
31
31
  * @param {number} options.light_cluster_parameters
32
32
  * @param {number} options.shadowmap_atlas
33
+ * @param {import("../ShadeIndirectLightingMode.js").ShadeIndirectLightingMode} options.indirect_lighting_mode the renderer's; picks the froxel GI
34
+ * module that starts the froxel irradiance volume
35
+ * @returns {{resolved: number, metadata: number, irradiance: {Y: number, CoCg: number}}} the
36
+ * integrated aerial LUT, the metadata buffer, and the froxel irradiance volume
37
+ * (chunk_volumetrics_irradiance_sh) for the transparent surfaces the lighting pass cannot see
33
38
  */
34
- graph_update({ graph, light_cluster_data, light_cluster_lookup, light_cluster_parameters, shadowmap_atlas, }: {
39
+ graph_update({ graph, light_cluster_data, light_cluster_lookup, light_cluster_parameters, shadowmap_atlas, indirect_lighting_mode, }: {
35
40
  graph: FrameGraph;
36
41
  light_cluster_data: number;
37
42
  light_cluster_lookup: number;
38
43
  light_cluster_parameters: number;
39
44
  shadowmap_atlas: number;
45
+ indirect_lighting_mode: import("../ShadeIndirectLightingMode.js").ShadeIndirectLightingMode;
40
46
  }): {
41
- resolved: any;
42
- metadata: any;
47
+ resolved: number;
48
+ metadata: number;
49
+ irradiance: {
50
+ Y: number;
51
+ CoCg: number;
52
+ };
43
53
  };
44
54
  #private;
45
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GPUViewVolumetrics.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/GPUViewVolumetrics.js"],"names":[],"mappings":"AAiCA;IAkII;;;;OAIG;IACH,kBAHW,cAAc,qBAwBxB;IAxHD;;OAEG;IACH,4BAOC;IAjBD;;OAEG;IACH,2BAEC;IAsCD;;OAEG;IACH,0BAEC;IAZD;;OAEG;IACH,yBAEC;IAwFD,gBAWC;IA6ND;;;;;;;;OAQG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACM,kBAAkB,EAAlC,MAAM;QACU,oBAAoB,EAApC,MAAM;QACU,wBAAwB,EAAxC,MAAM;QACU,eAAe,EAA/B,MAAM;;;;MAoFhB;;CAEJ;yBA5eY,OAAO,2DAA2D,EAAE,UAAU;6BAC9E,OAAO,2BAA2B,EAAE,cAAc"}
1
+ {"version":3,"file":"GPUViewVolumetrics.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/volumetrics/GPUViewVolumetrics.js"],"names":[],"mappings":"AAiCA;IAkII;;;;OAIG;IACH,kBAHW,cAAc,qBAwBxB;IAxHD;;OAEG;IACH,4BAOC;IAjBD;;OAEG;IACH,2BAEC;IAsCD;;OAEG;IACH,0BAEC;IAZD;;OAEG;IACH,yBAEC;IAwFD,gBAWC;IA6ND;;;;;;;;;;;;;OAaG;IACH;QAX+B,KAAK,EAAzB,UAAU;QACM,kBAAkB,EAAlC,MAAM;QACU,oBAAoB,EAApC,MAAM;QACU,wBAAwB,EAAxC,MAAM;QACU,eAAe,EAA/B,MAAM;QACuE,sBAAsB,EAAnG,OAAO,iCAAiC,EAAE,yBAAyB;QAEjE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAyFvF;;CAEJ;yBApfY,OAAO,2DAA2D,EAAE,UAAU;6BAC9E,OAAO,2BAA2B,EAAE,cAAc"}
@@ -429,6 +429,11 @@ export class GPUViewVolumetrics {
429
429
  * @param {number} options.light_cluster_lookup
430
430
  * @param {number} options.light_cluster_parameters
431
431
  * @param {number} options.shadowmap_atlas
432
+ * @param {import("../ShadeIndirectLightingMode.js").ShadeIndirectLightingMode} options.indirect_lighting_mode the renderer's; picks the froxel GI
433
+ * module that starts the froxel irradiance volume
434
+ * @returns {{resolved: number, metadata: number, irradiance: {Y: number, CoCg: number}}} the
435
+ * integrated aerial LUT, the metadata buffer, and the froxel irradiance volume
436
+ * (chunk_volumetrics_irradiance_sh) for the transparent surfaces the lighting pass cannot see
432
437
  */
433
438
  graph_update({
434
439
  graph,
@@ -436,6 +441,7 @@ export class GPUViewVolumetrics {
436
441
  light_cluster_lookup,
437
442
  light_cluster_parameters,
438
443
  shadowmap_atlas,
444
+ indirect_lighting_mode,
439
445
  }) {
440
446
 
441
447
  const view = this.#view;
@@ -487,7 +493,7 @@ export class GPUViewVolumetrics {
487
493
  taa_output = graph_import_texture(graph, this.#volumetrics_textures[parity], "volumetrics taa output");
488
494
  }
489
495
 
490
- const { lut_aerial } = graph_build_volumetrics({
496
+ const { lut_aerial, irradiance } = graph_build_volumetrics({
491
497
  graph,
492
498
  camera,
493
499
  lights,
@@ -496,6 +502,7 @@ export class GPUViewVolumetrics {
496
502
  light_cluster_lookup,
497
503
  light_cluster_parameters,
498
504
  shadowmap_atlas,
505
+ indirect_lighting_mode,
499
506
 
500
507
  volumetrics_metadata: gr_metadata,
501
508
  volumetric_resolution: resolution,
@@ -511,6 +518,7 @@ export class GPUViewVolumetrics {
511
518
  return {
512
519
  resolved: lut_aerial,
513
520
  metadata: gr_metadata,
521
+ irradiance,
514
522
  };
515
523
  }
516
524
 
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The froxel irradiance volume: the light a transparent surface standing in a froxel receives, for
3
+ * surfaces the lighting pass cannot see — the particles. The froxel GI stage (`gi/`) starts it with
4
+ * whatever the renderer's indirect lighting mode says a point there receives — the environment,
5
+ * Brick4, the light probe volume — and `shader_volumetrics_build_lighting` adds, in the same loop
6
+ * that lights the fog, every directional, point and spot light, their shadows, and the fog's own
7
+ * attenuation toward each light. idTech 8 builds the same thing in the same pass ("Froxels
8
+ * Irradiance Volume", Sousa, SIGGRAPH 2025, p.29).
9
+ *
10
+ * Stored in the Metro Exodus L1 encoding (`l1i/`): luma as SH2 — four coefficients — and chroma as
11
+ * its constant band only. Two lights of different colours from opposite sides therefore light both
12
+ * sides in their luminance-weighted mix, not one colour each; that is the price of 6 coefficients
13
+ * instead of 12.
14
+ *
15
+ * Every light is added as a delta — all of its irradiance from one direction — and scaled by
16
+ * `1/(2 pi)`, which is the scale under which `resolve_irradiance_sh_to_diffuse(Y, CoCg, n)` returns
17
+ * `E(n) / pi`: the Lambertian radiance of a unit-albedo surface facing `n`. With SH2 that is
18
+ * `E * max(0, 1/4 + cos(theta)/2)` per light, over `pi` — the band-limited clamped cosine, a quarter
19
+ * dim at the peak and a quarter lit a right angle past the terminator.
20
+ *
21
+ * - `volumetrics_irradiance_sh_add(sh, irradiance, direction_to_light)` — one light's contribution,
22
+ * `irradiance` being what reaches the point at normal incidence and `direction_to_light` a unit
23
+ * vector pointing toward the light.
24
+ * - `volumetrics_irradiance_sh_add_radiance(sh, radiance)` — a whole radiance field arriving at the
25
+ * point, as RGB SH2: coefficients of radiance, not cosine-convolved, ordered `[DC, y, z, x]` in
26
+ * the project's all-positive basis (`sh2_basis_at`). The form every GI source hands over — the
27
+ * probes of Brick4 and of the light probe volume, and `GPULightCollection.environment_sh`. A light
28
+ * is the delta field `E sh2_basis_at(l)`, and adding it this way adds exactly what
29
+ * `volumetrics_irradiance_sh_add` does.
30
+ * - `volumetrics_irradiance_sh_storable(sh)` — what an `rgba16float` volume can hold. A clustered
31
+ * light close to a froxel exceeds half precision on its own and stores as +Inf, and an infinite
32
+ * luma times a zero band-1 basis is a NaN; either would reach every particle sampling that froxel.
33
+ * Non-finite coefficients become 0 and the rest are clamped to the half range.
34
+ *
35
+ * @type {CodeChunk}
36
+ */
37
+ export const chunk_volumetrics_irradiance_sh: CodeChunk;
38
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
39
+ //# sourceMappingURL=chunk_volumetrics_irradiance_sh.d.ts.map