@woosh/meep-engine 3.61.2 → 3.62.0
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/graphics3/PickingSystem.d.ts.map +1 -1
- package/src/engine/graphics3/PickingSystem.js +415 -413
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +26 -16
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_tile_copy.js +6 -11
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +6 -2
- package/src/engine/graphics3/highlight/shader_highlight_outline.d.ts.map +1 -1
- package/src/engine/graphics3/highlight/shader_highlight_outline.js +167 -150
- package/src/engine/graphics3/shader_picking_gather.d.ts.map +1 -1
- package/src/engine/graphics3/shader_picking_gather.js +133 -120
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/device/mock/SoftwareGPUTexture.d.ts.map +1 -1
- package/src/shade/device/mock/SoftwareGPUTexture.js +11 -0
- package/src/shade/device/pipeline/rp_validate_and_rewrite_for_color_attachments.js +1 -1
- package/src/shade/playground/contact_shadows/ContactShadowLab.js +6 -6
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -1
- package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +6 -4
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -1
- package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +6 -4
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -1
- package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +6 -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/playground/ssr_reprojection/SpatialFilterProbe.js +1 -1
- package/src/shade/playground/ssr_variance/capture.js +1 -1
- package/src/shade/renderer/Renderer.d.ts +2 -2
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +90 -64
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +3 -1
- package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.d.ts.map +1 -1
- package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.js +5 -4
- package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
- package/src/shade/renderer/deferred/shader_deferred_main.js +6 -4
- package/src/shade/renderer/extension/GBufferTextures.d.ts +5 -1
- package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/GBufferTextures.js +5 -1
- package/src/shade/renderer/extension/ViewTextures.d.ts +11 -7
- package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
- package/src/shade/renderer/extension/ViewTextures.js +17 -13
- 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/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts +2 -0
- package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts.map +1 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.js +2 -0
- package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.d.ts.map +1 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js +8 -5
- 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/shader_sdf_visualize.d.ts +7 -5
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +29 -16
- 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/runtime/cut/chunk_vgeo_cut_instance.d.ts +9 -3
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js +40 -32
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +14 -15
- 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/draw/shader_brick4_debug_draw.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.js +7 -3
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_diffuse.js +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +5 -3
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +1 -3
- package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +1 -1
- package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +2 -2
- package/src/shade/renderer/global_illumination/lpv/shader_diffuse_LPV.js +1 -1
- 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 +63 -37
- 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 +73 -45
- 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_diffuse.js +2 -2
- 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 +10 -4
- 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 +7 -3
- 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/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +5 -3
- package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_colored_hash.js +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_sharc_debug_radiance.js +1 -1
- package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +1 -1
- 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/GPUMaterialManager.d.ts +22 -9
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +159 -65
- package/src/shade/renderer/material/MATERIAL_MASK.d.ts +19 -0
- package/src/shade/renderer/material/MATERIAL_MASK.d.ts.map +1 -0
- package/src/shade/renderer/material/MATERIAL_MASK.js +19 -0
- package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts +8 -8
- package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.js +11 -92
- package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.js +10 -2
- package/src/shade/renderer/material/dispatch/gbuffer_compute.js +2 -2
- package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts +7 -7
- package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.js +20 -16
- package/src/shade/renderer/material/dispatch/shader_material_pixel_count.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/shader_material_pixel_count.js +3 -1
- package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.d.ts.map +1 -1
- package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.js +3 -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/material/standard/fragment_gbuffer.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/fragment_gbuffer.js +26 -25
- package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts +10 -8
- package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts.map +1 -1
- package/src/shade/renderer/material/standard/material_gbuffer_vertex.js +16 -13
- package/src/shade/renderer/material/template/ShadeMaterialTemplate.d.ts +1 -1
- package/src/shade/renderer/material/template/ShadeMaterialTemplate.js +1 -1
- 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/denoise/LigmaDenoiser.d.ts +5 -2
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +7 -4
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +3 -3
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +12 -10
- package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +2 -2
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +9 -7
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +11 -8
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +3 -3
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +17 -12
- package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +4 -4
- package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +2 -2
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -41
- package/src/shade/renderer/postprocess/ssr/prefilter/chunk_load_neighbourhood_sample.js +1 -1
- package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -3
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +5 -2
- package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +4 -4
- package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.js +4 -2
- package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts +2 -1
- package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js +10 -2
- package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +1 -1
- package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -4
- package/src/shade/renderer/postprocess/taa/shader_reprojection_map.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/taa/shader_reprojection_map.js +6 -4
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +6 -8
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +29 -33
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +1 -0
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +6 -3
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +8 -3
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +3 -0
- package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.d.ts +1 -0
- package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.js +5 -0
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +8 -3
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +54 -5
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +1 -0
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +2 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts +7 -2
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +73 -9
- package/src/shade/renderer/rasterize/native/viz/shader_vertex.js +4 -4
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +23 -40
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +55 -76
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +4 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +6 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +4 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +6 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +5 -2
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +43 -2
- package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts +39 -0
- package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js +45 -0
- package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts +26 -0
- package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.js +48 -0
- package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts +40 -0
- package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts.map +1 -0
- package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.js +172 -0
- package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.d.ts.map +1 -1
- package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js +6 -4
- package/src/shade/renderer/restir/di/chunk_restir_spatial_reuse.js +1 -1
- package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +2 -2
- 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/color/sRGB/chunk_sRGBTransferEOTF.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.js +18 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.js +26 -0
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts +60 -18
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js +163 -45
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.js +19 -18
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js +22 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts +8 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js +10 -8
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.js +32 -0
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts +11 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.js +14 -6
- 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_decode_g_buffer_albedo.d.ts +14 -0
- package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.js +24 -0
- package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.js +27 -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/screen_space/SCREEN_SPACE_RESOURCES.d.ts +7 -1
- package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js +8 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_world_space_normal.js +1 -1
- package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +10 -10
- 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/shader/pass/RenderPassDescriptor.d.ts +8 -0
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
- package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +9 -0
- package/src/shade/renderer/shader/util/shader_decode_octahedral_normal.js +1 -1
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +3 -3
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -1
- package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +3 -3
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -1
- package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +6 -4
- package/src/shade/renderer/shadow/ray/RTXShadows.d.ts +6 -4
- package/src/shade/renderer/shadow/ray/RTXShadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/RTXShadows.js +16 -5
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +7 -7
- package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +2 -2
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts +4 -2
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +79 -74
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
- package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +7 -7
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +7 -3
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts +7 -5
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
- package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +29 -16
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts +5 -5
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +8 -8
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
- package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +13 -14
- 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/GPUWaterRenderer.d.ts +2 -1
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +6 -4
- package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_transport.js +11 -9
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +13 -11
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts +0 -7
- package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts.map +0 -1
- package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.js +0 -6
- 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/postprocess/ssr/shader_downsample_encoded_normal.d.ts +0 -3
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +0 -1
- package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +0 -104
|
@@ -38,6 +38,13 @@ export const MESH_SDF_EMPTY: number;
|
|
|
38
38
|
* @type {number}
|
|
39
39
|
*/
|
|
40
40
|
export const MESH_SDF_EMPTY_INSIDE: number;
|
|
41
|
+
/**
|
|
42
|
+
* A brick's number when it holds no slot. A brick given a slot is numbered among its geometry's
|
|
43
|
+
* stored bricks, 0 up, in the order the bake stored them: what a payload kept per stored brick, as
|
|
44
|
+
* a surface cache's tiles, is laid out by.
|
|
45
|
+
* @type {number}
|
|
46
|
+
*/
|
|
47
|
+
export const MESH_SDF_UNNUMBERED: number;
|
|
41
48
|
/**
|
|
42
49
|
* What a geometry's header says about its field.
|
|
43
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MESH_SDF.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/MESH_SDF.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,yCAFU,MAAM,CAEgG;AAEhH;;;;;GAKG;AACH,mCAFU,MAAM,CAEsB;AAEtC;;;;;GAKG;AACH,6BAFU,MAAM,CAEyB;AAEzC;;;GAGG;AACH,oCAFU,MAAM,CAEwC;;;;
|
|
1
|
+
{"version":3,"file":"MESH_SDF.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/MESH_SDF.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,oCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,yCAFU,MAAM,CAEgG;AAEhH;;;;;GAKG;AACH,mCAFU,MAAM,CAEsB;AAEtC;;;;;GAKG;AACH,6BAFU,MAAM,CAEyB;AAEzC;;;GAGG;AACH,oCAFU,MAAM,CAEwC;AAExD;;;;;GAKG;AACH,kCAFU,MAAM,CAE8B;;;;2BAKpC,MAAM;AAHhB;;;;GAIG;AACH;IACI,0FAA0F;;IAE1F,wFAAwF;;IAExF,sCAAsC;;IAEtC,4GAA4G;;GAE7G"}
|
|
@@ -45,6 +45,14 @@ export const MESH_SDF_EMPTY = 0x80000000;
|
|
|
45
45
|
*/
|
|
46
46
|
export const MESH_SDF_EMPTY_INSIDE = MESH_SDF_EMPTY + 1;
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* A brick's number when it holds no slot. A brick given a slot is numbered among its geometry's
|
|
50
|
+
* stored bricks, 0 up, in the order the bake stored them: what a payload kept per stored brick, as
|
|
51
|
+
* a surface cache's tiles, is laid out by.
|
|
52
|
+
* @type {number}
|
|
53
|
+
*/
|
|
54
|
+
export const MESH_SDF_UNNUMBERED = 0xffffffff;
|
|
55
|
+
|
|
48
56
|
/**
|
|
49
57
|
* What a geometry's header says about its field.
|
|
50
58
|
* @readonly
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A brick's content key, from its 512 bytes, texel x + 8y + 64z.
|
|
3
|
+
*
|
|
4
|
+
* @param {Uint8Array} bytes
|
|
5
|
+
* @param {number} offset the brick's first byte
|
|
6
|
+
* @returns {number} u32
|
|
7
|
+
*/
|
|
8
|
+
export function mesh_sdf_brick_key(bytes: Uint8Array, offset: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* The seed of the key's hash.
|
|
11
|
+
* @type {number}
|
|
12
|
+
*/
|
|
13
|
+
export const MESH_SDF_BRICK_KEY_SEED: number;
|
|
14
|
+
//# sourceMappingURL=MESH_SDF_BRICK_KEY.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MESH_SDF_BRICK_KEY.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,0CAJW,UAAU,UACV,MAAM,GACJ,MAAM,CAUlB;AArBD;;;GAGG;AACH,sCAFU,MAAM,CAEkC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { lowbias32 } from "../../../../core/math/hash/lowbias32.js";
|
|
2
|
+
import { MESH_SDF_BRICK_TEXEL_COUNT } from "./MESH_SDF.js";
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
A brick's content key: a u32, the sum over the brick's texels of a hash of (texel, byte), mod 2^32.
|
|
6
|
+
|
|
7
|
+
term(t, b) = lowbias32(((t << 8) | b) ^ seed) t: texel x + 8y + 64z, b: its byte
|
|
8
|
+
|
|
9
|
+
A key finds the slots that may hold a brick's bytes; it never says that they do. Two bricks share a slot
|
|
10
|
+
only once their 512 bytes compare equal, so keys that agree for different bytes cost a share, never a
|
|
11
|
+
brick its bytes. A sum, the terms add in any order, on any thread.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The seed of the key's hash.
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
export const MESH_SDF_BRICK_KEY_SEED = 0x9e3779b9;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A brick's content key, from its 512 bytes, texel x + 8y + 64z.
|
|
22
|
+
*
|
|
23
|
+
* @param {Uint8Array} bytes
|
|
24
|
+
* @param {number} offset the brick's first byte
|
|
25
|
+
* @returns {number} u32
|
|
26
|
+
*/
|
|
27
|
+
export function mesh_sdf_brick_key(bytes, offset) {
|
|
28
|
+
let key = 0;
|
|
29
|
+
|
|
30
|
+
for (let t = 0; t < MESH_SDF_BRICK_TEXEL_COUNT; t++) {
|
|
31
|
+
key = (key + lowbias32((((t << 8) | bytes[offset + t]) ^ MESH_SDF_BRICK_KEY_SEED) >>> 0)) >>> 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return key;
|
|
35
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MESH_SDF_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,8BAFU,YAAY,
|
|
1
|
+
{"version":3,"file":"MESH_SDF_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,8BAFU,YAAY,CAsCR;6BA/Ce,mCAAmC"}
|
|
@@ -28,10 +28,6 @@ export const MESH_SDF_STRUCT = WebGPUStruct.from({
|
|
|
28
28
|
* The first entry of level 0 in the indirection.
|
|
29
29
|
*/
|
|
30
30
|
indirection: u32,
|
|
31
|
-
/**
|
|
32
|
-
* The first word of the geometry's card layout, `GPU_DATABASE_NULL` until its cards are placed.
|
|
33
|
-
*/
|
|
34
|
-
cards: u32,
|
|
35
31
|
/**
|
|
36
32
|
* `MeshSDFState`.
|
|
37
33
|
*/
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Records of the frame's claims, which name one brick of the frame for each content key no slot is
|
|
3
|
+
* listed under, for a frame of `bricks` bricks taken: twice as many, so that a key's probes pass an
|
|
4
|
+
* empty record within a few, and no fewer than the probe limit, so that they meet no record twice; a
|
|
5
|
+
* power of two.
|
|
6
|
+
*
|
|
7
|
+
* @param {number} bricks
|
|
8
|
+
* @returns {number}
|
|
9
|
+
*/
|
|
10
|
+
export function mesh_sdf_claim_size(bricks: number): number;
|
|
1
11
|
/**
|
|
2
12
|
* Lanes of every bake workgroup: a block of a brick's texels in evaluate and store, and a run of
|
|
3
13
|
* classify or free threads.
|
|
@@ -39,10 +49,39 @@ export const MESH_SDF_COUNTER_WORDS: 4;
|
|
|
39
49
|
export const MESH_SDF_TAKE_DISPATCH: 0;
|
|
40
50
|
/** `take`: the ring position of the first brick taken. */
|
|
41
51
|
export const MESH_SDF_TAKE_START: 3;
|
|
42
|
-
/** `take`: the
|
|
43
|
-
export const
|
|
52
|
+
/** `take`: the bricks taken. */
|
|
53
|
+
export const MESH_SDF_TAKE_COUNT: 4;
|
|
44
54
|
/** `take`, in words. */
|
|
45
|
-
export const MESH_SDF_TAKE_WORDS:
|
|
55
|
+
export const MESH_SDF_TAKE_WORDS: 5;
|
|
56
|
+
/**
|
|
57
|
+
* A brick's entry from evaluate to resolve in the frame it is taken: a texel of it is within the band,
|
|
58
|
+
* and which slot holds its bytes is resolve's to say. Past EMPTY, so it holds no slot.
|
|
59
|
+
* @type {number}
|
|
60
|
+
*/
|
|
61
|
+
export const MESH_SDF_PENDING: number;
|
|
62
|
+
/**
|
|
63
|
+
* No slot: what a brick taken's record holds for its slot until it has one, and what a find of the
|
|
64
|
+
* slots by content returns when it finds none (`chunk_mesh_sdf_contents`).
|
|
65
|
+
* @type {number}
|
|
66
|
+
*/
|
|
67
|
+
export const MESH_SDF_NO_CONTENT: number;
|
|
68
|
+
/** A brick taken's record: the tally of its workgroups ({@link MESH_SDF_TALLY_BAND_UNIT}). */
|
|
69
|
+
export const MESH_SDF_TAKEN_TALLY: 0;
|
|
70
|
+
/** A brick taken's record: its content key, the sum of key's terms. */
|
|
71
|
+
export const MESH_SDF_TAKEN_KEY: 1;
|
|
72
|
+
/** A brick taken's record: the slot find found under its key, then the slot resolve gave it. */
|
|
73
|
+
export const MESH_SDF_TAKEN_SLOT: 2;
|
|
74
|
+
/** A brick taken's record: 1 when its slot is fresh, which store fills. */
|
|
75
|
+
export const MESH_SDF_TAKEN_FRESH: 3;
|
|
76
|
+
/**
|
|
77
|
+
* A brick taken's record: the brick of the frame, by its place in the take, that first claimed its
|
|
78
|
+
* key, when find found no slot under it.
|
|
79
|
+
*/
|
|
80
|
+
export const MESH_SDF_TAKEN_REP: 4;
|
|
81
|
+
/** A brick taken's record: its texels whose bytes differ from the slot's it found, or its representative's. */
|
|
82
|
+
export const MESH_SDF_TAKEN_DIFFERS: 5;
|
|
83
|
+
/** Words of a brick taken's record. */
|
|
84
|
+
export const MESH_SDF_TAKEN_WORDS: 6;
|
|
46
85
|
/** `log`: bricks left on the ring after the frame's take, stale ones included. */
|
|
47
86
|
export const MESH_SDF_LOG_QUEUED: 0;
|
|
48
87
|
/** `log`: 1 when the take was held back by the free slots, which asks the host for more. */
|
|
@@ -53,19 +92,25 @@ export const MESH_SDF_LOG_FREE_SLOTS: 2;
|
|
|
53
92
|
export const MESH_SDF_LOG_TAKEN: 3;
|
|
54
93
|
/** `log`: geometries completed this frame; their records follow the header. */
|
|
55
94
|
export const MESH_SDF_LOG_COMPLETIONS: 4;
|
|
95
|
+
/** `log`: bricks resolve gave a slot already holding their bytes. */
|
|
96
|
+
export const MESH_SDF_LOG_SHARED: 5;
|
|
97
|
+
/**
|
|
98
|
+
* `log`: bricks whose content key was that of a slot, or of their representative, holding other
|
|
99
|
+
* bytes, and which took a slot of their own.
|
|
100
|
+
*/
|
|
101
|
+
export const MESH_SDF_LOG_COLLIDED: 6;
|
|
56
102
|
/** `log`: words before the first record. */
|
|
57
|
-
export const MESH_SDF_LOG_HEADER_WORDS:
|
|
103
|
+
export const MESH_SDF_LOG_HEADER_WORDS: 7;
|
|
58
104
|
/**
|
|
59
|
-
* `log`: words a record: the geometry id, the generation it was baked at, and
|
|
60
|
-
*
|
|
61
|
-
* reports the columns and the pages its cards took.
|
|
105
|
+
* `log`: words a completion record: the geometry id, the generation it was baked at, and the bricks
|
|
106
|
+
* given a slot, which count writes ({@link MESH_SDF_LOG_STORED}).
|
|
62
107
|
*/
|
|
63
|
-
export const MESH_SDF_LOG_RECORD_WORDS:
|
|
108
|
+
export const MESH_SDF_LOG_RECORD_WORDS: 3;
|
|
64
109
|
/**
|
|
65
|
-
* `log`: the
|
|
110
|
+
* `log`: the word of a completion record that holds its geometry's stored bricks.
|
|
66
111
|
* @type {number}
|
|
67
112
|
*/
|
|
68
|
-
export const
|
|
113
|
+
export const MESH_SDF_LOG_STORED: number;
|
|
69
114
|
/**
|
|
70
115
|
* A tally, a workgroup's of its lanes and a brick's of its workgroups: the low half counts those
|
|
71
116
|
* finished, the high half those with a texel within the band, in this unit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MESH_SDF_BAKE.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MESH_SDF_BAKE.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js"],"names":[],"mappings":"AAkIA;;;;;;;;GAQG;AACH,4CAHW,MAAM,GACJ,MAAM,CAIlB;AA/FD;;;;GAIG;AACH,2CAFU,MAAM,CAE+B;AAE/C;;;GAGG;AACH,wCAFU,MAAM,CAEmF;AAEnG;;;;GAIG;AACH,qCAFU,MAAM,CAEiD;AAEjE;;;GAGG;AACH,qCAFU,MAAM,CAEiD;AAEjE;;;;;GAKG;AACH,2CAFU,MAAM,CAE0F;AAE1G,kEAAkE;AAClE,uCAAwC;AACxC,uEAAuE;AACvE,sCAAuC;AACvC,mEAAmE;AACnE,sCAAuC;AACvC,4DAA4D;AAC5D,uCAAwC;AAExC,2GAA2G;AAC3G,uCAAwC;AACxC,0DAA0D;AAC1D,oCAAqC;AACrC,gCAAgC;AAChC,oCAAqC;AACrC,wBAAwB;AACxB,oCAAqC;AAErC;;;;GAIG;AACH,+BAFU,MAAM,CAEmC;AAEnD;;;;GAIG;AACH,kCAFU,MAAM,CAE8B;AAE9C,8FAA8F;AAC9F,qCAAsC;AACtC,uEAAuE;AACvE,mCAAoC;AACpC,gGAAgG;AAChG,oCAAqC;AACrC,2EAA2E;AAC3E,qCAAsC;AACtC;;;GAGG;AACH,mCAAoC;AACpC,+GAA+G;AAC/G,uCAAwC;AACxC,uCAAuC;AACvC,qCAAsC;AAetC,kFAAkF;AAClF,oCAAqC;AACrC,4FAA4F;AAC5F,qCAAsC;AACtC,yCAAyC;AACzC,wCAAyC;AACzC,iDAAiD;AACjD,mCAAoC;AACpC,+EAA+E;AAC/E,yCAA0C;AAC1C,qEAAqE;AACrE,oCAAqC;AACrC;;;GAGG;AACH,sCAAuC;AACvC,4CAA4C;AAC5C,0CAA2C;AAC3C;;;GAGG;AACH,0CAA2C;AAE3C;;;GAGG;AACH,kCAFU,MAAM,CAEqB;AAErC;;;;GAIG;AACH,uCAFU,MAAM,CAE8B"}
|
|
@@ -1,15 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ceilPowerOfTwo } from "../../../../../core/binary/operations/ceilPowerOfTwo.js";
|
|
2
|
+
import { HASH_TABLE_PROBE_LIMIT } from "../../../gpu_primitive/hash_table/cpu_build_hash_table.js";
|
|
3
|
+
import { MESH_SDF_BRICK_TEXEL_COUNT, MESH_SDF_BRICK_VOXELS, MESH_SDF_EMPTY } from "../MESH_SDF.js";
|
|
2
4
|
|
|
3
5
|
/*
|
|
4
6
|
The bake's device state (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.4), shared by its passes:
|
|
5
7
|
|
|
8
|
+
free: a thread an entry of the ranges freed since the last bake: a slot one entry fewer holds,
|
|
9
|
+
given back when no entry holds it.
|
|
6
10
|
classify: one thread a brick of the geometries admitted this frame. A brick no texel of which can
|
|
7
11
|
be within the band is EMPTY; the rest go onto the ring.
|
|
8
12
|
take: one thread. Up to the budget off the ring, and no more than the stack has free slots, so
|
|
9
13
|
that no pop below can fail.
|
|
10
14
|
evaluate: a thread a texel of each brick taken, MESH_SDF_GROUPS_PER_BRICK workgroups a brick, into
|
|
11
|
-
staging. The brick's last thread to finish
|
|
12
|
-
|
|
15
|
+
staging. The brick's last thread to finish makes it PENDING or EMPTY, and a PENDING brick
|
|
16
|
+
takes the next number of its geometry's stored bricks.
|
|
17
|
+
key: a thread a texel of each PENDING brick: its term of the brick's content key
|
|
18
|
+
(`MESH_SDF_BRICK_KEY.js`), added into the brick's record.
|
|
19
|
+
resolve: four passes. Find, a thread a brick taken: a PENDING brick finds a slot listed under its key
|
|
20
|
+
(`chunk_mesh_sdf_contents`), and one that finds none claims its key in the frame's claims,
|
|
21
|
+
the first to claim it the key's representative. Compare, a thread a texel: a brick's bytes
|
|
22
|
+
against the slot's it found, or its representative's, a texel that differs marking it. Fresh,
|
|
23
|
+
a thread a brick: a representative pops a slot and lists it under its key, and a brick whose
|
|
24
|
+
bytes differ pops one of its own. Hold, a thread a brick: every PENDING brick takes its slot,
|
|
25
|
+
its representative's when it has none, and its entry holds it.
|
|
26
|
+
store: a thread a texel of each brick that took a fresh slot, from staging into it.
|
|
27
|
+
count: a thread a record of the frame's log: a completion's stored bricks, read once every brick
|
|
28
|
+
of the frame has settled.
|
|
13
29
|
|
|
14
30
|
A geometry's bricks are counted down in its pending word from its brick count, one as classify drops
|
|
15
31
|
a brick and one as evaluate settles it, and the one that reaches zero logs the geometry complete.
|
|
@@ -18,9 +34,12 @@ import { MESH_SDF_BRICK_TEXEL_COUNT, MESH_SDF_BRICK_VOXELS } from "../MESH_SDF.j
|
|
|
18
34
|
SHADE_DEVICE_FLOOR beside the five a BLAS query reads. Two of them carry more than their name:
|
|
19
35
|
|
|
20
36
|
mesh_sdf_indirection, the arena of every brick's entry, which the bake views as atomics, holds at
|
|
21
|
-
word 0 the counters (MESH_SDF_COUNTER_*); at `log_offset` the frame's log (MESH_SDF_LOG_*),
|
|
22
|
-
|
|
23
|
-
|
|
37
|
+
word 0 the counters (MESH_SDF_COUNTER_*); at `log_offset` the frame's log (MESH_SDF_LOG_*), at
|
|
38
|
+
`tally_offset` a record of MESH_SDF_TAKEN_WORDS for each brick taken (MESH_SDF_TAKEN_*), and at
|
|
39
|
+
`claim_offset` the frame's claims, `claim_size` words each 0 or a brick's place in the take + 1;
|
|
40
|
+
and a geometry's range (`chunk_mesh_sdf`): its stored count at `header.indirection - 2`, its
|
|
41
|
+
pending word at `header.indirection - 1`, its entries, then the numbers of its bricks and its
|
|
42
|
+
bricks by number;
|
|
24
43
|
mesh_sdf_ring holds the ring's entries, then from `ring_capacity` on the frame's staging,
|
|
25
44
|
MESH_SDF_STAGING_VEC4S a brick taken.
|
|
26
45
|
*/
|
|
@@ -72,10 +91,55 @@ export const MESH_SDF_COUNTER_WORDS = 4;
|
|
|
72
91
|
export const MESH_SDF_TAKE_DISPATCH = 0;
|
|
73
92
|
/** `take`: the ring position of the first brick taken. */
|
|
74
93
|
export const MESH_SDF_TAKE_START = 3;
|
|
75
|
-
/** `take`: the
|
|
76
|
-
export const
|
|
94
|
+
/** `take`: the bricks taken. */
|
|
95
|
+
export const MESH_SDF_TAKE_COUNT = 4;
|
|
77
96
|
/** `take`, in words. */
|
|
78
|
-
export const MESH_SDF_TAKE_WORDS =
|
|
97
|
+
export const MESH_SDF_TAKE_WORDS = 5;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* A brick's entry from evaluate to resolve in the frame it is taken: a texel of it is within the band,
|
|
101
|
+
* and which slot holds its bytes is resolve's to say. Past EMPTY, so it holds no slot.
|
|
102
|
+
* @type {number}
|
|
103
|
+
*/
|
|
104
|
+
export const MESH_SDF_PENDING = MESH_SDF_EMPTY + 2;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* No slot: what a brick taken's record holds for its slot until it has one, and what a find of the
|
|
108
|
+
* slots by content returns when it finds none (`chunk_mesh_sdf_contents`).
|
|
109
|
+
* @type {number}
|
|
110
|
+
*/
|
|
111
|
+
export const MESH_SDF_NO_CONTENT = 0xffffffff;
|
|
112
|
+
|
|
113
|
+
/** A brick taken's record: the tally of its workgroups ({@link MESH_SDF_TALLY_BAND_UNIT}). */
|
|
114
|
+
export const MESH_SDF_TAKEN_TALLY = 0;
|
|
115
|
+
/** A brick taken's record: its content key, the sum of key's terms. */
|
|
116
|
+
export const MESH_SDF_TAKEN_KEY = 1;
|
|
117
|
+
/** A brick taken's record: the slot find found under its key, then the slot resolve gave it. */
|
|
118
|
+
export const MESH_SDF_TAKEN_SLOT = 2;
|
|
119
|
+
/** A brick taken's record: 1 when its slot is fresh, which store fills. */
|
|
120
|
+
export const MESH_SDF_TAKEN_FRESH = 3;
|
|
121
|
+
/**
|
|
122
|
+
* A brick taken's record: the brick of the frame, by its place in the take, that first claimed its
|
|
123
|
+
* key, when find found no slot under it.
|
|
124
|
+
*/
|
|
125
|
+
export const MESH_SDF_TAKEN_REP = 4;
|
|
126
|
+
/** A brick taken's record: its texels whose bytes differ from the slot's it found, or its representative's. */
|
|
127
|
+
export const MESH_SDF_TAKEN_DIFFERS = 5;
|
|
128
|
+
/** Words of a brick taken's record. */
|
|
129
|
+
export const MESH_SDF_TAKEN_WORDS = 6;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Records of the frame's claims, which name one brick of the frame for each content key no slot is
|
|
133
|
+
* listed under, for a frame of `bricks` bricks taken: twice as many, so that a key's probes pass an
|
|
134
|
+
* empty record within a few, and no fewer than the probe limit, so that they meet no record twice; a
|
|
135
|
+
* power of two.
|
|
136
|
+
*
|
|
137
|
+
* @param {number} bricks
|
|
138
|
+
* @returns {number}
|
|
139
|
+
*/
|
|
140
|
+
export function mesh_sdf_claim_size(bricks) {
|
|
141
|
+
return ceilPowerOfTwo(Math.max(HASH_TABLE_PROBE_LIMIT, 2 * bricks));
|
|
142
|
+
}
|
|
79
143
|
|
|
80
144
|
/** `log`: bricks left on the ring after the frame's take, stale ones included. */
|
|
81
145
|
export const MESH_SDF_LOG_QUEUED = 0;
|
|
@@ -87,20 +151,26 @@ export const MESH_SDF_LOG_FREE_SLOTS = 2;
|
|
|
87
151
|
export const MESH_SDF_LOG_TAKEN = 3;
|
|
88
152
|
/** `log`: geometries completed this frame; their records follow the header. */
|
|
89
153
|
export const MESH_SDF_LOG_COMPLETIONS = 4;
|
|
154
|
+
/** `log`: bricks resolve gave a slot already holding their bytes. */
|
|
155
|
+
export const MESH_SDF_LOG_SHARED = 5;
|
|
156
|
+
/**
|
|
157
|
+
* `log`: bricks whose content key was that of a slot, or of their representative, holding other
|
|
158
|
+
* bytes, and which took a slot of their own.
|
|
159
|
+
*/
|
|
160
|
+
export const MESH_SDF_LOG_COLLIDED = 6;
|
|
90
161
|
/** `log`: words before the first record. */
|
|
91
|
-
export const MESH_SDF_LOG_HEADER_WORDS =
|
|
162
|
+
export const MESH_SDF_LOG_HEADER_WORDS = 7;
|
|
92
163
|
/**
|
|
93
|
-
* `log`: words a record: the geometry id, the generation it was baked at, and
|
|
94
|
-
*
|
|
95
|
-
* reports the columns and the pages its cards took.
|
|
164
|
+
* `log`: words a completion record: the geometry id, the generation it was baked at, and the bricks
|
|
165
|
+
* given a slot, which count writes ({@link MESH_SDF_LOG_STORED}).
|
|
96
166
|
*/
|
|
97
|
-
export const MESH_SDF_LOG_RECORD_WORDS =
|
|
167
|
+
export const MESH_SDF_LOG_RECORD_WORDS = 3;
|
|
98
168
|
|
|
99
169
|
/**
|
|
100
|
-
* `log`: the
|
|
170
|
+
* `log`: the word of a completion record that holds its geometry's stored bricks.
|
|
101
171
|
* @type {number}
|
|
102
172
|
*/
|
|
103
|
-
export const
|
|
173
|
+
export const MESH_SDF_LOG_STORED = 2;
|
|
104
174
|
|
|
105
175
|
/**
|
|
106
176
|
* A tally, a workgroup's of its lanes and a brick's of its workgroups: the low half counts those
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The indirection arena as the bake sees it: every word an atomic, the counters at word 0, the
|
|
3
|
-
* frame's log at `log_offset` and its tallies at `tally_offset`, and
|
|
4
|
-
* entries (`MESH_SDF_BAKE.js`).
|
|
3
|
+
* frame's log at `log_offset` and its tallies at `tally_offset`, and each geometry's range, its stored
|
|
4
|
+
* count and pending word before its entries (`MESH_SDF_BAKE.js`, `chunk_mesh_sdf`).
|
|
5
5
|
* Readers bind the same buffer as plain words, through `MESH_SDF_INDIRECTION_RESOURCE`.
|
|
6
6
|
* @type {ShaderResourceDescriptor}
|
|
7
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_mesh_sdf_bake.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_mesh_sdf_bake.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js"],"names":[],"mappings":"AAsCA;;;;;;GAMG;AACH,sCAFU,wBAAwB,CAEwG;AAE1I;;;;GAIG;AACH,uCAFU,wBAAwB,CAEyF;AAE3H;;;;;GAKG;AACH,kCAFU,SAAS,CAyCZ;AAEP;;;;;;;;;;;GAWG;AACH,yCAFU,SAAS,CAwBZ;AAIP;;;;;;;;;GASG;AACH,wCAFU,SAAS,CAsBhB;yCAxKsC,sDAAsD;0BADrE,uCAAuC"}
|
|
@@ -10,24 +10,36 @@ import {
|
|
|
10
10
|
MESH_SDF_COUNTER_HEAD,
|
|
11
11
|
MESH_SDF_COUNTER_SLOTS,
|
|
12
12
|
MESH_SDF_COUNTER_TAIL,
|
|
13
|
+
MESH_SDF_LOG_COLLIDED,
|
|
13
14
|
MESH_SDF_LOG_COMPLETIONS,
|
|
14
15
|
MESH_SDF_LOG_FREE_SLOTS,
|
|
15
16
|
MESH_SDF_LOG_HEADER_WORDS,
|
|
16
17
|
MESH_SDF_LOG_QUEUED,
|
|
17
18
|
MESH_SDF_LOG_RECORD_WORDS,
|
|
19
|
+
MESH_SDF_LOG_SHARED,
|
|
18
20
|
MESH_SDF_LOG_STARVED,
|
|
19
21
|
MESH_SDF_LOG_TAKEN,
|
|
20
22
|
MESH_SDF_GROUPS_PER_BRICK,
|
|
23
|
+
MESH_SDF_NO_CONTENT,
|
|
24
|
+
MESH_SDF_PENDING,
|
|
21
25
|
MESH_SDF_STAGING_VEC4S,
|
|
26
|
+
MESH_SDF_TAKE_COUNT,
|
|
22
27
|
MESH_SDF_TAKE_DISPATCH,
|
|
23
28
|
MESH_SDF_TAKE_START,
|
|
29
|
+
MESH_SDF_TAKEN_DIFFERS,
|
|
30
|
+
MESH_SDF_TAKEN_FRESH,
|
|
31
|
+
MESH_SDF_TAKEN_KEY,
|
|
32
|
+
MESH_SDF_TAKEN_REP,
|
|
33
|
+
MESH_SDF_TAKEN_SLOT,
|
|
34
|
+
MESH_SDF_TAKEN_TALLY,
|
|
35
|
+
MESH_SDF_TAKEN_WORDS,
|
|
24
36
|
MESH_SDF_TALLY_BAND_UNIT
|
|
25
37
|
} from "./MESH_SDF_BAKE.js";
|
|
26
38
|
|
|
27
39
|
/**
|
|
28
40
|
* The indirection arena as the bake sees it: every word an atomic, the counters at word 0, the
|
|
29
|
-
* frame's log at `log_offset` and its tallies at `tally_offset`, and
|
|
30
|
-
* entries (`MESH_SDF_BAKE.js`).
|
|
41
|
+
* frame's log at `log_offset` and its tallies at `tally_offset`, and each geometry's range, its stored
|
|
42
|
+
* count and pending word before its entries (`MESH_SDF_BAKE.js`, `chunk_mesh_sdf`).
|
|
31
43
|
* Readers bind the same buffer as plain words, through `MESH_SDF_INDIRECTION_RESOURCE`.
|
|
32
44
|
* @type {ShaderResourceDescriptor}
|
|
33
45
|
*/
|
|
@@ -61,12 +73,26 @@ const MESH_SDF_COUNTER_TAIL = ${MESH_SDF_COUNTER_TAIL}u;
|
|
|
61
73
|
|
|
62
74
|
const MESH_SDF_TAKE_DISPATCH = ${MESH_SDF_TAKE_DISPATCH}u;
|
|
63
75
|
const MESH_SDF_TAKE_START = ${MESH_SDF_TAKE_START}u;
|
|
76
|
+
const MESH_SDF_TAKE_COUNT = ${MESH_SDF_TAKE_COUNT}u;
|
|
77
|
+
|
|
78
|
+
const MESH_SDF_PENDING = ${MESH_SDF_PENDING}u;
|
|
79
|
+
const MESH_SDF_NO_CONTENT = ${MESH_SDF_NO_CONTENT}u;
|
|
80
|
+
|
|
81
|
+
const MESH_SDF_TAKEN_TALLY = ${MESH_SDF_TAKEN_TALLY}u;
|
|
82
|
+
const MESH_SDF_TAKEN_KEY = ${MESH_SDF_TAKEN_KEY}u;
|
|
83
|
+
const MESH_SDF_TAKEN_SLOT = ${MESH_SDF_TAKEN_SLOT}u;
|
|
84
|
+
const MESH_SDF_TAKEN_FRESH = ${MESH_SDF_TAKEN_FRESH}u;
|
|
85
|
+
const MESH_SDF_TAKEN_REP = ${MESH_SDF_TAKEN_REP}u;
|
|
86
|
+
const MESH_SDF_TAKEN_DIFFERS = ${MESH_SDF_TAKEN_DIFFERS}u;
|
|
87
|
+
const MESH_SDF_TAKEN_WORDS = ${MESH_SDF_TAKEN_WORDS}u;
|
|
64
88
|
|
|
65
89
|
const MESH_SDF_LOG_QUEUED = ${MESH_SDF_LOG_QUEUED}u;
|
|
66
90
|
const MESH_SDF_LOG_STARVED = ${MESH_SDF_LOG_STARVED}u;
|
|
67
91
|
const MESH_SDF_LOG_FREE_SLOTS = ${MESH_SDF_LOG_FREE_SLOTS}u;
|
|
68
92
|
const MESH_SDF_LOG_TAKEN = ${MESH_SDF_LOG_TAKEN}u;
|
|
69
93
|
const MESH_SDF_LOG_COMPLETIONS = ${MESH_SDF_LOG_COMPLETIONS}u;
|
|
94
|
+
const MESH_SDF_LOG_SHARED = ${MESH_SDF_LOG_SHARED}u;
|
|
95
|
+
const MESH_SDF_LOG_COLLIDED = ${MESH_SDF_LOG_COLLIDED}u;
|
|
70
96
|
const MESH_SDF_LOG_HEADER_WORDS = ${MESH_SDF_LOG_HEADER_WORDS}u;
|
|
71
97
|
const MESH_SDF_LOG_RECORD_WORDS = ${MESH_SDF_LOG_RECORD_WORDS}u;
|
|
72
98
|
`, [
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Records of the content table for a slot capacity: twice the slots, so the table is at most half
|
|
3
|
+
* full and a key's sequence passes an empty record within a few probes, and no fewer than the probe
|
|
4
|
+
* limit, which a table holds (`chunk_hash_table_atomic`); a power of two.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} slot_capacity
|
|
7
|
+
* @returns {number}
|
|
8
|
+
*/
|
|
9
|
+
export function mesh_sdf_content_table_size(slot_capacity: number): number;
|
|
10
|
+
/**
|
|
11
|
+
* Words a slot's contents take in `mesh_sdf_contents`: the entries holding it, then the content key
|
|
12
|
+
* (`MESH_SDF_BRICK_KEY.js`) it is listed under.
|
|
13
|
+
* @type {number}
|
|
14
|
+
*/
|
|
15
|
+
export const MESH_SDF_CONTENT_WORDS: number;
|
|
16
|
+
/**
|
|
17
|
+
* What each slot of the atlas holds, {@link MESH_SDF_CONTENT_WORDS} a slot, by slot.
|
|
18
|
+
* @type {ShaderResourceDescriptor}
|
|
19
|
+
*/
|
|
20
|
+
export const MESH_SDF_CONTENTS_RESOURCE: ShaderResourceDescriptor;
|
|
21
|
+
/**
|
|
22
|
+
* The slots by content: a `chunk_hash_table_atomic` table at word 0, keyed by a content key's high 31
|
|
23
|
+
* bits, a record's value the slot.
|
|
24
|
+
* @type {ShaderResourceDescriptor}
|
|
25
|
+
*/
|
|
26
|
+
export const MESH_SDF_CONTENT_TABLE_RESOURCE: ShaderResourceDescriptor;
|
|
27
|
+
/**
|
|
28
|
+
* The atlas's slots by what they hold, so that bricks of the same bytes share one slot. Each slot
|
|
29
|
+
* counts the entries holding it, and the content table lists slots under the content keys of their
|
|
30
|
+
* bytes, for bricks to find.
|
|
31
|
+
*
|
|
32
|
+
* A key names the slots that may hold a brick's bytes and never says that one does: a brick takes a
|
|
33
|
+
* slot it found only once its bytes and the slot's compare equal, so keys that agree for different
|
|
34
|
+
* bytes cost a share, never a brick its bytes. Every slot the table lists is held, free taking a
|
|
35
|
+
* slot's record out with its last entry. A slot listed nowhere, its insert refused (no record free
|
|
36
|
+
* within the probe limit) or its bytes never offered for sharing, is held all the same and never found.
|
|
37
|
+
*
|
|
38
|
+
* ```wgsl
|
|
39
|
+
* fn mesh_sdf_content_find(key: u32) -> u32 // the first slot listed under the key, or MESH_SDF_NO_CONTENT
|
|
40
|
+
* fn mesh_sdf_content_list(slot: u32, key: u32) // a slot about to hold bytes of the key, listed under it
|
|
41
|
+
* fn mesh_sdf_content_hold(slot: u32) // one entry more
|
|
42
|
+
* fn mesh_sdf_content_release(slot: u32) -> bool // one entry fewer: true for the last, its record gone
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* The table keys a record by the key's high 31 bits, so a slot found counts only when the key it is
|
|
46
|
+
* listed under is the key. No find shares a dispatch with a list or a release: each meets the table
|
|
47
|
+
* as the dispatches before it left it.
|
|
48
|
+
*
|
|
49
|
+
* @type {CodeChunk}
|
|
50
|
+
*/
|
|
51
|
+
export const chunk_mesh_sdf_contents: CodeChunk;
|
|
52
|
+
import { ShaderResourceDescriptor } from "../../../shader/resource/ShaderResourceDescriptor.js";
|
|
53
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
54
|
+
//# sourceMappingURL=chunk_mesh_sdf_contents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_mesh_sdf_contents.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js"],"names":[],"mappings":"AA6BA;;;;;;;GAOG;AACH,2DAHW,MAAM,GACJ,MAAM,CAIlB;AA9BD;;;;GAIG;AACH,qCAFU,MAAM,CAEwB;AAExC;;;GAGG;AACH,yCAFU,wBAAwB,CAEwG;AAE1I;;;;GAIG;AACH,8CAFU,wBAAwB,CAEkH;AAcpJ;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,sCAFU,SAAS,CA+EZ;yCA1IkC,sDAAsD;0BADrE,uCAAuC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { ceilPowerOfTwo } from "../../../../../core/binary/operations/ceilPowerOfTwo.js";
|
|
2
|
+
import { chunk_hash_table_atomic } from "../../../gpu_primitive/hash_table/chunk_hash_table_atomic.js";
|
|
3
|
+
import { HASH_TABLE_PROBE_LIMIT } from "../../../gpu_primitive/hash_table/cpu_build_hash_table.js";
|
|
4
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { ShaderResourceDescriptor } from "../../../shader/resource/ShaderResourceDescriptor.js";
|
|
6
|
+
import { atomic_u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
7
|
+
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
8
|
+
import { chunk_mesh_sdf_bake } from "./chunk_mesh_sdf_bake.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Words a slot's contents take in `mesh_sdf_contents`: the entries holding it, then the content key
|
|
12
|
+
* (`MESH_SDF_BRICK_KEY.js`) it is listed under.
|
|
13
|
+
* @type {number}
|
|
14
|
+
*/
|
|
15
|
+
export const MESH_SDF_CONTENT_WORDS = 2;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* What each slot of the atlas holds, {@link MESH_SDF_CONTENT_WORDS} a slot, by slot.
|
|
19
|
+
* @type {ShaderResourceDescriptor}
|
|
20
|
+
*/
|
|
21
|
+
export const MESH_SDF_CONTENTS_RESOURCE = ShaderResourceDescriptor.storageBuffer("mesh_sdf_contents", WebGPUArray.from(atomic_u32), true);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The slots by content: a `chunk_hash_table_atomic` table at word 0, keyed by a content key's high 31
|
|
25
|
+
* bits, a record's value the slot.
|
|
26
|
+
* @type {ShaderResourceDescriptor}
|
|
27
|
+
*/
|
|
28
|
+
export const MESH_SDF_CONTENT_TABLE_RESOURCE = ShaderResourceDescriptor.storageBuffer("mesh_sdf_content_table", WebGPUArray.from(atomic_u32), true);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Records of the content table for a slot capacity: twice the slots, so the table is at most half
|
|
32
|
+
* full and a key's sequence passes an empty record within a few probes, and no fewer than the probe
|
|
33
|
+
* limit, which a table holds (`chunk_hash_table_atomic`); a power of two.
|
|
34
|
+
*
|
|
35
|
+
* @param {number} slot_capacity
|
|
36
|
+
* @returns {number}
|
|
37
|
+
*/
|
|
38
|
+
export function mesh_sdf_content_table_size(slot_capacity) {
|
|
39
|
+
return ceilPowerOfTwo(Math.max(HASH_TABLE_PROBE_LIMIT, 2 * slot_capacity));
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The atlas's slots by what they hold, so that bricks of the same bytes share one slot. Each slot
|
|
44
|
+
* counts the entries holding it, and the content table lists slots under the content keys of their
|
|
45
|
+
* bytes, for bricks to find.
|
|
46
|
+
*
|
|
47
|
+
* A key names the slots that may hold a brick's bytes and never says that one does: a brick takes a
|
|
48
|
+
* slot it found only once its bytes and the slot's compare equal, so keys that agree for different
|
|
49
|
+
* bytes cost a share, never a brick its bytes. Every slot the table lists is held, free taking a
|
|
50
|
+
* slot's record out with its last entry. A slot listed nowhere, its insert refused (no record free
|
|
51
|
+
* within the probe limit) or its bytes never offered for sharing, is held all the same and never found.
|
|
52
|
+
*
|
|
53
|
+
* ```wgsl
|
|
54
|
+
* fn mesh_sdf_content_find(key: u32) -> u32 // the first slot listed under the key, or MESH_SDF_NO_CONTENT
|
|
55
|
+
* fn mesh_sdf_content_list(slot: u32, key: u32) // a slot about to hold bytes of the key, listed under it
|
|
56
|
+
* fn mesh_sdf_content_hold(slot: u32) // one entry more
|
|
57
|
+
* fn mesh_sdf_content_release(slot: u32) -> bool // one entry fewer: true for the last, its record gone
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* The table keys a record by the key's high 31 bits, so a slot found counts only when the key it is
|
|
61
|
+
* listed under is the key. No find shares a dispatch with a list or a release: each meets the table
|
|
62
|
+
* as the dispatches before it left it.
|
|
63
|
+
*
|
|
64
|
+
* @type {CodeChunk}
|
|
65
|
+
*/
|
|
66
|
+
export const chunk_mesh_sdf_contents = CodeChunk.from(
|
|
67
|
+
//language=WGSL
|
|
68
|
+
`
|
|
69
|
+
const MESH_SDF_CONTENT_WORDS = ${MESH_SDF_CONTENT_WORDS}u;
|
|
70
|
+
|
|
71
|
+
/** the key's records in the content table, whose keys stay below 0xFFFFFFFE: its high 31 bits */
|
|
72
|
+
fn mesh_sdf_content_table_key(key: u32) -> u32 {
|
|
73
|
+
return key >> 1u;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** the key a slot is listed under: of no meaning for a slot listed nowhere */
|
|
77
|
+
fn mesh_sdf_content_key(slot: u32) -> u32 {
|
|
78
|
+
return atomicLoad(&mesh_sdf_contents[slot * MESH_SDF_CONTENT_WORDS + 1u]);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
fn mesh_sdf_content_find(key: u32) -> u32 {
|
|
82
|
+
let table_key = mesh_sdf_content_table_key(key);
|
|
83
|
+
|
|
84
|
+
var cursor = hash_table_atomic_start(&mesh_sdf_content_table, 0u, table_key);
|
|
85
|
+
|
|
86
|
+
// the probe limit bounds the records a find meets
|
|
87
|
+
for (var i = 0u; i < HASH_TABLE_PROBE_LIMIT; i++) {
|
|
88
|
+
let record = hash_table_atomic_find(&mesh_sdf_content_table, 0u, table_key, &cursor);
|
|
89
|
+
|
|
90
|
+
if (record == HASH_TABLE_MISS) {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
let slot = hash_table_atomic_value(&mesh_sdf_content_table, record);
|
|
95
|
+
|
|
96
|
+
if (mesh_sdf_content_key(slot) == key) {
|
|
97
|
+
return slot;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return MESH_SDF_NO_CONTENT;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
fn mesh_sdf_content_list(slot: u32, key: u32) {
|
|
105
|
+
atomicStore(&mesh_sdf_contents[slot * MESH_SDF_CONTENT_WORDS + 1u], key);
|
|
106
|
+
|
|
107
|
+
// refused, the slot is held all the same and never found
|
|
108
|
+
hash_table_atomic_insert(&mesh_sdf_content_table, 0u, mesh_sdf_content_table_key(key), slot);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
fn mesh_sdf_content_hold(slot: u32) {
|
|
112
|
+
atomicAdd(&mesh_sdf_contents[slot * MESH_SDF_CONTENT_WORDS], 1u);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
fn mesh_sdf_content_release(slot: u32) -> bool {
|
|
116
|
+
if (atomicSub(&mesh_sdf_contents[slot * MESH_SDF_CONTENT_WORDS], 1u) != 1u) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// the slot's record, when it has one: no other record names it
|
|
121
|
+
let table_key = mesh_sdf_content_table_key(mesh_sdf_content_key(slot));
|
|
122
|
+
|
|
123
|
+
var cursor = hash_table_atomic_start(&mesh_sdf_content_table, 0u, table_key);
|
|
124
|
+
|
|
125
|
+
for (var i = 0u; i < HASH_TABLE_PROBE_LIMIT; i++) {
|
|
126
|
+
let record = hash_table_atomic_find(&mesh_sdf_content_table, 0u, table_key, &cursor);
|
|
127
|
+
|
|
128
|
+
if (record == HASH_TABLE_MISS) {
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (hash_table_atomic_value(&mesh_sdf_content_table, record) == slot) {
|
|
133
|
+
hash_table_atomic_remove(&mesh_sdf_content_table, 0u, record);
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
`, [
|
|
141
|
+
chunk_hash_table_atomic,
|
|
142
|
+
chunk_mesh_sdf_bake,
|
|
143
|
+
]);
|
|
144
|
+
|
|
145
|
+
chunk_mesh_sdf_contents.requireResource(MESH_SDF_CONTENTS_RESOURCE);
|
|
146
|
+
chunk_mesh_sdf_contents.requireResource(MESH_SDF_CONTENT_TABLE_RESOURCE);
|
|
@@ -18,7 +18,7 @@ export const MESH_SDF_CLASSIFY_SETTINGS: WebGPUStruct;
|
|
|
18
18
|
* whichever side of the surface it is on, since the vote casts no ray where the surface is not within
|
|
19
19
|
* the band (UE 5.4's). Otherwise the brick goes onto the ring as `(geometry, generation, brick, 0)`,
|
|
20
20
|
* for evaluate to settle. Either way its entry starts EMPTY, which is what a freed range must find in
|
|
21
|
-
* an entry never stored.
|
|
21
|
+
* an entry never stored, and its number `MESH_SDF_UNNUMBERED`, until evaluate gives it a slot.
|
|
22
22
|
*
|
|
23
23
|
* A dropped brick is settled here: it counts its geometry's pending word down, and the last brick of
|
|
24
24
|
* a geometry to settle logs it complete.
|