@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.
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/binary/BitSet.d.ts.map +1 -1
- package/src/core/binary/BitSet.js +2 -1
- package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.d.ts +2 -2
- package/src/core/binary/operations/ceil_log2.d.ts.map +1 -0
- package/src/{format/image/avif/av1/util → core/binary/operations}/ceil_log2.js +18 -18
- package/src/core/binary/zstd/ZstdReverseBitReader.d.ts.map +1 -1
- package/src/core/binary/zstd/ZstdReverseBitReader.js +225 -223
- package/src/core/binary/zstd/zstd_fse.d.ts.map +1 -1
- package/src/core/binary/zstd/zstd_fse.js +267 -265
- package/src/core/binary/zstd/zstd_huffman.d.ts.map +1 -1
- package/src/core/binary/zstd/zstd_huffman.js +246 -244
- package/src/core/bvh2/binary/2/BinaryUint32BVH.d.ts.map +1 -1
- package/src/core/bvh2/binary/2/BinaryUint32BVH.js +8 -2
- package/src/core/bvh2/bvh3/ebvh_optimize_treelet.d.ts.map +1 -1
- package/src/core/bvh2/bvh3/ebvh_optimize_treelet.js +8 -7
- package/src/core/collection/PairUint32Map.d.ts.map +1 -1
- package/src/core/collection/PairUint32Map.js +2 -2
- package/src/core/collection/Uint32Map.d.ts.map +1 -1
- package/src/core/collection/Uint32Map.js +2 -4
- package/src/core/collection/heap/FibonacciHeap.d.ts.map +1 -1
- package/src/core/collection/heap/FibonacciHeap.js +2 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.d.ts.map +1 -1
- package/src/core/geom/2d/r-tree/StaticR2Tree.js +8 -2
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.d.ts.map +1 -1
- package/src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js +2 -3
- package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +13 -14
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/sprite_atlas_border.js +70 -69
- package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.d.ts.map +1 -1
- package/src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.js +2 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/GPUParticleEmitterSystem.js +2 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
- package/src/engine/graphics3/decal/chunk_decal_record.d.ts +14 -0
- package/src/engine/graphics3/decal/chunk_decal_record.d.ts.map +1 -0
- package/src/engine/graphics3/decal/chunk_decal_record.js +44 -0
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cluster_assign_decals.js +2 -15
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_cull_decals_frustum.js +3 -16
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +3 -23
- package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.d.ts.map +1 -1
- package/src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.js +2 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/engine/physics/queries/shape_cast.js +2 -2
- package/src/format/image/avif/av1/decode/decode_palette.js +442 -442
- package/src/format/image/avif/av1/entropy/SymbolWriter.d.ts.map +1 -1
- package/src/format/image/avif/av1/entropy/SymbolWriter.js +2 -1
- package/src/generation/foliage/material/foliage_tile.d.ts.map +1 -1
- package/src/generation/foliage/material/foliage_tile.js +2 -1
- package/src/generation/markers/GridActionRuleSet.d.ts.map +1 -1
- package/src/generation/markers/GridActionRuleSet.js +12 -3
- package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUDevice.js +6 -13
- package/src/shade/playground/caldera/main.js +3 -2
- package/src/shade/playground/probe_clipmap/README.md +2 -1
- package/src/shade/playground/probe_clipmap/index.html +7 -2
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +17 -7
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
- package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +7 -13
- package/src/shade/playground/vgeo_scene/main.js +2 -1
- package/src/shade/playground/vsm/VSMDebugOverlay.d.ts.map +1 -1
- package/src/shade/playground/vsm/VSMDebugOverlay.js +3 -1
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js +5 -4
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js +168 -166
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.d.ts.map +1 -1
- package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.js +221 -219
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/fow/shader_fog_of_war.d.ts.map +1 -1
- package/src/shade/renderer/fow/shader_fog_of_war.js +8 -19
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +6 -6
- package/src/shade/renderer/geometry/sdf/MeshSDFLayout.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/MeshSDFLayout.js +2 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/GPUVirtualGeometryRuntime.js +2 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VGeoResidency.js +2 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_decode_from_storage.js +10 -31
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v1/chunk_brick4_sh3_color_encode_to_storage.js +9 -15
- package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts +2 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.js +6 -5
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe/octahedral/convolve/graph_reduce_atlas_to_sh.js +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +168 -18
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +98 -57
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +168 -77
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +27 -12
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +12 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +8 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +5 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +5 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_free.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_movers_command.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_scroll.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +3 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +114 -41
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +424 -207
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +34 -25
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +41 -31
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_RESAMPLING.js +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts +47 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapHitWants.js +84 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts +48 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapScreenWants.js +101 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +58 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +127 -30
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts +18 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_cage.js +39 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +29 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +112 -56
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts +19 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_resample.js +35 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +9 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +5 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +8 -12
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +23 -56
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts +0 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +11 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +173 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +32 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +166 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts +3 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_due.js +3 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_guide.js +3 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +6 -12
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +15 -65
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_order.js +7 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +24 -17
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_publish.js +18 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_ray_layout.js +9 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts +3 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_relocate.js +9 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample.js +16 -16
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts +36 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_resample_rays.js +233 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_schedule.js +7 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +5 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +10 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts +2 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace_command.js +12 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts +1 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +5 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +14 -18
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +25 -35
- package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts +13 -0
- package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.js +12 -0
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +27 -2
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +62 -6
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/IndirectComputeCommandBuildPass.js +10 -19
- package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/indirect/chunk_folded_dispatch.js +6 -3
- package/src/shade/renderer/hiz/hzb_pick_alignment.d.ts.map +1 -1
- package/src/shade/renderer/hiz/hzb_pick_alignment.js +149 -148
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +4 -2
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_log_floor.js +6 -5
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_project.js +3 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_reference_reflectance.js +3 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_solve.js +3 -1
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts +0 -5
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/WORLD_LIGHT_CLUSTER.js +0 -7
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts +15 -2
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/graph_build_world_light_clusters.js +51 -16
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.d.ts.map +1 -1
- package/src/shade/renderer/light/world_cluster/shader_world_cluster_assign_lights.js +3 -2
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts +17 -0
- package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/dof/raymarch/chunk_dof_lds_coc_cache.js +81 -0
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_raymarch_compute.js +5 -48
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/dof/raymarch/shader_dof_slice_compute.js +4 -44
- package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +4 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +8 -7
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/chunk_nss_luma_derivative.js +5 -7
- package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts +17 -0
- package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/nss/chunk_nss_tonemap.js +56 -0
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_postprocess.js +2 -22
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/nss/shader_nss_preprocess.js +2 -13
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js +10 -13
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js +39 -38
- package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js +7 -12
- package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts +8 -6
- package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js +10 -7
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.js +35 -0
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts +5 -2
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js +27 -18
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js +5 -15
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js +5 -19
- package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.js +3 -22
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/ShadowmapDrawSelector.js +2 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_shadow_group_list.js +154 -152
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +2 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts +3 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP.js +4 -3
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts +7 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/IRRADIANCE_CLIPMAP_STRUCT.js +54 -47
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_sample.js +371 -370
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +2 -1
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/surface/lod/shader_water_lod.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/lod/shader_water_lod.js +12 -14
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +2 -9
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +2 -1
- package/src/shade/renderer/wind/WIND_FIELD.d.ts +3 -1
- package/src/shade/renderer/wind/WIND_FIELD.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD.js +4 -3
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +8 -2
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +11 -4
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +2 -2
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
- package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +13 -4
- package/src/shade/util/texture_mip_extent.d.ts.map +1 -1
- package/src/shade/util/texture_mip_extent.js +88 -87
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +9 -7
- package/src/format/image/avif/av1/util/ceil_log2.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts +0 -1
- package/src/shade/renderer/shader/chunk/color/chunk_hash_squirrel3.d.ts.map +0 -1
- 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
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* @
|
|
30
|
-
* @property {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* @
|
|
44
|
-
* @
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
all
|
|
76
|
-
|
|
77
|
-
all
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
position
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* @param {
|
|
127
|
-
* @
|
|
128
|
-
* @
|
|
129
|
-
*
|
|
130
|
-
* @
|
|
131
|
-
*
|
|
132
|
-
* @
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
let
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* @param {
|
|
222
|
-
* @param {
|
|
223
|
-
* @param {
|
|
224
|
-
* @param {number}
|
|
225
|
-
* @param {
|
|
226
|
-
* @
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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":"
|
|
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
|
-
|
|
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 =
|
|
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":"
|
|
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
|
-
|
|
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 =
|
|
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":"
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
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":"
|
|
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"}
|