@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,8 +1,8 @@
|
|
|
1
1
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
-
import { F16_MAX_DEFINITION } from "../../shader/chunk/math/F16_MAX_DEFINITION.js";
|
|
3
2
|
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
4
3
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
5
4
|
import { SAMPLER_LINEAR_UPSCALE } from "../../texture/SAMPLER_LINEAR_UPSCALE.js";
|
|
5
|
+
import { chunk_nss_tonemap } from "./chunk_nss_tonemap.js";
|
|
6
6
|
import { NSS_WORKGROUP_SIZE } from "./NSS_CONSTANTS.js";
|
|
7
7
|
import { NSS_SETTINGS_STRUCT } from "./NSS_SETTINGS_STRUCT.js";
|
|
8
8
|
|
|
@@ -50,26 +50,6 @@ resources.createGroup()
|
|
|
50
50
|
const body = CodeChunk.from(
|
|
51
51
|
//language=WGSL
|
|
52
52
|
`
|
|
53
|
-
const NSS_EXPOSURE: f32 = 7.38905609893; // e^2
|
|
54
|
-
|
|
55
|
-
// Karis tonemap (max-of-channels).
|
|
56
|
-
// The guard is a FINITE clamp, not just a non-negative one: this target is rgba16float, so shading
|
|
57
|
-
// above its range stores as +Inf and rgb / (1.0 + m) is Inf/Inf = NaN, which goes straight into the
|
|
58
|
-
// next frame's history and stays there. NaN fails every comparison including with itself, which is
|
|
59
|
-
// what the componentwise test below is.
|
|
60
|
-
fn nss_tonemap(rgb: vec3<f32>) -> vec3<f32> {
|
|
61
|
-
let finite = select(vec3<f32>(0.0), min(rgb, vec3<f32>(F16_MAX)), rgb == rgb);
|
|
62
|
-
let m = max(max(finite.r, finite.g), finite.b);
|
|
63
|
-
return finite / (1.0 + m);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Karis inverse — clamp to dodge the inf at m == 1.0.
|
|
67
|
-
fn nss_tonemap_inv(rgb: vec3<f32>) -> vec3<f32> {
|
|
68
|
-
let c = clamp(rgb, vec3<f32>(0.0), vec3<f32>(0.99999));
|
|
69
|
-
let m = max(max(c.r, c.g), c.b);
|
|
70
|
-
return c / (1.0 - m);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
53
|
fn nss_warped_history(prev_uv: vec2<f32>) -> vec3<f32> {
|
|
74
54
|
let on_screen = all(prev_uv >= vec2<f32>(0.0)) && all(prev_uv <= vec2<f32>(1.0));
|
|
75
55
|
if (!on_screen) {
|
|
@@ -282,7 +262,7 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
|
282
262
|
textureStore(tOutput, out_st, vec4<f32>(final_rgb, theta));
|
|
283
263
|
}
|
|
284
264
|
`, [
|
|
285
|
-
|
|
265
|
+
chunk_nss_tonemap,
|
|
286
266
|
NSS_SETTINGS_STRUCT.declaration_chunk,
|
|
287
267
|
]
|
|
288
268
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_nss_preprocess.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/shader_nss_preprocess.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_nss_preprocess.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/nss/shader_nss_preprocess.js"],"names":[],"mappings":"AAsOA,kDAIG;8BAzO2B,+BAA+B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
-
import { F16_MAX_DEFINITION } from "../../shader/chunk/math/F16_MAX_DEFINITION.js";
|
|
3
2
|
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
4
3
|
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
5
4
|
import { SAMPLER_LINEAR_UPSCALE } from "../../texture/SAMPLER_LINEAR_UPSCALE.js";
|
|
6
5
|
import { chunk_nss_find_nearest_depth } from "./chunk_nss_find_nearest_depth.js";
|
|
7
6
|
import { chunk_nss_luma_derivative } from "./chunk_nss_luma_derivative.js";
|
|
7
|
+
import { chunk_nss_tonemap } from "./chunk_nss_tonemap.js";
|
|
8
8
|
import { NSS_WORKGROUP_SIZE } from "./NSS_CONSTANTS.js";
|
|
9
9
|
import { NSS_SETTINGS_STRUCT } from "./NSS_SETTINGS_STRUCT.js";
|
|
10
10
|
|
|
@@ -68,17 +68,6 @@ resources.createGroup()
|
|
|
68
68
|
const body = CodeChunk.from(
|
|
69
69
|
//language=WGSL
|
|
70
70
|
`
|
|
71
|
-
const NSS_EXPOSURE: f32 = 7.38905609893; // e^2
|
|
72
|
-
|
|
73
|
-
// Karis tonemap (max-of-channels), applied to EXPOSURE-scaled colour.
|
|
74
|
-
// ARM's training distribution: Tonemap(EXPOSURE * raw) -> network input.
|
|
75
|
-
fn nss_tonemap_exposure(rgb: vec3<f32>) -> vec3<f32> {
|
|
76
|
-
let finite = select(vec3<f32>(0.0), clamp(rgb, vec3<f32>(0.0), vec3<f32>(F16_MAX)), rgb == rgb);
|
|
77
|
-
let scaled = finite * NSS_EXPOSURE;
|
|
78
|
-
let m = max(max(scaled.r, scaled.g), scaled.b);
|
|
79
|
-
return scaled / (1.0 + m);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
71
|
// ARM's network was trained against inputs that go through their Quantize
|
|
83
72
|
// formula: int8 = round(fp * 255 - 128). The conv then sees (uint8 - 128)
|
|
84
73
|
// = signed int8 in [-128, 127] - i.e. fp 0 -> -128, fp 0.5 -> 0, fp 1 -> 127.
|
|
@@ -232,9 +221,9 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
|
|
|
232
221
|
textureStore(tNearestOffset, st, vec4<f32>(nearest_packed, 0.0, 0.0));
|
|
233
222
|
}
|
|
234
223
|
`, [
|
|
235
|
-
F16_MAX_DEFINITION,
|
|
236
224
|
chunk_nss_find_nearest_depth,
|
|
237
225
|
chunk_nss_luma_derivative,
|
|
226
|
+
chunk_nss_tonemap,
|
|
238
227
|
NSS_SETTINGS_STRUCT.declaration_chunk,
|
|
239
228
|
]
|
|
240
229
|
);
|
package/src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare_meshlet_draw_commands_by_material.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepare_meshlet_draw_commands_by_material.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/bucket/prepare_meshlet_draw_commands_by_material.js"],"names":[],"mappings":"AAiCA;;;;;;;;;;;;;;;GAeG;AACH,uKAJa;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,wBAAwB,EAAE,MAAM,CAAA;CAAC,CAsVnH"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
|
-
import { ceilPowerOfTwo } from "../../../../core/binary/operations/ceilPowerOfTwo.js";
|
|
3
2
|
import { round_up } from "../../../../core/math/round_up.js";
|
|
4
3
|
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
5
4
|
import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
6
5
|
import { STRUCT_UNINDEXED_DRAW_COMMAND } from "../../gpu_primitive/indirect/STRUCT_UNINDEXED_DRAW_COMMAND.js";
|
|
7
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
cpu_hash_table_create,
|
|
8
|
+
cpu_hash_table_word_count
|
|
9
|
+
} from "../../gpu_primitive/hash_table/cpu_build_hash_table.js";
|
|
8
10
|
import {
|
|
9
11
|
graph_prefix_scan_csdldf,
|
|
10
12
|
prefix_scan_csdldf_output_descriptor
|
|
@@ -215,21 +217,16 @@ export function graph_prepare_meshlet_draw_commands_by_material({
|
|
|
215
217
|
// 2. build material lookup table
|
|
216
218
|
const material_ids = materials.map(m => m.id);
|
|
217
219
|
const material_count = material_ids.length;
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
material_lookup, 0,
|
|
224
|
-
material_table_size,
|
|
225
|
-
material_ids,
|
|
226
|
-
material_count,
|
|
227
|
-
);
|
|
220
|
+
let material_lookup = new Uint32Array(cpu_hash_table_word_count(material_count));
|
|
221
|
+
|
|
222
|
+
while (!cpu_hash_table_create(material_lookup, material_ids, material_count)) {
|
|
223
|
+
material_lookup = new Uint32Array(material_lookup.length * 2);
|
|
224
|
+
}
|
|
228
225
|
|
|
229
226
|
// TODO build the table on the GPU
|
|
230
227
|
const gr_material_lookup = graph_import_raw_buffer({
|
|
231
228
|
graph,
|
|
232
|
-
value:
|
|
229
|
+
value: material_lookup.buffer,
|
|
233
230
|
usage: GPUBufferUsage.STORAGE,
|
|
234
231
|
});
|
|
235
232
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RASTERIZATION_BUCKET_LIMIT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RASTERIZATION_BUCKET_LIMIT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/expand/bucket/RASTERIZATION_BUCKET_LIMIT.js"],"names":[],"mappings":"AAmBA,+DAA0F;AAC1F,8DAAsF;AAEtF;;;;;;;;GAQG;AACH,0DAFU,MAAM,CAE6C;AAE7D;;;;GAIG;AACH,yCAFU,MAAM,CAEsK"}
|
|
@@ -1,38 +1,39 @@
|
|
|
1
|
-
import { assert } from "../../../../../core/assert.js";
|
|
2
|
-
import { ShadeDrawMode } from "../../../material/ShadeDrawMode.js";
|
|
3
|
-
import { TransparencyMode } from "../../../material/TransparencyMode.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* @
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
assert.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* @
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
import { assert } from "../../../../../core/assert.js";
|
|
2
|
+
import { ShadeDrawMode } from "../../../material/ShadeDrawMode.js";
|
|
3
|
+
import { TransparencyMode } from "../../../material/TransparencyMode.js";
|
|
4
|
+
import { ceil_log2 } from "../../../../../core/binary/operations/ceil_log2.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} e enum
|
|
9
|
+
* @return {number} number of bits required to represent it
|
|
10
|
+
*/
|
|
11
|
+
function enum_bit_count(e) {
|
|
12
|
+
const max = Math.max.apply(null, Object.values(e));
|
|
13
|
+
|
|
14
|
+
assert.isNonNegativeInteger(max, 'max');
|
|
15
|
+
assert.lessThanOrEqual(max, 5, "the bucket count is going to be absurd");
|
|
16
|
+
|
|
17
|
+
return ceil_log2(max + 1);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const RASTERIZATION_BUCKET_BIT_COUNT_ALPHA_MODE = enum_bit_count(TransparencyMode);
|
|
21
|
+
export const RASTERIZATION_BUCKET_BIT_COUNT_DRAW_MODE = enum_bit_count(ShadeDrawMode);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* One bit, not the two {@link ShadeDrawSide} would need. Only double-sided geometry needs a
|
|
25
|
+
* pipeline of its own — `cullMode: 'none'` has no winding equivalent. `Front` and `Back` share
|
|
26
|
+
* one: a back-sided material is a front-sided one drawn with its winding reversed, and the
|
|
27
|
+
* vertex shader does the reversing.
|
|
28
|
+
*
|
|
29
|
+
* @see rasterization_material_bucket
|
|
30
|
+
* @type {number}
|
|
31
|
+
*/
|
|
32
|
+
export const RASTERIZATION_BUCKET_BIT_COUNT_DOUBLE_SIDED = 1;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Maximum number of rasterization buckets. This is a number of permutations of different alpha and draw modes.
|
|
36
|
+
* See Northlight talk on "Alan Wake 2" meshlet shading.
|
|
37
|
+
* @type {number}
|
|
38
|
+
*/
|
|
39
|
+
export const RASTERIZATION_BUCKET_LIMIT = (1 << (RASTERIZATION_BUCKET_BIT_COUNT_ALPHA_MODE + RASTERIZATION_BUCKET_BIT_COUNT_DRAW_MODE + RASTERIZATION_BUCKET_BIT_COUNT_DOUBLE_SIDED));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_prefix_sum_to_command.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_prefix_sum_to_command.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/rasterize/expand/mesh/shader_prefix_sum_to_command.js"],"names":[],"mappings":"AAyDA,yDAIG;8BAvD2B,kCAAkC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION
|
|
3
|
-
} from "../../../gpu_primitive/indirect/WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION.js";
|
|
1
|
+
import { chunk_folded_dispatch } from "../../../gpu_primitive/indirect/chunk_folded_dispatch.js";
|
|
4
2
|
import { STRUCT_DISPATCH_COMPUTE_COMMAND } from "../../../gpu_primitive/indirect/STRUCT_DISPATCH_COMPUTE_COMMAND.js";
|
|
5
3
|
import { COLLECTION_U32_STRUCT_READ } from "../../../gpu_primitive/COLLECTION_U32_STRUCT_READ.js";
|
|
6
4
|
import { chunk_divide_round_up_u32 } from "../../../shader/chunk/math/chunk_divide_round_up_u32.js";
|
|
@@ -43,20 +41,17 @@ fn main(){
|
|
|
43
41
|
It is also the stride folded_workgroup_index flattens by, so the two builders have to agree on
|
|
44
42
|
it: a row of x shorter than that would leave a gap in the index.
|
|
45
43
|
*/
|
|
46
|
-
const LIMIT = ${WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION}u;
|
|
47
|
-
|
|
48
44
|
let desired_groups = divide_round_up_u32(total_count, TARGET_GROUP_SIZE);
|
|
45
|
+
let folded = folded_dispatch(desired_groups);
|
|
49
46
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
command.workgroupCountX = min( desired_groups, LIMIT );
|
|
54
|
-
command.workgroupCountY = min( max( rows, 1u ), LIMIT );
|
|
55
|
-
command.workgroupCountZ = max( slices, 1u );
|
|
47
|
+
command.workgroupCountX = folded.x;
|
|
48
|
+
command.workgroupCountY = folded.y;
|
|
49
|
+
command.workgroupCountZ = folded.z;
|
|
56
50
|
|
|
57
51
|
}
|
|
58
52
|
`, [
|
|
59
|
-
chunk_divide_round_up_u32
|
|
53
|
+
chunk_divide_round_up_u32,
|
|
54
|
+
chunk_folded_dispatch,
|
|
60
55
|
]
|
|
61
56
|
)
|
|
62
57
|
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Levels a clipmap table holds at most, and how far `clipmap_select_finest` walks.
|
|
3
|
-
* @type {number}
|
|
4
|
-
*/
|
|
5
|
-
export const CLIPMAP_LEVEL_LIMIT: number;
|
|
6
1
|
/**
|
|
7
2
|
* One level of a clipmap as a shader reads it: the level's window, and how big its cell is. Levels
|
|
8
3
|
* sit finest first in a {@link CLIPMAP_LEVEL_ARRAY}.
|
|
@@ -13,7 +8,14 @@ export const CLIPMAP_LEVEL_LIMIT: number;
|
|
|
13
8
|
*/
|
|
14
9
|
export const CLIPMAP_LEVEL_STRUCT: WebGPUStruct;
|
|
15
10
|
/**
|
|
16
|
-
*
|
|
11
|
+
* Levels a clipmap table holds: as many as fill the uniform binding every device allows, 2,048. The
|
|
12
|
+
* table is a uniform, whose length its type fixes, so this is the most levels any clipmap can have;
|
|
13
|
+
* a walk over it stops at the clipmap's own count, and a writer uploads only the levels it has.
|
|
14
|
+
* @type {number}
|
|
15
|
+
*/
|
|
16
|
+
export const CLIPMAP_LEVEL_LIMIT: number;
|
|
17
|
+
/**
|
|
18
|
+
* A clipmap's table of levels, a uniform of its own, {@link CLIPMAP_LEVEL_LIMIT} long.
|
|
17
19
|
* @type {WebGPUArray}
|
|
18
20
|
*/
|
|
19
21
|
export const CLIPMAP_LEVEL_ARRAY: WebGPUArray;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CLIPMAP_LEVEL_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CLIPMAP_LEVEL_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,mCAFU,YAAY,CAeH;AAEnB;;;;;GAKG;AACH,kCAFU,MAAM,CAEqH;AAErI;;;GAGG;AACH,kCAFU,WAAW,CAE0E;6BArClE,4BAA4B;4BAD7B,2BAA2B"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
+
import { WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE } from "../../../gpu_primitive/WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE.js";
|
|
1
2
|
import { f32, vec3i } from "../../type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
2
3
|
import { WebGPUArray } from "../../type/WebGPUArray.js";
|
|
3
4
|
import { WebGPUStruct } from "../../type/WebGPUStruct.js";
|
|
4
5
|
|
|
5
|
-
/**
|
|
6
|
-
* Levels a clipmap table holds at most, and how far `clipmap_select_finest` walks.
|
|
7
|
-
* @type {number}
|
|
8
|
-
*/
|
|
9
|
-
export const CLIPMAP_LEVEL_LIMIT = 16;
|
|
10
|
-
|
|
11
6
|
/**
|
|
12
7
|
* One level of a clipmap as a shader reads it: the level's window, and how big its cell is. Levels
|
|
13
8
|
* sit finest first in a {@link CLIPMAP_LEVEL_ARRAY}.
|
|
@@ -32,7 +27,15 @@ export const CLIPMAP_LEVEL_STRUCT = WebGPUStruct.from({
|
|
|
32
27
|
}, "ClipmapLevel");
|
|
33
28
|
|
|
34
29
|
/**
|
|
35
|
-
*
|
|
30
|
+
* Levels a clipmap table holds: as many as fill the uniform binding every device allows, 2,048. The
|
|
31
|
+
* table is a uniform, whose length its type fixes, so this is the most levels any clipmap can have;
|
|
32
|
+
* a walk over it stops at the clipmap's own count, and a writer uploads only the levels it has.
|
|
33
|
+
* @type {number}
|
|
34
|
+
*/
|
|
35
|
+
export const CLIPMAP_LEVEL_LIMIT = Math.floor(WEBGPU_GUARANTEED_MAX_UNIFORM_BUFFER_BINDING_SIZE / CLIPMAP_LEVEL_STRUCT.aligned_size);
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A clipmap's table of levels, a uniform of its own, {@link CLIPMAP_LEVEL_LIMIT} long.
|
|
36
39
|
* @type {WebGPUArray}
|
|
37
40
|
*/
|
|
38
41
|
export const CLIPMAP_LEVEL_ARRAY = WebGPUArray.from(CLIPMAP_LEVEL_STRUCT, CLIPMAP_LEVEL_LIMIT);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared key packing/unpacking and stacked 3D indirection texel coordinates for clipmap cascades
|
|
3
|
+
* of cubic window resolution `resolution`:
|
|
4
|
+
*
|
|
5
|
+
* ```wgsl
|
|
6
|
+
* fn clipmap_key(cascade: u32, storage: vec3<u32>, resolution: u32) -> u32
|
|
7
|
+
* fn clipmap_key_cascade(key: u32, resolution: u32) -> u32
|
|
8
|
+
* fn clipmap_key_storage(key: u32, resolution: u32) -> vec3<u32>
|
|
9
|
+
* fn clipmap_stacked_texel(cascade: u32, storage: vec3<u32>, resolution: u32) -> vec3<u32>
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @type {CodeChunk}
|
|
13
|
+
*/
|
|
14
|
+
export const chunk_clipmap_key: CodeChunk;
|
|
15
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
16
|
+
//# sourceMappingURL=chunk_clipmap_key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_clipmap_key.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_key.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,gCAFU,SAAS,CAqBjB;0BAlCwB,6BAA6B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Shared key packing/unpacking and stacked 3D indirection texel coordinates for clipmap cascades
|
|
5
|
+
* of cubic window resolution `resolution`:
|
|
6
|
+
*
|
|
7
|
+
* ```wgsl
|
|
8
|
+
* fn clipmap_key(cascade: u32, storage: vec3<u32>, resolution: u32) -> u32
|
|
9
|
+
* fn clipmap_key_cascade(key: u32, resolution: u32) -> u32
|
|
10
|
+
* fn clipmap_key_storage(key: u32, resolution: u32) -> vec3<u32>
|
|
11
|
+
* fn clipmap_stacked_texel(cascade: u32, storage: vec3<u32>, resolution: u32) -> vec3<u32>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @type {CodeChunk}
|
|
15
|
+
*/
|
|
16
|
+
export const chunk_clipmap_key = CodeChunk.from(
|
|
17
|
+
//language=WGSL
|
|
18
|
+
`
|
|
19
|
+
fn clipmap_key(cascade: u32, storage: vec3<u32>, resolution: u32) -> u32 {
|
|
20
|
+
return (cascade * resolution + storage.z) * resolution * resolution + storage.y * resolution + storage.x;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
fn clipmap_key_cascade(key: u32, resolution: u32) -> u32 {
|
|
24
|
+
return key / (resolution * resolution * resolution);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
fn clipmap_key_storage(key: u32, resolution: u32) -> vec3<u32> {
|
|
28
|
+
return vec3<u32>(key % resolution, (key / resolution) % resolution, (key / (resolution * resolution)) % resolution);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fn clipmap_stacked_texel(cascade: u32, storage: vec3<u32>, resolution: u32) -> vec3<u32> {
|
|
32
|
+
return vec3<u32>(storage.x, storage.y, storage.z + cascade * resolution);
|
|
33
|
+
}
|
|
34
|
+
`
|
|
35
|
+
);
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
* The finest level of a clipmap whose window holds a world point, and how far into that window's
|
|
3
3
|
* edge band the point is.
|
|
4
4
|
*
|
|
5
|
-
* Walks the first `count` levels of the table, finest first
|
|
6
|
-
*
|
|
5
|
+
* Walks the first `count` levels of the table, finest first; the first whose window holds the cell the
|
|
6
|
+
* point is in answers. Its `edge_weight` is the point's distance
|
|
7
7
|
* to the window's nearest face, in the level's cells, through a linear ramp: 0 at `band_width` cells
|
|
8
8
|
* or deeper, 1 on the face. It is how much a reader blends toward the next coarser source — the
|
|
9
9
|
* parent level, or whatever stands outside the coarsest. `band_width` is positive.
|
|
10
10
|
*
|
|
11
11
|
* A point no level holds answers `CLIPMAP_LEVEL_NONE`, with a weight of 0.
|
|
12
12
|
*
|
|
13
|
+
* `clipmap_level_select` is one level's test, for a table that is not a {@link CLIPMAP_LEVEL_ARRAY} of its
|
|
14
|
+
* own: the edge weight of a point the level's window holds, or a negative one for a point it does not.
|
|
15
|
+
*
|
|
13
16
|
* The CPU twin is `clipmap_select_finest` in `core/geom/clipmap/`.
|
|
14
17
|
*
|
|
15
18
|
* @type {CodeChunk}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_clipmap_select_finest.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"chunk_clipmap_select_finest.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AACH,0CAFU,SAAS,CA0DjB;0BA/EwB,6BAA6B"}
|
|
@@ -6,14 +6,17 @@ import { chunk_clipmap_contains } from "./chunk_clipmap_contains.js";
|
|
|
6
6
|
* The finest level of a clipmap whose window holds a world point, and how far into that window's
|
|
7
7
|
* edge band the point is.
|
|
8
8
|
*
|
|
9
|
-
* Walks the first `count` levels of the table, finest first
|
|
10
|
-
*
|
|
9
|
+
* Walks the first `count` levels of the table, finest first; the first whose window holds the cell the
|
|
10
|
+
* point is in answers. Its `edge_weight` is the point's distance
|
|
11
11
|
* to the window's nearest face, in the level's cells, through a linear ramp: 0 at `band_width` cells
|
|
12
12
|
* or deeper, 1 on the face. It is how much a reader blends toward the next coarser source — the
|
|
13
13
|
* parent level, or whatever stands outside the coarsest. `band_width` is positive.
|
|
14
14
|
*
|
|
15
15
|
* A point no level holds answers `CLIPMAP_LEVEL_NONE`, with a weight of 0.
|
|
16
16
|
*
|
|
17
|
+
* `clipmap_level_select` is one level's test, for a table that is not a {@link CLIPMAP_LEVEL_ARRAY} of its
|
|
18
|
+
* own: the edge weight of a point the level's window holds, or a negative one for a point it does not.
|
|
19
|
+
*
|
|
17
20
|
* The CPU twin is `clipmap_select_finest` in `core/geom/clipmap/`.
|
|
18
21
|
*
|
|
19
22
|
* @type {CodeChunk}
|
|
@@ -30,6 +33,25 @@ struct ClipmapSelection {
|
|
|
30
33
|
edge_weight: f32,
|
|
31
34
|
}
|
|
32
35
|
|
|
36
|
+
fn clipmap_level_select(level: ClipmapLevel, position_ws: vec3f, band_width: f32) -> f32 {
|
|
37
|
+
// the point in the level's cells
|
|
38
|
+
let position_cells = position_ws / level.cell_size;
|
|
39
|
+
|
|
40
|
+
if (!clipmap_contains(vec3<i32>(floor(position_cells)), level.corner, level.size)) {
|
|
41
|
+
return -1.0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
let from_corner = position_cells - vec3f(level.corner);
|
|
45
|
+
let to_far_corner = vec3f(level.size) - from_corner;
|
|
46
|
+
|
|
47
|
+
let edge = min(
|
|
48
|
+
min(min(from_corner.x, from_corner.y), from_corner.z),
|
|
49
|
+
min(min(to_far_corner.x, to_far_corner.y), to_far_corner.z)
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
return saturate(1.0 - edge / band_width);
|
|
53
|
+
}
|
|
54
|
+
|
|
33
55
|
fn clipmap_select_finest(
|
|
34
56
|
levels: ptr<uniform, ${CLIPMAP_LEVEL_ARRAY.wgsl_ref}>,
|
|
35
57
|
count: u32,
|
|
@@ -42,24 +64,11 @@ fn clipmap_select_finest(
|
|
|
42
64
|
break;
|
|
43
65
|
}
|
|
44
66
|
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
// the point in the level's cells
|
|
48
|
-
let position_cells = position_ws / level.cell_size;
|
|
67
|
+
let weight = clipmap_level_select((*levels)[i], position_ws, band_width);
|
|
49
68
|
|
|
50
|
-
if (
|
|
51
|
-
|
|
69
|
+
if (weight >= 0.0) {
|
|
70
|
+
return ClipmapSelection(i, weight);
|
|
52
71
|
}
|
|
53
|
-
|
|
54
|
-
let from_corner = position_cells - vec3f(level.corner);
|
|
55
|
-
let to_far_corner = vec3f(level.size) - from_corner;
|
|
56
|
-
|
|
57
|
-
let edge = min(
|
|
58
|
-
min(min(from_corner.x, from_corner.y), from_corner.z),
|
|
59
|
-
min(min(to_far_corner.x, to_far_corner.y), to_far_corner.z)
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
return ClipmapSelection(i, saturate(1.0 - edge / band_width));
|
|
63
72
|
}
|
|
64
73
|
|
|
65
74
|
return ClipmapSelection(CLIPMAP_LEVEL_NONE, 0.0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_sh2_color_get_irradiance_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_sh2_color_get_irradiance_at.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH,gDAFU,SAAS,CAUhB;0BAfuB,6BAA6B"}
|
package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh2_color_get_irradiance_at.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_sh2_color_irradiance } from "./chunk_sh2_color_irradiance.js";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Kernel is cosine convolved
|
|
@@ -8,19 +9,8 @@ export const chunk_sh2_color_get_irradiance_at = CodeChunk.from(
|
|
|
8
9
|
//language=WGSL
|
|
9
10
|
`
|
|
10
11
|
fn sh2_color_get_irradiance_at(normal: vec3<f32>, coefficients: array< vec3<f32>, 4 >) -> vec3<f32>{
|
|
11
|
-
|
|
12
|
-
let x = normal.x;
|
|
13
|
-
let y = normal.y;
|
|
14
|
-
let z = normal.z;
|
|
15
|
-
|
|
16
|
-
// band 0
|
|
17
|
-
var result = coefficients[0] * 0.8862269254527579;
|
|
18
|
-
|
|
19
|
-
// band 1
|
|
20
|
-
result += coefficients[1] * 1.0233267079464885 * y;
|
|
21
|
-
result += coefficients[2] * 1.0233267079464885 * z;
|
|
22
|
-
result += coefficients[3] * 1.0233267079464885 * x;
|
|
23
|
-
|
|
24
|
-
return max(vec3(0),result);
|
|
12
|
+
return max(vec3(0), sh2_color_irradiance(normal, coefficients));
|
|
25
13
|
}
|
|
26
|
-
|
|
14
|
+
`, [
|
|
15
|
+
chunk_sh2_color_irradiance,
|
|
16
|
+
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_sh3_convolve_with_cosine_kernel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_sh3_convolve_with_cosine_kernel.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js"],"names":[],"mappings":"AAOA,8DAQG;AAEH,oEA4CC;0BA7DyB,6BAA6B"}
|
package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_convolve_with_cosine_kernel.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
2
|
+
import { chunk_sh3_convolve_with_zh } from "./chunk_sh3_convolve_with_zh.js";
|
|
2
3
|
|
|
3
4
|
const sh_cosineA0 = Math.PI;
|
|
4
5
|
const sh_cosineA1 = (2.0 * Math.PI) / 3.0;
|
|
@@ -8,26 +9,11 @@ export const chunk_sh3_convolve_with_cosine_kernel = CodeChunk.from(
|
|
|
8
9
|
//language=WGSL
|
|
9
10
|
`
|
|
10
11
|
fn sh3_convolve_with_cosine_kernel(sh: array<f32,9>) -> array<f32, 9>{
|
|
11
|
-
return
|
|
12
|
-
|
|
13
|
-
// band 0
|
|
14
|
-
sh[0]*${sh_cosineA0},
|
|
15
|
-
|
|
16
|
-
// band 1
|
|
17
|
-
sh[1]*${sh_cosineA1},
|
|
18
|
-
sh[2]*${sh_cosineA1},
|
|
19
|
-
sh[3]*${sh_cosineA1},
|
|
20
|
-
|
|
21
|
-
// band 2
|
|
22
|
-
sh[4]*${sh_cosineA2},
|
|
23
|
-
sh[5]*${sh_cosineA2},
|
|
24
|
-
sh[6]*${sh_cosineA2},
|
|
25
|
-
sh[7]*${sh_cosineA2},
|
|
26
|
-
sh[8]*${sh_cosineA2},
|
|
27
|
-
|
|
28
|
-
);
|
|
12
|
+
return sh3_convolve_with_zh(sh, vec3<f32>(${sh_cosineA0}, ${sh_cosineA1}, ${sh_cosineA2}));
|
|
29
13
|
}
|
|
30
|
-
|
|
14
|
+
`, [
|
|
15
|
+
chunk_sh3_convolve_with_zh,
|
|
16
|
+
]);
|
|
31
17
|
|
|
32
18
|
export const chunk_sh3_color_convolve_with_cosine_kernel = CodeChunk.from(
|
|
33
19
|
//language=WGSL
|
package/src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_sh3_windowing.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.js"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"chunk_sh3_windowing.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/spherical_harmonics/dering/chunk_sh3_windowing.js"],"names":[],"mappings":"AAIA,4CASO;0BAbmB,gCAAgC"}
|
|
@@ -1,34 +1,15 @@
|
|
|
1
1
|
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
|
-
import {
|
|
2
|
+
import { chunk_sh3_convolve_with_zh } from "../chunk_sh3_convolve_with_zh.js";
|
|
3
3
|
import { chunk_sinc_window } from "./chunk_sinc_window.js";
|
|
4
4
|
|
|
5
5
|
export const chunk_sh3_windowing = CodeChunk.from(
|
|
6
6
|
//language=WGSL
|
|
7
7
|
`
|
|
8
8
|
fn sh3_windowing( f:array<f32, 9>, cutoff:f32 ) -> array<f32, 9>{
|
|
9
|
-
|
|
10
|
-
// scale each band individually
|
|
11
|
-
let w0 = 1.0; //first band is always unchanged
|
|
12
|
-
let w1 = sinc_window(1, cutoff);
|
|
13
|
-
let w2 = sinc_window(2, cutoff);
|
|
14
|
-
|
|
15
|
-
return array<f32,9>(
|
|
16
|
-
// band 0
|
|
17
|
-
f[0] * w0,
|
|
18
|
-
// band 1
|
|
19
|
-
f[1] * w1,
|
|
20
|
-
f[2] * w1,
|
|
21
|
-
f[3] * w1,
|
|
22
|
-
// band 2
|
|
23
|
-
f[4] * w2,
|
|
24
|
-
f[5] * w2,
|
|
25
|
-
f[6] * w2,
|
|
26
|
-
f[7] * w2,
|
|
27
|
-
f[8] * w2,
|
|
28
|
-
);
|
|
9
|
+
return sh3_convolve_with_zh(f, vec3<f32>(1.0, sinc_window(1, cutoff), sinc_window(2, cutoff)));
|
|
29
10
|
}
|
|
30
11
|
`, [
|
|
12
|
+
chunk_sh3_convolve_with_zh,
|
|
31
13
|
chunk_sinc_window,
|
|
32
|
-
chunk_sh_index,
|
|
33
14
|
]);
|
|
34
15
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadowmapDrawSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/ShadowmapDrawSelector.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ShadowmapDrawSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/shadow/map/ShadowmapDrawSelector.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;IACI;;;;OAIG;IACH,UAFU,WAAW,CAEP;IAEd;;;;OAIG;IACH,aAFU,MAAM,CAEA;IAEhB;;;;;;OAMG;IACH,sBAFU,MAAM,CAES;IAEzB;;;;;OAKG;IACH,sBAFU,OAAO,CAEY;IAsC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,mBALW,WAAW,eAEX,MAAM,gBACN,MAAM,QAkFhB;;CACJ"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IndexedFloatMaxHeap } from "../../../../core/collection/heap/IndexedFloatMaxHeap.js";
|
|
2
2
|
import { compute_shadowmap_update_score } from "./shadowmap_update_score.js";
|
|
3
|
+
import { ceilPowerOfTwo } from "../../../../core/binary/operations/ceilPowerOfTwo.js";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Picks which shadowmaps get rasterized this frame, given a view budget.
|
|
@@ -92,7 +93,7 @@ export class ShadowmapDrawSelector {
|
|
|
92
93
|
return;
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
const capacity = Math.max(64,
|
|
96
|
+
const capacity = Math.max(64, ceilPowerOfTwo(count));
|
|
96
97
|
|
|
97
98
|
this.#heap = new IndexedFloatMaxHeap(capacity);
|
|
98
99
|
this.#heap_capacity = capacity;
|