@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
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { GPU_DATABASE_NULL } from "../../../buffer/table/GPU_DATABASE_NULL.js";
|
|
2
|
+
import { MESH_SDF_BRICK_TEXEL_COUNT } from "../../../geometry/sdf/MESH_SDF.js";
|
|
3
|
+
import {
|
|
4
|
+
MESH_SDF_ATLAS_RESOURCE,
|
|
5
|
+
MESH_SDF_HEADERS_RESOURCE,
|
|
6
|
+
MESH_SDF_INDIRECTION_RESOURCE,
|
|
7
|
+
MESH_SDF_SAMPLER_RESOURCE
|
|
8
|
+
} from "../../../geometry/sdf/MESH_SDF_RESOURCES.js";
|
|
9
|
+
import { chunk_mesh_surface_sample } from "../../../geometry/sdf/surface/chunk_mesh_surface_sample.js";
|
|
10
|
+
import {
|
|
11
|
+
MESH_SURFACE_DATA_RESOURCE,
|
|
12
|
+
MESH_SURFACE_RECORDS_RESOURCE,
|
|
13
|
+
MESH_SURFACE_ROWS_RESOURCE
|
|
14
|
+
} from "../../../geometry/sdf/surface/MESH_SURFACE_RESOURCES.js";
|
|
15
|
+
import { chunk_folded_workgroup_index } from "../../../shader/chunk/grid/chunk_folded_workgroup_index.js";
|
|
16
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
17
|
+
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
18
|
+
import { ShaderResourceDescriptor } from "../../../shader/resource/ShaderResourceDescriptor.js";
|
|
19
|
+
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
20
|
+
import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
21
|
+
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
22
|
+
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
23
|
+
import { BRICK_THREAD_WORKGROUP_SIZE } from "../brick/BRICK_CLIPMAP.js";
|
|
24
|
+
import { BRICK_RING_RESOURCE, BRICK_TAKE_RESOURCE } from "../brick/chunk_brick_clipmap.js";
|
|
25
|
+
import {
|
|
26
|
+
BRICK_ATLAS_TEXTURE_RESOURCE,
|
|
27
|
+
BRICK_LEVELS_RESOURCE,
|
|
28
|
+
BRICK_MAP_TEXTURE_RESOURCE,
|
|
29
|
+
BRICK_SAMPLER_RESOURCE,
|
|
30
|
+
BRICK_TRACE_HIT_VOXELS,
|
|
31
|
+
chunk_brick_clipmap_sample
|
|
32
|
+
} from "../brick/chunk_brick_clipmap_trace.js";
|
|
33
|
+
import { chunk_brick_provider } from "../brick/chunk_brick_provider.js";
|
|
34
|
+
import { chunk_mesh_brick_instance } from "../brick/mesh/chunk_mesh_brick_instance.js";
|
|
35
|
+
import { chunk_brick_material_cell, chunk_brick_material_texel } from "./chunk_brick_material_cell.js";
|
|
36
|
+
import {
|
|
37
|
+
BRICK_MATERIAL_ALBEDO_STORE_RESOURCE,
|
|
38
|
+
BRICK_MATERIAL_EMISSIVE_STORE_RESOURCE,
|
|
39
|
+
BRICK_MATERIAL_METAL_ROUGH_STORE_RESOURCE,
|
|
40
|
+
chunk_brick_material_store
|
|
41
|
+
} from "./chunk_brick_material_store.js";
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @type {WebGPUStruct}
|
|
45
|
+
*/
|
|
46
|
+
export const BRICK_MATERIAL_GATHER_SETTINGS = WebGPUStruct.from({
|
|
47
|
+
/** keys `brick_ring` holds, a power of two */
|
|
48
|
+
ring_capacity: u32,
|
|
49
|
+
/** cells a cascade's window has a side */
|
|
50
|
+
resolution: u32,
|
|
51
|
+
}, "BrickMaterialGatherSettings");
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The taken cells' staging as the gather reads it, after the providers and the store
|
|
55
|
+
* (`BRICK_STAGING_RESOURCE`).
|
|
56
|
+
* @type {ShaderResourceDescriptor}
|
|
57
|
+
*/
|
|
58
|
+
const BRICK_STAGING_READ_RESOURCE = ShaderResourceDescriptor.storageBuffer("brick_staging", WebGPUArray.u32);
|
|
59
|
+
|
|
60
|
+
const resources = new ShaderResourceSetDescriptor();
|
|
61
|
+
|
|
62
|
+
resources.setImmediate("settings", BRICK_MATERIAL_GATHER_SETTINGS);
|
|
63
|
+
|
|
64
|
+
resources.createGroup()
|
|
65
|
+
.add(BRICK_LEVELS_RESOURCE)
|
|
66
|
+
.add(BRICK_MAP_TEXTURE_RESOURCE)
|
|
67
|
+
.add(BRICK_ATLAS_TEXTURE_RESOURCE)
|
|
68
|
+
.add(BRICK_SAMPLER_RESOURCE)
|
|
69
|
+
.add(BRICK_TAKE_RESOURCE)
|
|
70
|
+
.add(BRICK_RING_RESOURCE)
|
|
71
|
+
.add(BRICK_STAGING_READ_RESOURCE)
|
|
72
|
+
.add(BRICK_MATERIAL_ALBEDO_STORE_RESOURCE)
|
|
73
|
+
.add(BRICK_MATERIAL_METAL_ROUGH_STORE_RESOURCE)
|
|
74
|
+
.add(BRICK_MATERIAL_EMISSIVE_STORE_RESOURCE);
|
|
75
|
+
|
|
76
|
+
resources.createGroup()
|
|
77
|
+
.addStorageBuffer("scene_database", WebGPUArray.from(u32))
|
|
78
|
+
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
79
|
+
.add(MESH_SDF_INDIRECTION_RESOURCE)
|
|
80
|
+
.add(MESH_SDF_ATLAS_RESOURCE)
|
|
81
|
+
.add(MESH_SDF_SAMPLER_RESOURCE)
|
|
82
|
+
.add(MESH_SURFACE_RECORDS_RESOURCE)
|
|
83
|
+
.add(MESH_SURFACE_ROWS_RESOURCE)
|
|
84
|
+
.add(MESH_SURFACE_DATA_RESOURCE);
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The brick material of the frame's taken cells, gathered from the Model Surface Caches: a thread a
|
|
88
|
+
* texel, dispatched through `BRICK_TAKE_TEXEL_DISPATCH` after store and the providers' merge. A cell
|
|
89
|
+
* store left without a slot does nothing.
|
|
90
|
+
*
|
|
91
|
+
* Every texel of a cell with a slot is cleared to no material, since the slot may have held another
|
|
92
|
+
* cell's. A texel whose nearest surface point is under its tent, |d|·|n|∞ < 1 voxel of the field's
|
|
93
|
+
* distance d and normal n there, takes its material from the surface it holds: the `meshes` row the
|
|
94
|
+
* providers left it (`BRICK_STAGING_SURFACE_WORDS`, contract 8), that row's (geometry, material) pair's
|
|
95
|
+
* cache (`mesh_surface_rows`), read at the texel moved into the geometry's space, at the level of its
|
|
96
|
+
* field the mesh provider sampled its distance from (`mesh_brick_instance`), surfaces within
|
|
97
|
+
* {@link BRICK_TRACE_HIT_VOXELS} of the nearest one blended (`mesh_surface_sample`). A row with no cache
|
|
98
|
+
* resident, and a point the cache holds nothing at, leave the texel without material.
|
|
99
|
+
*
|
|
100
|
+
* Reads the caches, the fields and the scene's transforms: no ray, no BLAS, no material table.
|
|
101
|
+
*
|
|
102
|
+
* @type {ComputeShader}
|
|
103
|
+
*/
|
|
104
|
+
export const shader_brick_material_gather = ComputeShader.from({
|
|
105
|
+
label: "Brick Material Gather",
|
|
106
|
+
resources,
|
|
107
|
+
body: CodeChunk.from(
|
|
108
|
+
//language=WGSL
|
|
109
|
+
`
|
|
110
|
+
@compute @workgroup_size(${BRICK_THREAD_WORKGROUP_SIZE})
|
|
111
|
+
fn main(
|
|
112
|
+
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
113
|
+
@builtin(local_invocation_index) lane: u32,
|
|
114
|
+
) {
|
|
115
|
+
let thread = folded_workgroup_index(workgroup_id) * ${BRICK_THREAD_WORKGROUP_SIZE}u + lane;
|
|
116
|
+
let build = thread / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
|
|
117
|
+
let index = thread % ${MESH_SDF_BRICK_TEXEL_COUNT}u;
|
|
118
|
+
|
|
119
|
+
if (build >= brick_take[BRICK_TAKE_COUNT]) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
let taken = brick_material_cell_entry(build, settings.ring_capacity, settings.resolution);
|
|
124
|
+
|
|
125
|
+
if (!brick_clipmap_entry_holds_slot(taken.entry)) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
let t = brick_material_texel(index);
|
|
130
|
+
let at = brick_material_atlas_texel(taken.entry, t);
|
|
131
|
+
|
|
132
|
+
brick_material_clear(at);
|
|
133
|
+
|
|
134
|
+
// in voxels: a voxel of 1
|
|
135
|
+
let local = vec3<f32>(t);
|
|
136
|
+
let d = brick_clipmap_sample(taken.entry, local, 1.0);
|
|
137
|
+
let n = brick_clipmap_normal(taken.entry, local);
|
|
138
|
+
|
|
139
|
+
if (!(any(n != vec3<f32>(0.0)) && abs(d) * max(max(abs(n.x), abs(n.y)), abs(n.z)) < 1.0)) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
let row = brick_staging[build * BRICK_STAGING_WORDS + BRICK_STAGING_SURFACE_WORDS + index];
|
|
144
|
+
|
|
145
|
+
if (row == 0u) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
let cache = mesh_surface_rows[row];
|
|
150
|
+
|
|
151
|
+
if (cache == ${GPU_DATABASE_NULL}u) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
let cell = brick_provider_cell(taken.key, settings.resolution);
|
|
156
|
+
let p = vec4<f32>(cell.corner + local * cell.voxel, 1.0);
|
|
157
|
+
let instance = mesh_brick_instance(row, cell.voxel);
|
|
158
|
+
let q = vec3<f32>(dot(instance.to_local_0, p), dot(instance.to_local_1, p), dot(instance.to_local_2, p));
|
|
159
|
+
|
|
160
|
+
let seen = mesh_surface_sample(mesh_surface_records[cache], mesh_sdf_headers[instance.geometry], instance.level, q, ${BRICK_TRACE_HIT_VOXELS});
|
|
161
|
+
|
|
162
|
+
if (seen.found) {
|
|
163
|
+
brick_material_store(at, SurfaceMaterialFitted(true, seen.albedo, seen.metal_rough, seen.emissive));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
`, [
|
|
167
|
+
chunk_folded_workgroup_index,
|
|
168
|
+
chunk_brick_material_cell,
|
|
169
|
+
chunk_brick_material_texel,
|
|
170
|
+
chunk_brick_material_store,
|
|
171
|
+
chunk_brick_clipmap_sample,
|
|
172
|
+
chunk_brick_provider,
|
|
173
|
+
chunk_mesh_brick_instance,
|
|
174
|
+
chunk_mesh_surface_sample,
|
|
175
|
+
]),
|
|
176
|
+
});
|
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
* of the frame's updates, at most U = ⌊ray_budget / rays_per_probe⌋.
|
|
24
24
|
*
|
|
25
25
|
* **A frame's windows** ({@link place}, {@link place_within}): around the anchor, coarsest first, each a
|
|
26
|
-
* parent cell inside its parent; or another clipmap's.
|
|
26
|
+
* parent cell inside its parent; or another clipmap's. Readers and wants choose a point's cascade by
|
|
27
|
+
* selection boxes centred on the anchor itself, `PROBE_SELECTION_INSET` short of half a window (§9.1,
|
|
28
|
+
* "Selection"): the windows move a step at a time, the boxes with the anchor, so the blend between
|
|
29
|
+
* cascades moves as the anchor does.
|
|
27
30
|
*
|
|
28
31
|
* **A frame's lifetime** ({@link graph_update}, §8.3, §8.5): retire frees the probes whose points left
|
|
29
32
|
* their windows and those the last frame's schedule evicted, the wants mark the cages they read, admit
|
|
@@ -58,7 +61,9 @@ export class GPUProbeClipmap {
|
|
|
58
61
|
* the record's cascade field, {@link PROBE_RECORD_CASCADE_SHIFT}
|
|
59
62
|
* @param {number} options.resolution a power of two, at most 1024: the order's Morton code takes 10 bits
|
|
60
63
|
* an axis; the indirection's height, resolution · cascade_count, at most the device's
|
|
61
|
-
* `maxTextureDimension3D
|
|
64
|
+
* `maxTextureDimension3D`; past twice {@link PROBE_SELECTION_INSET}, so a selection box holds points;
|
|
65
|
+
* and with more than one cascade, from 8, so the nesting never holds a window further from the anchor
|
|
66
|
+
* than the inset allows (§9.1, "Selection")
|
|
62
67
|
* @param {number} options.spacing metres
|
|
63
68
|
* @param {number} options.radiance_resolution a power of two from 2, which the update's bit-reversed
|
|
64
69
|
* walk of the texels needs
|
|
@@ -186,8 +191,8 @@ export class GPUProbeClipmap {
|
|
|
186
191
|
*/
|
|
187
192
|
built_for(settings: ProbeClipmapSettings): boolean;
|
|
188
193
|
/**
|
|
189
|
-
* Place the windows around the anchor, coarsest first, each a parent cell inside its parent,
|
|
190
|
-
* frame's {@link graph_update}.
|
|
194
|
+
* Place the windows around the anchor, coarsest first, each a parent cell inside its parent, and the
|
|
195
|
+
* selection boxes on the anchor, for the frame's {@link graph_update}.
|
|
191
196
|
*
|
|
192
197
|
* @param {number} x the anchor, world metres
|
|
193
198
|
* @param {number} y
|
|
@@ -198,7 +203,8 @@ export class GPUProbeClipmap {
|
|
|
198
203
|
* Take another clipmap's windows, as {@link place} last placed them, at 2^k this clipmap's lattice
|
|
199
204
|
* (WORLD_PROBE_CACHE_SCOPE_2026_11_01.md §1.2): the same cascades, each the other's window and spacing over
|
|
200
205
|
* 2^k, its corner 2^k the other's, so every point of the other's lattice is one of this clipmap's and the
|
|
201
|
-
* two scroll together. k is the ratio of the resolutions, a power of two from 2.
|
|
206
|
+
* two scroll together. k is the ratio of the resolutions, a power of two from 2. The selection boxes are the
|
|
207
|
+
* other's too: the same anchor, the same half side in metres.
|
|
202
208
|
*
|
|
203
209
|
* @param {GPUProbeClipmap} clipmap placed this frame
|
|
204
210
|
*/
|
|
@@ -219,8 +225,9 @@ export class GPUProbeClipmap {
|
|
|
219
225
|
* @param {number} options.bricks the graph handle of the brick clipmap's last write this frame, which
|
|
220
226
|
* the update orders after
|
|
221
227
|
* @param {import("../../../scene/GPUSceneContext.js").GPUSceneContext} options.scene the scene the rays
|
|
222
|
-
* light
|
|
223
|
-
* @param {
|
|
228
|
+
* light: its lights and its environment
|
|
229
|
+
* @param {{write_bindings: function(Object): Object}} options.material what binds the brick material's planes
|
|
230
|
+
* for the shade (`GPUBrickMaterial#write_bindings`): the material the bricks carry
|
|
224
231
|
* @param {boolean} options.history_resampling whether each update re-samples its neighbours' histories, adding
|
|
225
232
|
* what they have seen to its rays (`shader_probe_clipmap_resample`); never where the radiance has no skirt
|
|
226
233
|
* @param {boolean} options.ray_resampling whether each update re-samples one neighbour's rays of the frame,
|
|
@@ -233,7 +240,7 @@ export class GPUProbeClipmap {
|
|
|
233
240
|
* tone curve, a single f32, as the last frame was shown: the exposure the probes' estimators state their
|
|
234
241
|
* thresholds in
|
|
235
242
|
*/
|
|
236
|
-
graph_update({ graph, wants, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene,
|
|
243
|
+
graph_update({ graph, wants, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene, material, history_resampling, ray_resampling, clusters, bounce_first, bounce_fallback, exposure }: {
|
|
237
244
|
graph: FrameGraph;
|
|
238
245
|
wants: ProbeClipmapWants;
|
|
239
246
|
response_frames: number;
|
|
@@ -242,7 +249,9 @@ export class GPUProbeClipmap {
|
|
|
242
249
|
brick_clipmap: import("../brick/GPUBrickClipmap.js").GPUBrickClipmap;
|
|
243
250
|
bricks: number;
|
|
244
251
|
scene: import("../../../scene/GPUSceneContext.js").GPUSceneContext;
|
|
245
|
-
|
|
252
|
+
material: {
|
|
253
|
+
write_bindings: (arg0: any) => any;
|
|
254
|
+
};
|
|
246
255
|
history_resampling: boolean;
|
|
247
256
|
ray_resampling: boolean;
|
|
248
257
|
clusters: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUProbeClipmap.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUProbeClipmap.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js"],"names":[],"mappings":"AA0HA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH;IA2RI;;;;;;;;;;;;;;;;;;;OAmBG;IACH;QAjB2B,aAAa,EAA7B,MAAM;QAEU,UAAU,EAA1B,MAAM;QAKU,OAAO,EAAvB,MAAM;QACU,mBAAmB,EAAnC,MAAM;QAEU,gBAAgB,EAAhC,MAAM;QACW,cAAc,EAA/B,OAAO;QAES,KAAK,EAArB,MAAM;QACU,QAAQ,EAAxB,MAAM;OAmHhB;IA9ZD;;;OAGG;IACH,wBAHU,MAAM,CAGF;IAEd;;;;OAIG;IACH,qBAHU,MAAM,CAGL;IAEX;;;;OAIG;IACH,kBAHU,MAAM,CAGR;IAER;;;;OAIG;IACH,8BAHU,MAAM,CAGI;IAEpB;;;;OAIG;IACH,2BAHU,MAAM,CAGC;IAEjB;;;;;OAKG;IACH,yBAHU,OAAO,CAGF;IAEf;;;;OAIG;IACH,gBAHU,MAAM,CAGV;IAiXN;;;;;;;;OAQG;IACH,4CAUC;IAED;;OAEG;IACH,8BAEC;IAED;;;;;OAKG;IACH,uBAEC;IAED;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,sBAEC;IAGD;;;OAGG;IACH,0BAEC;IAED;;;;;OAKG;IACH,wBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,gBAJW,MAAM,QACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,oBAHW,oBAAoB,GAClB,OAAO,CAQnB;IAED;;;;;;;OAOG;IACH,SAJW,MAAM,KACN,MAAM,KACN,MAAM,QAkChB;IAED;;;;;;;;OAQG;IACH,sBAFW,eAAe,QA+BzB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH;QAzB+B,KAAK,EAAzB,UAAU;QACiB,KAAK,EAAhC,iBAAiB;QACD,eAAe,EAA/B,MAAM;QACU,UAAU,EAA1B,MAAM;QACU,cAAc,EAA9B,MAAM;QACyD,aAAa,EAA5E,OAAO,6BAA6B,EAAE,eAAe;QAErC,MAAM,EAAtB,MAAM;QAE+D,KAAK,EAA1E,OAAO,mCAAmC,EAAE,eAAe;QAEP,QAAQ,EAA5D;YAAC,cAAc,qBAA0B;SAAC;QAEzB,kBAAkB,EAAnC,OAAO;QAEU,cAAc,EAA/B,OAAO;QAEiC,QAAQ,EAAhD;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC;QAEL,YAAY,EAArC,eAAe;QACU,eAAe,EAAxC,eAAe;QACC,QAAQ,EAAxB,MAAM;aA0OhB;IA6gBD,gBAcC;;CACJ;mCAn9CY,OAAO,4BAA4B,EAAE,oBAAoB;yBACzD,OAAO,iEAAiE,EAAE,UAAU;gCACpF,OAAO,8BAA8B,EAAE,uBAAuB,GAAC,OAAO,2BAA2B,EAAE,oBAAoB"}
|
|
@@ -40,6 +40,8 @@ import { PROBE_SAMPLING_STRUCT } from "./chunk_probe_clipmap_pick.js";
|
|
|
40
40
|
import {
|
|
41
41
|
probe_clipmap_guide_words,
|
|
42
42
|
probe_clipmap_maps_words,
|
|
43
|
+
PROBE_CASCADE_HYSTERESIS,
|
|
44
|
+
PROBE_CASCADE_STEP,
|
|
43
45
|
PROBE_COUNTER_FREE,
|
|
44
46
|
PROBE_COUNTER_STARVED,
|
|
45
47
|
PROBE_COUNTER_WORDS,
|
|
@@ -57,6 +59,7 @@ import {
|
|
|
57
59
|
PROBE_RAYS_PER_TEXEL_MAX,
|
|
58
60
|
PROBE_RAYS_PER_TEXEL_MIN,
|
|
59
61
|
PROBE_RECORD_CASCADE_SHIFT,
|
|
62
|
+
PROBE_SELECTION_INSET,
|
|
60
63
|
PROBE_THREAD_WORKGROUP_SIZE,
|
|
61
64
|
PROBE_UNIFORM_PERIOD
|
|
62
65
|
} from "./PROBE_CLIPMAP.js";
|
|
@@ -97,20 +100,7 @@ import { shader_probe_clipmap_trace_command } from "./shader_probe_clipmap_trace
|
|
|
97
100
|
*/
|
|
98
101
|
|
|
99
102
|
/**
|
|
100
|
-
*
|
|
101
|
-
* @type {number}
|
|
102
|
-
*/
|
|
103
|
-
const PROBE_CASCADE_STEP = 1;
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Cells past half a step the anchor goes from a window's centre before it moves: the bricks' value.
|
|
107
|
-
* @type {number}
|
|
108
|
-
*/
|
|
109
|
-
const PROBE_CASCADE_HYSTERESIS = 0.1;
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Parent cells every cascade's window keeps inside its parent's, so that a cage in a cascade's blend
|
|
113
|
-
* skirt is inside the next cascade's cage window.
|
|
103
|
+
* Parent cells every cascade's window keeps inside its parent's (§8.1).
|
|
114
104
|
* @type {number}
|
|
115
105
|
*/
|
|
116
106
|
const PROBE_CASCADE_NEST_MARGIN = 1;
|
|
@@ -126,6 +116,9 @@ const SAMPLING_RADIANCE_RESOLUTION = PROBE_SAMPLING_STRUCT.get("radiance_resolut
|
|
|
126
116
|
const SAMPLING_RADIANCE_TILES_PER_ROW = PROBE_SAMPLING_STRUCT.get("radiance_tiles_per_row").offset >>> 2;
|
|
127
117
|
const SAMPLING_RADIANCE_TEXEL = PROBE_SAMPLING_STRUCT.get("radiance_texel").offset >>> 2;
|
|
128
118
|
const SAMPLING_RADIANCE_TILES_PER_ROW_RECIPROCAL = PROBE_SAMPLING_STRUCT.get("radiance_tiles_per_row_reciprocal").offset >>> 2;
|
|
119
|
+
// word offsets of the selection boxes in PROBE_SAMPLING_STRUCT
|
|
120
|
+
const SAMPLING_ANCHOR = PROBE_SAMPLING_STRUCT.get("anchor").offset >>> 2;
|
|
121
|
+
const SAMPLING_SELECT_HALF = PROBE_SAMPLING_STRUCT.get("select_half").offset >>> 2;
|
|
129
122
|
|
|
130
123
|
/**
|
|
131
124
|
* What shading samples (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8): {@link cascade_count} cascades of
|
|
@@ -152,7 +145,10 @@ const SAMPLING_RADIANCE_TILES_PER_ROW_RECIPROCAL = PROBE_SAMPLING_STRUCT.get("ra
|
|
|
152
145
|
* of the frame's updates, at most U = ⌊ray_budget / rays_per_probe⌋.
|
|
153
146
|
*
|
|
154
147
|
* **A frame's windows** ({@link place}, {@link place_within}): around the anchor, coarsest first, each a
|
|
155
|
-
* parent cell inside its parent; or another clipmap's.
|
|
148
|
+
* parent cell inside its parent; or another clipmap's. Readers and wants choose a point's cascade by
|
|
149
|
+
* selection boxes centred on the anchor itself, `PROBE_SELECTION_INSET` short of half a window (§9.1,
|
|
150
|
+
* "Selection"): the windows move a step at a time, the boxes with the anchor, so the blend between
|
|
151
|
+
* cascades moves as the anchor does.
|
|
156
152
|
*
|
|
157
153
|
* **A frame's lifetime** ({@link graph_update}, §8.3, §8.5): retire frees the probes whose points left
|
|
158
154
|
* their windows and those the last frame's schedule evicted, the wants mark the cages they read, admit
|
|
@@ -238,6 +234,12 @@ export class GPUProbeClipmap {
|
|
|
238
234
|
/** The frame {@link place} or {@link place_within} last placed the windows in, of {@link graph_update}'s count. */
|
|
239
235
|
#placed_frame = -1;
|
|
240
236
|
|
|
237
|
+
/** Where {@link place} or {@link place_within} last placed the windows around, world metres: the selection boxes' centre. */
|
|
238
|
+
#anchor = new Float32Array(3);
|
|
239
|
+
|
|
240
|
+
/** A selection box's half side, in this clipmap's cells, as the windows were last placed. */
|
|
241
|
+
#select_half = 0;
|
|
242
|
+
|
|
241
243
|
/** @type {GPUTexture} */
|
|
242
244
|
#indirection;
|
|
243
245
|
|
|
@@ -315,6 +317,12 @@ export class GPUProbeClipmap {
|
|
|
315
317
|
#ray_resampling = false;
|
|
316
318
|
#accumulate_switches = ShaderSwitchSet.EMPTY;
|
|
317
319
|
|
|
320
|
+
/**
|
|
321
|
+
* What binds the brick material's planes for the shade, as the frame's update was given it.
|
|
322
|
+
* @type {{write_bindings: function(Object): Object}|null}
|
|
323
|
+
*/
|
|
324
|
+
#material = null;
|
|
325
|
+
|
|
318
326
|
/** The listed probes' projected rows, n_r a probe, as many as the trace list holds. @type {GPUBuffer|null} */
|
|
319
327
|
#projection = null;
|
|
320
328
|
|
|
@@ -374,6 +382,12 @@ export class GPUProbeClipmap {
|
|
|
374
382
|
#starved = 0;
|
|
375
383
|
#grow_pending = false;
|
|
376
384
|
|
|
385
|
+
/**
|
|
386
|
+
* The frame the capacity last grew in. A reading recorded before it asked for what that growth gave, so
|
|
387
|
+
* only a count that moved in a frame at or after it grows the capacity again.
|
|
388
|
+
*/
|
|
389
|
+
#grown_frame = -1;
|
|
390
|
+
|
|
377
391
|
/** Frames recorded: the clock the records keep. */
|
|
378
392
|
#frame = 0;
|
|
379
393
|
|
|
@@ -391,7 +405,7 @@ export class GPUProbeClipmap {
|
|
|
391
405
|
#levels_f32 = new Float32Array(this.#levels_data);
|
|
392
406
|
|
|
393
407
|
#retire_settings = { capacity: 0, resolution: 0, frame: 0 };
|
|
394
|
-
#want_settings = { cascade_count: 0, resolution: 0, frame: 0, wanted_capacity: 0 };
|
|
408
|
+
#want_settings = { cascade_count: 0, resolution: 0, frame: 0, wanted_capacity: 0, anchor: new Float32Array(3), select_half: 0 };
|
|
395
409
|
#admit_command_settings = { wanted_capacity: 0 };
|
|
396
410
|
#admit_settings = { capacity: 0, resolution: 0, wanted_capacity: 0, frame: 0 };
|
|
397
411
|
#schedule_settings = { capacity: 0, wanted_capacity: 0, trace_capacity: 0, slack: 0 };
|
|
@@ -439,14 +453,11 @@ export class GPUProbeClipmap {
|
|
|
439
453
|
|
|
440
454
|
/**
|
|
441
455
|
* The frame's scene: its light database, the suns the rays' hits trace shadows toward; its environment,
|
|
442
|
-
* what a miss sees
|
|
456
|
+
* what a miss sees.
|
|
443
457
|
* @type {import("../../../scene/GPUSceneContext.js").GPUSceneContext|null}
|
|
444
458
|
*/
|
|
445
459
|
#scene = null;
|
|
446
460
|
|
|
447
|
-
/** The frame's row → card set table. @type {GPUBuffer|null} */
|
|
448
|
-
#card_rows = null;
|
|
449
|
-
|
|
450
461
|
/**
|
|
451
462
|
* @param {GPUDevice} device
|
|
452
463
|
* @param {object} options
|
|
@@ -454,7 +465,9 @@ export class GPUProbeClipmap {
|
|
|
454
465
|
* the record's cascade field, {@link PROBE_RECORD_CASCADE_SHIFT}
|
|
455
466
|
* @param {number} options.resolution a power of two, at most 1024: the order's Morton code takes 10 bits
|
|
456
467
|
* an axis; the indirection's height, resolution · cascade_count, at most the device's
|
|
457
|
-
* `maxTextureDimension3D
|
|
468
|
+
* `maxTextureDimension3D`; past twice {@link PROBE_SELECTION_INSET}, so a selection box holds points;
|
|
469
|
+
* and with more than one cascade, from 8, so the nesting never holds a window further from the anchor
|
|
470
|
+
* than the inset allows (§9.1, "Selection")
|
|
458
471
|
* @param {number} options.spacing metres
|
|
459
472
|
* @param {number} options.radiance_resolution a power of two from 2, which the update's bit-reversed
|
|
460
473
|
* walk of the texels needs
|
|
@@ -474,6 +487,11 @@ export class GPUProbeClipmap {
|
|
|
474
487
|
// the order's key: the cascade above the Morton code of a lattice point in its window
|
|
475
488
|
assert.lessThanOrEqual(3 * ceil_log2(resolution) + ceil_log2(cascade_count), 32, 'the order key fits a word');
|
|
476
489
|
assert.lessThanOrEqual(resolution * cascade_count, device.limits.maxTextureDimension3D, "resolution · cascade_count, the indirection's height, past maxTextureDimension3D");
|
|
490
|
+
assert.greaterThan(resolution / 2, PROBE_SELECTION_INSET, 'resolution: a selection box, N/2 less PROBE_SELECTION_INSET cells a side, holds no point');
|
|
491
|
+
// a child's centre may sit N/2 less the nest margin from its parent's; the child lags the anchor by up to
|
|
492
|
+
// half a step and the hysteresis, the parent by twice that in child cells
|
|
493
|
+
assert.ok(cascade_count === 1 || resolution / 2 - 2 * PROBE_CASCADE_NEST_MARGIN >= 3 * (PROBE_CASCADE_STEP / 2 + PROBE_CASCADE_HYSTERESIS),
|
|
494
|
+
'resolution: the nesting would hold a window further from the anchor than PROBE_SELECTION_INSET allows');
|
|
477
495
|
assert.isFinite(spacing, 'spacing');
|
|
478
496
|
assert.greaterThan(spacing, 0, 'spacing');
|
|
479
497
|
assert.isPositiveInteger(radiance_resolution, 'radiance_resolution');
|
|
@@ -685,8 +703,8 @@ export class GPUProbeClipmap {
|
|
|
685
703
|
}
|
|
686
704
|
|
|
687
705
|
/**
|
|
688
|
-
* Place the windows around the anchor, coarsest first, each a parent cell inside its parent,
|
|
689
|
-
* frame's {@link graph_update}.
|
|
706
|
+
* Place the windows around the anchor, coarsest first, each a parent cell inside its parent, and the
|
|
707
|
+
* selection boxes on the anchor, for the frame's {@link graph_update}.
|
|
690
708
|
*
|
|
691
709
|
* @param {number} x the anchor, world metres
|
|
692
710
|
* @param {number} y
|
|
@@ -700,11 +718,11 @@ export class GPUProbeClipmap {
|
|
|
700
718
|
const placement = this.#placement;
|
|
701
719
|
const n = this.resolution;
|
|
702
720
|
|
|
721
|
+
// the whole stack each frame: every window by the hysteretic rule, each clamped into its parent's new
|
|
722
|
+
// window alone, so none is held by a child's last one and each stays within the hysteresis of the anchor,
|
|
723
|
+
// which the selection boxes' inset takes
|
|
703
724
|
placement.begin();
|
|
704
|
-
|
|
705
|
-
for (let c = this.cascade_count - 1; c >= 0; c--) {
|
|
706
|
-
placement.place(c, x, y, z);
|
|
707
|
-
}
|
|
725
|
+
placement.place_all(x, y, z);
|
|
708
726
|
|
|
709
727
|
for (let c = 0; c < this.cascade_count; c++) {
|
|
710
728
|
const level = (c * CLIPMAP_LEVEL_STRUCT.aligned_size) >>> 2;
|
|
@@ -718,6 +736,11 @@ export class GPUProbeClipmap {
|
|
|
718
736
|
this.#levels_f32[level + 3] = placement.cell_size(c);
|
|
719
737
|
}
|
|
720
738
|
|
|
739
|
+
this.#anchor[0] = x;
|
|
740
|
+
this.#anchor[1] = y;
|
|
741
|
+
this.#anchor[2] = z;
|
|
742
|
+
this.#select_half = n / 2 - PROBE_SELECTION_INSET;
|
|
743
|
+
|
|
721
744
|
this.#placed_frame = this.#frame;
|
|
722
745
|
}
|
|
723
746
|
|
|
@@ -725,7 +748,8 @@ export class GPUProbeClipmap {
|
|
|
725
748
|
* Take another clipmap's windows, as {@link place} last placed them, at 2^k this clipmap's lattice
|
|
726
749
|
* (WORLD_PROBE_CACHE_SCOPE_2026_11_01.md §1.2): the same cascades, each the other's window and spacing over
|
|
727
750
|
* 2^k, its corner 2^k the other's, so every point of the other's lattice is one of this clipmap's and the
|
|
728
|
-
* two scroll together. k is the ratio of the resolutions, a power of two from 2.
|
|
751
|
+
* two scroll together. k is the ratio of the resolutions, a power of two from 2. The selection boxes are the
|
|
752
|
+
* other's too: the same anchor, the same half side in metres.
|
|
729
753
|
*
|
|
730
754
|
* @param {GPUProbeClipmap} clipmap placed this frame
|
|
731
755
|
*/
|
|
@@ -753,6 +777,10 @@ export class GPUProbeClipmap {
|
|
|
753
777
|
this.#levels_f32[level + 3] = this.cell_size(c);
|
|
754
778
|
}
|
|
755
779
|
|
|
780
|
+
// the other's boxes, in this clipmap's cells
|
|
781
|
+
this.#anchor.set(clipmap.#anchor);
|
|
782
|
+
this.#select_half = clipmap.#select_half * ratio;
|
|
783
|
+
|
|
756
784
|
this.#placed_frame = this.#frame;
|
|
757
785
|
}
|
|
758
786
|
|
|
@@ -772,8 +800,9 @@ export class GPUProbeClipmap {
|
|
|
772
800
|
* @param {number} options.bricks the graph handle of the brick clipmap's last write this frame, which
|
|
773
801
|
* the update orders after
|
|
774
802
|
* @param {import("../../../scene/GPUSceneContext.js").GPUSceneContext} options.scene the scene the rays
|
|
775
|
-
* light
|
|
776
|
-
* @param {
|
|
803
|
+
* light: its lights and its environment
|
|
804
|
+
* @param {{write_bindings: function(Object): Object}} options.material what binds the brick material's planes
|
|
805
|
+
* for the shade (`GPUBrickMaterial#write_bindings`): the material the bricks carry
|
|
777
806
|
* @param {boolean} options.history_resampling whether each update re-samples its neighbours' histories, adding
|
|
778
807
|
* what they have seen to its rays (`shader_probe_clipmap_resample`); never where the radiance has no skirt
|
|
779
808
|
* @param {boolean} options.ray_resampling whether each update re-samples one neighbour's rays of the frame,
|
|
@@ -786,7 +815,7 @@ export class GPUProbeClipmap {
|
|
|
786
815
|
* tone curve, a single f32, as the last frame was shown: the exposure the probes' estimators state their
|
|
787
816
|
* thresholds in
|
|
788
817
|
*/
|
|
789
|
-
graph_update({ graph, wants, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene,
|
|
818
|
+
graph_update({ graph, wants, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene, material, history_resampling, ray_resampling, clusters, bounce_first, bounce_fallback, exposure }) {
|
|
790
819
|
assert.defined(graph, 'graph');
|
|
791
820
|
assert.defined(wants, 'wants');
|
|
792
821
|
assert.isFinite(response_frames, 'response_frames');
|
|
@@ -796,7 +825,7 @@ export class GPUProbeClipmap {
|
|
|
796
825
|
assert.defined(brick_clipmap, 'brick_clipmap');
|
|
797
826
|
assert.isNonNegativeInteger(bricks, 'bricks');
|
|
798
827
|
assert.defined(scene, 'scene');
|
|
799
|
-
assert.
|
|
828
|
+
assert.isFunction(material?.write_bindings, 'material.write_bindings');
|
|
800
829
|
assert.isBoolean(history_resampling, 'history_resampling');
|
|
801
830
|
assert.ok(!history_resampling || this.radiance_skirt, 'history_resampling taps the neighbours\' radiance, which a clipmap without a skirt cannot');
|
|
802
831
|
assert.isBoolean(ray_resampling, 'ray_resampling');
|
|
@@ -811,6 +840,7 @@ export class GPUProbeClipmap {
|
|
|
811
840
|
if (this.#grow_pending) {
|
|
812
841
|
this.#grow_pending = false;
|
|
813
842
|
this.#grow();
|
|
843
|
+
this.#grown_frame = this.#frame;
|
|
814
844
|
}
|
|
815
845
|
|
|
816
846
|
const trace_capacity = Math.floor(ray_budget / rays_per_probe);
|
|
@@ -842,6 +872,8 @@ export class GPUProbeClipmap {
|
|
|
842
872
|
this.#sampling_f32[SAMPLING_RADIANCE_TEXEL] = 1 / radiance_texture.width;
|
|
843
873
|
this.#sampling_f32[SAMPLING_RADIANCE_TEXEL + 1] = 1 / radiance_texture.height;
|
|
844
874
|
this.#sampling_f32[SAMPLING_RADIANCE_TILES_PER_ROW_RECIPROCAL] = 1 / this.#radiance.tiles_per_row;
|
|
875
|
+
this.#sampling_f32.set(this.#anchor, SAMPLING_ANCHOR);
|
|
876
|
+
this.#sampling_f32[SAMPLING_SELECT_HALF] = this.#select_half;
|
|
845
877
|
|
|
846
878
|
this.#device.queue.writeBuffer(this.#sampling, 0, this.#sampling_data);
|
|
847
879
|
|
|
@@ -855,6 +887,8 @@ export class GPUProbeClipmap {
|
|
|
855
887
|
this.#ensure_wanted(Math.min(this.#key_count, wants.wanted_bound()));
|
|
856
888
|
|
|
857
889
|
this.#want_settings.wanted_capacity = this.#wanted_capacity;
|
|
890
|
+
this.#want_settings.anchor.set(this.#anchor);
|
|
891
|
+
this.#want_settings.select_half = this.#select_half;
|
|
858
892
|
|
|
859
893
|
|
|
860
894
|
this.#admit_command_settings.wanted_capacity = this.#wanted_capacity;
|
|
@@ -963,7 +997,7 @@ export class GPUProbeClipmap {
|
|
|
963
997
|
|
|
964
998
|
this.#brick_clipmap = brick_clipmap;
|
|
965
999
|
this.#scene = scene;
|
|
966
|
-
this.#
|
|
1000
|
+
this.#material = material;
|
|
967
1001
|
|
|
968
1002
|
this.#wants = wants;
|
|
969
1003
|
this.#bounce_first = bounce_first;
|
|
@@ -991,6 +1025,8 @@ export class GPUProbeClipmap {
|
|
|
991
1025
|
update.make_side_effect();
|
|
992
1026
|
|
|
993
1027
|
// an admission the free list could not serve grows the capacity, from a later frame
|
|
1028
|
+
const read_frame = this.#frame;
|
|
1029
|
+
|
|
994
1030
|
graph_read_buffer({ graph, buffer: update_data.counters, offset: 4 * PROBE_COUNTER_STARVED, size: 4 })
|
|
995
1031
|
.then(reference => {
|
|
996
1032
|
try {
|
|
@@ -998,7 +1034,7 @@ export class GPUProbeClipmap {
|
|
|
998
1034
|
|
|
999
1035
|
if (!this.#destroyed && starved !== this.#starved) {
|
|
1000
1036
|
this.#starved = starved;
|
|
1001
|
-
this.#grow_pending
|
|
1037
|
+
this.#grow_pending ||= read_frame >= this.#grown_frame;
|
|
1002
1038
|
}
|
|
1003
1039
|
} finally {
|
|
1004
1040
|
reference.release();
|
|
@@ -1353,19 +1389,11 @@ export class GPUProbeClipmap {
|
|
|
1353
1389
|
command_offset: 4 * PROBE_DISPATCH_RAYS,
|
|
1354
1390
|
});
|
|
1355
1391
|
|
|
1356
|
-
// what each ray brings back: the
|
|
1357
|
-
const sdf = scene.geometries.sdf;
|
|
1358
|
-
const cards = sdf.cards;
|
|
1359
|
-
|
|
1360
|
-
sdf.write_bindings(b);
|
|
1361
|
-
|
|
1362
|
-
b.scene_database = scene.scene_database_buffer;
|
|
1363
|
-
b.mesh_card_rows = this.#card_rows;
|
|
1364
|
-
b.mesh_card_sets = cards.records;
|
|
1365
|
-
b.mesh_card_albedo = cards.atlas.texture_at(0).obtainView();
|
|
1366
|
-
b.mesh_card_emissive = cards.atlas.texture_at(1).obtainView();
|
|
1392
|
+
// what each ray brings back: the material planes taken now, since they are replaced as they grow
|
|
1367
1393
|
b.tEnvironment = lights.environment.obtainView();
|
|
1368
1394
|
|
|
1395
|
+
this.#material.write_bindings(b);
|
|
1396
|
+
|
|
1369
1397
|
shader_probe_clipmap_shade.dispatchIndirect({
|
|
1370
1398
|
encoder,
|
|
1371
1399
|
bindings: b,
|
|
@@ -196,7 +196,7 @@ export const PROBE_RELOCATION_STEPS: number;
|
|
|
196
196
|
*/
|
|
197
197
|
export const PROBE_RAY_ORIGIN_JITTER: number;
|
|
198
198
|
/**
|
|
199
|
-
* The stream
|
|
199
|
+
* The stream that seeds a texel's jitter sequences (`probe_clipmap_ray_jitter`), which place its rays inside it.
|
|
200
200
|
* @type {number}
|
|
201
201
|
*/
|
|
202
202
|
export const PROBE_RAY_NOISE_JITTER: number;
|
|
@@ -382,6 +382,26 @@ export const PROBE_RECEIVER_BIAS: number;
|
|
|
382
382
|
* @type {number}
|
|
383
383
|
*/
|
|
384
384
|
export const PROBE_RECEIVER_BIAS_VIEW: number;
|
|
385
|
+
/**
|
|
386
|
+
* Corner steps of a probe cascade's window: one lattice cell, as the bricks' (§8.1).
|
|
387
|
+
* @type {number}
|
|
388
|
+
*/
|
|
389
|
+
export const PROBE_CASCADE_STEP: number;
|
|
390
|
+
/**
|
|
391
|
+
* Cells past half a step the anchor goes from a window's centre before it moves: the bricks' value.
|
|
392
|
+
* @type {number}
|
|
393
|
+
*/
|
|
394
|
+
export const PROBE_CASCADE_HYSTERESIS: number;
|
|
395
|
+
/**
|
|
396
|
+
* Cells a cascade's selection box keeps inside half its window's N lattice points, measured from the anchor
|
|
397
|
+
* (§9.1, "Selection"): the cage window's far face sits one cell short of N/2 past the window's centre, the
|
|
398
|
+
* window's centre lags the anchor by up to half a step and the hysteresis, and the receiver bias moves a
|
|
399
|
+
* point up to its length. A box of N/2 less this around the anchor holds every point whose biased cage is in
|
|
400
|
+
* the window, as `GPUProbeClipmap` places the whole stack each frame and so holds every window within the
|
|
401
|
+
* hysteresis of the anchor.
|
|
402
|
+
* @type {number}
|
|
403
|
+
*/
|
|
404
|
+
export const PROBE_SELECTION_INSET: number;
|
|
385
405
|
/**
|
|
386
406
|
* The neighbours a radiance texel re-samples an update when the frame re-samples (`shader_probe_clipmap_resample`):
|
|
387
407
|
* distinct ones of the probe's 26 in its cascade's 3×3×3, picked afresh each update. Enshrouded's 4:1.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PROBE_CLIPMAP.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PROBE_CLIPMAP.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js"],"names":[],"mappings":"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"}
|
|
@@ -230,7 +230,7 @@ export const PROBE_RELOCATION_STEPS = 3;
|
|
|
230
230
|
export const PROBE_RAY_ORIGIN_JITTER = 1 / 16;
|
|
231
231
|
|
|
232
232
|
/**
|
|
233
|
-
* The stream
|
|
233
|
+
* The stream that seeds a texel's jitter sequences (`probe_clipmap_ray_jitter`), which place its rays inside it.
|
|
234
234
|
* @type {number}
|
|
235
235
|
*/
|
|
236
236
|
export const PROBE_RAY_NOISE_JITTER = 0x510E527F;
|
|
@@ -488,6 +488,29 @@ export const PROBE_RECEIVER_BIAS = 0.1;
|
|
|
488
488
|
*/
|
|
489
489
|
export const PROBE_RECEIVER_BIAS_VIEW = 0.2;
|
|
490
490
|
|
|
491
|
+
/**
|
|
492
|
+
* Corner steps of a probe cascade's window: one lattice cell, as the bricks' (§8.1).
|
|
493
|
+
* @type {number}
|
|
494
|
+
*/
|
|
495
|
+
export const PROBE_CASCADE_STEP = 1;
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* Cells past half a step the anchor goes from a window's centre before it moves: the bricks' value.
|
|
499
|
+
* @type {number}
|
|
500
|
+
*/
|
|
501
|
+
export const PROBE_CASCADE_HYSTERESIS = 0.1;
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Cells a cascade's selection box keeps inside half its window's N lattice points, measured from the anchor
|
|
505
|
+
* (§9.1, "Selection"): the cage window's far face sits one cell short of N/2 past the window's centre, the
|
|
506
|
+
* window's centre lags the anchor by up to half a step and the hysteresis, and the receiver bias moves a
|
|
507
|
+
* point up to its length. A box of N/2 less this around the anchor holds every point whose biased cage is in
|
|
508
|
+
* the window, as `GPUProbeClipmap` places the whole stack each frame and so holds every window within the
|
|
509
|
+
* hysteresis of the anchor.
|
|
510
|
+
* @type {number}
|
|
511
|
+
*/
|
|
512
|
+
export const PROBE_SELECTION_INSET = 1 + PROBE_CASCADE_STEP / 2 + PROBE_CASCADE_HYSTERESIS + PROBE_RECEIVER_BIAS;
|
|
513
|
+
|
|
491
514
|
/**
|
|
492
515
|
* The neighbours a radiance texel re-samples an update when the frame re-samples (`shader_probe_clipmap_resample`):
|
|
493
516
|
* distinct ones of the probe's 26 in its cascade's 3×3×3, picked afresh each update. Enshrouded's 4:1.
|