@woosh/meep-engine 3.61.1 → 3.61.3
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/CHANGELOG.md +111 -0
- package/package.json +1 -1
- package/src/engine/network/sim/SimActionExecutor.d.ts +4 -0
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +4 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/generation/foliage/material/foliage_atlas_cutout.d.ts.map +1 -1
- package/src/generation/foliage/material/foliage_atlas_cutout.js +21 -5
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -0
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_cluster_representatives.js +178 -78
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +178 -97
- package/src/generation/foliage/skeleton/ShootLightField.d.ts +1 -0
- package/src/generation/foliage/skeleton/ShootLightField.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/ShootLightField.js +88 -17
- package/src/generation/foliage/skeleton/ShootWoodHash.d.ts +5 -2
- package/src/generation/foliage/skeleton/ShootWoodHash.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/ShootWoodHash.js +191 -25
- package/src/shade/playground/probe_clipmap/README.md +3 -4
- package/src/shade/playground/probe_clipmap/index.html +5 -13
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +4 -5
- package/src/shade/playground/probe_clipmap_box/README.md +55 -0
- package/src/shade/playground/probe_clipmap_box/index.html +185 -0
- package/src/shade/playground/probe_clipmap_box/main.d.ts +8 -0
- package/src/shade/playground/probe_clipmap_box/main.d.ts.map +1 -0
- package/src/shade/playground/probe_clipmap_box/main.js +323 -0
- package/src/shade/playground/probe_clipmap_box/scene.d.ts +93 -0
- package/src/shade/playground/probe_clipmap_box/scene.d.ts.map +1 -0
- package/src/shade/playground/probe_clipmap_box/scene.js +256 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +56 -12
- 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/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
- package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
- package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
- package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
- package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
- package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
- package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
- package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
- package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
- package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
- package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
- package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
- package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
- package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts +12 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.js +49 -24
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts +12 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.js +50 -19
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.js +6 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +89 -20
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
- 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 +49 -36
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
- 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 +7 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
- 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 +15 -51
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
- 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 +0 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
- 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 +2 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
- 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 +5 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/{graph_probe_clipmap_debug_mesh_cards.js → graph_probe_clipmap_debug_mesh_surfaces.js} +38 -57
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +23 -12
- 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 +72 -52
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +32 -0
- 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 +37 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +55 -23
- 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 +134 -69
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +4 -3
- 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 +19 -24
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +2 -2
- 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 +14 -19
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +1 -1
- 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 +8 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +5 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +18 -23
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +4 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +9 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -3
- 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 +14 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
- 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 +30 -26
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -6
- 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 +19 -21
- 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 +6 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
- 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 +6 -4
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +5 -1
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
- package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
- package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
- package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
- package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
- package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
- package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
- package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +26 -8
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +170 -142
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +5 -8
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts +15 -4
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js +33 -7
- package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
- package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts +40 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.js +75 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.js +3 -1
- package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.js +41 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.js +24 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
- package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
- package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +3 -2
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +4 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +2 -5
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +3 -20
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
- package/src/shade/renderer/water/chunk_water_gi.d.ts +1 -1
- package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_gi.js +6 -8
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +76 -32
- package/src/core/math/hash/squirrel3.d.ts +0 -17
- package/src/core/math/hash/squirrel3.d.ts.map +0 -1
- package/src/core/math/hash/squirrel3.js +0 -30
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
- package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
- package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
- package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts +0 -12
- package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.js +0 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_sdf_classify.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js"],"names":[],"mappings":"AAyCA;;;;;GAKG;AACH,mDAFW,OAAO,2DAA2D,EAAE,6BAA6B,QAS3G;AA/BD;;GAEG;AACH,yCAFU,YAAY,CAeQ;AA6B9B;;;;;;;;;;;;;;;GAeG;AACH,uCAFU,aAAa,
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_classify.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js"],"names":[],"mappings":"AAyCA;;;;;GAKG;AACH,mDAFW,OAAO,2DAA2D,EAAE,6BAA6B,QAS3G;AA/BD;;GAEG;AACH,yCAFU,YAAY,CAeQ;AA6B9B;;;;;;;;;;;;;;;GAeG;AACH,uCAFU,aAAa,CAsDpB;6BA/H0B,sCAAsC;8BAJrC,kCAAkC"}
|
|
@@ -75,7 +75,7 @@ mesh_sdf_add_blas_resources(resources.createGroup());
|
|
|
75
75
|
* whichever side of the surface it is on, since the vote casts no ray where the surface is not within
|
|
76
76
|
* the band (UE 5.4's). Otherwise the brick goes onto the ring as `(geometry, generation, brick, 0)`,
|
|
77
77
|
* for evaluate to settle. Either way its entry starts EMPTY, which is what a freed range must find in
|
|
78
|
-
* an entry never stored.
|
|
78
|
+
* an entry never stored, and its number `MESH_SDF_UNNUMBERED`, until evaluate gives it a slot.
|
|
79
79
|
*
|
|
80
80
|
* A dropped brick is settled here: it counts its geometry's pending word down, and the last brick of
|
|
81
81
|
* a geometry to settle logs it complete.
|
|
@@ -108,6 +108,7 @@ fn main(
|
|
|
108
108
|
let voxel = mesh_sdf_level_voxel(header, brick.x);
|
|
109
109
|
|
|
110
110
|
atomicStore(&mesh_sdf_indirection[header.indirection + index], MESH_SDF_EMPTY);
|
|
111
|
+
atomicStore(&mesh_sdf_indirection[mesh_sdf_numbers(header) + index], MESH_SDF_UNNUMBERED);
|
|
111
112
|
|
|
112
113
|
let centre = mesh_sdf_brick_corner(header, brick) + vec3<f32>(0.5 * f32(MESH_SDF_BRICK_VOXELS) * voxel);
|
|
113
114
|
let reach = (MESH_SDF_BAND_VOXELS + MESH_SDF_BRICK_HALF_DIAGONAL) * voxel;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @type {WebGPUStruct}
|
|
3
|
+
*/
|
|
4
|
+
export const MESH_SDF_CONTENT_REHASH_SETTINGS: WebGPUStruct;
|
|
5
|
+
/**
|
|
6
|
+
* The content table of a grown atlas, empty and twice its slots, given the records of the table it
|
|
7
|
+
* replaces (`mesh_sdf_content_table_before`): a thread a record of that table, each live one inserted
|
|
8
|
+
* as it is, its key and its slot, so the grown table lists what the old one did. A record the grown
|
|
9
|
+
* table refuses leaves its slot held but never found (`chunk_mesh_sdf_contents`).
|
|
10
|
+
*
|
|
11
|
+
* Runs first in the bake that follows the growth, before anything reads or changes the grown table.
|
|
12
|
+
*
|
|
13
|
+
* @type {ComputeShader}
|
|
14
|
+
*/
|
|
15
|
+
export const shader_mesh_sdf_content_rehash: ComputeShader;
|
|
16
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
17
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
18
|
+
//# sourceMappingURL=shader_mesh_sdf_content_rehash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_content_rehash.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js"],"names":[],"mappings":"AAUA;;GAEG;AACH,+CAFU,YAAY,CAKa;AAUnC;;;;;;;;;GASG;AACH,6CAFU,aAAa,CA+BpB;6BA3D0B,sCAAsC;8BAJrC,kCAAkC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { chunk_hash_table_atomic } from "../../../gpu_primitive/hash_table/chunk_hash_table_atomic.js";
|
|
2
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
3
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
4
|
+
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
5
|
+
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
6
|
+
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
7
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
8
|
+
import { MESH_SDF_CONTENT_TABLE_RESOURCE } from "./chunk_mesh_sdf_contents.js";
|
|
9
|
+
import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {WebGPUStruct}
|
|
13
|
+
*/
|
|
14
|
+
export const MESH_SDF_CONTENT_REHASH_SETTINGS = WebGPUStruct.from({
|
|
15
|
+
/** workgroups along x, the rest folded into y */
|
|
16
|
+
groups_x: u32,
|
|
17
|
+
}, "MeshSDFContentRehashSettings");
|
|
18
|
+
|
|
19
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
20
|
+
|
|
21
|
+
resources.setImmediate("settings", MESH_SDF_CONTENT_REHASH_SETTINGS);
|
|
22
|
+
|
|
23
|
+
resources.createGroup()
|
|
24
|
+
.addStorageBuffer("mesh_sdf_content_table_before", WebGPUArray.u32)
|
|
25
|
+
.add(MESH_SDF_CONTENT_TABLE_RESOURCE);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The content table of a grown atlas, empty and twice its slots, given the records of the table it
|
|
29
|
+
* replaces (`mesh_sdf_content_table_before`): a thread a record of that table, each live one inserted
|
|
30
|
+
* as it is, its key and its slot, so the grown table lists what the old one did. A record the grown
|
|
31
|
+
* table refuses leaves its slot held but never found (`chunk_mesh_sdf_contents`).
|
|
32
|
+
*
|
|
33
|
+
* Runs first in the bake that follows the growth, before anything reads or changes the grown table.
|
|
34
|
+
*
|
|
35
|
+
* @type {ComputeShader}
|
|
36
|
+
*/
|
|
37
|
+
export const shader_mesh_sdf_content_rehash = ComputeShader.from({
|
|
38
|
+
label: "Mesh SDF Content Rehash",
|
|
39
|
+
resources,
|
|
40
|
+
body: CodeChunk.from(
|
|
41
|
+
//language=WGSL
|
|
42
|
+
`
|
|
43
|
+
@compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
|
|
44
|
+
fn main(
|
|
45
|
+
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
46
|
+
@builtin(local_invocation_index) lane: u32,
|
|
47
|
+
) {
|
|
48
|
+
let record = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
|
|
49
|
+
|
|
50
|
+
// the table's header: its records held, then its size
|
|
51
|
+
if (record >= mesh_sdf_content_table_before[1u]) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
let stored = mesh_sdf_content_table_before[2u + 2u * record];
|
|
56
|
+
|
|
57
|
+
if (stored == 0u || stored == HASH_TABLE_REMOVED) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
hash_table_atomic_insert(&mesh_sdf_content_table, 0u, stored - 1u, mesh_sdf_content_table_before[3u + 2u * record]);
|
|
62
|
+
}
|
|
63
|
+
`, [
|
|
64
|
+
chunk_hash_table_atomic,
|
|
65
|
+
]),
|
|
66
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @type {WebGPUStruct}
|
|
3
|
+
*/
|
|
4
|
+
export const MESH_SDF_COUNT_SETTINGS: WebGPUStruct;
|
|
5
|
+
/**
|
|
6
|
+
* Bake step 5, count: a thread a record of the frame's log, dispatched over its capacity after store.
|
|
7
|
+
* A completion record gets its geometry's stored bricks, the
|
|
8
|
+
* count of numbers evaluate gave out (`MESH_SDF_LOG_STORED`). It is read here rather than when the
|
|
9
|
+
* last brick settles: the numbers and the pending word are different words, and only a pass boundary
|
|
10
|
+
* orders one brick's taking a number before another's reading the count.
|
|
11
|
+
*
|
|
12
|
+
* @type {ComputeShader}
|
|
13
|
+
*/
|
|
14
|
+
export const shader_mesh_sdf_count: ComputeShader;
|
|
15
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
16
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
17
|
+
//# sourceMappingURL=shader_mesh_sdf_count.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_count.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js"],"names":[],"mappings":"AASA;;GAEG;AACH,sCAFU,YAAY,CAOK;AAU3B;;;;;;;;GAQG;AACH,oCAFU,aAAa,CA+BpB;6BA7D0B,sCAAsC;8BAHrC,kCAAkC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
3
|
+
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
4
|
+
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
5
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
6
|
+
import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
7
|
+
import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "./chunk_mesh_sdf_bake.js";
|
|
8
|
+
import { MESH_SDF_BAKE_WORKGROUP_SIZE, MESH_SDF_LOG_STORED } from "./MESH_SDF_BAKE.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @type {WebGPUStruct}
|
|
12
|
+
*/
|
|
13
|
+
export const MESH_SDF_COUNT_SETTINGS = WebGPUStruct.from({
|
|
14
|
+
/** where the frame's log starts in the arena */
|
|
15
|
+
log_offset: u32,
|
|
16
|
+
/** records the log holds */
|
|
17
|
+
log_capacity: u32,
|
|
18
|
+
}, "MeshSDFCountSettings");
|
|
19
|
+
|
|
20
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
21
|
+
|
|
22
|
+
resources.setImmediate("settings", MESH_SDF_COUNT_SETTINGS);
|
|
23
|
+
|
|
24
|
+
resources.createGroup()
|
|
25
|
+
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
26
|
+
.add(MESH_SDF_ARENA_RESOURCE);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Bake step 5, count: a thread a record of the frame's log, dispatched over its capacity after store.
|
|
30
|
+
* A completion record gets its geometry's stored bricks, the
|
|
31
|
+
* count of numbers evaluate gave out (`MESH_SDF_LOG_STORED`). It is read here rather than when the
|
|
32
|
+
* last brick settles: the numbers and the pending word are different words, and only a pass boundary
|
|
33
|
+
* orders one brick's taking a number before another's reading the count.
|
|
34
|
+
*
|
|
35
|
+
* @type {ComputeShader}
|
|
36
|
+
*/
|
|
37
|
+
export const shader_mesh_sdf_count = ComputeShader.from({
|
|
38
|
+
label: "Mesh SDF Count",
|
|
39
|
+
resources,
|
|
40
|
+
body: CodeChunk.from(
|
|
41
|
+
//language=WGSL
|
|
42
|
+
`
|
|
43
|
+
@compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
|
|
44
|
+
fn main(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
45
|
+
let record = id.x;
|
|
46
|
+
let count = min(atomicLoad(&mesh_sdf_indirection[settings.log_offset + MESH_SDF_LOG_COMPLETIONS]), settings.log_capacity);
|
|
47
|
+
|
|
48
|
+
if (record >= count) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
let word = settings.log_offset + MESH_SDF_LOG_HEADER_WORDS + record * MESH_SDF_LOG_RECORD_WORDS;
|
|
53
|
+
let geometry = atomicLoad(&mesh_sdf_indirection[word]);
|
|
54
|
+
let header = mesh_sdf_headers[geometry];
|
|
55
|
+
|
|
56
|
+
// a record of a bake dropped since: the host passes it over, and its range may be gone
|
|
57
|
+
if (header.state != MESH_SDF_STATE_BAKING || header.generation != atomicLoad(&mesh_sdf_indirection[word + 1u])) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
atomicStore(&mesh_sdf_indirection[word + ${MESH_SDF_LOG_STORED}u], atomicLoad(&mesh_sdf_indirection[header.indirection - 2u]));
|
|
62
|
+
}
|
|
63
|
+
`, [
|
|
64
|
+
chunk_mesh_sdf_bake,
|
|
65
|
+
]),
|
|
66
|
+
});
|
|
@@ -11,9 +11,11 @@ export const MESH_SDF_EVALUATE_SETTINGS: WebGPUStruct;
|
|
|
11
11
|
* millisecond. Its byte goes to staging, a word a texel, for store.
|
|
12
12
|
*
|
|
13
13
|
* The brick's last thread to finish settles it, so that nothing waits on a barrier: a brick with a
|
|
14
|
-
* texel within the band
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* texel within the band is PENDING, which slot holds its bytes being resolve's to say once key has
|
|
15
|
+
* read them, and takes the next number of its geometry's stored bricks; one with none is EMPTY after
|
|
16
|
+
* all; either way its entry is written and its geometry's pending word counted down — to the
|
|
17
|
+
* geometry's completion when it is the last. A texel with no surface within the band cast no ray and
|
|
18
|
+
* reads +R, so such a brick is outside.
|
|
17
19
|
* A workgroup's lanes count into a word of their own, lanes finished and lanes within the band; the
|
|
18
20
|
* workgroup's last lane adds the workgroup to the brick's tally in the arena, and the brick's last
|
|
19
21
|
* workgroup reads all eight there.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_sdf_evaluate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_evaluate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js"],"names":[],"mappings":"AAcA;;GAEG;AACH,yCAFU,YAAY,CAWQ;AAe9B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,uCAFU,aAAa,CAoFpB;6BA3I0B,sCAAsC;8BAJrC,kCAAkC"}
|
|
@@ -6,7 +6,6 @@ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderReso
|
|
|
6
6
|
import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
7
7
|
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
8
8
|
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
9
|
-
import { chunk_slot_stack } from "../../../gpu_primitive/slot_stack/chunk_slot_stack.js";
|
|
10
9
|
import { chunk_blas_query_band_sdf } from "../chunk_blas_query_band_sdf.js";
|
|
11
10
|
import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
12
11
|
import { chunk_mesh_sdf_bake, chunk_mesh_sdf_bake_settle, MESH_SDF_ARENA_RESOURCE } from "./chunk_mesh_sdf_bake.js";
|
|
@@ -19,13 +18,11 @@ import { mesh_sdf_add_blas_resources } from "./shader_mesh_sdf_classify.js";
|
|
|
19
18
|
export const MESH_SDF_EVALUATE_SETTINGS = WebGPUStruct.from({
|
|
20
19
|
/** entries of `mesh_sdf_ring`, a power of two; the staging starts here */
|
|
21
20
|
ring_capacity: u32,
|
|
22
|
-
/** slots the stack holds */
|
|
23
|
-
slot_capacity: u32,
|
|
24
21
|
/** where the frame's log starts in the arena */
|
|
25
22
|
log_offset: u32,
|
|
26
23
|
/** records the log holds */
|
|
27
24
|
log_capacity: u32,
|
|
28
|
-
/** where the frame's
|
|
25
|
+
/** where the records of the frame's bricks taken start in the arena, MESH_SDF_TAKEN_WORDS each */
|
|
29
26
|
tally_offset: u32,
|
|
30
27
|
}, "MeshSDFEvaluateSettings");
|
|
31
28
|
|
|
@@ -33,13 +30,12 @@ const resources = new ShaderResourceSetDescriptor();
|
|
|
33
30
|
|
|
34
31
|
resources.setImmediate("settings", MESH_SDF_EVALUATE_SETTINGS);
|
|
35
32
|
|
|
36
|
-
// headers, ring and staging, take, the arena
|
|
33
|
+
// headers, ring and staging, take, the arena: four, and the BLAS query's five
|
|
37
34
|
resources.createGroup()
|
|
38
35
|
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
39
36
|
.addStorageBuffer("mesh_sdf_ring", WebGPUArray.from(vec4u), true)
|
|
40
37
|
.addStorageBuffer("mesh_sdf_take", WebGPUArray.u32)
|
|
41
|
-
.add(MESH_SDF_ARENA_RESOURCE)
|
|
42
|
-
.addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true);
|
|
38
|
+
.add(MESH_SDF_ARENA_RESOURCE);
|
|
43
39
|
|
|
44
40
|
mesh_sdf_add_blas_resources(resources.createGroup());
|
|
45
41
|
|
|
@@ -52,9 +48,11 @@ mesh_sdf_add_blas_resources(resources.createGroup());
|
|
|
52
48
|
* millisecond. Its byte goes to staging, a word a texel, for store.
|
|
53
49
|
*
|
|
54
50
|
* The brick's last thread to finish settles it, so that nothing waits on a barrier: a brick with a
|
|
55
|
-
* texel within the band
|
|
56
|
-
*
|
|
57
|
-
*
|
|
51
|
+
* texel within the band is PENDING, which slot holds its bytes being resolve's to say once key has
|
|
52
|
+
* read them, and takes the next number of its geometry's stored bricks; one with none is EMPTY after
|
|
53
|
+
* all; either way its entry is written and its geometry's pending word counted down — to the
|
|
54
|
+
* geometry's completion when it is the last. A texel with no surface within the band cast no ray and
|
|
55
|
+
* reads +R, so such a brick is outside.
|
|
58
56
|
* A workgroup's lanes count into a word of their own, lanes finished and lanes within the band; the
|
|
59
57
|
* workgroup's last lane adds the workgroup to the brick's tally in the arena, and the brick's last
|
|
60
58
|
* workgroup reads all eight there.
|
|
@@ -114,7 +112,7 @@ fn main(
|
|
|
114
112
|
let workgroup_within_band = (lanes_before >> 16u) + select(0u, 1u, within_band) > 0u;
|
|
115
113
|
|
|
116
114
|
let groups_before = atomicAdd(
|
|
117
|
-
&mesh_sdf_indirection[settings.tally_offset + taken],
|
|
115
|
+
&mesh_sdf_indirection[settings.tally_offset + taken * MESH_SDF_TAKEN_WORDS + MESH_SDF_TAKEN_TALLY],
|
|
118
116
|
1u + select(0u, MESH_SDF_TALLY_BAND_UNIT, workgroup_within_band)
|
|
119
117
|
);
|
|
120
118
|
|
|
@@ -128,8 +126,12 @@ fn main(
|
|
|
128
126
|
var entry = MESH_SDF_EMPTY;
|
|
129
127
|
|
|
130
128
|
if (brick_within_band) {
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
entry = MESH_SDF_PENDING;
|
|
130
|
+
|
|
131
|
+
let number = atomicAdd(&mesh_sdf_indirection[header.indirection - 2u], 1u);
|
|
132
|
+
|
|
133
|
+
atomicStore(&mesh_sdf_indirection[mesh_sdf_numbers(header) + item.z], number);
|
|
134
|
+
atomicStore(&mesh_sdf_indirection[mesh_sdf_numbered(header) + number], item.z);
|
|
133
135
|
}
|
|
134
136
|
|
|
135
137
|
atomicStore(&mesh_sdf_indirection[header.indirection + item.z], entry);
|
|
@@ -140,7 +142,6 @@ fn main(
|
|
|
140
142
|
SURFACE_POINT_3D.declaration_chunk,
|
|
141
143
|
chunk_mesh_sdf_bake,
|
|
142
144
|
chunk_mesh_sdf_bake_settle,
|
|
143
|
-
chunk_slot_stack,
|
|
144
145
|
chunk_blas_query_band_sdf,
|
|
145
146
|
]),
|
|
146
147
|
});
|
|
@@ -5,7 +5,8 @@ export const MESH_SDF_FREE_SETTINGS: WebGPUStruct;
|
|
|
5
5
|
/**
|
|
6
6
|
* Gives the slots of freed geometries back: one thread an entry of every run of entries freed since
|
|
7
7
|
* the last bake, a run each in `mesh_sdf_ranges` as `(first thread, first entry)`. An entry holding a
|
|
8
|
-
* slot
|
|
8
|
+
* slot holds it one entry fewer (`chunk_mesh_sdf_contents`), and the entry that was the last pushes it
|
|
9
|
+
* onto the stack, its content no longer listed.
|
|
9
10
|
*
|
|
10
11
|
* Runs first in the bake, before classify can hand a freed range to another geometry and overwrite
|
|
11
12
|
* it. A range freed mid-bake holds EMPTY where its bricks were not yet stored, since classify writes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_sdf_free.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_free.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js"],"names":[],"mappings":"AAoBA;;GAEG;AACH,qCAFU,YAAY,CASI;AAa1B;;;;;;;;;;;GAWG;AACH,mCAFU,aAAa,CAgCpB;6BAhF0B,sCAAsC;8BAJrC,kCAAkC"}
|
|
@@ -11,6 +11,11 @@ import {
|
|
|
11
11
|
MESH_SDF_ARENA_RESOURCE,
|
|
12
12
|
MESH_SDF_RANGES_RESOURCE
|
|
13
13
|
} from "./chunk_mesh_sdf_bake.js";
|
|
14
|
+
import {
|
|
15
|
+
chunk_mesh_sdf_contents,
|
|
16
|
+
MESH_SDF_CONTENT_TABLE_RESOURCE,
|
|
17
|
+
MESH_SDF_CONTENTS_RESOURCE
|
|
18
|
+
} from "./chunk_mesh_sdf_contents.js";
|
|
14
19
|
import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
|
|
15
20
|
|
|
16
21
|
/**
|
|
@@ -32,12 +37,15 @@ resources.setImmediate("settings", MESH_SDF_FREE_SETTINGS);
|
|
|
32
37
|
resources.createGroup()
|
|
33
38
|
.add(MESH_SDF_RANGES_RESOURCE)
|
|
34
39
|
.add(MESH_SDF_ARENA_RESOURCE)
|
|
35
|
-
.addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true)
|
|
40
|
+
.addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true)
|
|
41
|
+
.add(MESH_SDF_CONTENTS_RESOURCE)
|
|
42
|
+
.add(MESH_SDF_CONTENT_TABLE_RESOURCE);
|
|
36
43
|
|
|
37
44
|
/**
|
|
38
45
|
* Gives the slots of freed geometries back: one thread an entry of every run of entries freed since
|
|
39
46
|
* the last bake, a run each in `mesh_sdf_ranges` as `(first thread, first entry)`. An entry holding a
|
|
40
|
-
* slot
|
|
47
|
+
* slot holds it one entry fewer (`chunk_mesh_sdf_contents`), and the entry that was the last pushes it
|
|
48
|
+
* onto the stack, its content no longer listed.
|
|
41
49
|
*
|
|
42
50
|
* Runs first in the bake, before classify can hand a freed range to another geometry and overwrite
|
|
43
51
|
* it. A range freed mid-bake holds EMPTY where its bricks were not yet stored, since classify writes
|
|
@@ -65,13 +73,14 @@ fn main(
|
|
|
65
73
|
let range = mesh_sdf_range_find(settings.range_count, thread);
|
|
66
74
|
let entry = atomicLoad(&mesh_sdf_indirection[mesh_sdf_ranges[range].y + thread - mesh_sdf_ranges[range].x]);
|
|
67
75
|
|
|
68
|
-
if (mesh_sdf_entry_holds_slot(entry)) {
|
|
76
|
+
if (mesh_sdf_entry_holds_slot(entry) && mesh_sdf_content_release(entry)) {
|
|
69
77
|
slot_stack_push(&mesh_sdf_indirection[MESH_SDF_COUNTER_SLOTS], &mesh_sdf_slots, entry);
|
|
70
78
|
}
|
|
71
79
|
}
|
|
72
80
|
`, [
|
|
73
81
|
chunk_mesh_sdf_bake,
|
|
74
82
|
chunk_mesh_sdf_range_find,
|
|
83
|
+
chunk_mesh_sdf_contents,
|
|
75
84
|
chunk_slot_stack,
|
|
76
85
|
]),
|
|
77
86
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @type {WebGPUStruct}
|
|
3
|
+
*/
|
|
4
|
+
export const MESH_SDF_KEY_SETTINGS: WebGPUStruct;
|
|
5
|
+
/**
|
|
6
|
+
* Bake step 4, key: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
|
|
7
|
+
* take as evaluate is. A PENDING brick's texel adds its term of the brick's content key
|
|
8
|
+
* (`MESH_SDF_BRICK_KEY.js`) into the brick's record, a subgroup's terms in one atomic: a sum, so the
|
|
9
|
+
* order they land in is no matter, and resolve reads it after the dispatch. A brick EMPTY, or stale,
|
|
10
|
+
* adds nothing. A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the words of a
|
|
11
|
+
* brick are loaded once a subgroup (`chunk_subgroup_atomic_load`).
|
|
12
|
+
*
|
|
13
|
+
* A pass of its own: evaluate's eight workgroups write a brick's staging in one dispatch, and nothing
|
|
14
|
+
* there orders their writes before another of them reads them.
|
|
15
|
+
*
|
|
16
|
+
* @type {ComputeShader}
|
|
17
|
+
*/
|
|
18
|
+
export const shader_mesh_sdf_key: ComputeShader;
|
|
19
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
20
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
21
|
+
//# sourceMappingURL=shader_mesh_sdf_key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_key.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js"],"names":[],"mappings":"AAaA;;GAEG;AACH,oCAFU,YAAY,CAOG;AA6CzB;;;;;;;;;;;;GAYG;AACH,kCAFU,aAAa,CAMpB;6BA5E0B,sCAAsC;8BAJrC,kCAAkC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { chunk_subgroup_atomic_add } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_add.js";
|
|
2
|
+
import { chunk_subgroup_atomic_load } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_load.js";
|
|
3
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
4
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
5
|
+
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
6
|
+
import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
7
|
+
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
8
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
9
|
+
import { chunk_mesh_sdf_brick_key } from "../chunk_mesh_sdf_brick_key.js";
|
|
10
|
+
import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
11
|
+
import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "./chunk_mesh_sdf_bake.js";
|
|
12
|
+
import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @type {WebGPUStruct}
|
|
16
|
+
*/
|
|
17
|
+
export const MESH_SDF_KEY_SETTINGS = WebGPUStruct.from({
|
|
18
|
+
/** entries of `mesh_sdf_ring`, a power of two; the staging starts here */
|
|
19
|
+
ring_capacity: u32,
|
|
20
|
+
/** where the records of the frame's bricks taken start in the arena, MESH_SDF_TAKEN_WORDS each */
|
|
21
|
+
tally_offset: u32,
|
|
22
|
+
}, "MeshSDFKeySettings");
|
|
23
|
+
|
|
24
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
25
|
+
|
|
26
|
+
resources.setImmediate("settings", MESH_SDF_KEY_SETTINGS);
|
|
27
|
+
|
|
28
|
+
resources.createGroup()
|
|
29
|
+
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
30
|
+
.addStorageBuffer("mesh_sdf_ring", WebGPUArray.from(vec4u))
|
|
31
|
+
.addStorageBuffer("mesh_sdf_take", WebGPUArray.u32)
|
|
32
|
+
.add(MESH_SDF_ARENA_RESOURCE);
|
|
33
|
+
|
|
34
|
+
const body = CodeChunk.from(
|
|
35
|
+
//language=WGSL
|
|
36
|
+
`
|
|
37
|
+
@compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
|
|
38
|
+
fn main(
|
|
39
|
+
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
40
|
+
@builtin(local_invocation_index) lane: u32,
|
|
41
|
+
) {
|
|
42
|
+
let taken = workgroup_id.x / MESH_SDF_GROUPS_PER_BRICK;
|
|
43
|
+
let item = mesh_sdf_ring[(mesh_sdf_take[MESH_SDF_TAKE_START] + taken) & (settings.ring_capacity - 1u)];
|
|
44
|
+
let header = mesh_sdf_headers[item.x];
|
|
45
|
+
|
|
46
|
+
// the same for every lane of the workgroup, and of each of its subgroups: one brick
|
|
47
|
+
if (header.state != MESH_SDF_STATE_BAKING || header.generation != item.y) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (subgroup_atomic_load_u32(&mesh_sdf_indirection[header.indirection + item.z]) != MESH_SDF_PENDING) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
let texel = (workgroup_id.x % MESH_SDF_GROUPS_PER_BRICK) * MESH_SDF_BAKE_WORKGROUP_SIZE + lane;
|
|
56
|
+
let byte = mesh_sdf_ring[settings.ring_capacity + taken * MESH_SDF_STAGING_VEC4S + texel / 4u][texel % 4u];
|
|
57
|
+
|
|
58
|
+
subgroup_atomic_add_u32(&mesh_sdf_indirection[settings.tally_offset + taken * MESH_SDF_TAKEN_WORDS + MESH_SDF_TAKEN_KEY], mesh_sdf_brick_key_term(texel, byte));
|
|
59
|
+
}
|
|
60
|
+
`, [
|
|
61
|
+
chunk_mesh_sdf_bake,
|
|
62
|
+
chunk_mesh_sdf_brick_key,
|
|
63
|
+
chunk_subgroup_atomic_add,
|
|
64
|
+
chunk_subgroup_atomic_load,
|
|
65
|
+
]);
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Bake step 4, key: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
|
|
69
|
+
* take as evaluate is. A PENDING brick's texel adds its term of the brick's content key
|
|
70
|
+
* (`MESH_SDF_BRICK_KEY.js`) into the brick's record, a subgroup's terms in one atomic: a sum, so the
|
|
71
|
+
* order they land in is no matter, and resolve reads it after the dispatch. A brick EMPTY, or stale,
|
|
72
|
+
* adds nothing. A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the words of a
|
|
73
|
+
* brick are loaded once a subgroup (`chunk_subgroup_atomic_load`).
|
|
74
|
+
*
|
|
75
|
+
* A pass of its own: evaluate's eight workgroups write a brick's staging in one dispatch, and nothing
|
|
76
|
+
* there orders their writes before another of them reads them.
|
|
77
|
+
*
|
|
78
|
+
* @type {ComputeShader}
|
|
79
|
+
*/
|
|
80
|
+
export const shader_mesh_sdf_key = ComputeShader.from({
|
|
81
|
+
label: "Mesh SDF Key",
|
|
82
|
+
resources,
|
|
83
|
+
body,
|
|
84
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @type {WebGPUStruct}
|
|
3
|
+
*/
|
|
4
|
+
export const MESH_SDF_RESOLVE_SETTINGS: WebGPUStruct;
|
|
5
|
+
/**
|
|
6
|
+
* Bake step 5, resolve, first pass, find: a thread a brick taken, over the frame's budget. A PENDING
|
|
7
|
+
* brick finds a slot listed under its content key (`chunk_mesh_sdf_contents`), which compare holds its
|
|
8
|
+
* bytes against, and keeps it in its record. One that finds none claims its key in the frame's
|
|
9
|
+
* claims, a table of the frame's bricks by key: the first to claim a key is its representative, which
|
|
10
|
+
* fresh gives a slot, and every brick names its key's representative in its record, whose bytes
|
|
11
|
+
* compare holds its own against.
|
|
12
|
+
*
|
|
13
|
+
* The keys are key's, read after its dispatch. No list shares this dispatch, so every find meets the
|
|
14
|
+
* table as the last frame left it.
|
|
15
|
+
*
|
|
16
|
+
* @type {ComputeShader}
|
|
17
|
+
*/
|
|
18
|
+
export const shader_mesh_sdf_resolve_find: ComputeShader;
|
|
19
|
+
/**
|
|
20
|
+
* Bake step 5, resolve, second pass, compare: a thread a texel of each brick taken, eight workgroups a
|
|
21
|
+
* brick, dispatched by take. A PENDING brick that found a slot holds each of its staged bytes against
|
|
22
|
+
* the byte the slot holds there, and one that names a representative other than itself against the
|
|
23
|
+
* representative's staged byte, and the texels that differ are counted in the brick's record. A key
|
|
24
|
+
* finds the bricks its bytes may be those of; this pass says whether they are.
|
|
25
|
+
*
|
|
26
|
+
* A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the brick's words are loaded
|
|
27
|
+
* and its count added once a subgroup (`chunk_subgroup_atomic_load`, `chunk_subgroup_atomic_add`).
|
|
28
|
+
*
|
|
29
|
+
* @type {ComputeShader}
|
|
30
|
+
*/
|
|
31
|
+
export const shader_mesh_sdf_resolve_compare: ComputeShader;
|
|
32
|
+
/**
|
|
33
|
+
* Bake step 5, resolve, third pass, fresh: a thread a brick taken. A representative pops a slot and
|
|
34
|
+
* lists it under its key, and its record says the slot is fresh, which store fills. A brick whose
|
|
35
|
+
* bytes differ from those it was compared with pops a fresh slot of its own, listed nowhere, so no
|
|
36
|
+
* brick after shares it: its key is another bytes' too, and the log counts it collided. Take held the
|
|
37
|
+
* frame's bricks to the free slots, and a brick pops one slot at most, so no pop here is refused.
|
|
38
|
+
*
|
|
39
|
+
* @type {ComputeShader}
|
|
40
|
+
*/
|
|
41
|
+
export const shader_mesh_sdf_resolve_fresh: ComputeShader;
|
|
42
|
+
/**
|
|
43
|
+
* Bake step 5, resolve, last pass, hold: a thread a brick taken. A PENDING brick takes its slot, the
|
|
44
|
+
* one it found or popped, or its representative's when it has none, holds it one entry more, and its
|
|
45
|
+
* entry holds it. Logs the bricks that took a slot already holding their bytes, or their
|
|
46
|
+
* representative's.
|
|
47
|
+
*
|
|
48
|
+
* @type {ComputeShader}
|
|
49
|
+
*/
|
|
50
|
+
export const shader_mesh_sdf_resolve_hold: ComputeShader;
|
|
51
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
52
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
53
|
+
//# sourceMappingURL=shader_mesh_sdf_resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_mesh_sdf_resolve.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js"],"names":[],"mappings":"AAqBA;;GAEG;AACH,wCAFU,YAAY,CAeO;AAmG7B;;;;;;;;;;;;GAYG;AACH,2CAFU,aAAa,CAsDmD;AAE1E;;;;;;;;;;;GAWG;AACH,8CAFU,aAAa,CAuDpB;AAEH;;;;;;;;GAQG;AACH,4CAFU,aAAa,CA6BA;AAEvB;;;;;;;GAOG;AACH,2CAFU,aAAa,CA4BhB;6BA5UsB,sCAAsC;8BAJrC,kCAAkC"}
|