@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
|
@@ -3,6 +3,7 @@ import { graph_build_hzb } from "../../hiz/graph_build_hzb.js";
|
|
|
3
3
|
import { HierarchicalZBuffer } from "../../hiz/HierarchicalZBuffer.js";
|
|
4
4
|
import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
|
|
5
5
|
import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
|
|
6
|
+
import { graph_create_buffer } from "../../shader/graph/graph_create_buffer.js";
|
|
6
7
|
import { graph_import_texture } from "../../shader/graph/graph_import_texture.js";
|
|
7
8
|
import { graph_record_stat } from "../../util/graph_record_stat.js";
|
|
8
9
|
import { enquire_mesh_frustum_cull_pipelines, graph_mesh_frustum_cull } from "../compute/graph_mesh_frustum_cull.js";
|
|
@@ -12,6 +13,7 @@ import {
|
|
|
12
13
|
graph_meshes_classify_buckets
|
|
13
14
|
} from "../expand/bucket/mesh/graph_meshes_classify_buckets.js";
|
|
14
15
|
import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
|
|
16
|
+
import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
|
|
15
17
|
import { graph_rasterize_meshes_alpha_tested } from "../native/graph_rasterize_meshes_alpha_tested.js";
|
|
16
18
|
import { enquire_rasterize_partial_opaque_pipelines, graph_rasterize_partial_opaque } from "./graph_rasterize_partial_opaque.js";
|
|
17
19
|
import {
|
|
@@ -51,8 +53,10 @@ export function enquire_rasterize_scene_pipelines(enquiry, opaque_pass, cull_pol
|
|
|
51
53
|
* @param {FrameGraph} options.graph
|
|
52
54
|
* @param {RasterizationJob} options.job
|
|
53
55
|
* @param {GPUCollectionLimits} options.limits
|
|
54
|
-
* @returns {{buckets: number, depth: number, color_targets: number[]}} the render
|
|
55
|
-
*
|
|
56
|
+
* @returns {{buckets: number, depth: number, color_targets: number[], visible_meshlets: number}} the render
|
|
57
|
+
* buckets buffer, the depth and colour targets as this pipeline left them, and — when the job's passes write
|
|
58
|
+
* visible-meshlet slots, as the visibility raster's do — the frame's visible-meshlet table, which resolves
|
|
59
|
+
* them (-1 otherwise)
|
|
56
60
|
*/
|
|
57
61
|
export function graph_rasterize_scene({
|
|
58
62
|
graph,
|
|
@@ -101,6 +105,28 @@ export function graph_rasterize_scene({
|
|
|
101
105
|
raster_color_targets[i] = graph_import_texture(graph, texture, `out_color/${i}`);
|
|
102
106
|
}
|
|
103
107
|
|
|
108
|
+
/*
|
|
109
|
+
Every draw of a pass that writes visible-meshlet slots appends its meshlets to one table for the frame
|
|
110
|
+
and draws them from there, so the slot a pixel holds names its meshlet for every later reader. Sized as
|
|
111
|
+
the collections are, by what the frames before asked for, and never smaller than a meshlet collection:
|
|
112
|
+
any one list drawn into it can be that long. The table's own stat is the limits' last column, whose
|
|
113
|
+
growth is set back whenever an earlier column grows, while the collection's tracks the lists'.
|
|
114
|
+
*/
|
|
115
|
+
assert.equal(job.alpha_tested_pass === undefined || job.alpha_tested_pass.visible_meshlet_slots === job.opaque_pass.visible_meshlet_slots, true, 'both passes of a job write visible-meshlet slots, or neither does');
|
|
116
|
+
|
|
117
|
+
let gr_visible_meshlets = -1;
|
|
118
|
+
|
|
119
|
+
if (job.opaque_pass.visible_meshlet_slots) {
|
|
120
|
+
gr_visible_meshlets = graph_create_buffer(graph, "visible meshlets", BufferResourceDescriptor.from(
|
|
121
|
+
Math.max(
|
|
122
|
+
limits.compute_buffer_size(RasterizationCollectionType.VisibleMeshlets),
|
|
123
|
+
limits.compute_buffer_size(RasterizationCollectionType.Meshlets),
|
|
124
|
+
),
|
|
125
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
126
|
+
0, 16 // clear count
|
|
127
|
+
));
|
|
128
|
+
}
|
|
129
|
+
|
|
104
130
|
const gr_culled_meshes = graph_mesh_frustum_cull({
|
|
105
131
|
graph,
|
|
106
132
|
camera: gr_camera_current,
|
|
@@ -124,6 +150,7 @@ export function graph_rasterize_scene({
|
|
|
124
150
|
meshlets_maybe: gr_meshlet_maybe,
|
|
125
151
|
depth: gr_depth_opaque_partial,
|
|
126
152
|
color_targets: gr_color_opaque_partial,
|
|
153
|
+
visible_meshlets: gr_visible_meshlets_partial,
|
|
127
154
|
} = graph_rasterize_partial_opaque({
|
|
128
155
|
graph,
|
|
129
156
|
buckets: gr_render_buckets,
|
|
@@ -137,11 +164,13 @@ export function graph_rasterize_scene({
|
|
|
137
164
|
viewport,
|
|
138
165
|
active_buckets,
|
|
139
166
|
cull_policy: job.cull_policy,
|
|
167
|
+
visible_meshlets: gr_visible_meshlets,
|
|
140
168
|
});
|
|
141
169
|
|
|
142
170
|
|
|
143
171
|
gr_texture_depth = gr_depth_opaque_partial;
|
|
144
172
|
raster_color_targets = gr_color_opaque_partial;
|
|
173
|
+
gr_visible_meshlets = gr_visible_meshlets_partial;
|
|
145
174
|
|
|
146
175
|
// build HZB of "likely visible" meshlets
|
|
147
176
|
gr_texture_hzb = graph_build_hzb({
|
|
@@ -155,6 +184,7 @@ export function graph_rasterize_scene({
|
|
|
155
184
|
const {
|
|
156
185
|
depth: gr_depth_opaque_full,
|
|
157
186
|
color_targets: gr_color_opaque_full,
|
|
187
|
+
visible_meshlets: gr_visible_meshlets_full,
|
|
158
188
|
} = graph_rasterize_remaining_opaque({
|
|
159
189
|
graph,
|
|
160
190
|
limits,
|
|
@@ -169,10 +199,12 @@ export function graph_rasterize_scene({
|
|
|
169
199
|
render_pass_descriptor: job.opaque_pass,
|
|
170
200
|
viewport,
|
|
171
201
|
cull_policy: job.cull_policy,
|
|
202
|
+
visible_meshlets: gr_visible_meshlets,
|
|
172
203
|
});
|
|
173
204
|
|
|
174
205
|
gr_texture_depth = gr_depth_opaque_full;
|
|
175
206
|
raster_color_targets = gr_color_opaque_full;
|
|
207
|
+
gr_visible_meshlets = gr_visible_meshlets_full;
|
|
176
208
|
|
|
177
209
|
// HZB of full opaque
|
|
178
210
|
gr_texture_hzb = graph_build_hzb({
|
|
@@ -209,10 +241,12 @@ export function graph_rasterize_scene({
|
|
|
209
241
|
raster_color_targets,
|
|
210
242
|
depth: gr_texture_depth,
|
|
211
243
|
hzb: gr_texture_hzb,
|
|
244
|
+
visible_meshlets: gr_visible_meshlets,
|
|
212
245
|
});
|
|
213
246
|
|
|
214
247
|
gr_texture_depth = alpha_tested_front.depth;
|
|
215
248
|
raster_color_targets = alpha_tested_front.color_targets;
|
|
249
|
+
gr_visible_meshlets = alpha_tested_front.visible_meshlets;
|
|
216
250
|
|
|
217
251
|
const alpha_tested_double = graph_rasterize_meshes_alpha_tested({
|
|
218
252
|
graph,
|
|
@@ -228,10 +262,12 @@ export function graph_rasterize_scene({
|
|
|
228
262
|
raster_color_targets,
|
|
229
263
|
depth: gr_texture_depth,
|
|
230
264
|
hzb: gr_texture_hzb,
|
|
265
|
+
visible_meshlets: gr_visible_meshlets,
|
|
231
266
|
});
|
|
232
267
|
|
|
233
268
|
gr_texture_depth = alpha_tested_double.depth;
|
|
234
269
|
raster_color_targets = alpha_tested_double.color_targets;
|
|
270
|
+
gr_visible_meshlets = alpha_tested_double.visible_meshlets;
|
|
235
271
|
|
|
236
272
|
if (alpha_tested_front.executed || alpha_tested_double.executed) {
|
|
237
273
|
|
|
@@ -246,6 +282,10 @@ export function graph_rasterize_scene({
|
|
|
246
282
|
}
|
|
247
283
|
}
|
|
248
284
|
|
|
285
|
+
if (gr_visible_meshlets !== -1) {
|
|
286
|
+
graph_record_stat(graph, limits.stats, RasterizationCollectionType.VisibleMeshlets, gr_visible_meshlets);
|
|
287
|
+
}
|
|
288
|
+
|
|
249
289
|
graph.pop_scope();
|
|
250
290
|
|
|
251
291
|
/*
|
|
@@ -261,5 +301,6 @@ export function graph_rasterize_scene({
|
|
|
261
301
|
buckets: gr_render_buckets,
|
|
262
302
|
depth: gr_texture_depth,
|
|
263
303
|
color_targets: raster_color_targets,
|
|
304
|
+
visible_meshlets: gr_visible_meshlets,
|
|
264
305
|
};
|
|
265
306
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The visibility buffer's format: one `u32` a pixel, `slot << VISIBILITY_TRIANGLE_BITS | triangle`. `slot` is
|
|
3
|
+
* the pixel's meshlet's place in the frame's visible-meshlet table, which says the meshlet and the mesh row
|
|
4
|
+
* it was drawn for (`chunk_visibility_decode`); `triangle` is the triangle within that meshlet.
|
|
5
|
+
*
|
|
6
|
+
* @type {GPUTextureFormat}
|
|
7
|
+
*/
|
|
8
|
+
export const VISIBILITY_FORMAT: GPUTextureFormat;
|
|
9
|
+
/**
|
|
10
|
+
* Bits of a visibility word that hold the triangle within its meshlet, below the slot.
|
|
11
|
+
*
|
|
12
|
+
* @type {number}
|
|
13
|
+
*/
|
|
14
|
+
export const VISIBILITY_TRIANGLE_BITS: number;
|
|
15
|
+
/**
|
|
16
|
+
* How many slots the visible-meshlet table can hold: every value the bits above the triangle reach, less
|
|
17
|
+
* the last, which {@link VISIBILITY_NONE} takes.
|
|
18
|
+
*
|
|
19
|
+
* @type {number}
|
|
20
|
+
*/
|
|
21
|
+
export const VISIBLE_MESHLET_SLOT_LIMIT: number;
|
|
22
|
+
/**
|
|
23
|
+
* What a pixel no surface covers holds, and what the visibility buffer is cleared to: the first word of the
|
|
24
|
+
* slot past every slot the table can hold. A 32-bit float holds it exactly, as a clear value has to be —
|
|
25
|
+
* `RenderPassColorAttachmentDescriptor` keeps one in a `Float32Array`, where every bit set would round up
|
|
26
|
+
* to 2^32.
|
|
27
|
+
*
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
export const VISIBILITY_NONE: number;
|
|
31
|
+
/**
|
|
32
|
+
* Where the table's elements start, counted in meshlet definitions from the start of its buffer. The table
|
|
33
|
+
* is a meshlet collection, a count before the elements; a pass that binds the whole buffer as a bare array
|
|
34
|
+
* of definitions — as the alpha-tested raster binds its lists — finds slot `s` at `s` plus this.
|
|
35
|
+
*
|
|
36
|
+
* @type {number}
|
|
37
|
+
*/
|
|
38
|
+
export const VISIBLE_MESHLETS_ARRAY_OFFSET: number;
|
|
39
|
+
//# sourceMappingURL=VISIBILITY_BUFFER.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VISIBILITY_BUFFER.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,iDAA2C;AAE3C;;;;GAIG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;;;GAKG;AACH,yCAFU,MAAM,CAEmE;AAEnF;;;;;;;GAOG;AACH,8BAFU,MAAM,CAE0E;AAE1F;;;;;;GAMG;AACH,4CAFU,MAAM,CAE+G"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { MESHLET_DEFINITION_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_DEFINITION_STRUCT.js";
|
|
2
|
+
import { MESHLET_COLLECTION_STRUCT } from "../MESHLET_COLLECTION_STRUCT.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The visibility buffer's format: one `u32` a pixel, `slot << VISIBILITY_TRIANGLE_BITS | triangle`. `slot` is
|
|
6
|
+
* the pixel's meshlet's place in the frame's visible-meshlet table, which says the meshlet and the mesh row
|
|
7
|
+
* it was drawn for (`chunk_visibility_decode`); `triangle` is the triangle within that meshlet.
|
|
8
|
+
*
|
|
9
|
+
* @type {GPUTextureFormat}
|
|
10
|
+
*/
|
|
11
|
+
export const VISIBILITY_FORMAT = 'r32uint';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Bits of a visibility word that hold the triangle within its meshlet, below the slot.
|
|
15
|
+
*
|
|
16
|
+
* @type {number}
|
|
17
|
+
*/
|
|
18
|
+
export const VISIBILITY_TRIANGLE_BITS = 8;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* How many slots the visible-meshlet table can hold: every value the bits above the triangle reach, less
|
|
22
|
+
* the last, which {@link VISIBILITY_NONE} takes.
|
|
23
|
+
*
|
|
24
|
+
* @type {number}
|
|
25
|
+
*/
|
|
26
|
+
export const VISIBLE_MESHLET_SLOT_LIMIT = 2 ** (32 - VISIBILITY_TRIANGLE_BITS) - 1;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* What a pixel no surface covers holds, and what the visibility buffer is cleared to: the first word of the
|
|
30
|
+
* slot past every slot the table can hold. A 32-bit float holds it exactly, as a clear value has to be —
|
|
31
|
+
* `RenderPassColorAttachmentDescriptor` keeps one in a `Float32Array`, where every bit set would round up
|
|
32
|
+
* to 2^32.
|
|
33
|
+
*
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
export const VISIBILITY_NONE = VISIBLE_MESHLET_SLOT_LIMIT * 2 ** VISIBILITY_TRIANGLE_BITS;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Where the table's elements start, counted in meshlet definitions from the start of its buffer. The table
|
|
40
|
+
* is a meshlet collection, a count before the elements; a pass that binds the whole buffer as a bare array
|
|
41
|
+
* of definitions — as the alpha-tested raster binds its lists — finds slot `s` at `s` plus this.
|
|
42
|
+
*
|
|
43
|
+
* @type {number}
|
|
44
|
+
*/
|
|
45
|
+
export const VISIBLE_MESHLETS_ARRAY_OFFSET = MESHLET_COLLECTION_STRUCT.get('elements').offset / MESHLET_DEFINITION_STRUCT.size;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The frame's visible-meshlet table: every meshlet the view's raster drew into the visibility buffer, at
|
|
3
|
+
* the slot its pixels name. A meshlet collection, read-only to the passes that resolve pixels through it.
|
|
4
|
+
*
|
|
5
|
+
* @type {ShaderResourceDescriptor}
|
|
6
|
+
*/
|
|
7
|
+
export const VISIBLE_MESHLETS_RESOURCE: ShaderResourceDescriptor;
|
|
8
|
+
/**
|
|
9
|
+
* What a visibility word says of its pixel ({@link VISIBILITY_FORMAT}): the scene row of the mesh, the
|
|
10
|
+
* meshlet (a global meshlet index) and the triangle within it, through the frame's visible-meshlet table,
|
|
11
|
+
* bound as `visible_meshlets`.
|
|
12
|
+
*
|
|
13
|
+
* ```wgsl
|
|
14
|
+
* const VISIBILITY_NONE: u32
|
|
15
|
+
* struct VisibilityTexel { mesh: u32, meshlet: u32, triangle: u32 }
|
|
16
|
+
* fn visibility_decode(encoded: u32) -> VisibilityTexel
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Only for a word that is not `VISIBILITY_NONE`, which no surface covers.
|
|
20
|
+
*
|
|
21
|
+
* @type {CodeChunk}
|
|
22
|
+
*/
|
|
23
|
+
export const chunk_visibility_decode: CodeChunk;
|
|
24
|
+
import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
|
|
25
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
26
|
+
//# sourceMappingURL=chunk_visibility_decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_visibility_decode.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/chunk_visibility_decode.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wCAFU,wBAAwB,CAE6F;AAE/H;;;;;;;;;;;;;;GAcG;AACH,sCAFU,SAAS,CAmBjB;yCA5CuC,mDAAmD;0BADlE,oCAAoC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
2
|
+
import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
|
|
3
|
+
import { MESHLET_COLLECTION_STRUCT } from "../MESHLET_COLLECTION_STRUCT.js";
|
|
4
|
+
import { VISIBILITY_NONE, VISIBILITY_TRIANGLE_BITS } from "./VISIBILITY_BUFFER.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The frame's visible-meshlet table: every meshlet the view's raster drew into the visibility buffer, at
|
|
8
|
+
* the slot its pixels name. A meshlet collection, read-only to the passes that resolve pixels through it.
|
|
9
|
+
*
|
|
10
|
+
* @type {ShaderResourceDescriptor}
|
|
11
|
+
*/
|
|
12
|
+
export const VISIBLE_MESHLETS_RESOURCE = ShaderResourceDescriptor.storageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* What a visibility word says of its pixel ({@link VISIBILITY_FORMAT}): the scene row of the mesh, the
|
|
16
|
+
* meshlet (a global meshlet index) and the triangle within it, through the frame's visible-meshlet table,
|
|
17
|
+
* bound as `visible_meshlets`.
|
|
18
|
+
*
|
|
19
|
+
* ```wgsl
|
|
20
|
+
* const VISIBILITY_NONE: u32
|
|
21
|
+
* struct VisibilityTexel { mesh: u32, meshlet: u32, triangle: u32 }
|
|
22
|
+
* fn visibility_decode(encoded: u32) -> VisibilityTexel
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Only for a word that is not `VISIBILITY_NONE`, which no surface covers.
|
|
26
|
+
*
|
|
27
|
+
* @type {CodeChunk}
|
|
28
|
+
*/
|
|
29
|
+
export const chunk_visibility_decode = CodeChunk.from(
|
|
30
|
+
//language=WGSL
|
|
31
|
+
`
|
|
32
|
+
const VISIBILITY_NONE: u32 = ${VISIBILITY_NONE}u;
|
|
33
|
+
|
|
34
|
+
struct VisibilityTexel {
|
|
35
|
+
mesh: u32,
|
|
36
|
+
meshlet: u32,
|
|
37
|
+
triangle: u32,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
fn visibility_decode(encoded: u32) -> VisibilityTexel {
|
|
41
|
+
let meshlet = visible_meshlets.elements[encoded >> ${VISIBILITY_TRIANGLE_BITS}u];
|
|
42
|
+
|
|
43
|
+
return VisibilityTexel(meshlet.mesh, meshlet.index, encoded & ${2 ** VISIBILITY_TRIANGLE_BITS - 1}u);
|
|
44
|
+
}
|
|
45
|
+
`
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
chunk_visibility_decode.requireResource(VISIBLE_MESHLETS_RESOURCE);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reserve the slots of one list in the visible-meshlet table and write the commands that use them: `draw`
|
|
3
|
+
* draws the list's meshlets from the table, `instanceCount` of them from `firstInstance`, its first slot;
|
|
4
|
+
* `copy` dispatches {@link shader_visible_meshlets_copy} over them, one invocation a meshlet.
|
|
5
|
+
*
|
|
6
|
+
* The table's count is every slot asked for, as a meshlet collection's count is: a list past the table's
|
|
7
|
+
* end draws only what fits, and the count tells the collection limits how far to grow it.
|
|
8
|
+
*
|
|
9
|
+
* One invocation.
|
|
10
|
+
*
|
|
11
|
+
* @type {ComputeShader}
|
|
12
|
+
*/
|
|
13
|
+
export const shader_visible_meshlets_reserve: ComputeShader;
|
|
14
|
+
/**
|
|
15
|
+
* Copy a list's reserved meshlets into the visible-meshlet table, at the slots `draw` holds
|
|
16
|
+
* ({@link shader_visible_meshlets_reserve}). Dispatched indirectly by its `copy` command.
|
|
17
|
+
*
|
|
18
|
+
* @type {ComputeShader}
|
|
19
|
+
*/
|
|
20
|
+
export const shader_visible_meshlets_copy: ComputeShader;
|
|
21
|
+
/**
|
|
22
|
+
* {@link shader_visible_meshlets_copy} for a list kept as a bare array whose count is held elsewhere — the
|
|
23
|
+
* alpha-tested raster's, sorted by material, whose collection the reserve counts.
|
|
24
|
+
*
|
|
25
|
+
* @type {ComputeShader}
|
|
26
|
+
*/
|
|
27
|
+
export const shader_visible_meshlets_copy_array: ComputeShader;
|
|
28
|
+
/**
|
|
29
|
+
* Move per-material draw commands over a sorted list onto the list's copy in the visible-meshlet table:
|
|
30
|
+
* each command's range of the list becomes the same range of the slots `draw` holds, cut to the slots the
|
|
31
|
+
* copy filled. The draws bind the table's whole buffer as a bare array of definitions, which puts slot `s`
|
|
32
|
+
* at `s + ${VISIBLE_MESHLETS_ARRAY_OFFSET}` ({@link VISIBLE_MESHLETS_ARRAY_OFFSET}).
|
|
33
|
+
*
|
|
34
|
+
* One invocation a command.
|
|
35
|
+
*
|
|
36
|
+
* @type {ComputeShader}
|
|
37
|
+
*/
|
|
38
|
+
export const shader_visible_meshlets_offset_commands: ComputeShader;
|
|
39
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
40
|
+
//# sourceMappingURL=shader_visible_meshlets_append.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shader_visible_meshlets_append.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.js"],"names":[],"mappings":"AA4BA;;;;;;;;;;;GAWG;AACH,8CAFU,aAAa,CA8BpB;AAmCH;;;;;GAKG;AACH,2CAFU,aAAa,CAMpB;AASH;;;;;GAKG;AACH,iDAFU,aAAa,CAMpB;AAQH;;;;;;;;;GASG;AACH,sDAFU,aAAa,CAuBpB;8BAnK2B,+BAA+B"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { GEOMETRY_MESHLET_TRIANGLE_LIMIT } from "../../geometry/meshlet/GEOMETRY_MESHLET_TRIANGLE_LIMIT.js";
|
|
2
|
+
import { MESHLET_DEFINITION_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_DEFINITION_STRUCT.js";
|
|
3
|
+
import { chunk_folded_dispatch } from "../../gpu_primitive/indirect/chunk_folded_dispatch.js";
|
|
4
|
+
import { STRUCT_DISPATCH_COMPUTE_COMMAND } from "../../gpu_primitive/indirect/STRUCT_DISPATCH_COMPUTE_COMMAND.js";
|
|
5
|
+
import { STRUCT_UNINDEXED_DRAW_COMMAND } from "../../gpu_primitive/indirect/STRUCT_UNINDEXED_DRAW_COMMAND.js";
|
|
6
|
+
import { chunk_folded_workgroup_index } from "../../shader/chunk/grid/chunk_folded_workgroup_index.js";
|
|
7
|
+
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
8
|
+
import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
|
|
9
|
+
import { ComputeShader } from "../../shader/ComputeShader.js";
|
|
10
|
+
import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
11
|
+
import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
|
|
12
|
+
import { MESHLET_COLLECTION_STRUCT } from "../MESHLET_COLLECTION_STRUCT.js";
|
|
13
|
+
import { VISIBLE_MESHLET_SLOT_LIMIT, VISIBLE_MESHLETS_ARRAY_OFFSET } from "./VISIBILITY_BUFFER.js";
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
A draw into the visibility buffer takes its meshlets from the frame's visible-meshlet table, so that the
|
|
17
|
+
slot its pixels write names the meshlet for every later reader. Before each such draw its list is
|
|
18
|
+
appended to the table: one invocation reserves the slots, then the copy runs over the list.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const reserve_resources = new ShaderResourceSetDescriptor();
|
|
22
|
+
|
|
23
|
+
reserve_resources.createGroup()
|
|
24
|
+
.addStorageBuffer("input", MESHLET_COLLECTION_STRUCT)
|
|
25
|
+
.addStorageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT, true)
|
|
26
|
+
.addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND, true)
|
|
27
|
+
.addStorageBuffer("copy", STRUCT_DISPATCH_COMPUTE_COMMAND, true);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Reserve the slots of one list in the visible-meshlet table and write the commands that use them: `draw`
|
|
31
|
+
* draws the list's meshlets from the table, `instanceCount` of them from `firstInstance`, its first slot;
|
|
32
|
+
* `copy` dispatches {@link shader_visible_meshlets_copy} over them, one invocation a meshlet.
|
|
33
|
+
*
|
|
34
|
+
* The table's count is every slot asked for, as a meshlet collection's count is: a list past the table's
|
|
35
|
+
* end draws only what fits, and the count tells the collection limits how far to grow it.
|
|
36
|
+
*
|
|
37
|
+
* One invocation.
|
|
38
|
+
*
|
|
39
|
+
* @type {ComputeShader}
|
|
40
|
+
*/
|
|
41
|
+
export const shader_visible_meshlets_reserve = ComputeShader.from({
|
|
42
|
+
label: "Visible meshlets / reserve",
|
|
43
|
+
resources: reserve_resources,
|
|
44
|
+
body: CodeChunk.from(
|
|
45
|
+
//language=WGSL
|
|
46
|
+
`
|
|
47
|
+
@compute @workgroup_size(1)
|
|
48
|
+
fn main() {
|
|
49
|
+
let count = min(input.count, arrayLength(&input.elements));
|
|
50
|
+
|
|
51
|
+
let base = visible_meshlets.count;
|
|
52
|
+
let capacity = min(arrayLength(&visible_meshlets.elements), ${VISIBLE_MESHLET_SLOT_LIMIT}u);
|
|
53
|
+
let stored = select(0u, min(count, capacity - base), base < capacity);
|
|
54
|
+
|
|
55
|
+
visible_meshlets.count = base + count;
|
|
56
|
+
|
|
57
|
+
draw.vertexCount = ${GEOMETRY_MESHLET_TRIANGLE_LIMIT * 3}u;
|
|
58
|
+
draw.instanceCount = stored;
|
|
59
|
+
draw.firstVertex = 0u;
|
|
60
|
+
draw.firstInstance = base;
|
|
61
|
+
|
|
62
|
+
let groups = folded_dispatch((stored + ${COMPUTE_SHADER_DEFAULT_GROUP_SIZE - 1}u) / ${COMPUTE_SHADER_DEFAULT_GROUP_SIZE}u);
|
|
63
|
+
|
|
64
|
+
copy.workgroupCountX = groups.x;
|
|
65
|
+
copy.workgroupCountY = groups.y;
|
|
66
|
+
copy.workgroupCountZ = groups.z;
|
|
67
|
+
}
|
|
68
|
+
`, [chunk_folded_dispatch])
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The copy kernels' body: `source(i)` is the list's `i`-th meshlet.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} source
|
|
75
|
+
* @returns {CodeChunk}
|
|
76
|
+
*/
|
|
77
|
+
function copy_body(source) {
|
|
78
|
+
return CodeChunk.from(
|
|
79
|
+
//language=WGSL
|
|
80
|
+
`
|
|
81
|
+
@compute @workgroup_size(${COMPUTE_SHADER_DEFAULT_GROUP_SIZE})
|
|
82
|
+
fn main(
|
|
83
|
+
@builtin(workgroup_id) workgroup_id: vec3<u32>,
|
|
84
|
+
@builtin(local_invocation_index) local_index: u32,
|
|
85
|
+
) {
|
|
86
|
+
let i = folded_workgroup_index(workgroup_id) * ${COMPUTE_SHADER_DEFAULT_GROUP_SIZE}u + local_index;
|
|
87
|
+
|
|
88
|
+
if (i >= draw.instanceCount) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
visible_meshlets.elements[draw.firstInstance + i] = ${source};
|
|
93
|
+
}
|
|
94
|
+
`, [chunk_folded_workgroup_index]);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const copy_resources = new ShaderResourceSetDescriptor();
|
|
98
|
+
|
|
99
|
+
copy_resources.createGroup()
|
|
100
|
+
.addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND)
|
|
101
|
+
.addStorageBuffer("input", MESHLET_COLLECTION_STRUCT)
|
|
102
|
+
.addStorageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT, true);
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Copy a list's reserved meshlets into the visible-meshlet table, at the slots `draw` holds
|
|
106
|
+
* ({@link shader_visible_meshlets_reserve}). Dispatched indirectly by its `copy` command.
|
|
107
|
+
*
|
|
108
|
+
* @type {ComputeShader}
|
|
109
|
+
*/
|
|
110
|
+
export const shader_visible_meshlets_copy = ComputeShader.from({
|
|
111
|
+
label: "Visible meshlets / copy",
|
|
112
|
+
resources: copy_resources,
|
|
113
|
+
body: copy_body("input.elements[i]"),
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
const copy_array_resources = new ShaderResourceSetDescriptor();
|
|
117
|
+
|
|
118
|
+
copy_array_resources.createGroup()
|
|
119
|
+
.addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND)
|
|
120
|
+
.addStorageBuffer("input", WebGPUArray.from(MESHLET_DEFINITION_STRUCT))
|
|
121
|
+
.addStorageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT, true);
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* {@link shader_visible_meshlets_copy} for a list kept as a bare array whose count is held elsewhere — the
|
|
125
|
+
* alpha-tested raster's, sorted by material, whose collection the reserve counts.
|
|
126
|
+
*
|
|
127
|
+
* @type {ComputeShader}
|
|
128
|
+
*/
|
|
129
|
+
export const shader_visible_meshlets_copy_array = ComputeShader.from({
|
|
130
|
+
label: "Visible meshlets / copy",
|
|
131
|
+
resources: copy_array_resources,
|
|
132
|
+
body: copy_body("input[i]"),
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
const offset_resources = new ShaderResourceSetDescriptor();
|
|
136
|
+
|
|
137
|
+
offset_resources.createGroup()
|
|
138
|
+
.addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND)
|
|
139
|
+
.addStorageBuffer("commands", WebGPUArray.from(STRUCT_UNINDEXED_DRAW_COMMAND), true);
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Move per-material draw commands over a sorted list onto the list's copy in the visible-meshlet table:
|
|
143
|
+
* each command's range of the list becomes the same range of the slots `draw` holds, cut to the slots the
|
|
144
|
+
* copy filled. The draws bind the table's whole buffer as a bare array of definitions, which puts slot `s`
|
|
145
|
+
* at `s + ${VISIBLE_MESHLETS_ARRAY_OFFSET}` ({@link VISIBLE_MESHLETS_ARRAY_OFFSET}).
|
|
146
|
+
*
|
|
147
|
+
* One invocation a command.
|
|
148
|
+
*
|
|
149
|
+
* @type {ComputeShader}
|
|
150
|
+
*/
|
|
151
|
+
export const shader_visible_meshlets_offset_commands = ComputeShader.from({
|
|
152
|
+
label: "Visible meshlets / offset draw commands",
|
|
153
|
+
resources: offset_resources,
|
|
154
|
+
body: CodeChunk.from(
|
|
155
|
+
//language=WGSL
|
|
156
|
+
`
|
|
157
|
+
@compute @workgroup_size(${COMPUTE_SHADER_DEFAULT_GROUP_SIZE})
|
|
158
|
+
fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
|
|
159
|
+
let k = global_id.x;
|
|
160
|
+
|
|
161
|
+
if (k >= arrayLength(&commands)) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
let start = commands[k].firstInstance;
|
|
166
|
+
let end = min(start + commands[k].instanceCount, draw.instanceCount);
|
|
167
|
+
|
|
168
|
+
commands[k].instanceCount = select(0u, end - start, start < end);
|
|
169
|
+
commands[k].firstInstance = draw.firstInstance + start + ${VISIBLE_MESHLETS_ARRAY_OFFSET}u;
|
|
170
|
+
}
|
|
171
|
+
`)
|
|
172
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_restir_reconstruct_surface.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_restir_reconstruct_surface.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,+CAFU,SAAS,CAoDjB;0BA/DwB,oCAAoC"}
|
|
@@ -4,6 +4,9 @@ import { chunk_project_position_from_depth } from "../../shader/chunk/camera/chu
|
|
|
4
4
|
import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
|
|
5
5
|
import { chunk_mat4_extract_position } from "../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
|
|
6
6
|
import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
|
|
7
|
+
import {
|
|
8
|
+
chunk_decode_g_buffer_face_normal
|
|
9
|
+
} from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
|
|
7
10
|
import { GEOMETRIC_SHADING_INFO_STRUCT } from "../../shader/chunk/material/GEOMETRIC_SHADING_INFO_STRUCT.js";
|
|
8
11
|
import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js";
|
|
9
12
|
import { chunk_texel_coordinate_to_uv } from "../../shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
|
|
@@ -47,11 +50,9 @@ fn restir_reconstruct_surface(i_coord: vec2<u32>, texture_size: vec2<u32>) -> Re
|
|
|
47
50
|
let camera_position_ws = mat4_extract_position(camera.transform);
|
|
48
51
|
let view_direction = normalize(camera_position_ws - position_ws);
|
|
49
52
|
|
|
50
|
-
let g_buffer_sample_normal = textureLoad(gBufferNormal, i_coord, 0);
|
|
51
|
-
|
|
52
53
|
surface.geometry = ${GEOMETRIC_SHADING_INFO_STRUCT.wgsl_ref}(
|
|
53
|
-
decode_g_buffer_normal(
|
|
54
|
-
|
|
54
|
+
decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).x),
|
|
55
|
+
decode_g_buffer_face_normal(textureLoad(gBufferPBR, i_coord, 0)),
|
|
55
56
|
position_ws,
|
|
56
57
|
view_direction,
|
|
57
58
|
);
|
|
@@ -69,6 +70,7 @@ fn restir_reconstruct_surface(i_coord: vec2<u32>, texture_size: vec2<u32>) -> Re
|
|
|
69
70
|
chunk_project_position_from_depth,
|
|
70
71
|
chunk_mat4_extract_position,
|
|
71
72
|
chunk_decode_g_buffer_normal,
|
|
73
|
+
chunk_decode_g_buffer_face_normal,
|
|
72
74
|
chunk_read_gBuffer_material,
|
|
73
75
|
]
|
|
74
76
|
);
|
|
@@ -81,7 +81,7 @@ fn restir_spatial_reuse(
|
|
|
81
81
|
if (abs(neighbour_view_depth - self_view_depth) > RESTIR_SPATIAL_DEPTH_TOLERANCE * self_view_depth) {
|
|
82
82
|
continue;
|
|
83
83
|
}
|
|
84
|
-
let neighbour_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, neighbour_u, 0).
|
|
84
|
+
let neighbour_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, neighbour_u, 0).x);
|
|
85
85
|
if (dot(neighbour_normal, geometry.shading_normal) < RESTIR_SPATIAL_NORMAL_TOLERANCE) {
|
|
86
86
|
continue;
|
|
87
87
|
}
|
|
@@ -76,7 +76,7 @@ fn main(
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
let center_depth = get_view_space_depth(center_device_depth, camera);
|
|
79
|
-
let center_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).
|
|
79
|
+
let center_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).x);
|
|
80
80
|
let center_luma = rgb_to_luminance(center_radiance);
|
|
81
81
|
|
|
82
82
|
let step = i32(step_size);
|
|
@@ -107,7 +107,7 @@ fn main(
|
|
|
107
107
|
|
|
108
108
|
let sample_radiance = textureLoad(tInput, p, 0).rgb;
|
|
109
109
|
let sample_depth = get_view_space_depth(sample_device_depth, camera);
|
|
110
|
-
let sample_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, p, 0).
|
|
110
|
+
let sample_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, p, 0).x);
|
|
111
111
|
let sample_luma = rgb_to_luminance(sample_radiance);
|
|
112
112
|
|
|
113
113
|
let w_normal = normal_edge_stopping_weight(center_normal, sample_normal, PHI_NORMAL);
|
|
@@ -105,7 +105,7 @@ export class GPUSceneContext {
|
|
|
105
105
|
* (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
|
|
106
106
|
* page after the root arrives because a cut asked for it. The renderer opens and closes each
|
|
107
107
|
* frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
|
|
108
|
-
* of it. With them, the source of its geometries' caches and
|
|
108
|
+
* of it. With them, the source of its geometries' caches and surface caches ({@link VGeoSDFProxies}): a virtual
|
|
109
109
|
* geometry whose cache is asked for stands in through its proxy.
|
|
110
110
|
*
|
|
111
111
|
* @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
|
|
@@ -400,7 +400,7 @@ export class GPUSceneContext {
|
|
|
400
400
|
* (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
|
|
401
401
|
* page after the root arrives because a cut asked for it. The renderer opens and closes each
|
|
402
402
|
* frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
|
|
403
|
-
* of it. With them, the source of its geometries' caches and
|
|
403
|
+
* of it. With them, the source of its geometries' caches and surface caches ({@link VGeoSDFProxies}): a virtual
|
|
404
404
|
* geometry whose cache is asked for stands in through its proxy.
|
|
405
405
|
*
|
|
406
406
|
* @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Electro-optical transfer function (EOTF), the inverse of {@link chunk_sRGBTransferOETF}
|
|
3
|
+
*
|
|
4
|
+
* sRGB to sRGB-linear, the IEC 61966-2-1 curve an `-srgb` texture format decodes with.
|
|
5
|
+
* @see convert_channel_sRGB_to_linear the JS twin, which carries the same constants
|
|
6
|
+
*/
|
|
7
|
+
export const chunk_sRGBTransferEOTF: CodeChunk;
|
|
8
|
+
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
9
|
+
//# sourceMappingURL=chunk_sRGBTransferEOTF.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_sRGBTransferEOTF.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+CASG;0BAjBuB,gCAAgC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Electro-optical transfer function (EOTF), the inverse of {@link chunk_sRGBTransferOETF}
|
|
5
|
+
*
|
|
6
|
+
* sRGB to sRGB-linear, the IEC 61966-2-1 curve an `-srgb` texture format decodes with.
|
|
7
|
+
* @see convert_channel_sRGB_to_linear the JS twin, which carries the same constants
|
|
8
|
+
*/
|
|
9
|
+
export const chunk_sRGBTransferEOTF = CodeChunk.from(
|
|
10
|
+
//language=WGSL
|
|
11
|
+
`
|
|
12
|
+
fn sRGBTransferEOTF( value: vec3<f32> ) -> vec3<f32> {
|
|
13
|
+
let low = value * 0.0773993808;
|
|
14
|
+
let high = pow( value * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) );
|
|
15
|
+
|
|
16
|
+
return select( low, high, value >= vec3( 0.04045 ) );
|
|
17
|
+
}
|
|
18
|
+
`);
|