@woosh/meep-engine 3.60.6 → 3.60.7
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/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,5 +1,6 @@
|
|
|
1
1
|
import { assert } from "../../assert.js";
|
|
2
2
|
import { BinaryElementPool } from "../../geom/3d/topology/struct/binary/BinaryElementPool.js";
|
|
3
|
+
import { msb_32 } from "../../binary/msb_32.js";
|
|
3
4
|
|
|
4
5
|
const UINT32_MAX = 4294967295;
|
|
5
6
|
|
|
@@ -310,7 +311,7 @@ export class FibonacciHeap {
|
|
|
310
311
|
|
|
311
312
|
// upper bound on max degree D(n) <= floor(log_phi(n)).
|
|
312
313
|
// log_phi(n) = log2(n) / log2(phi) ~= log2(n) * 1.4404; pad generously.
|
|
313
|
-
const D =
|
|
314
|
+
const D = msb_32(this.__size) * 2 + 8;
|
|
314
315
|
const A = new Array(D);
|
|
315
316
|
for (let i = 0; i < D; i++) {
|
|
316
317
|
A[i] = NULL_HANDLE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticR2Tree.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/r-tree/StaticR2Tree.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StaticR2Tree.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/2d/r-tree/StaticR2Tree.js"],"names":[],"mappings":"AAqEA;;;GAGG;AACH;IAEI;;;OAGG;IACH,sBAAc;IAEd;;;;OAIG;IACH,+BAAc;IAEd;;;;OAIG;IACH,4BAAwB;IAExB;;;;OAIG;IACH,0BAAsB;IAOtB;;;OAGG;IACH,kBAFW,WAAW,QASrB;IAFG,6BAA0D;IAK9D,6BASC;IAED;;;OAGG;IACH,oBAFW,MAAM,QAchB;IAGD;;;;;;;;OAQG;IACH,mBAPW,MAAM,WACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,MACN,MAAM,QAwBhB;IAED;;;OAGG;IACH,uBAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,MAAM,CAQlB;IAGD;;;OAGG;IACH,oBAFW,MAAM,EAAE,QAoFlB;IAED;;;;;OAKG;IACH,sBAYC;IAED;;OAEG;IACH,cA4EC;CACJ"}
|
|
@@ -5,6 +5,7 @@ import { array_copy } from "../../../collection/array/array_copy.js";
|
|
|
5
5
|
import { array_swap } from "../../../collection/array/array_swap.js";
|
|
6
6
|
import { SCRATCH_UINT32_TRAVERSAL_STACK } from "../../../collection/SCRATCH_UINT32_TRAVERSAL_STACK.js";
|
|
7
7
|
import { aabb2_union_array } from "../aabb/aabb2_union_array.js";
|
|
8
|
+
import { msb_32 } from "../../../binary/msb_32.js";
|
|
8
9
|
|
|
9
10
|
const BINARY_NODE_SIZE = 4;
|
|
10
11
|
const LEAF_NODE_SIZE = 5;
|
|
@@ -319,12 +320,17 @@ export class StaticR2Tree {
|
|
|
319
320
|
|
|
320
321
|
const leaf_node_block_address = binary_node_count * BINARY_NODE_SIZE;
|
|
321
322
|
|
|
322
|
-
|
|
323
|
+
if (binary_node_count === 0) {
|
|
324
|
+
// no leaves, nothing to build
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
let level = msb_32(binary_node_count);
|
|
323
329
|
|
|
324
330
|
let i, offset, level_node_count;
|
|
325
331
|
//NOTE: building first level separately allows to avoid some switching logic needed to determine what is the type of lower level node
|
|
326
332
|
//build one level above leaf nodes
|
|
327
|
-
level_node_count =
|
|
333
|
+
level_node_count = 1 << level;
|
|
328
334
|
offset = (level_node_count - 1) * BINARY_NODE_SIZE;
|
|
329
335
|
|
|
330
336
|
let parentIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh_compute_triangle_edge_flags.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mesh_compute_triangle_edge_flags.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/shape/util/mesh_compute_triangle_edge_flags.js"],"names":[],"mappings":"AAwNA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,4DAJW,UAAU,MAAM,CAAC,WACjB,UAAU,MAAM,CAAC,GACf,WAAW,CA2JvB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { lowbias32 } from "../../../../math/hash/lowbias32.js";
|
|
2
2
|
import { tri3_classify_shared_edge } from "../../triangle/tri3_classify_shared_edge.js";
|
|
3
3
|
import { TriangleEdgeFlags } from "../../triangle/TriangleEdgeFlags.js";
|
|
4
|
+
import { ceilPowerOfTwo } from "../../../../binary/operations/ceilPowerOfTwo.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Vertices of a mesh closer than this fraction of its scale — the largest coordinate, in absolute
|
|
@@ -85,9 +86,7 @@ function weld_tolerance(positions, indices, tri_count) {
|
|
|
85
86
|
* @returns {number} the smallest power of two ≥ 2n (at least 2)
|
|
86
87
|
*/
|
|
87
88
|
function table_size(n) {
|
|
88
|
-
|
|
89
|
-
while (size < 2 * n) size *= 2;
|
|
90
|
-
return size;
|
|
89
|
+
return Math.max(2, ceilPowerOfTwo(2 * n));
|
|
91
90
|
}
|
|
92
91
|
|
|
93
92
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextureAtlas.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/atlas/TextureAtlas.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TextureAtlas.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/atlas/TextureAtlas.js"],"names":[],"mappings":"AAiBA;IAcI;;;;;;OAMG;IACH,mBALW,MAAM,cACN,cAAc,kBACd,MAAM,EA6ChB;IA9DD;;;OAGG;IACH,gBAAa;IAEb;;;;OAIG;IACH,sBAAsB;IAgBlB;;;;OAIG;IACH,eAA0B;IAE1B;;;OAGG;IACH,eAFU,OAAO,CAEkB;IAInC;;;;OAIG;IACH,2BAAgH;IAEhH;;;OAGG;IACH,eAAiD;IAEjD;;QAEI;;WAEG;;MAEN;IAGL;;;OAGG;IACH,yBAEC;IAED;;;;OAIG;IACH,kBAHW,SAAS,GACP,UAAU,GAAC,SAAS,CAYhC;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,gBAHW,UAAU,GACR,OAAO,CAQnB;IAED;;OAEG;IACH,cAqBC;IAED;;;;;OAKG;IACH,UAJW,MAAM,KACN,MAAM,GACJ,OAAO,CA0CnB;IAED;;;;OAIG;IACH,mBAqBC;IAED;;;;OAIG;IACH,mBAaC;IAED;;;;;;OAMG;IACH,kBAIC;IAED;;;;;OAKG;IACH,yCAHW,MAAM,GACL,UAAU,CAIrB;IAED;;;;;OAKG;IACH,aAJW,SAAS,YACT,MAAM,GACL,UAAU,CAgCrB;IAED;;;;;OAKG;IACH,YAJW,MAAM,KACN,MAAM,GACJ,OAAO,CAInB;IAED;;;;OAIG;IACH,cAHW,UAAU,GACT,OAAO,CAiClB;IAED;;;OAGG;IACH,UAFa,OAAO,CAyBnB;IAED;;;;OAIG;IACH,aAqGC;IAED;;OAEG;IACH,cAsCC;IAyED;;OAEG;IACH,cASC;;CACJ;qCAnmBoC,2BAA2B;oBAL5C,kCAAkC;mBAFnC,0CAA0C;0BAKnC,yBAAyB;2BAGxB,iBAAiB;+BAZb,gDAAgD"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import { ceilPowerOfTwo } from "../../../../core/binary/operations/ceilPowerOfTwo.js";
|
|
3
2
|
import { BinaryDataType } from "../../../../core/binary/type/BinaryDataType.js";
|
|
4
3
|
import {
|
|
5
4
|
DataType2TypedArrayConstructorMapping
|
|
@@ -8,13 +7,13 @@ import Signal from "../../../../core/events/signal/Signal.js";
|
|
|
8
7
|
import { MaxRectanglesPacker } from "../../../../core/geom/packing/max-rect/MaxRectanglesPacker.js";
|
|
9
8
|
import Vector2 from "../../../../core/geom/Vector2.js";
|
|
10
9
|
import IdPool from "../../../../core/IdPool.js";
|
|
11
|
-
import { max2 } from "../../../../core/math/max2.js";
|
|
12
10
|
import { invokeObjectClone } from "../../../../core/model/object/invokeObjectClone.js";
|
|
13
11
|
import { Sampler2D } from "../sampler/Sampler2D.js";
|
|
14
12
|
import { sampler2d_sub_copy_same_item_size } from "../sampler/sampler2d_sub_copy_same_item_size.js";
|
|
15
13
|
import { AbstractTextureAtlas } from "./AbstractTextureAtlas.js";
|
|
16
14
|
import { AtlasPatch } from "./AtlasPatch.js";
|
|
17
15
|
import { AtlasPatchFlag } from "./AtlasPatchFlag.js";
|
|
16
|
+
import { ceil_log2 } from "../../../../core/binary/operations/ceil_log2.js";
|
|
18
17
|
|
|
19
18
|
export class TextureAtlas extends AbstractTextureAtlas {
|
|
20
19
|
/**
|
|
@@ -268,16 +267,16 @@ export class TextureAtlas extends AbstractTextureAtlas {
|
|
|
268
267
|
* @param {number} [padding]
|
|
269
268
|
* @return {AtlasPatch}
|
|
270
269
|
*/
|
|
271
|
-
compute_padding(_sampler, padding = 4) {
|
|
272
|
-
return padding;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
*
|
|
277
|
-
* @param {Sampler2D} sampler
|
|
278
|
-
* @param {number} [padding]
|
|
279
|
-
* @return {AtlasPatch}
|
|
280
|
-
*/
|
|
270
|
+
compute_padding(_sampler, padding = 4) {
|
|
271
|
+
return padding;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
*
|
|
276
|
+
* @param {Sampler2D} sampler
|
|
277
|
+
* @param {number} [padding]
|
|
278
|
+
* @return {AtlasPatch}
|
|
279
|
+
*/
|
|
281
280
|
add(sampler, padding = 4) {
|
|
282
281
|
|
|
283
282
|
assert.notNull(sampler, 'sampler');
|
|
@@ -573,8 +572,8 @@ export class TextureAtlas extends AbstractTextureAtlas {
|
|
|
573
572
|
|
|
574
573
|
const maxPower = 14;
|
|
575
574
|
|
|
576
|
-
const initial_p_x =
|
|
577
|
-
const initial_p_y =
|
|
575
|
+
const initial_p_x = ceil_log2(this.size.x);
|
|
576
|
+
const initial_p_y = ceil_log2(this.size.y);
|
|
578
577
|
|
|
579
578
|
let power_x = initial_p_x;
|
|
580
579
|
let power_y = initial_p_y;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprite_atlas_border.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/atlas/sprite_atlas_border.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sprite_atlas_border.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/atlas/sprite_atlas_border.js"],"names":[],"mappings":"AA4BA;;;;;;;;;GASG;AACH,2CAJW,MAAM,UACN,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,6CAHW,MAAM,GACJ,MAAM,CAOlB;AAlED;;;;;;;;;;;GAWG;AACH,wCAFU,MAAM,CAEgC;AAEhD;;;;;;;;GAQG;AACH,0CAFU,MAAM,CAE6B"}
|
|
@@ -1,69 +1,70 @@
|
|
|
1
|
-
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
|
|
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
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* @param {number}
|
|
36
|
-
* @
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
assert.isNonNegativeInteger(
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* separation is `
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
* @
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
assert.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
import { msb_32 } from "../../../../core/binary/msb_32.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* How much of a patch's own size is spent on its border.
|
|
6
|
+
*
|
|
7
|
+
* A **proportional** border rather than a fixed one, and that is the point of it: the border is what
|
|
8
|
+
* decides how far a patch can be minified before its neighbours bleed into it, so sizing it in
|
|
9
|
+
* proportion makes that limit the same for every sprite whatever its resolution. At 1/64 every patch
|
|
10
|
+
* stops minifying at roughly the same ~64 px screen footprint, for a flat ~6.3% of atlas area.
|
|
11
|
+
*
|
|
12
|
+
* A fixed border does the opposite: generous for small patches and useless for large ones.
|
|
13
|
+
*
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
export const SPRITE_ATLAS_BORDER_RATIO = 1 / 64;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The smallest border a patch may have, in texels.
|
|
20
|
+
*
|
|
21
|
+
* One, not more. A 64x64 sprite is common and needs four texels at the very most; eight would spend a
|
|
22
|
+
* tenth of the texture on gutter to protect mip levels at which the sprite is a handful of pixels on
|
|
23
|
+
* screen. One texel is also not really one — see {@link sprite_atlas_max_lod}.
|
|
24
|
+
*
|
|
25
|
+
* @type {number}
|
|
26
|
+
*/
|
|
27
|
+
export const SPRITE_ATLAS_BORDER_MINIMUM = 1;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Border, in texels, for a patch of this size.
|
|
31
|
+
*
|
|
32
|
+
* Driven by the longer side, because one border value protects both axes and the atlas halves both
|
|
33
|
+
* together when it builds its mip chain.
|
|
34
|
+
*
|
|
35
|
+
* @param {number} width
|
|
36
|
+
* @param {number} height
|
|
37
|
+
* @returns {number}
|
|
38
|
+
*/
|
|
39
|
+
export function sprite_atlas_border(width, height) {
|
|
40
|
+
assert.isNonNegativeInteger(width, 'width');
|
|
41
|
+
assert.isNonNegativeInteger(height, 'height');
|
|
42
|
+
|
|
43
|
+
return Math.max(
|
|
44
|
+
SPRITE_ATLAS_BORDER_MINIMUM,
|
|
45
|
+
Math.ceil(Math.max(width, height) * SPRITE_ATLAS_BORDER_RATIO)
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The deepest mip level a patch with this border can be sampled at without reading a neighbour.
|
|
51
|
+
*
|
|
52
|
+
* **A patch's own border is not the whole guard.** Every patch in the atlas has a border of at least
|
|
53
|
+
* {@link SPRITE_ATLAS_BORDER_MINIMUM}, so whatever sits next to this one contributes at least one
|
|
54
|
+
* more texel of separation: content is `border + 1` texels apart at worst. At mip level `L` that
|
|
55
|
+
* separation is `(border + 1) / 2^L` texels, and it has to survive down to one — which is also what
|
|
56
|
+
* pays for patches not landing on power-of-two boundaries, so alignment is not claimed on top of it.
|
|
57
|
+
*
|
|
58
|
+
* Past this level the sampler is clamped rather than allowed to keep minifying, so a sprite seen from
|
|
59
|
+
* very far away aliases instead of bleeding. That is the trade, and it is the right way round: a
|
|
60
|
+
* shimmering sprite is still that sprite, a bleeding one is somebody else's texture.
|
|
61
|
+
*
|
|
62
|
+
* @param {number} border
|
|
63
|
+
* @returns {number}
|
|
64
|
+
*/
|
|
65
|
+
export function sprite_atlas_max_lod(border) {
|
|
66
|
+
assert.isNonNegativeInteger(border, 'border');
|
|
67
|
+
assert.greaterThanOrEqual(border, SPRITE_ATLAS_BORDER_MINIMUM, 'border');
|
|
68
|
+
|
|
69
|
+
return msb_32(border + 1);
|
|
70
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convolve_equirectangular_reflection.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convolve_equirectangular_reflection.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/reflection/convolve_equirectangular_reflection.js"],"names":[],"mappings":"AA0BA;;;;;;;;;;;;;GAaG;AACH,qEATW,SAAS,SACT,MAAM,SACN,MAAM,SACN,MAAM,aACN,MAAM,gBACN,MAAM,UACN,MAAM,EAAE,GAAC,YAAY,kBACrB,MAAM,QAiEhB;AAED;;;;;;;GAOG;AACH,iEALW,SAAS,UACT,SAAS,aACT,MAAM,gBACN,MAAM,QA6BhB;AAED;;;;;;;;;;;;GAYG;AACH,iEAPW,SAAS;IAEQ,YAAY,GAA7B,MAAM;IACW,UAAU,GAA3B,MAAM;IACW,aAAa,GAA9B,MAAM;IACJ,SAAS,EAAE,CAoCvB;0BAtLyB,yBAAyB"}
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
equirectangular_reflection_lod_to_roughness,
|
|
11
11
|
roughness_from_relative_mip
|
|
12
12
|
} from "./equirectangular_reflection_roughness.js";
|
|
13
|
+
import { msb_32 } from "../../../../core/binary/msb_32.js";
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Below this we treat the surface as a perfect mirror.
|
|
@@ -159,7 +160,7 @@ export function build_equirectangular_reflection_mip_chain(base, options = {}) {
|
|
|
159
160
|
max_roughness = 0.7
|
|
160
161
|
} = options;
|
|
161
162
|
|
|
162
|
-
const full_levels =
|
|
163
|
+
const full_levels = msb_32(Math.max(1, Math.min(base.width, base.height))) + 1;
|
|
163
164
|
const levels = mip_levels !== undefined ? Math.min(mip_levels, full_levels) : full_levels;
|
|
164
165
|
|
|
165
166
|
const mips = [base];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GPUParticleEmitterSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/GPUParticleEmitterSystem.js"],"names":[],"mappings":"AAqpCA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,+CAJW,eAAe,UACf,cAAc,GACZ,OAAO,CAyGnB;AAtvCD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH;IAgFI;;;;;OAKG;IACH,sBALW,OAAO,qBAAqB,EAAE,cAAc,SAC5C,OAAO,qCAAqC,EAAE,KAAK,gEAoB7D;IArGD,6DAA6C;IAE7C;;;OAGG;IACH,OAFU,WAAW,CAEmC;IAiGxD;;;;;;OAMG;IACH,iEAEC;IAED;;;;;OAKG;IACH,kCAEC;IAED;;;;;;;;;;OAUG;IACH,mBAJW,MAAM,GACJ,eAAe,GAAC,IAAI,CAWhC;IAED;;;;;;;;;;;OAWG;IACH,cAHW,MAAM,SACN,MAAM,QA4BhB;IAED;;;;;;;;;;;;OAYG;IACH,uBAHW,MAAM,UACN,UAAU,MAAM,CAAC,QA8B3B;IAED;;;;;;;;;;;;;OAaG;IACH,wBAJW,MAAM,UACN,MAAM,WACN,MAAM,QAOhB;IAED;;;;;OAKG;IACH,0BAFW,MAAM,QAIhB;IAyQD,+BAA+B;IAC/B,YADc,QAAQ,IAAI,CAAC,CA0C1B;IAED;;;;OAIG;IACH,aAJW,cAAc,aACd,WAAW,UACX,MAAM,QAuChB;IAED;;;;OAIG;IACH,eAJW,cAAc,aACd,WAAW,UACX,MAAM,QAIhB;IAED;;;;;;;OAOG;IACH,4BAHW,MAAM,GACJ,IAAI,CAgBhB;IAoCD;;;;;;;;;;;;OAYG;IACH,eAHW,OAAO,gDAAgD,EAAE,YAAY,GACnE,IAAI,CA4ChB;;CA0UJ;;YAnnCa,MAAM;;;;YACN,cAAc;;;;eACd,WAAW;;;;aACX,eAAe,GAAC,IAAI;;;;;aACpB,OAAO,+CAA+C,EAAE,eAAe,GAAC,IAAI;gCAGjE,IAAI;;;;SACf,MAAM,GAAC,IAAI;;;;aACX,OAAO,kDAAkD,EAAE,qBAAqB,GAAC,IAAI;;;;;;;WACrF,IAAI,MAAM,EAAE;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,WAAS,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,yDAAyD,EAAE,cAAc,GAAC,IAAI,CAAA;KAAC,CAAC;;;;qBAKvL,OAAO,uDAAuD,EAAE,eAAe,GAAC,IAAI;;gCA3ClE,2DAA2D;+BAU5D,6CAA6C;uBARrD,kBAAkB;4BAEb,iCAAiC;4BAQjC,0CAA0C"}
|
|
@@ -18,6 +18,7 @@ import { SpriteAtlas } from "../graphics/texture/atlas/SpriteAtlas.js";
|
|
|
18
18
|
import { SpriteAtlasFill } from "../graphics/texture/atlas/SpriteAtlasFill.js";
|
|
19
19
|
import { TextureFilterType } from "../../shade/renderer/texture/TextureFilterType.js";
|
|
20
20
|
import { Sampler2D } from "../graphics/texture/sampler/Sampler2D.js";
|
|
21
|
+
import { texture_mip_level_count } from "../../shade/util/texture_mip_extent.js";
|
|
21
22
|
|
|
22
23
|
/**
|
|
23
24
|
* Bursts {@link GPUParticleEmitterSystem#burst} will hold before it starts dropping them. Reached
|
|
@@ -1129,7 +1130,7 @@ export class GPUParticleEmitterSystem extends System {
|
|
|
1129
1130
|
const texture = this.#texture;
|
|
1130
1131
|
|
|
1131
1132
|
if (texture.width !== source.width || texture.height !== source.height) {
|
|
1132
|
-
texture.descriptor.mipLevelCount =
|
|
1133
|
+
texture.descriptor.mipLevelCount = texture_mip_level_count(source.width, source.height, 1, "2d");
|
|
1133
1134
|
texture.resize(source.width, source.height);
|
|
1134
1135
|
|
|
1135
1136
|
this.#uploaded_version = -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUDecalRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/GPUDecalRenderer.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUDecalRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/GPUDecalRenderer.js"],"names":[],"mappings":"AA8EA;;;;;;;;;;;;;GAaG;AACH;IA6BI;;;;;;;;;;;OAWG;IACH;QAP8B,KAAK;QACL,OAAO,EAA1B,YAAY;QACC,YAAY,EAAzB,MAAM;QACU,YAAY;QACZ,YAAY;QACZ,SAAS;aA+BnC;IA4SD,gBAoBC;;CACJ"}
|
|
@@ -15,6 +15,7 @@ import { shader_decal_tile_copy } from "./shader_decal_tile_copy.js";
|
|
|
15
15
|
import { graph_gather_decal_tiles } from "./graph_gather_decal_tiles.js";
|
|
16
16
|
import { build_light_cluster_parameters } from "../../../shade/renderer/light/cluster/build_light_cluster_parameters.js";
|
|
17
17
|
import { DECAL_CLUSTER_RESOLUTION_Z } from "./DECAL_CLUSTER.js";
|
|
18
|
+
import { texture_mip_level_count } from "../../../shade/util/texture_mip_extent.js";
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Buffers grow with headroom and never shrink — decal counts move every frame as combat spawns and
|
|
@@ -416,7 +417,7 @@ export class GPUDecalRenderer {
|
|
|
416
417
|
existing.destroy();
|
|
417
418
|
}
|
|
418
419
|
|
|
419
|
-
const mip_levels =
|
|
420
|
+
const mip_levels = texture_mip_level_count(width, height, 1, "2d");
|
|
420
421
|
|
|
421
422
|
residency.texture = graphics.textures.contextFromDescriptor(TextureDescriptor.from({
|
|
422
423
|
size: [width, height],
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared WGSL accessors for reading packed decal records (`array<f32>`) from a `decal_data` storage buffer.
|
|
3
|
+
*
|
|
4
|
+
* ```wgsl
|
|
5
|
+
* fn decal_vec4(index: u32, field: u32) -> vec4<f32>
|
|
6
|
+
* fn decal_matrix(index: u32, field: u32) -> mat4x4<f32>
|
|
7
|
+
* fn decal_transform(index: u32) -> mat4x4<f32>
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* @type {CodeChunk}
|
|
11
|
+
*/
|
|
12
|
+
export const chunk_decal_record: CodeChunk;
|
|
13
|
+
import { CodeChunk } from "../../../shade/renderer/shader/compiler/CodeChunk.js";
|
|
14
|
+
//# sourceMappingURL=chunk_decal_record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_decal_record.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/chunk_decal_record.js"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,iCAFU,SAAS,CA+BjB;0BA3CwB,sDAAsD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shade/renderer/shader/compiler/CodeChunk.js";
|
|
2
|
+
import { DECAL_RECORD_OFFSET_TRANSFORM, DECAL_RECORD_WORD_COUNT } from "./DECAL_GPU_RECORD.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Shared WGSL accessors for reading packed decal records (`array<f32>`) from a `decal_data` storage buffer.
|
|
6
|
+
*
|
|
7
|
+
* ```wgsl
|
|
8
|
+
* fn decal_vec4(index: u32, field: u32) -> vec4<f32>
|
|
9
|
+
* fn decal_matrix(index: u32, field: u32) -> mat4x4<f32>
|
|
10
|
+
* fn decal_transform(index: u32) -> mat4x4<f32>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @type {CodeChunk}
|
|
14
|
+
*/
|
|
15
|
+
export const chunk_decal_record = CodeChunk.from(
|
|
16
|
+
//language=WGSL
|
|
17
|
+
`
|
|
18
|
+
const DECAL_RECORD_WORD_COUNT : u32 = ${DECAL_RECORD_WORD_COUNT}u;
|
|
19
|
+
const DECAL_RECORD_OFFSET_TRANSFORM : u32 = ${DECAL_RECORD_OFFSET_TRANSFORM}u;
|
|
20
|
+
|
|
21
|
+
fn decal_vec4(index: u32, field: u32) -> vec4<f32> {
|
|
22
|
+
let base = index * DECAL_RECORD_WORD_COUNT + field;
|
|
23
|
+
|
|
24
|
+
return vec4<f32>(
|
|
25
|
+
decal_data[base], decal_data[base + 1u], decal_data[base + 2u], decal_data[base + 3u]
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fn decal_matrix(index: u32, field: u32) -> mat4x4<f32> {
|
|
30
|
+
let base = index * DECAL_RECORD_WORD_COUNT + field;
|
|
31
|
+
|
|
32
|
+
return mat4x4<f32>(
|
|
33
|
+
vec4<f32>(decal_data[base + 0u], decal_data[base + 1u], decal_data[base + 2u], decal_data[base + 3u]),
|
|
34
|
+
vec4<f32>(decal_data[base + 4u], decal_data[base + 5u], decal_data[base + 6u], decal_data[base + 7u]),
|
|
35
|
+
vec4<f32>(decal_data[base + 8u], decal_data[base + 9u], decal_data[base + 10u], decal_data[base + 11u]),
|
|
36
|
+
vec4<f32>(decal_data[base + 12u], decal_data[base + 13u], decal_data[base + 14u], decal_data[base + 15u])
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
fn decal_transform(index: u32) -> mat4x4<f32> {
|
|
41
|
+
return decal_matrix(index, DECAL_RECORD_OFFSET_TRANSFORM);
|
|
42
|
+
}
|
|
43
|
+
`
|
|
44
|
+
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_cluster_assign_decals.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cluster_assign_decals.js"],"names":[],"mappings":"AAuCA,6DAMG;AAiBH,sDAAoF;
|
|
1
|
+
{"version":3,"file":"shader_cluster_assign_decals.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cluster_assign_decals.js"],"names":[],"mappings":"AAuCA,6DAMG;AAiBH,sDAAoF;AA6IpF;;;;;;;;GAQG;AACH,2CAFU,aAAa,CAMpB;6BA3L0B,qDAAqD;4BADtD,oDAAoD;8BALlD,iDAAiD"}
|
|
@@ -29,13 +29,13 @@ import { atomic_u32, f32, vec2u, vec3f, vec4f } from "../../../shade/renderer/sh
|
|
|
29
29
|
import { WebGPUArray } from "../../../shade/renderer/shader/type/WebGPUArray.js";
|
|
30
30
|
import { WebGPUStruct } from "../../../shade/renderer/shader/type/WebGPUStruct.js";
|
|
31
31
|
import { chunk_decal_intersects_frustum } from "./chunk_decal_intersects_frustum.js";
|
|
32
|
+
import { chunk_decal_record } from "./chunk_decal_record.js";
|
|
32
33
|
import {
|
|
33
34
|
DECAL_CLUSTER_LOCAL_LIMIT,
|
|
34
35
|
DECAL_CLUSTER_METADATA,
|
|
35
36
|
DECAL_CLUSTER_RESOLUTION_Z,
|
|
36
37
|
DECAL_CLUSTER_TILE_RESOLUTION
|
|
37
38
|
} from "./DECAL_CLUSTER.js";
|
|
38
|
-
import { DECAL_RECORD_OFFSET_TRANSFORM, DECAL_RECORD_WORD_COUNT } from "./DECAL_GPU_RECORD.js";
|
|
39
39
|
|
|
40
40
|
export const DECAL_CLUSTER_ASSIGNMENT_SETTINGS = WebGPUStruct.from({
|
|
41
41
|
cluster_params: vec3f,
|
|
@@ -77,20 +77,6 @@ const DECAL_CLUSTER_WORKGROUP_SIZE = [4, 4, 4];
|
|
|
77
77
|
const body = CodeChunk.from(
|
|
78
78
|
//language=WGSL
|
|
79
79
|
`
|
|
80
|
-
const DECAL_RECORD_WORD_COUNT : u32 = ${DECAL_RECORD_WORD_COUNT}u;
|
|
81
|
-
const DECAL_RECORD_OFFSET_TRANSFORM : u32 = ${DECAL_RECORD_OFFSET_TRANSFORM}u;
|
|
82
|
-
|
|
83
|
-
fn decal_transform(index: u32) -> mat4x4<f32> {
|
|
84
|
-
let base = index * DECAL_RECORD_WORD_COUNT + DECAL_RECORD_OFFSET_TRANSFORM;
|
|
85
|
-
|
|
86
|
-
return mat4x4<f32>(
|
|
87
|
-
vec4<f32>(decal_data[base + 0u], decal_data[base + 1u], decal_data[base + 2u], decal_data[base + 3u]),
|
|
88
|
-
vec4<f32>(decal_data[base + 4u], decal_data[base + 5u], decal_data[base + 6u], decal_data[base + 7u]),
|
|
89
|
-
vec4<f32>(decal_data[base + 8u], decal_data[base + 9u], decal_data[base + 10u], decal_data[base + 11u]),
|
|
90
|
-
vec4<f32>(decal_data[base + 12u], decal_data[base + 13u], decal_data[base + 14u], decal_data[base + 15u])
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
80
|
@compute @workgroup_size(${DECAL_CLUSTER_WORKGROUP_SIZE.join(', ')})
|
|
95
81
|
fn main(
|
|
96
82
|
@builtin(global_invocation_id) voxel_position : vec3<u32>
|
|
@@ -208,6 +194,7 @@ fn main(
|
|
|
208
194
|
chunk_frustum_from_corners,
|
|
209
195
|
chunk_frustum_slice,
|
|
210
196
|
chunk_decal_intersects_frustum,
|
|
197
|
+
chunk_decal_record,
|
|
211
198
|
chunk_cluster_depth_from_z_slice,
|
|
212
199
|
chunk_light_cluster_resolution_xy_from_screen,
|
|
213
200
|
chunk_inverse_lerp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_cull_decals_frustum.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cull_decals_frustum.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_cull_decals_frustum.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_cull_decals_frustum.js"],"names":[],"mappings":"AA4EA;;;;;;;;GAQG;AACH,yCAFU,aAAa,CAMpB;AAEH;;GAEG;AACH,kCAFU,YAAY,CAE6B;8BAzFrB,iDAAiD;6BAMlD,qDAAqD"}
|
|
@@ -11,7 +11,7 @@ import { atomic_u32, u32, vec4f } from "../../../shade/renderer/shader/type/WEBG
|
|
|
11
11
|
import { WebGPUArray } from "../../../shade/renderer/shader/type/WebGPUArray.js";
|
|
12
12
|
import { WebGPUStruct } from "../../../shade/renderer/shader/type/WebGPUStruct.js";
|
|
13
13
|
import { chunk_decal_intersects_frustum } from "./chunk_decal_intersects_frustum.js";
|
|
14
|
-
import {
|
|
14
|
+
import { chunk_decal_record } from "./chunk_decal_record.js";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* @type {number}
|
|
@@ -42,20 +42,6 @@ resources.createGroup()
|
|
|
42
42
|
const body = CodeChunk.from(
|
|
43
43
|
//language=WGSL
|
|
44
44
|
`
|
|
45
|
-
const DECAL_RECORD_WORD_COUNT : u32 = ${DECAL_RECORD_WORD_COUNT}u;
|
|
46
|
-
const DECAL_RECORD_OFFSET_TRANSFORM : u32 = ${DECAL_RECORD_OFFSET_TRANSFORM}u;
|
|
47
|
-
|
|
48
|
-
fn decal_transform(index: u32) -> mat4x4<f32> {
|
|
49
|
-
let base = index * DECAL_RECORD_WORD_COUNT + DECAL_RECORD_OFFSET_TRANSFORM;
|
|
50
|
-
|
|
51
|
-
return mat4x4<f32>(
|
|
52
|
-
vec4<f32>(decal_data[base + 0u], decal_data[base + 1u], decal_data[base + 2u], decal_data[base + 3u]),
|
|
53
|
-
vec4<f32>(decal_data[base + 4u], decal_data[base + 5u], decal_data[base + 6u], decal_data[base + 7u]),
|
|
54
|
-
vec4<f32>(decal_data[base + 8u], decal_data[base + 9u], decal_data[base + 10u], decal_data[base + 11u]),
|
|
55
|
-
vec4<f32>(decal_data[base + 12u], decal_data[base + 13u], decal_data[base + 14u], decal_data[base + 15u])
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
45
|
@compute @workgroup_size(${SHADER_CULL_DECALS_WORKGROUP_SIZE}, 1, 1)
|
|
60
46
|
fn main(
|
|
61
47
|
@builtin(global_invocation_id) global_id : vec3<u32>
|
|
@@ -83,7 +69,8 @@ fn main(
|
|
|
83
69
|
}
|
|
84
70
|
}
|
|
85
71
|
`, [
|
|
86
|
-
chunk_decal_intersects_frustum
|
|
72
|
+
chunk_decal_intersects_frustum,
|
|
73
|
+
chunk_decal_record,
|
|
87
74
|
]
|
|
88
75
|
);
|
|
89
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_decal_composite.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_decal_composite.js"],"names":[],"mappings":"AAgEA,oDAKG;
|
|
1
|
+
{"version":3,"file":"shader_decal_composite.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/decal/shader_decal_composite.js"],"names":[],"mappings":"AAgEA,oDAKG;AAuRH;;;;;;;;;;;;;;GAcG;AACH,qCAFU,eAAe,CActB;6BAzU0B,qDAAqD;gCARlD,sBAAsB"}
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
GRADIENT_SAMPLING_INFO_STRUCT
|
|
35
35
|
} from "../../../shade/renderer/shader/chunk/texture/GRADIENT_SAMPLING_INFO_STRUCT.js";
|
|
36
|
+
import { chunk_decal_record } from "./chunk_decal_record.js";
|
|
36
37
|
import { chunk_decal_sampling_info } from "./chunk_decal_sampling_info.js";
|
|
37
38
|
import { chunk_decal_surface_frame } from "./chunk_decal_surface_frame.js";
|
|
38
39
|
import { DecalTileShader } from "./DecalTileShader.js";
|
|
@@ -58,8 +59,7 @@ import {
|
|
|
58
59
|
DECAL_RECORD_OFFSET_TRANSFORM_INVERSE,
|
|
59
60
|
DECAL_RECORD_OFFSET_UV_ALBEDO,
|
|
60
61
|
DECAL_RECORD_OFFSET_UV_NORMAL,
|
|
61
|
-
DECAL_RECORD_OFFSET_UV_ORM
|
|
62
|
-
DECAL_RECORD_WORD_COUNT
|
|
62
|
+
DECAL_RECORD_OFFSET_UV_ORM
|
|
63
63
|
} from "./DECAL_GPU_RECORD.js";
|
|
64
64
|
|
|
65
65
|
export const DECAL_COMPOSITE_SETTINGS = WebGPUStruct.from({
|
|
@@ -113,27 +113,6 @@ resources.createGroup()
|
|
|
113
113
|
const body = CodeChunk.from(
|
|
114
114
|
//language=WGSL
|
|
115
115
|
`
|
|
116
|
-
const DECAL_RECORD_WORD_COUNT : u32 = ${DECAL_RECORD_WORD_COUNT}u;
|
|
117
|
-
|
|
118
|
-
fn decal_vec4(index: u32, field: u32) -> vec4<f32> {
|
|
119
|
-
let base = index * DECAL_RECORD_WORD_COUNT + field;
|
|
120
|
-
|
|
121
|
-
return vec4<f32>(
|
|
122
|
-
decal_data[base], decal_data[base + 1u], decal_data[base + 2u], decal_data[base + 3u]
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
fn decal_matrix(index: u32, field: u32) -> mat4x4<f32> {
|
|
127
|
-
let base = index * DECAL_RECORD_WORD_COUNT + field;
|
|
128
|
-
|
|
129
|
-
return mat4x4<f32>(
|
|
130
|
-
vec4<f32>(decal_data[base + 0u], decal_data[base + 1u], decal_data[base + 2u], decal_data[base + 3u]),
|
|
131
|
-
vec4<f32>(decal_data[base + 4u], decal_data[base + 5u], decal_data[base + 6u], decal_data[base + 7u]),
|
|
132
|
-
vec4<f32>(decal_data[base + 8u], decal_data[base + 9u], decal_data[base + 10u], decal_data[base + 11u]),
|
|
133
|
-
vec4<f32>(decal_data[base + 12u], decal_data[base + 13u], decal_data[base + 14u], decal_data[base + 15u])
|
|
134
|
-
);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
116
|
struct DecalCompositeOut {
|
|
138
117
|
@location(0) pbr : vec2<f32>,
|
|
139
118
|
@location(1) normal : vec4<u32>,
|
|
@@ -349,6 +328,7 @@ fn main(
|
|
|
349
328
|
GRADIENT_SAMPLING_INFO_STRUCT.declaration_chunk,
|
|
350
329
|
DECAL_CLUSTER_METADATA.declaration_chunk,
|
|
351
330
|
chunk_textureSampleBarycentric,
|
|
331
|
+
chunk_decal_record,
|
|
352
332
|
chunk_decal_sampling_info,
|
|
353
333
|
chunk_decal_surface_frame,
|
|
354
334
|
chunk_project_position_from_depth,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TERRAIN_MATERIAL_TEMPLATE.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TERRAIN_MATERIAL_TEMPLATE.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/terrain/TERRAIN_MATERIAL_TEMPLATE.js"],"names":[],"mappings":"AAkBA;;;;;GAKG;AAEH;;;GAGG;AACH,kDAkBqB;AAErB;;;;;;;;;GASG;AACH,8CAFU,6BAA6B,CAE4C;AA2FnF;;GAEG;AACH;IACI,0BAAiC;IACjC,yBAAgC;IAChC,0BAAiC;IACjC,yBAAgC;IAEhC;;;;OAIG;IACH,QAFU,YAAU,IAAI,CAEV;IAEd;;OAEG;IACH,iBAFU,MAAM,CAEI;IAEpB;;OAEG;IACH,gBAFU,MAAM,CAEI;CACvB;AA6SD;;GAEG;AACH,wCAFU,qBAAqB,CAQ5B;iCAldU,OAAO,wDAAwD,EAAE,kBAAkB;kCACnF,OAAO,kEAAkE,EAAE,mBAAmB;gCAC9F,OAAO,sDAAsD,EAAE,iBAAiB;mCAChF,OAAO,2BAA2B,EAAE,oBAAoB;6BATxC,qDAAqD;8CAH3E,0EAA0E;AA6GjF;;;GAGG;AACH;IACI;;OAEG;IACH,SAFU,iBAAiB,GAAC,IAAI,CAEjB;IAEf;;OAEG;IACH,SAFU,MAAM,CAEH;IAEb;;OAEG;IACH,YAAc;IAEd,gBAQC;CACJ;sCA7IqC,oEAAoE"}
|
|
@@ -14,6 +14,7 @@ import { WebGPUArray } from "../../../shade/renderer/shader/type/WebGPUArray.js"
|
|
|
14
14
|
import { WebGPUStruct } from "../../../shade/renderer/shader/type/WebGPUStruct.js";
|
|
15
15
|
import { TextureFilterType } from "../../../shade/renderer/texture/TextureFilterType.js";
|
|
16
16
|
import { chunk_terrain_material_surface } from "./chunk_terrain_material_surface.js";
|
|
17
|
+
import { texture_mip_level_count } from "../../../shade/util/texture_mip_extent.js";
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* @typedef {import("../../../shade/renderer/material/GPUMaterialContext.js").GPUMaterialContext} GPUMaterialContext
|
|
@@ -208,7 +209,7 @@ function upload_texture(services, residency, image, depth, format, bytes_per_pix
|
|
|
208
209
|
existing.destroy();
|
|
209
210
|
}
|
|
210
211
|
|
|
211
|
-
const mip_levels = mips ?
|
|
212
|
+
const mip_levels = mips ? texture_mip_level_count(image.width, image.height, 1, "2d") : 1;
|
|
212
213
|
|
|
213
214
|
residency.texture = services.textures.contextFromDescriptor(TextureDescriptor.from({
|
|
214
215
|
label,
|