@woosh/meep-engine 3.61.2 → 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/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- 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 +0 -5
- package/src/shade/playground/probe_clipmap_box/README.md +1 -1
- package/src/shade/playground/probe_clipmap_box/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +50 -11
- 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/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +82 -17
- 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 +18 -9
- 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 +63 -44
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +21 -1
- 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 +24 -1
- 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 +44 -7
- 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 +88 -11
- 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 +2 -0
- 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 +10 -4
- 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_bounce.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +5 -5
- 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 +5 -1
- 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_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 -5
- 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 +22 -16
- 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/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/nss/NSS.d.ts +1 -1
- 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/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/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/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/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- 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
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../../material/resident/INDIRECT_MATERIAL_ARRAY_TYPE.js";
|
|
2
|
-
import {
|
|
3
|
-
RESIDENT_MATERIAL_TEXTURE_LEVEL_COUNT,
|
|
4
|
-
RESIDENT_MATERIAL_TEXTURE_RESOLUTION
|
|
5
|
-
} from "../../../material/resident/RESIDENT_MATERIAL_TEXTURE_LAYOUT.js";
|
|
6
|
-
import { chunk_sample_material_alpha, chunk_sample_material_data } from "../../../path_tracer/shader/chunk_sample_material_data.js";
|
|
7
|
-
import { INDIRECT_TEXTURE_FILTER } from "../../../path_tracer/shader/INDIRECT_TEXTURE_FILTER.js";
|
|
8
|
-
import { IndirectTextureFilter } from "../../../path_tracer/shader/IndirectTextureFilter.js";
|
|
9
|
-
import { BVH_TRAVERSAL_STACK_SIZE } from "../../../shader/chunk/bvh/BVH_TRAVERSAL_STACK_SIZE.js";
|
|
10
|
-
import { chunk_geometry_read_triangle_vertices } from "../../../shader/chunk/geometry/format/chunk_geometry_read_triangle_vertices.js";
|
|
11
|
-
import { MAT4_IDENTITY_DEFINITION } from "../../../shader/chunk/geometry/mat4/MAT4_IDENTITY_DEFINITION.js";
|
|
12
|
-
import { chunk_ray_query_blas_nearest } from "../../../shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js";
|
|
13
|
-
import { RAY_STRUCT } from "../../../shader/chunk/geometry/ray/RAY_STRUCT.js";
|
|
14
|
-
import { chunk_index_to_grid2d } from "../../../shader/chunk/grid/chunk_index_to_grid2d.js";
|
|
15
|
-
import { chunk_random } from "../../../shader/chunk/random/chunk_random.js";
|
|
16
|
-
import { chunk_random_initialize } from "../../../shader/chunk/random/chunk_random_initialize.js";
|
|
17
|
-
import { TRIANGLE_VERTICES_STRUCT } from "../../../shader/chunk/geometry/triangle/TRIANGLE_VERTICES_STRUCT.js";
|
|
18
|
-
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
19
|
-
import { ShaderSwitchSet } from "../../../shader/compiler/ShaderSwitchSet.js";
|
|
20
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
21
|
-
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
22
|
-
import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
23
|
-
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
24
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
25
|
-
import { mesh_sdf_add_blas_resources } from "../bake/shader_mesh_sdf_classify.js";
|
|
26
|
-
import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
|
|
27
|
-
import { MESH_SDF_HEADERS_RESOURCE, MESH_SDF_INDIRECTION_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
28
|
-
import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
|
|
29
|
-
import { MESH_CARD_SET_STRUCT } from "./MESH_CARD_SET_STRUCT.js";
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Transparent hits a capture ray steps past, at most, before the texel is empty.
|
|
33
|
-
* @type {number}
|
|
34
|
-
*/
|
|
35
|
-
export const MESH_CARD_ALPHA_CONTINUATIONS = 4;
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* @type {WebGPUStruct}
|
|
39
|
-
*/
|
|
40
|
-
export const MESH_CARDS_CAPTURE_SETTINGS = WebGPUStruct.from({
|
|
41
|
-
/** runs in `mesh_card_runs`, a stretch of one card set's pages each */
|
|
42
|
-
run_count: u32,
|
|
43
|
-
/** texels over every run: the threads that do work */
|
|
44
|
-
thread_count: u32,
|
|
45
|
-
/** workgroups along x, the rest folded into y */
|
|
46
|
-
groups_x: u32,
|
|
47
|
-
}, "MeshCardsCaptureSettings");
|
|
48
|
-
|
|
49
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
50
|
-
|
|
51
|
-
resources.setImmediate("settings", MESH_CARDS_CAPTURE_SETTINGS);
|
|
52
|
-
|
|
53
|
-
resources.createGroup()
|
|
54
|
-
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
55
|
-
.add(MESH_SDF_INDIRECTION_RESOURCE)
|
|
56
|
-
.addStorageBuffer("mesh_card_sets", WebGPUArray.from(MESH_CARD_SET_STRUCT))
|
|
57
|
-
// (first thread, card set, first page, 0)
|
|
58
|
-
.addStorageBuffer("mesh_card_runs", WebGPUArray.from(vec4u))
|
|
59
|
-
.addStorageTexture("mesh_card_albedo", "rgba8unorm", "2d", "write-only")
|
|
60
|
-
.addStorageTexture("mesh_card_emissive", "rgba8unorm", "2d", "write-only");
|
|
61
|
-
|
|
62
|
-
resources.createGroup({ label: "materials" })
|
|
63
|
-
.addUniform("materials", INDIRECT_MATERIAL_ARRAY_TYPE)
|
|
64
|
-
.addTexture("textures", "unfilterable-float", "2d-array", false);
|
|
65
|
-
|
|
66
|
-
mesh_sdf_add_blas_resources(resources.createGroup());
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Card capture (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a texel of each page captured
|
|
70
|
-
* this frame, the frame's pages being stretches of card sets, a run each in `mesh_card_runs`.
|
|
71
|
-
*
|
|
72
|
-
* 1. A ray in the geometry's local space starts on the card's near face, at the texel — the corner
|
|
73
|
-
* lattice of the bricks' faces, as a brick's texels sit on its voxels — and runs along the card's
|
|
74
|
-
* direction through its slab, t ≤ the slab's depth, by `ray_query_blas_nearest`.
|
|
75
|
-
* 2. A hit is opaque with probability its opacity (`sample_material_alpha`), as the path tracer takes
|
|
76
|
-
* alpha. A transparent draw steps the ray past the hit, MESH_CARD_ALPHA_CONTINUATIONS times at
|
|
77
|
-
* most; past that the texel is empty.
|
|
78
|
-
* 3. At the opaque hit, `sample_material_data` with the material's resident row and an identity
|
|
79
|
-
* transform, the card being in local space.
|
|
80
|
-
*
|
|
81
|
-
* Both read the material's textures at the texel's footprint (`mesh_card_texture_level`), filtered
|
|
82
|
-
* exactly ({@link IndirectTextureFilter.Exact}): nothing averages a card texel after it is stored, so a
|
|
83
|
-
* single tap would be kept as the texel, and a tap landing on a thin feature of the texture would put
|
|
84
|
-
* it in one row of texels and not the next.
|
|
85
|
-
*
|
|
86
|
-
* The random state is seeded from the card set and the texel, which fixes every draw: the alpha's and
|
|
87
|
-
* the material's dither. A recapture of an unchanged material therefore writes the same bytes.
|
|
88
|
-
*
|
|
89
|
-
* The albedo plane holds √(albedo × (1 − metalness)), Lumen's diffuse colour as UE stores it, and
|
|
90
|
-
* the hit's depth through the slab mapped onto [1/255, 1]. The emissive plane holds emissive / s_e.
|
|
91
|
-
* A texel whose ray found nothing stores 0 throughout.
|
|
92
|
-
*
|
|
93
|
-
* @type {ComputeShader}
|
|
94
|
-
*/
|
|
95
|
-
export const shader_mesh_cards_capture = ComputeShader.from({
|
|
96
|
-
label: "Mesh Cards Capture",
|
|
97
|
-
resources,
|
|
98
|
-
body: CodeChunk.from(
|
|
99
|
-
//language=WGSL
|
|
100
|
-
`
|
|
101
|
-
// The texture level a card texel reads a triangle's material at: its footprint, the card's texel steps
|
|
102
|
-
// carried along the card's direction onto the triangle's plane and through the triangle's uv per
|
|
103
|
-
// position, in texels of a slot's level 0. For a step s, direction d and normal n that is
|
|
104
|
-
// s - d (n·s)/(n·d) on the plane, taken here times n·d, so a triangle turning edge-on, whose footprint
|
|
105
|
-
// grows without bound, reaches the last level with nothing divided by 0, as a raster's would.
|
|
106
|
-
fn mesh_card_texture_level(
|
|
107
|
-
triangle: ${TRIANGLE_VERTICES_STRUCT.wgsl_ref},
|
|
108
|
-
along: vec3<f32>,
|
|
109
|
-
step_u: vec3<f32>,
|
|
110
|
-
step_v: vec3<f32>,
|
|
111
|
-
) -> f32 {
|
|
112
|
-
let edge_1 = triangle.b.position - triangle.a.position;
|
|
113
|
-
let edge_2 = triangle.c.position - triangle.a.position;
|
|
114
|
-
let normal = cross(edge_1, edge_2);
|
|
115
|
-
|
|
116
|
-
// an offset in the plane is a·edge_1 + b·edge_2, a and b its dots with these
|
|
117
|
-
let dual_1 = cross(edge_2, normal) / dot(normal, normal);
|
|
118
|
-
let dual_2 = cross(normal, edge_1) / dot(normal, normal);
|
|
119
|
-
|
|
120
|
-
let uv_1 = triangle.b.uv - triangle.a.uv;
|
|
121
|
-
let uv_2 = triangle.c.uv - triangle.a.uv;
|
|
122
|
-
|
|
123
|
-
let facing = dot(normal, along);
|
|
124
|
-
|
|
125
|
-
let on_plane_u = facing * step_u - along * dot(normal, step_u);
|
|
126
|
-
let on_plane_v = facing * step_v - along * dot(normal, step_v);
|
|
127
|
-
|
|
128
|
-
let uv_step_u = dot(on_plane_u, dual_1) * uv_1 + dot(on_plane_u, dual_2) * uv_2;
|
|
129
|
-
let uv_step_v = dot(on_plane_v, dual_1) * uv_1 + dot(on_plane_v, dual_2) * uv_2;
|
|
130
|
-
|
|
131
|
-
let span = ${RESIDENT_MATERIAL_TEXTURE_RESOLUTION}.0 * max(length(uv_step_u), length(uv_step_v));
|
|
132
|
-
let reach = abs(facing);
|
|
133
|
-
|
|
134
|
-
// a footprint of a slot or more, edge-on included, is the last level
|
|
135
|
-
return select(
|
|
136
|
-
${RESIDENT_MATERIAL_TEXTURE_LEVEL_COUNT - 1}.0,
|
|
137
|
-
log2(max(span, reach) / reach),
|
|
138
|
-
span < ${RESIDENT_MATERIAL_TEXTURE_RESOLUTION}.0 * reach
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
@compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
|
|
143
|
-
fn main(
|
|
144
|
-
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
145
|
-
@builtin(local_invocation_index) lane: u32,
|
|
146
|
-
) {
|
|
147
|
-
let thread = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
|
|
148
|
-
|
|
149
|
-
if (thread >= settings.thread_count) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// the run the thread falls in: the last whose first thread is at or below it
|
|
154
|
-
var low = 0u;
|
|
155
|
-
var high = settings.run_count;
|
|
156
|
-
|
|
157
|
-
while (high - low > 1u) {
|
|
158
|
-
let middle = (low + high) / 2u;
|
|
159
|
-
|
|
160
|
-
if (mesh_card_runs[middle].x <= thread) {
|
|
161
|
-
low = middle;
|
|
162
|
-
} else {
|
|
163
|
-
high = middle;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
let run = mesh_card_runs[low];
|
|
168
|
-
let card_set = mesh_card_sets[run.y];
|
|
169
|
-
|
|
170
|
-
let page_texels = MESH_CARD_PAGE_TEXELS * MESH_CARD_PAGE_TEXELS;
|
|
171
|
-
let within = thread - run.x;
|
|
172
|
-
let page = run.z + within / page_texels;
|
|
173
|
-
let texel = vec2<u32>(within % MESH_CARD_PAGE_TEXELS, (within / MESH_CARD_PAGE_TEXELS) % MESH_CARD_PAGE_TEXELS);
|
|
174
|
-
|
|
175
|
-
let geometry = card_set.geometry;
|
|
176
|
-
let header = mesh_sdf_headers[geometry];
|
|
177
|
-
let columns = mesh_sdf_indirection[header.cards + MESH_CARD_LAYOUT_COLUMN_COUNT];
|
|
178
|
-
|
|
179
|
-
// the page list follows the tables
|
|
180
|
-
let listed = mesh_sdf_indirection[header.cards + MESH_CARD_LAYOUT_TABLES + columns + page];
|
|
181
|
-
let card = listed >> 16u;
|
|
182
|
-
let column = vec2<u32>(listed & 0xffu, (listed >> 8u) & 0xffu);
|
|
183
|
-
|
|
184
|
-
let record = header.cards + MESH_CARD_LAYOUT_RECORDS + card * MESH_CARD_RECORD_WORDS;
|
|
185
|
-
let direction = mesh_sdf_indirection[record + MESH_CARD_RECORD_DIRECTION];
|
|
186
|
-
let near = mesh_sdf_indirection[record + MESH_CARD_RECORD_NEAR];
|
|
187
|
-
let far = mesh_sdf_indirection[record + MESH_CARD_RECORD_FAR];
|
|
188
|
-
|
|
189
|
-
let axes = mesh_card_axes(direction);
|
|
190
|
-
let toward_plus = (direction & 1u) == 0u;
|
|
191
|
-
let brick_span = f32(MESH_SDF_BRICK_VOXELS) * header.voxel;
|
|
192
|
-
|
|
193
|
-
// the texel on the card's near face: layer 'near' counts from the grid's +axis end for an odd direction
|
|
194
|
-
var start = header.origin;
|
|
195
|
-
|
|
196
|
-
start[axes.y] += f32(column.x * MESH_SDF_BRICK_VOXELS + texel.x) * header.voxel;
|
|
197
|
-
start[axes.z] += f32(column.y * MESH_SDF_BRICK_VOXELS + texel.y) * header.voxel;
|
|
198
|
-
start[axes.x] += select(f32(header.bricks[axes.x] - near), f32(near), toward_plus) * brick_span;
|
|
199
|
-
|
|
200
|
-
var along = vec3<f32>(0.0);
|
|
201
|
-
|
|
202
|
-
along[axes.x] = select(-1.0, 1.0, toward_plus);
|
|
203
|
-
|
|
204
|
-
// the card's texel steps, a voxel each
|
|
205
|
-
var step_u = vec3<f32>(0.0);
|
|
206
|
-
var step_v = vec3<f32>(0.0);
|
|
207
|
-
|
|
208
|
-
step_u[axes.y] = header.voxel;
|
|
209
|
-
step_v[axes.z] = header.voxel;
|
|
210
|
-
|
|
211
|
-
let depth = f32(far - near) * brick_span;
|
|
212
|
-
|
|
213
|
-
random_initialize(vec3<u32>(page, texel), vec3<u32>(run.y, geometry, 0u));
|
|
214
|
-
|
|
215
|
-
var ray: ${RAY_STRUCT.wgsl_ref};
|
|
216
|
-
|
|
217
|
-
ray.origin = start;
|
|
218
|
-
ray.direction = along;
|
|
219
|
-
ray.tmax = depth;
|
|
220
|
-
|
|
221
|
-
let material = materials[card_set.material];
|
|
222
|
-
|
|
223
|
-
var stack: array<u32, ${BVH_TRAVERSAL_STACK_SIZE}>;
|
|
224
|
-
|
|
225
|
-
var found = false;
|
|
226
|
-
var travelled = 0.0;
|
|
227
|
-
var hit_t = 0.0;
|
|
228
|
-
var lambda = vec3<f32>(0.0);
|
|
229
|
-
var triangle_index = 0u;
|
|
230
|
-
var texture_level = 0.0;
|
|
231
|
-
|
|
232
|
-
for (var step = 0u; step <= ${MESH_CARD_ALPHA_CONTINUATIONS}u; step++) {
|
|
233
|
-
let hit = ray_query_blas_nearest(ray, geometry, &stack, 0u);
|
|
234
|
-
|
|
235
|
-
if (hit.t < 0.0) {
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
let triangle = geometry_read_triangle_vertices(geometries[geometry], hit.triangle);
|
|
240
|
-
let at = vec3<f32>(1.0 - hit.barycentrics.x - hit.barycentrics.y, hit.barycentrics.x, hit.barycentrics.y);
|
|
241
|
-
let level = mesh_card_texture_level(triangle, along, step_u, step_v);
|
|
242
|
-
let surface = sample_material_alpha(material, triangle, at, MAT4_IDENTITY, ray.direction, level);
|
|
243
|
-
|
|
244
|
-
if (random() < surface.opacity) {
|
|
245
|
-
found = true;
|
|
246
|
-
hit_t = travelled + hit.t;
|
|
247
|
-
lambda = at;
|
|
248
|
-
triangle_index = hit.triangle;
|
|
249
|
-
texture_level = level;
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// past the transparent hit, by a sliver of a voxel
|
|
254
|
-
let skip = hit.t + 1e-3 * header.voxel;
|
|
255
|
-
|
|
256
|
-
ray.origin += ray.direction * skip;
|
|
257
|
-
ray.tmax -= skip;
|
|
258
|
-
travelled += skip;
|
|
259
|
-
|
|
260
|
-
if (ray.tmax <= 0.0) {
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
var albedo_plane = vec4<f32>(0.0);
|
|
266
|
-
var emissive_plane = vec4<f32>(0.0);
|
|
267
|
-
|
|
268
|
-
if (found) {
|
|
269
|
-
let triangle = geometry_read_triangle_vertices(geometries[geometry], triangle_index);
|
|
270
|
-
let data = sample_material_data(ray, material, triangle, lambda, MAT4_IDENTITY, texture_level);
|
|
271
|
-
|
|
272
|
-
let diffuse = data.albedo * (1.0 - data.metalness);
|
|
273
|
-
|
|
274
|
-
albedo_plane = vec4<f32>(sqrt(max(diffuse, vec3<f32>(0.0))), (1.0 + 254.0 * saturate(hit_t / depth)) / 255.0);
|
|
275
|
-
|
|
276
|
-
if (card_set.emissive_scale > 0.0) {
|
|
277
|
-
emissive_plane = vec4<f32>(data.emissive / card_set.emissive_scale, 0.0);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
let tiles_per_row = textureDimensions(mesh_card_albedo).x / MESH_CARD_PAGE_TEXELS;
|
|
282
|
-
let origin = index_to_grid2d(card_set.page_base + page, tiles_per_row) * MESH_CARD_PAGE_TEXELS + texel;
|
|
283
|
-
|
|
284
|
-
textureStore(mesh_card_albedo, origin, albedo_plane);
|
|
285
|
-
textureStore(mesh_card_emissive, origin, emissive_plane);
|
|
286
|
-
}
|
|
287
|
-
`, [
|
|
288
|
-
MAT4_IDENTITY_DEFINITION,
|
|
289
|
-
RAY_STRUCT.declaration_chunk,
|
|
290
|
-
TRIANGLE_VERTICES_STRUCT.declaration_chunk,
|
|
291
|
-
MESH_CARD_SET_STRUCT.declaration_chunk,
|
|
292
|
-
chunk_mesh_cards,
|
|
293
|
-
chunk_index_to_grid2d,
|
|
294
|
-
chunk_random,
|
|
295
|
-
chunk_random_initialize,
|
|
296
|
-
chunk_ray_query_blas_nearest,
|
|
297
|
-
chunk_geometry_read_triangle_vertices,
|
|
298
|
-
chunk_sample_material_alpha,
|
|
299
|
-
chunk_sample_material_data,
|
|
300
|
-
]),
|
|
301
|
-
}).variant(ShaderSwitchSet.EMPTY.with(INDIRECT_TEXTURE_FILTER, IndirectTextureFilter.Exact));
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @type {WebGPUStruct}
|
|
3
|
-
*/
|
|
4
|
-
export const MESH_CARDS_COMPACT_SETTINGS: WebGPUStruct;
|
|
5
|
-
/**
|
|
6
|
-
* A placed card layout moved into the range that fits it (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md
|
|
7
|
-
* §6.5), a thread a word.
|
|
8
|
-
*
|
|
9
|
-
* Placement runs in a range sized for what any layout of the geometry's grid could be; only once its
|
|
10
|
-
* log record is read back does the host know the columns and pages it took, and give the geometry a
|
|
11
|
-
* range of that size. The two ranges never overlap: the source is held until the frame after this
|
|
12
|
-
* pass runs.
|
|
13
|
-
*
|
|
14
|
-
* @type {ComputeShader}
|
|
15
|
-
*/
|
|
16
|
-
export const shader_mesh_cards_compact: ComputeShader;
|
|
17
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
18
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
19
|
-
//# sourceMappingURL=shader_mesh_cards_compact.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_cards_compact.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js"],"names":[],"mappings":"AAQA;;GAEG;AACH,0CAFU,YAAY,CAWS;AAS/B;;;;;;;;;;GAUG;AACH,wCAFU,aAAa,CAsBpB;6BAxD0B,sCAAsC;8BAHrC,kCAAkC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
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_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
|
|
7
|
-
import { MESH_SDF_ARENA_RESOURCE } from "../bake/chunk_mesh_sdf_bake.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @type {WebGPUStruct}
|
|
11
|
-
*/
|
|
12
|
-
export const MESH_CARDS_COMPACT_SETTINGS = WebGPUStruct.from({
|
|
13
|
-
/** the placed layout's first word, in the range placement had */
|
|
14
|
-
source: u32,
|
|
15
|
-
/** its first word in the range it keeps */
|
|
16
|
-
destination: u32,
|
|
17
|
-
/** its words: the header, the records, the column tables and the page list */
|
|
18
|
-
count: u32,
|
|
19
|
-
/** workgroups along x, the rest folded into y */
|
|
20
|
-
groups_x: u32,
|
|
21
|
-
}, "MeshCardsCompactSettings");
|
|
22
|
-
|
|
23
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
24
|
-
|
|
25
|
-
resources.setImmediate("settings", MESH_CARDS_COMPACT_SETTINGS);
|
|
26
|
-
|
|
27
|
-
resources.createGroup()
|
|
28
|
-
.add(MESH_SDF_ARENA_RESOURCE);
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* A placed card layout moved into the range that fits it (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md
|
|
32
|
-
* §6.5), a thread a word.
|
|
33
|
-
*
|
|
34
|
-
* Placement runs in a range sized for what any layout of the geometry's grid could be; only once its
|
|
35
|
-
* log record is read back does the host know the columns and pages it took, and give the geometry a
|
|
36
|
-
* range of that size. The two ranges never overlap: the source is held until the frame after this
|
|
37
|
-
* pass runs.
|
|
38
|
-
*
|
|
39
|
-
* @type {ComputeShader}
|
|
40
|
-
*/
|
|
41
|
-
export const shader_mesh_cards_compact = ComputeShader.from({
|
|
42
|
-
label: "Mesh Cards Compact",
|
|
43
|
-
resources,
|
|
44
|
-
body: CodeChunk.from(
|
|
45
|
-
//language=WGSL
|
|
46
|
-
`
|
|
47
|
-
@compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
|
|
48
|
-
fn main(
|
|
49
|
-
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
50
|
-
@builtin(local_invocation_index) lane: u32,
|
|
51
|
-
) {
|
|
52
|
-
let word = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
|
|
53
|
-
|
|
54
|
-
if (word >= settings.count) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
atomicStore(&mesh_sdf_indirection[settings.destination + word], atomicLoad(&mesh_sdf_indirection[settings.source + word]));
|
|
59
|
-
}
|
|
60
|
-
`),
|
|
61
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @type {WebGPUStruct}
|
|
3
|
-
*/
|
|
4
|
-
export const MESH_CARDS_HISTOGRAM_SETTINGS: WebGPUStruct;
|
|
5
|
-
/**
|
|
6
|
-
* Card placement, step 1 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a column of each of the
|
|
7
|
-
* six directions, over a resident geometry's level-0 occupancy — a brick is occupied when its entry
|
|
8
|
-
* holds a slot. Walking its column along the direction, a thread finds every run start: an occupied
|
|
9
|
-
* brick at layer z whose predecessor is empty or outside the grid. A run start's m is the layer after
|
|
10
|
-
* the previous run's end, or 0 for the first. The thread counts each run start into
|
|
11
|
-
* its direction's histogram by (m, z), which the layout's scratch holds cleared.
|
|
12
|
-
*
|
|
13
|
-
* @type {ComputeShader}
|
|
14
|
-
*/
|
|
15
|
-
export const shader_mesh_cards_histogram: ComputeShader;
|
|
16
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
17
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
18
|
-
//# sourceMappingURL=shader_mesh_cards_histogram.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_cards_histogram.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js"],"names":[],"mappings":"AAUA;;GAEG;AACH,4CAFU,YAAY,CAOW;AAUjC;;;;;;;;;GASG;AACH,0CAFU,aAAa,CAiEpB;6BAjG0B,sCAAsC;8BAHrC,kCAAkC"}
|
|
@@ -1,102 +0,0 @@
|
|
|
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 { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "../bake/chunk_mesh_sdf_bake.js";
|
|
7
|
-
import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
|
|
8
|
-
import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
9
|
-
import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @type {WebGPUStruct}
|
|
13
|
-
*/
|
|
14
|
-
export const MESH_CARDS_HISTOGRAM_SETTINGS = WebGPUStruct.from({
|
|
15
|
-
/** the geometry whose cards are placed */
|
|
16
|
-
geometry: u32,
|
|
17
|
-
/** columns over the six directions: the threads that do work */
|
|
18
|
-
columns: u32,
|
|
19
|
-
}, "MeshCardsHistogramSettings");
|
|
20
|
-
|
|
21
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
22
|
-
|
|
23
|
-
resources.setImmediate("settings", MESH_CARDS_HISTOGRAM_SETTINGS);
|
|
24
|
-
|
|
25
|
-
resources.createGroup()
|
|
26
|
-
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
27
|
-
.add(MESH_SDF_ARENA_RESOURCE);
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Card placement, step 1 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a column of each of the
|
|
31
|
-
* six directions, over a resident geometry's level-0 occupancy — a brick is occupied when its entry
|
|
32
|
-
* holds a slot. Walking its column along the direction, a thread finds every run start: an occupied
|
|
33
|
-
* brick at layer z whose predecessor is empty or outside the grid. A run start's m is the layer after
|
|
34
|
-
* the previous run's end, or 0 for the first. The thread counts each run start into
|
|
35
|
-
* its direction's histogram by (m, z), which the layout's scratch holds cleared.
|
|
36
|
-
*
|
|
37
|
-
* @type {ComputeShader}
|
|
38
|
-
*/
|
|
39
|
-
export const shader_mesh_cards_histogram = ComputeShader.from({
|
|
40
|
-
label: "Mesh Cards Histogram",
|
|
41
|
-
resources,
|
|
42
|
-
body: CodeChunk.from(
|
|
43
|
-
//language=WGSL
|
|
44
|
-
`
|
|
45
|
-
@compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
|
|
46
|
-
fn main(@builtin(global_invocation_id) id: vec3<u32>) {
|
|
47
|
-
let thread = id.x;
|
|
48
|
-
|
|
49
|
-
if (thread >= settings.columns) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
let header = mesh_sdf_headers[settings.geometry];
|
|
54
|
-
let bricks = header.bricks;
|
|
55
|
-
let parts = mesh_card_placement_of(bricks);
|
|
56
|
-
|
|
57
|
-
// the direction whose columns the thread is among: six runs, a direction's columns each
|
|
58
|
-
var direction = 0u;
|
|
59
|
-
var first = 0u;
|
|
60
|
-
|
|
61
|
-
for (; direction + 1u < MESH_CARD_DIRECTIONS; direction++) {
|
|
62
|
-
let extent = mesh_card_extent(bricks, direction);
|
|
63
|
-
let count = extent.y * extent.z;
|
|
64
|
-
|
|
65
|
-
if (thread < first + count) {
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
first += count;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
let extent = mesh_card_extent(bricks, direction);
|
|
73
|
-
let index = thread - first;
|
|
74
|
-
let column = vec2<u32>(index % extent.y, index / extent.y);
|
|
75
|
-
|
|
76
|
-
let histogram = header.cards + parts.histograms + direction * parts.layers * parts.layers;
|
|
77
|
-
|
|
78
|
-
var run_from = 0u;
|
|
79
|
-
var inside = false;
|
|
80
|
-
|
|
81
|
-
for (var layer = 0u; layer < extent.x; layer++) {
|
|
82
|
-
let brick = mesh_card_brick(bricks, direction, column, layer);
|
|
83
|
-
let entry = atomicLoad(&mesh_sdf_indirection[header.indirection + brick.x + bricks.x * (brick.y + bricks.y * brick.z)]);
|
|
84
|
-
let occupied = mesh_sdf_entry_holds_slot(entry);
|
|
85
|
-
|
|
86
|
-
if (occupied && !inside) {
|
|
87
|
-
atomicAdd(&mesh_sdf_indirection[histogram + run_from * parts.layers + layer], 1u);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (!occupied && inside) {
|
|
91
|
-
// the next run's m: the layer after this one's end
|
|
92
|
-
run_from = layer;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
inside = occupied;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
`, [
|
|
99
|
-
chunk_mesh_sdf_bake,
|
|
100
|
-
chunk_mesh_cards,
|
|
101
|
-
]),
|
|
102
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @type {WebGPUStruct}
|
|
3
|
-
*/
|
|
4
|
-
export const MESH_CARDS_LOG_SETTINGS: WebGPUStruct;
|
|
5
|
-
/**
|
|
6
|
-
* Card placement, step 5: one thread, a dispatch after the pages, so every page the threads took is
|
|
7
|
-
* counted. Logs the geometry placed, as `(geometry | MESH_SDF_LOG_PLACED, generation, columns, pages)`,
|
|
8
|
-
* for the host, which gives the layout a range of that size and its pairs' pages by that count.
|
|
9
|
-
*
|
|
10
|
-
* @type {ComputeShader}
|
|
11
|
-
*/
|
|
12
|
-
export const shader_mesh_cards_log: ComputeShader;
|
|
13
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
14
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
15
|
-
//# sourceMappingURL=shader_mesh_cards_log.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_cards_log.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js"],"names":[],"mappings":"AAUA;;GAEG;AACH,sCAFU,YAAY,CASK;AAU3B;;;;;;GAMG;AACH,oCAFU,aAAa,CA6BpB;6BA5D0B,sCAAsC;8BAHrC,kCAAkC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
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 { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "../bake/chunk_mesh_sdf_bake.js";
|
|
7
|
-
import { MESH_SDF_LOG_PLACED } from "../bake/MESH_SDF_BAKE.js";
|
|
8
|
-
import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
9
|
-
import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @type {WebGPUStruct}
|
|
13
|
-
*/
|
|
14
|
-
export const MESH_CARDS_LOG_SETTINGS = WebGPUStruct.from({
|
|
15
|
-
/** the geometry whose cards were placed */
|
|
16
|
-
geometry: u32,
|
|
17
|
-
/** where the frame's log starts in the arena */
|
|
18
|
-
log_offset: u32,
|
|
19
|
-
/** records the log holds */
|
|
20
|
-
log_capacity: u32,
|
|
21
|
-
}, "MeshCardsLogSettings");
|
|
22
|
-
|
|
23
|
-
const resources = new ShaderResourceSetDescriptor();
|
|
24
|
-
|
|
25
|
-
resources.setImmediate("settings", MESH_CARDS_LOG_SETTINGS);
|
|
26
|
-
|
|
27
|
-
resources.createGroup()
|
|
28
|
-
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
29
|
-
.add(MESH_SDF_ARENA_RESOURCE);
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Card placement, step 5: one thread, a dispatch after the pages, so every page the threads took is
|
|
33
|
-
* counted. Logs the geometry placed, as `(geometry | MESH_SDF_LOG_PLACED, generation, columns, pages)`,
|
|
34
|
-
* for the host, which gives the layout a range of that size and its pairs' pages by that count.
|
|
35
|
-
*
|
|
36
|
-
* @type {ComputeShader}
|
|
37
|
-
*/
|
|
38
|
-
export const shader_mesh_cards_log = ComputeShader.from({
|
|
39
|
-
label: "Mesh Cards Log",
|
|
40
|
-
resources,
|
|
41
|
-
body: CodeChunk.from(
|
|
42
|
-
//language=WGSL
|
|
43
|
-
`
|
|
44
|
-
@compute @workgroup_size(1)
|
|
45
|
-
fn main() {
|
|
46
|
-
let header = mesh_sdf_headers[settings.geometry];
|
|
47
|
-
|
|
48
|
-
let record = atomicAdd(&mesh_sdf_indirection[settings.log_offset + MESH_SDF_LOG_COMPLETIONS], 1u);
|
|
49
|
-
|
|
50
|
-
if (record >= settings.log_capacity) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
let word = settings.log_offset + MESH_SDF_LOG_HEADER_WORDS + record * MESH_SDF_LOG_RECORD_WORDS;
|
|
55
|
-
|
|
56
|
-
atomicStore(&mesh_sdf_indirection[word], settings.geometry | ${MESH_SDF_LOG_PLACED}u);
|
|
57
|
-
atomicStore(&mesh_sdf_indirection[word + 1u], header.generation);
|
|
58
|
-
atomicStore(&mesh_sdf_indirection[word + 2u], atomicLoad(&mesh_sdf_indirection[header.cards + MESH_CARD_LAYOUT_COLUMN_COUNT]));
|
|
59
|
-
atomicStore(&mesh_sdf_indirection[word + 3u], atomicLoad(&mesh_sdf_indirection[header.cards + MESH_CARD_LAYOUT_PAGE_COUNT]));
|
|
60
|
-
}
|
|
61
|
-
`, [
|
|
62
|
-
chunk_mesh_sdf_bake,
|
|
63
|
-
chunk_mesh_cards,
|
|
64
|
-
]),
|
|
65
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @type {WebGPUStruct}
|
|
3
|
-
*/
|
|
4
|
-
export const MESH_CARDS_MERGE_SETTINGS: WebGPUStruct;
|
|
5
|
-
/**
|
|
6
|
-
* Card placement, step 3 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): one thread. The six directions'
|
|
7
|
-
* splits are taken in order of gain, as the greedy search over all six would take them, until the
|
|
8
|
-
* gains run out or the geometry has MESH_CARD_MAX cards. Every run start is then covered, or the
|
|
9
|
-
* ceiling has left some uncovered, which read the material mean.
|
|
10
|
-
*
|
|
11
|
-
* The cards are written direction by direction, each direction's cards by their near layer. Each
|
|
12
|
-
* card records its direction, its slab, and where its column table starts: a word for each column of
|
|
13
|
-
* its direction, laid out card after card. The layout's header gets the card count, each direction's
|
|
14
|
-
* first card, and the columns over every card. The page pass's dispatch goes to `mesh_sdf_take`: a
|
|
15
|
-
* thread a column.
|
|
16
|
-
*
|
|
17
|
-
* @type {ComputeShader}
|
|
18
|
-
*/
|
|
19
|
-
export const shader_mesh_cards_merge: ComputeShader;
|
|
20
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
21
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
22
|
-
//# sourceMappingURL=shader_mesh_cards_merge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_cards_merge.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js"],"names":[],"mappings":"AAYA;;GAEG;AACH,wCAFU,YAAY,CAOO;AAW7B;;;;;;;;;;;;;GAaG;AACH,sCAFU,aAAa,CA4FpB;6BAlI0B,sCAAsC;8BAJrC,kCAAkC"}
|