@woosh/meep-engine 3.60.6 → 3.60.8

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 (328) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/package.json +1 -1
  3. package/src/core/binary/BitSet.d.ts.map +1 -1
  4. package/src/core/binary/BitSet.js +2 -1
  5. package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.d.ts +2 -2
  6. package/src/core/binary/operations/ceil_log2.d.ts.map +1 -0
  7. package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.js +18 -18
  8. package/src/core/binary/zstd/ZstdReverseBitReader.d.ts.map +1 -1
  9. package/src/core/binary/zstd/ZstdReverseBitReader.js +225 -223
  10. package/src/core/binary/zstd/zstd_fse.d.ts.map +1 -1
  11. package/src/core/binary/zstd/zstd_fse.js +267 -265
  12. package/src/core/binary/zstd/zstd_huffman.d.ts.map +1 -1
  13. package/src/core/binary/zstd/zstd_huffman.js +246 -244
  14. package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
  15. package/src/core/bvh2/binary/2/BinaryUint32BVH.js +8 -2
  16. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
  17. package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +8 -7
  18. package/src/core/collection/PairUint32Map.d.ts.map +1 -1
  19. package/src/core/collection/PairUint32Map.js +2 -2
  20. package/src/core/collection/Uint32Map.d.ts.map +1 -1
  21. package/src/core/collection/Uint32Map.js +2 -4
  22. package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -1
  23. package/src/core/collection/heap/FibonacciHeap.js +2 -1
  24. package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
  25. package/src/core/geom/2d/r-tree/StaticR2Tree.js +8 -2
  26. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -1
  27. package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +2 -3
  28. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  29. package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -14
  30. package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -1
  31. package/src/engine/graphics/texture/atlas/sprite_atlas_border.js +70 -69
  32. package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.d.ts.map +1 -1
  33. package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.js +2 -1
  34. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  35. package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -1
  36. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  37. package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
  38. package/src/engine/graphics3/decal/chunk_decal_record.d.ts +14 -0
  39. package/src/engine/graphics3/decal/chunk_decal_record.d.ts.map +1 -0
  40. package/src/engine/graphics3/decal/chunk_decal_record.js +44 -0
  41. package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
  42. package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +2 -15
  43. package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
  44. package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +3 -16
  45. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  46. package/src/engine/graphics3/decal/shader_decal_composite.js +3 -23
  47. package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.d.ts.map +1 -1
  48. package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.js +2 -1
  49. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  50. package/src/engine/physics/queries/shape_cast.js +2 -2
  51. package/src/format/image/avif/av1/decode/decode_palette.js +442 -442
  52. package/src/format/image/avif/av1/entropy/SymbolWriter.d.ts.map +1 -1
  53. package/src/format/image/avif/av1/entropy/SymbolWriter.js +2 -1
  54. package/src/generation/foliage/material/foliage_tile.d.ts.map +1 -1
  55. package/src/generation/foliage/material/foliage_tile.js +2 -1
  56. package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
  57. package/src/generation/markers/GridActionRuleSet.js +12 -3
  58. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  59. package/src/shade/device/mock/SoftwareGPUDevice.js +6 -13
  60. package/src/shade/playground/caldera/main.js +3 -2
  61. package/src/shade/playground/probe_clipmap/README.md +2 -1
  62. package/src/shade/playground/probe_clipmap/index.html +7 -2
  63. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  64. package/src/shade/playground/probe_clipmap/main.js +17 -7
  65. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
  66. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +7 -13
  67. package/src/shade/playground/vgeo_scene/main.js +2 -1
  68. package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -1
  69. package/src/shade/playground/vsm/VSMDebugOverlay.js +3 -1
  70. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  71. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  72. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  73. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  74. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.d.ts.map +1 -1
  75. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js +5 -4
  76. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.d.ts.map +1 -1
  77. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js +168 -166
  78. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.d.ts.map +1 -1
  79. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.js +221 -219
  80. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  81. package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
  82. package/src/shade/renderer/fow/shader_fog_of_war.js +8 -19
  83. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +6 -6
  85. package/src/shade/renderer/geometry/sdf/MeshSDFLayout.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/sdf/MeshSDFLayout.js +2 -1
  87. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +2 -1
  89. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
  90. package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +2 -1
  91. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.d.ts.map +1 -1
  92. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.js +10 -31
  93. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.d.ts.map +1 -1
  94. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.js +9 -15
  95. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts +2 -1
  96. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.js +6 -5
  98. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
  99. package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +2 -1
  100. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -3
  101. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  102. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +168 -18
  103. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +98 -57
  104. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +168 -77
  106. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +4 -2
  107. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  108. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +27 -12
  109. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  110. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +12 -7
  111. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  112. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +8 -2
  113. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  114. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +5 -2
  115. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +1 -1
  116. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
  117. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +5 -3
  118. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +1 -1
  119. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.d.ts.map +1 -1
  120. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.js +1 -1
  121. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.d.ts.map +1 -1
  122. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.js +4 -2
  123. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.d.ts.map +1 -1
  124. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.js +1 -1
  125. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  126. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +1 -1
  127. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  128. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +3 -1
  129. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.js +2 -2
  130. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +114 -41
  131. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  132. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +424 -207
  133. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +34 -25
  134. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  135. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +41 -31
  136. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts +7 -5
  137. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts.map +1 -1
  138. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.js +7 -5
  139. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts +47 -0
  140. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts.map +1 -0
  141. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.js +84 -0
  142. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts +48 -0
  143. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts.map +1 -0
  144. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.js +101 -0
  145. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +58 -4
  146. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  147. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +127 -30
  148. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts +18 -7
  149. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts.map +1 -1
  150. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.js +39 -13
  151. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +29 -8
  152. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  153. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +112 -56
  154. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts +19 -0
  155. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts.map +1 -0
  156. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.js +35 -0
  157. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
  158. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +9 -3
  159. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +3 -3
  160. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +5 -5
  161. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +8 -12
  162. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
  163. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +23 -56
  164. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts +0 -3
  165. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts.map +1 -1
  166. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +11 -15
  167. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +26 -0
  168. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -0
  169. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +173 -0
  170. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +32 -0
  171. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -0
  172. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +166 -0
  173. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +3 -4
  174. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts.map +1 -1
  175. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +3 -4
  176. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.d.ts.map +1 -1
  177. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.js +3 -1
  178. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +6 -12
  179. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
  180. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +15 -65
  181. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.d.ts.map +1 -1
  182. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.js +7 -2
  183. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -4
  184. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
  185. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +24 -17
  186. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts +7 -5
  187. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts.map +1 -1
  188. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.js +18 -10
  189. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts +2 -2
  190. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts.map +1 -1
  191. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.js +9 -5
  192. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts +3 -0
  193. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts.map +1 -1
  194. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.js +9 -6
  195. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts +1 -1
  196. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts.map +1 -1
  197. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.js +16 -16
  198. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts +36 -0
  199. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts.map +1 -0
  200. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.js +233 -0
  201. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.d.ts.map +1 -1
  202. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.js +7 -5
  203. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  204. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +5 -3
  205. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  206. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +10 -4
  207. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts +2 -1
  208. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts.map +1 -1
  209. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.js +12 -6
  210. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +1 -2
  211. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  212. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +5 -6
  213. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +14 -18
  214. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts.map +1 -1
  215. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +25 -35
  216. package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts +13 -0
  217. package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.js +12 -0
  219. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +27 -2
  220. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  221. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +62 -6
  222. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
  223. package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +10 -19
  224. package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.d.ts.map +1 -1
  225. package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.js +6 -3
  226. package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -1
  227. package/src/shade/renderer/hiz/hzb_pick_alignment.js +149 -148
  228. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
  229. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +4 -2
  230. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -1
  231. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +6 -5
  232. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -1
  233. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +3 -1
  234. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -1
  235. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +3 -1
  236. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -1
  237. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +3 -1
  238. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +0 -5
  239. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -1
  240. package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +0 -7
  241. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +15 -2
  242. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -1
  243. package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +51 -16
  244. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -1
  245. package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +3 -2
  246. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  247. package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts +17 -0
  248. package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts.map +1 -0
  249. package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.js +81 -0
  250. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
  251. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +5 -48
  252. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
  253. package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +4 -44
  254. package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.d.ts.map +1 -1
  255. package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +4 -1
  256. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  257. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +8 -7
  258. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  259. package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.d.ts.map +1 -1
  260. package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.js +5 -7
  261. package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts +17 -0
  262. package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts.map +1 -0
  263. package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.js +56 -0
  264. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
  265. package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +2 -22
  266. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
  267. package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +2 -13
  268. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
  269. package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +10 -13
  270. package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.d.ts.map +1 -1
  271. package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js +39 -38
  272. package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.d.ts.map +1 -1
  273. package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js +7 -12
  274. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts +8 -6
  275. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts.map +1 -1
  276. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js +10 -7
  277. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts +16 -0
  278. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts.map +1 -0
  279. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.js +35 -0
  280. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts +5 -2
  281. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts.map +1 -1
  282. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js +27 -18
  283. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.d.ts.map +1 -1
  284. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js +5 -15
  285. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.d.ts.map +1 -1
  286. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js +5 -19
  287. package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.d.ts.map +1 -1
  288. package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.js +3 -22
  289. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -1
  290. package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +2 -1
  291. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.d.ts.map +1 -1
  292. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.js +154 -152
  293. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
  294. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +2 -1
  295. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +3 -1
  296. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -1
  297. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +4 -3
  298. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +7 -1
  299. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -1
  300. package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +54 -47
  301. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -1
  302. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +371 -370
  303. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  304. package/src/shade/renderer/water/GPUWaterRenderer.js +2 -1
  305. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  306. package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -1
  307. package/src/shade/renderer/water/surface/lod/shader_water_lod.js +12 -14
  308. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
  309. package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +2 -9
  310. package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
  311. package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +2 -1
  312. package/src/shade/renderer/wind/WIND_FIELD.d.ts +3 -1
  313. package/src/shade/renderer/wind/WIND_FIELD.d.ts.map +1 -1
  314. package/src/shade/renderer/wind/WIND_FIELD.js +4 -3
  315. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +8 -2
  316. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
  317. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +11 -4
  318. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +2 -2
  319. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
  320. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +13 -4
  321. package/src/shade/util/texture_mip_extent.d.ts.map +1 -1
  322. package/src/shade/util/texture_mip_extent.js +88 -87
  323. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  324. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +9 -7
  325. package/src/format/image/avif/av1/util/ceil_log2.d.ts.map +0 -1
  326. package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts +0 -1
  327. package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts.map +0 -1
  328. package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.js +0 -0
@@ -1,244 +1,246 @@
1
- import { ZstdReverseBitReader } from "./ZstdReverseBitReader.js";
2
- import { zstd_read_fse_table } from "./zstd_fse.js";
3
-
4
- /**
5
- * The widest Huffman code Zstandard allows for literals.
6
- *
7
- * @readonly
8
- * @type {number}
9
- */
10
- const MAX_CODE_BITS = 11;
11
-
12
- /**
13
- * The widest accuracy log an FSE table coding Huffman weights may declare.
14
- *
15
- * @readonly
16
- * @type {number}
17
- */
18
- const WEIGHT_MAX_ACCURACY_LOG = 6;
19
-
20
- /**
21
- * A Huffman decoding table for literals, as a flat lookup over the widest code.
22
- *
23
- * Every code is padded out to {@link MAX_CODE_BITS} and every padding of it points at the same
24
- * symbol, so decoding is one array read and a subtraction rather than a walk. A table is 2048 entries
25
- * and is built once per block at most.
26
- *
27
- * @typedef {object} ZstdHuffmanTable
28
- * @property {number} max_bits the widest code actually present
29
- * @property {Uint8Array} symbol indexed by the next `max_bits` bits
30
- * @property {Uint8Array} bits how many of them the code actually used
31
- */
32
-
33
- /**
34
- * Turn a set of per-symbol weights into a decoding table.
35
- *
36
- * A weight is a *rank*, not a code length: a symbol of weight `w` gets a code of
37
- * `max_weight + 1 - w` bits, so the largest weight is the shortest code. Codes are then handed out
38
- * shortest-last — sorted by weight, and by symbol within a weight — which is what makes the
39
- * assignment canonical and the encoder's and decoder's agree.
40
- *
41
- * @param {Uint8Array} weights one per symbol
42
- * @param {number} count how many symbols `weights` describes
43
- * @returns {ZstdHuffmanTable}
44
- * @throws {Error} for weights whose implied code space is not exactly filled
45
- */
46
- function table_from_weights(weights, count) {
47
- let total = 0;
48
-
49
- for (let i = 0; i < count; i++) {
50
- if (weights[i] > 0) {
51
- total += 1 << (weights[i] - 1);
52
- }
53
- }
54
-
55
- if (total === 0) {
56
- throw new Error("zstd: a Huffman table describes no symbols");
57
- }
58
-
59
- /*
60
- The last symbol's weight is not transmitted. It is whatever fills the code space to the next
61
- power of two — which is why the encoder can leave it out, and why a corrupt weight set shows up
62
- here as a total that is already past that power.
63
- */
64
- const max_bits = 32 - Math.clz32(total);
65
- const last = (1 << max_bits) - total;
66
-
67
- if (last === 0 || (last & (last - 1)) !== 0) {
68
- throw new Error(
69
- "zstd: a Huffman weight set leaves a code space the final symbol cannot fill"
70
- );
71
- }
72
-
73
- const all = new Uint8Array(count + 1);
74
-
75
- all.set(weights.subarray(0, count));
76
-
77
- all[count] = 32 - Math.clz32(last);
78
-
79
- const symbol_count = count + 1;
80
-
81
- const size = 1 << max_bits;
82
-
83
- const symbol = new Uint8Array(size);
84
- const bits = new Uint8Array(size);
85
-
86
- /*
87
- Codes are assigned by ascending weight — so descending code length — and by symbol within a
88
- weight. Filling the table means writing every padding of a code, which is what turns the decode
89
- into a single lookup.
90
- */
91
- let position = 0;
92
-
93
- for (let weight = 1; weight <= max_bits; weight++) {
94
- const length = max_bits + 1 - weight;
95
-
96
- for (let s = 0; s < symbol_count; s++) {
97
- if (all[s] !== weight) {
98
- continue;
99
- }
100
-
101
- const span = 1 << (max_bits - length);
102
-
103
- symbol.fill(s, position, position + span);
104
- bits.fill(length, position, position + span);
105
-
106
- position += span;
107
- }
108
- }
109
-
110
- if (position !== size) {
111
- throw new Error("zstd: a Huffman weight set does not fill its code space exactly");
112
- }
113
-
114
- return { max_bits, symbol, bits };
115
- }
116
-
117
- /**
118
- * Read a Huffman tree description and build its table.
119
- *
120
- * The weights are themselves either written out at four bits each or FSE-coded — and the FSE case
121
- * runs *two interleaved states over one distribution*, one taking the even-indexed weights and one
122
- * the odd, which is the only place in the format that does so.
123
- *
124
- * @param {Uint8Array} data
125
- * @param {number} offset
126
- * @param {number} end one past the last readable byte
127
- * @returns {{table: ZstdHuffmanTable, byte_length: number}}
128
- * @throws {Error} for a description that runs past `end` or does not describe a valid tree
129
- *
130
- * @see RFC 8878, section 4.2.1
131
- * @author Alex Goldring
132
- * @copyright Company Named Limited (c) 2026
133
- */
134
- export function zstd_read_huffman_table(data, offset, end) {
135
- const header = data[offset];
136
-
137
- const weights = new Uint8Array(255);
138
-
139
- if (header >= 128) {
140
- // written out, two weights to a byte, the first in the high nibble
141
- const count = header - 127;
142
-
143
- for (let i = 0; i < count; i++) {
144
- const byte = data[offset + 1 + (i >> 1)];
145
-
146
- weights[i] = (i & 1) === 0 ? (byte >> 4) : (byte & 15);
147
- }
148
-
149
- return {
150
- table: table_from_weights(weights, count),
151
- byte_length: 1 + ((count + 1) >> 1),
152
- };
153
- }
154
-
155
- const compressed_end = offset + 1 + header;
156
-
157
- if (compressed_end > end) {
158
- throw new Error(
159
- `zstd: a Huffman tree description claims ${header} bytes and only`
160
- + ` ${end - offset - 1} remain in the block`
161
- );
162
- }
163
-
164
- const { table: fse, byte_length: fse_bytes } = zstd_read_fse_table(
165
- data, offset + 1, compressed_end, 255, WEIGHT_MAX_ACCURACY_LOG
166
- );
167
-
168
- const reader = new ZstdReverseBitReader().init(
169
- data, offset + 1 + fse_bytes, header - fse_bytes
170
- );
171
-
172
- let state1 = reader.read(fse.accuracy_log);
173
- let state2 = reader.read(fse.accuracy_log);
174
-
175
- let count = 0;
176
-
177
- /*
178
- **The number of weights is not transmitted; running out of bits is what ends the stream.** Each
179
- turn takes the symbol the state currently names and *then* advances that state, which is the
180
- order every FSE decode uses — and the advance is allowed to read past the start of the stream,
181
- where the reader supplies zeros. Once it has, the other state's pending symbol is taken and the
182
- description is complete.
183
-
184
- Checking before the advance instead, or checking whether the *other* state could advance, both
185
- produce a weight set that is right for most of its length and wrong near the end.
186
- */
187
- for (; ;) {
188
- if (count >= 254) {
189
- throw new Error("zstd: a Huffman tree description codes more than 255 weights");
190
- }
191
-
192
- weights[count++] = fse.symbol[state1];
193
-
194
- state1 = fse.baseline[state1] + reader.read(fse.bits[state1]);
195
-
196
- if (reader.remaining < 0) {
197
- weights[count++] = fse.symbol[state2];
198
-
199
- break;
200
- }
201
-
202
- weights[count++] = fse.symbol[state2];
203
-
204
- state2 = fse.baseline[state2] + reader.read(fse.bits[state2]);
205
-
206
- if (reader.remaining < 0) {
207
- weights[count++] = fse.symbol[state1];
208
-
209
- break;
210
- }
211
- }
212
-
213
- return { table: table_from_weights(weights, count), byte_length: 1 + header };
214
- }
215
-
216
- /**
217
- * Decode one Huffman-coded stream into `out`.
218
- *
219
- * @param {ZstdHuffmanTable} table
220
- * @param {Uint8Array} data
221
- * @param {number} offset
222
- * @param {number} byte_length
223
- * @param {Uint8Array} out
224
- * @param {number} out_offset
225
- * @param {number} count symbols to produce
226
- * @throws {Error} for a stream that does not end exactly where its symbols run out
227
- */
228
- export function zstd_decode_huffman_stream(
229
- table, data, offset, byte_length, out, out_offset, count
230
- ) {
231
- const reader = new ZstdReverseBitReader().init(data, offset, byte_length);
232
-
233
- for (let i = 0; i < count; i++) {
234
- /*
235
- The lookup is over the widest code, so what is peeked is a code plus whatever followed it.
236
- The table says how many of those bits the code actually was, and only those are consumed.
237
- */
238
- const index = reader.peek(table.max_bits);
239
-
240
- out[out_offset + i] = table.symbol[index];
241
-
242
- reader.consume(table.bits[index]);
243
- }
244
- }
1
+ import { ZstdReverseBitReader } from "./ZstdReverseBitReader.js";
2
+ import { zstd_read_fse_table } from "./zstd_fse.js";
3
+ import { msb_32 } from "../msb_32.js";
4
+ import { isPowerOfTwo } from "../../math/isPowerOfTwo.js";
5
+
6
+ /**
7
+ * The widest Huffman code Zstandard allows for literals.
8
+ *
9
+ * @readonly
10
+ * @type {number}
11
+ */
12
+ const MAX_CODE_BITS = 11;
13
+
14
+ /**
15
+ * The widest accuracy log an FSE table coding Huffman weights may declare.
16
+ *
17
+ * @readonly
18
+ * @type {number}
19
+ */
20
+ const WEIGHT_MAX_ACCURACY_LOG = 6;
21
+
22
+ /**
23
+ * A Huffman decoding table for literals, as a flat lookup over the widest code.
24
+ *
25
+ * Every code is padded out to {@link MAX_CODE_BITS} and every padding of it points at the same
26
+ * symbol, so decoding is one array read and a subtraction rather than a walk. A table is 2048 entries
27
+ * and is built once per block at most.
28
+ *
29
+ * @typedef {object} ZstdHuffmanTable
30
+ * @property {number} max_bits the widest code actually present
31
+ * @property {Uint8Array} symbol indexed by the next `max_bits` bits
32
+ * @property {Uint8Array} bits how many of them the code actually used
33
+ */
34
+
35
+ /**
36
+ * Turn a set of per-symbol weights into a decoding table.
37
+ *
38
+ * A weight is a *rank*, not a code length: a symbol of weight `w` gets a code of
39
+ * `max_weight + 1 - w` bits, so the largest weight is the shortest code. Codes are then handed out
40
+ * shortest-last — sorted by weight, and by symbol within a weight — which is what makes the
41
+ * assignment canonical and the encoder's and decoder's agree.
42
+ *
43
+ * @param {Uint8Array} weights one per symbol
44
+ * @param {number} count how many symbols `weights` describes
45
+ * @returns {ZstdHuffmanTable}
46
+ * @throws {Error} for weights whose implied code space is not exactly filled
47
+ */
48
+ function table_from_weights(weights, count) {
49
+ let total = 0;
50
+
51
+ for (let i = 0; i < count; i++) {
52
+ if (weights[i] > 0) {
53
+ total += 1 << (weights[i] - 1);
54
+ }
55
+ }
56
+
57
+ if (total === 0) {
58
+ throw new Error("zstd: a Huffman table describes no symbols");
59
+ }
60
+
61
+ /*
62
+ The last symbol's weight is not transmitted. It is whatever fills the code space to the next
63
+ power of two — which is why the encoder can leave it out, and why a corrupt weight set shows up
64
+ here as a total that is already past that power.
65
+ */
66
+ const max_bits = msb_32(total) + 1;
67
+ const last = (1 << max_bits) - total;
68
+
69
+ if (last === 0 || !isPowerOfTwo(last)) {
70
+ throw new Error(
71
+ "zstd: a Huffman weight set leaves a code space the final symbol cannot fill"
72
+ );
73
+ }
74
+
75
+ const all = new Uint8Array(count + 1);
76
+
77
+ all.set(weights.subarray(0, count));
78
+
79
+ all[count] = msb_32(last) + 1;
80
+
81
+ const symbol_count = count + 1;
82
+
83
+ const size = 1 << max_bits;
84
+
85
+ const symbol = new Uint8Array(size);
86
+ const bits = new Uint8Array(size);
87
+
88
+ /*
89
+ Codes are assigned by ascending weight — so descending code length — and by symbol within a
90
+ weight. Filling the table means writing every padding of a code, which is what turns the decode
91
+ into a single lookup.
92
+ */
93
+ let position = 0;
94
+
95
+ for (let weight = 1; weight <= max_bits; weight++) {
96
+ const length = max_bits + 1 - weight;
97
+
98
+ for (let s = 0; s < symbol_count; s++) {
99
+ if (all[s] !== weight) {
100
+ continue;
101
+ }
102
+
103
+ const span = 1 << (max_bits - length);
104
+
105
+ symbol.fill(s, position, position + span);
106
+ bits.fill(length, position, position + span);
107
+
108
+ position += span;
109
+ }
110
+ }
111
+
112
+ if (position !== size) {
113
+ throw new Error("zstd: a Huffman weight set does not fill its code space exactly");
114
+ }
115
+
116
+ return { max_bits, symbol, bits };
117
+ }
118
+
119
+ /**
120
+ * Read a Huffman tree description and build its table.
121
+ *
122
+ * The weights are themselves either written out at four bits each or FSE-coded — and the FSE case
123
+ * runs *two interleaved states over one distribution*, one taking the even-indexed weights and one
124
+ * the odd, which is the only place in the format that does so.
125
+ *
126
+ * @param {Uint8Array} data
127
+ * @param {number} offset
128
+ * @param {number} end one past the last readable byte
129
+ * @returns {{table: ZstdHuffmanTable, byte_length: number}}
130
+ * @throws {Error} for a description that runs past `end` or does not describe a valid tree
131
+ *
132
+ * @see RFC 8878, section 4.2.1
133
+ * @author Alex Goldring
134
+ * @copyright Company Named Limited (c) 2026
135
+ */
136
+ export function zstd_read_huffman_table(data, offset, end) {
137
+ const header = data[offset];
138
+
139
+ const weights = new Uint8Array(255);
140
+
141
+ if (header >= 128) {
142
+ // written out, two weights to a byte, the first in the high nibble
143
+ const count = header - 127;
144
+
145
+ for (let i = 0; i < count; i++) {
146
+ const byte = data[offset + 1 + (i >> 1)];
147
+
148
+ weights[i] = (i & 1) === 0 ? (byte >> 4) : (byte & 15);
149
+ }
150
+
151
+ return {
152
+ table: table_from_weights(weights, count),
153
+ byte_length: 1 + ((count + 1) >> 1),
154
+ };
155
+ }
156
+
157
+ const compressed_end = offset + 1 + header;
158
+
159
+ if (compressed_end > end) {
160
+ throw new Error(
161
+ `zstd: a Huffman tree description claims ${header} bytes and only`
162
+ + ` ${end - offset - 1} remain in the block`
163
+ );
164
+ }
165
+
166
+ const { table: fse, byte_length: fse_bytes } = zstd_read_fse_table(
167
+ data, offset + 1, compressed_end, 255, WEIGHT_MAX_ACCURACY_LOG
168
+ );
169
+
170
+ const reader = new ZstdReverseBitReader().init(
171
+ data, offset + 1 + fse_bytes, header - fse_bytes
172
+ );
173
+
174
+ let state1 = reader.read(fse.accuracy_log);
175
+ let state2 = reader.read(fse.accuracy_log);
176
+
177
+ let count = 0;
178
+
179
+ /*
180
+ **The number of weights is not transmitted; running out of bits is what ends the stream.** Each
181
+ turn takes the symbol the state currently names and *then* advances that state, which is the
182
+ order every FSE decode uses — and the advance is allowed to read past the start of the stream,
183
+ where the reader supplies zeros. Once it has, the other state's pending symbol is taken and the
184
+ description is complete.
185
+
186
+ Checking before the advance instead, or checking whether the *other* state could advance, both
187
+ produce a weight set that is right for most of its length and wrong near the end.
188
+ */
189
+ for (; ;) {
190
+ if (count >= 254) {
191
+ throw new Error("zstd: a Huffman tree description codes more than 255 weights");
192
+ }
193
+
194
+ weights[count++] = fse.symbol[state1];
195
+
196
+ state1 = fse.baseline[state1] + reader.read(fse.bits[state1]);
197
+
198
+ if (reader.remaining < 0) {
199
+ weights[count++] = fse.symbol[state2];
200
+
201
+ break;
202
+ }
203
+
204
+ weights[count++] = fse.symbol[state2];
205
+
206
+ state2 = fse.baseline[state2] + reader.read(fse.bits[state2]);
207
+
208
+ if (reader.remaining < 0) {
209
+ weights[count++] = fse.symbol[state1];
210
+
211
+ break;
212
+ }
213
+ }
214
+
215
+ return { table: table_from_weights(weights, count), byte_length: 1 + header };
216
+ }
217
+
218
+ /**
219
+ * Decode one Huffman-coded stream into `out`.
220
+ *
221
+ * @param {ZstdHuffmanTable} table
222
+ * @param {Uint8Array} data
223
+ * @param {number} offset
224
+ * @param {number} byte_length
225
+ * @param {Uint8Array} out
226
+ * @param {number} out_offset
227
+ * @param {number} count symbols to produce
228
+ * @throws {Error} for a stream that does not end exactly where its symbols run out
229
+ */
230
+ export function zstd_decode_huffman_stream(
231
+ table, data, offset, byte_length, out, out_offset, count
232
+ ) {
233
+ const reader = new ZstdReverseBitReader().init(data, offset, byte_length);
234
+
235
+ for (let i = 0; i < count; i++) {
236
+ /*
237
+ The lookup is over the widest code, so what is peeked is a code plus whatever followed it.
238
+ The table says how many of those bits the code actually was, and only those are consumed.
239
+ */
240
+ const index = reader.peek(table.max_bits);
241
+
242
+ out[out_offset + i] = table.symbol[index];
243
+
244
+ reader.consume(table.bits[index]);
245
+ }
246
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryUint32BVH.d.ts","sourceRoot":"","sources":["../../../../../../src/core/bvh2/binary/2/BinaryUint32BVH.js"],"names":[],"mappings":"AAUA;;;GAGG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;;;GAIG;AACH,mCAFU,MAAM,CAEsB;AACtC;;;GAGG;AACH,iCAFU,MAAM,CAEoB;AAiDpC;;;;;;;GAOG;AACH;IACI;;;;OAIG;IACH,sBAAc;IAEd;;;;OAIG;IACH,gCAAe;IAEf;;;;OAIG;IACH,+BAAc;IAEd;;;;OAIG;IACH,4BAAwB;IAExB;;;;OAIG;IACH,0BAAsB;IA0CtB;;;OAGG;IACH,8BAOC;IAED,wBAEC;IAnDD;;;OAGG;IACH,oBAFa,MAAM,CAIlB;IAED,2BAEC;IAED,gCAEC;IAED,8BAEC;IAED;;;OAGG;IACH,uBAFa,MAAM,CAIlB;IAED,4BAEC;IAED,0BAEC;IAmBD;;;;OAIG;IACH,2BAHW,MAAM,GACJ,MAAM,CAalB;IAED,6BASC;IAED;;;OAGG;IACH,oBAFW,MAAM,QAgBhB;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACL,MAAM,CASjB;IAED;;;;;;;;;;OAUG;IACH,mBATW,MAAM,WACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAoChB;IAED;;;;;OAKG;IACH,oBAJW,MAAM,eACN,MAAM,EAAE,GAAC,YAAY,sBACrB,MAAM,QAIhB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,MAAM,CAQlB;IAED,qCAoBC;IAED;;;OAGG;IACH,oBAFW,MAAM,EAAE,QAqElB;IAED;;;;;OAKG;IACH,sBAUC;IAED;;OAEG;IACH,cAsEC;CACJ"}
1
+ {"version":3,"file":"BinaryUint32BVH.d.ts","sourceRoot":"","sources":["../../../../../../src/core/bvh2/binary/2/BinaryUint32BVH.js"],"names":[],"mappings":"AAWA;;;GAGG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;;;GAIG;AACH,mCAFU,MAAM,CAEsB;AACtC;;;GAGG;AACH,iCAFU,MAAM,CAEoB;AAiDpC;;;;;;;GAOG;AACH;IACI;;;;OAIG;IACH,sBAAc;IAEd;;;;OAIG;IACH,gCAAe;IAEf;;;;OAIG;IACH,+BAAc;IAEd;;;;OAIG;IACH,4BAAwB;IAExB;;;;OAIG;IACH,0BAAsB;IA0CtB;;;OAGG;IACH,8BAOC;IAED,wBAEC;IAnDD;;;OAGG;IACH,oBAFa,MAAM,CAIlB;IAED,2BAEC;IAED,gCAEC;IAED,8BAEC;IAED;;;OAGG;IACH,uBAFa,MAAM,CAIlB;IAED,4BAEC;IAED,0BAEC;IAmBD;;;;OAIG;IACH,2BAHW,MAAM,GACJ,MAAM,CAalB;IAED,6BASC;IAED;;;OAGG;IACH,oBAFW,MAAM,QAgBhB;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACL,MAAM,CASjB;IAED;;;;;;;;;;OAUG;IACH,mBATW,MAAM,WACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAoChB;IAED;;;;;OAKG;IACH,oBAJW,MAAM,eACN,MAAM,EAAE,GAAC,YAAY,sBACrB,MAAM,QAIhB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,MAAM,CAQlB;IAED,qCAoBC;IAED;;;OAGG;IACH,oBAFW,MAAM,EAAE,QAqElB;IAED;;;;;OAKG;IACH,sBAUC;IAED;;OAEG;IACH,cA2EC;CACJ"}
@@ -7,6 +7,7 @@ import { aabb3_array_combine } from "../../../geom/3d/aabb/aabb3_array_combine.j
7
7
  import { aabb3_array_set } from "../../../geom/3d/aabb/aabb3_array_set.js";
8
8
  import { aabb3_half_surface_area_extents } from "../../../geom/3d/aabb/aabb3_half_surface_area_extents.js";
9
9
  import { v3_morton_encode_bounded } from "../../../geom/3d/morton/v3_morton_encode_bounded.js";
10
+ import { msb_32 } from "../../../binary/msb_32.js";
10
11
 
11
12
  /**
12
13
  * @readonly
@@ -428,12 +429,17 @@ export class BinaryUint32BVH {
428
429
 
429
430
  const leaf_node_block_address = binary_node_count * BVH_BINARY_NODE_SIZE;
430
431
 
431
- let level = Math.floor(Math.log(binary_node_count) / Math.log(2));
432
+ if (binary_node_count === 0) {
433
+ // no leaves, nothing to build
434
+ return;
435
+ }
436
+
437
+ let level = msb_32(binary_node_count);
432
438
 
433
439
  let i, offset, level_node_count;
434
440
  //NOTE: building the first level separately allows us to avoid some switching logic needed to determine what is the type of lower level node
435
441
  //build one level above leaf nodes
436
- level_node_count = Math.pow(2, level);
442
+ level_node_count = 1 << level;
437
443
  offset = (level_node_count - 1) * BVH_BINARY_NODE_SIZE;
438
444
 
439
445
  let parentIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"ebvh_optimize_treelet.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_optimize_treelet.js"],"names":[],"mappings":"AAgRA;;;;;;;GAOG;AACH,uDAHW,MAAM,iBACN,MAAM,QAiKhB"}
1
+ {"version":3,"file":"ebvh_optimize_treelet.d.ts","sourceRoot":"","sources":["../../../../../src/core/bvh2/bvh3/ebvh_optimize_treelet.js"],"names":[],"mappings":"AAiRA;;;;;;;GAOG;AACH,uDAHW,MAAM,iBACN,MAAM,QAiKhB"}
@@ -2,6 +2,8 @@ import { assert } from "../../assert.js";
2
2
  import { ctz32 } from "../../binary/ctz32.js";
3
3
  import { bitCount } from "../../binary/operations/bitCount.js";
4
4
  import { ELEMENT_WORD_COUNT, NULL_NODE } from "./BVH.js";
5
+ import { ceil_log2 } from "../../binary/operations/ceil_log2.js";
6
+ import { isPowerOfTwo } from "../../math/isPowerOfTwo.js";
5
7
 
6
8
  // Common continuous memory region for better cache performance
7
9
  const scratch_memory = new ArrayBuffer((256 * 3 + 16) * 4 + 256 * 6 * 4);
@@ -84,8 +86,7 @@ function optimize_treelet(bvh, root, leaves, leaf_count) {
84
86
  let min_x, min_y, min_z, max_x, max_y, max_z;
85
87
 
86
88
  // Check if 's' is a power of 2 (i.e., a single leaf)
87
- // (s & (s-1)) === 0 is the standard trick for this
88
- const is_a_leaf = (s & (s - 1)) === 0;
89
+ const is_a_leaf = isPowerOfTwo(s);
89
90
 
90
91
  if (is_a_leaf) {
91
92
  // --- CASE A: LEAF ---
@@ -312,7 +313,7 @@ export function ebvh_optimize_treelet(
312
313
  return;
313
314
  }
314
315
 
315
- const min_height = Math.ceil(Math.log2(treelet_size));
316
+ const min_height = ceil_log2(treelet_size);
316
317
 
317
318
  // do a stackless traversal
318
319
  while (true) {
@@ -357,10 +358,10 @@ export function ebvh_optimize_treelet(
357
358
  came_from_node = node;
358
359
 
359
360
  node = parent;
360
- } else if (came_from_type === CAME_FROM_TYPE_CHILD_2) {
361
- if (node === root) {
362
- // traversed all the way back up
363
- break;
361
+ } else if (came_from_type === CAME_FROM_TYPE_CHILD_2) {
362
+ if (node === root) {
363
+ // traversed all the way back up
364
+ break;
364
365
  }
365
366
  // finishing traversal of this branch
366
367
  came_from_node = node;
@@ -1 +1 @@
1
- {"version":3,"file":"PairUint32Map.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/PairUint32Map.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qCAFU,MAAM,CAEyB;AA2BzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAII;;;OAGG;IACH,+BAFW,MAAM,EAahB;IAjBD,eAAW;IAYP,mBAAqB;IACrB,eAAqB;IACrB,gBAAkC;IAClC,yBAA2E;IAC3E,oBAAgD;IAGpD;;OAEG;IACH,mBAEC;IAED;;OAEG;IACH,uBAEC;IAED;;;;;OAKG;IACH,sBAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,WAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAiClB;IAED;;;;;OAKG;IACH,WAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,WAJW,MAAM,SACN,MAAM,SACN,MAAM,QAOhB;IAED;;;;;OAKG;IACH,yBAiDC;IAED;;;;;OAKG;IACH,cAJW,MAAM,SACN,MAAM,GACJ,OAAO,CA+DnB;IAED,cAGC;IAED;;;OAGG;IACH,iBAkBC;CACJ;;iBAGS,MAAM"}
1
+ {"version":3,"file":"PairUint32Map.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/PairUint32Map.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qCAFU,MAAM,CAEyB;AA2BzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAII;;;OAGG;IACH,+BAFW,MAAM,EAYhB;IAhBD,eAAW;IAWP,mBAAqB;IACrB,eAAqB;IACrB,gBAAkC;IAClC,yBAA2E;IAC3E,oBAAgD;IAGpD;;OAEG;IACH,mBAEC;IAED;;OAEG;IACH,uBAEC;IAED;;;;;OAKG;IACH,sBAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,WAJW,MAAM,SACN,MAAM,GACJ,MAAM,CAiClB;IAED;;;;;OAKG;IACH,WAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,WAJW,MAAM,SACN,MAAM,SACN,MAAM,QAOhB;IAED;;;;;OAKG;IACH,yBAiDC;IAED;;;;;OAKG;IACH,cAJW,MAAM,SACN,MAAM,GACJ,OAAO,CA+DnB;IAED,cAGC;IAED;;;OAGG;IACH,iBAkBC;CACJ;;iBAGS,MAAM"}
@@ -1,4 +1,5 @@
1
1
  import { assert } from "../assert.js";
2
+ import { ceilPowerOfTwo } from "../binary/operations/ceilPowerOfTwo.js";
2
3
 
3
4
  /**
4
5
  * Returned by {@link PairUint32Map#get} when the key pair is absent.
@@ -64,8 +65,7 @@ export class PairUint32Map {
64
65
  constructor(initial_capacity = DEFAULT_CAPACITY) {
65
66
  assert.isNonNegativeInteger(initial_capacity, 'initial_capacity');
66
67
 
67
- let cap = MIN_CAPACITY;
68
- while (cap < initial_capacity) cap <<= 1;
68
+ const cap = Math.max(MIN_CAPACITY, ceilPowerOfTwo(initial_capacity));
69
69
 
70
70
  this.__capacity = cap;
71
71
  this.__mask = cap - 1;
@@ -1 +1 @@
1
- {"version":3,"file":"Uint32Map.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/Uint32Map.js"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,gCAFU,MAAM,CAEoB;AA6BpC;;;;;;;;;;;;;;;;;GAiBG;AACH;IAQI;;;OAGG;IACH,+BAFW,MAAM,EAqChB;IA7CD;;;OAGG;IACH,eAAW;IAcP;;;OAGG;IACH,mBAAqB;IACrB;;;OAGG;IACH,eAAqB;IACrB;;;;OAIG;IACH,gBAAkC;IAClC;;;OAGG;IACH,yBAA2E;IAC3E;;;;OAIG;IACH,eAAuC;IAG3C;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,QAHW,MAAM,GACJ,MAAM,CAkClB;IAED;;;;OAIG;IACH,QAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,QAHW,MAAM,SACN,MAAM,QAehB;IAED;;;;;;;;OAQG;IACH,yBA4CC;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,OAAO,CA+DnB;IAED;;OAEG;IACH,cAGC;IAED;;;;;OAKG;IACH,iBAkBC;CACJ"}
1
+ {"version":3,"file":"Uint32Map.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/Uint32Map.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,gCAFU,MAAM,CAEoB;AA6BpC;;;;;;;;;;;;;;;;;GAiBG;AACH;IAQI;;;OAGG;IACH,+BAFW,MAAM,EAkChB;IA1CD;;;OAGG;IACH,eAAW;IAWP;;;OAGG;IACH,mBAAqB;IACrB;;;OAGG;IACH,eAAqB;IACrB;;;;OAIG;IACH,gBAAkC;IAClC;;;OAGG;IACH,yBAA2E;IAC3E;;;;OAIG;IACH,eAAuC;IAG3C;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,QAHW,MAAM,GACJ,MAAM,CAkClB;IAED;;;;OAIG;IACH,QAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,QAHW,MAAM,SACN,MAAM,QAehB;IAED;;;;;;;;OAQG;IACH,yBA4CC;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,OAAO,CA+DnB;IAED;;OAEG;IACH,cAGC;IAED;;;;;OAKG;IACH,iBAkBC;CACJ"}
@@ -1,4 +1,5 @@
1
1
  import { assert } from "../assert.js";
2
+ import { ceilPowerOfTwo } from "../binary/operations/ceilPowerOfTwo.js";
2
3
 
3
4
  const UINT32_MAX = 4294967295;
4
5
 
@@ -69,10 +70,7 @@ export class Uint32Map {
69
70
  constructor(initial_capacity = DEFAULT_CAPACITY) {
70
71
  assert.isNonNegativeInteger(initial_capacity, 'initial_capacity');
71
72
 
72
- let cap = MIN_CAPACITY;
73
- while (cap < initial_capacity) {
74
- cap <<= 1;
75
- }
73
+ const cap = Math.max(MIN_CAPACITY, ceilPowerOfTwo(initial_capacity));
76
74
 
77
75
  /**
78
76
  * @type {number}
@@ -1 +1 @@
1
- {"version":3,"file":"FibonacciHeap.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/heap/FibonacciHeap.js"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IASI;;;OAGG;IACH,+BAFW,MAAM,EAiChB;IA1CD;;;;OAIG;IACH,eAAW;IASP;;;OAGG;IACH,eAAuE;IAEvE;;;;OAIG;IACH,cAAwB;IAExB;;;;;;;;;;;;;OAaG;IACH,kBAA0B;IAG9B;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,qBAKC;IAED;;;OAGG;IACH,YAFa,OAAO,CAInB;IAED;;;OAGG;IACH,cAFa,MAAM,CAOlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,sBAyBC;IAED;;;;;;OAMG;IACH,+BASC;IAED;;;;OAIG;IACH,WAHW,MAAM,SACN,MAAM,QA4BhB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAwDlB;IAED;;;;;OAKG;IACH,sBAwDC;IAED;;;;;;OAMG;IACH,eA4BC;IAED;;;;;;OAMG;IACH,uBAkBC;IAED;;;;;;OAMG;IACH,cA2BC;IAED;;;;;OAKG;IACH,wBAaC;IAED;;;;;OAKG;IACH,wBAGC;IAED;;;;OAIG;IACH,aAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,iBAHW,MAAM,SACN,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,qBAHW,MAAM,SACN,MAAM,QAQhB;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,OAAO,CAYnB;IAED;;OAEG;IACH,cAKC;CACJ"}
1
+ {"version":3,"file":"FibonacciHeap.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/heap/FibonacciHeap.js"],"names":[],"mappings":"AAyCA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IASI;;;OAGG;IACH,+BAFW,MAAM,EAiChB;IA1CD;;;;OAIG;IACH,eAAW;IASP;;;OAGG;IACH,eAAuE;IAEvE;;;;OAIG;IACH,cAAwB;IAExB;;;;;;;;;;;;;OAaG;IACH,kBAA0B;IAG9B;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,qBAKC;IAED;;;OAGG;IACH,YAFa,OAAO,CAInB;IAED;;;OAGG;IACH,cAFa,MAAM,CAOlB;IAED;;;OAGG;IACH,YAFa,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,sBAyBC;IAED;;;;;;OAMG;IACH,+BASC;IAED;;;;OAIG;IACH,WAHW,MAAM,SACN,MAAM,QA4BhB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAwDlB;IAED;;;;;OAKG;IACH,sBAwDC;IAED;;;;;;OAMG;IACH,eA4BC;IAED;;;;;;OAMG;IACH,uBAkBC;IAED;;;;;;OAMG;IACH,cA2BC;IAED;;;;;OAKG;IACH,wBAaC;IAED;;;;;OAKG;IACH,wBAGC;IAED;;;;OAIG;IACH,aAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,MAAM,GACJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,iBAHW,MAAM,SACN,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,qBAHW,MAAM,SACN,MAAM,QAQhB;IAED;;;;OAIG;IACH,WAHW,MAAM,GACJ,OAAO,CAYnB;IAED;;OAEG;IACH,cAKC;CACJ"}