@woosh/meep-engine 3.61.2 → 3.61.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +111 -0
- package/package.json +1 -1
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/probe_clipmap/README.md +3 -4
- package/src/shade/playground/probe_clipmap/index.html +5 -13
- package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
- package/src/shade/playground/probe_clipmap/main.js +0 -5
- package/src/shade/playground/probe_clipmap_box/README.md +1 -1
- package/src/shade/playground/probe_clipmap_box/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +50 -11
- package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
- package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
- package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
- package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
- package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
- package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
- package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
- package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
- package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
- package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
- package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
- package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
- package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
- package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
- package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
- package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
- package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
- package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
- package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
- package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
- package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +82 -17
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +49 -36
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/{graph_probe_clipmap_debug_mesh_cards.js → graph_probe_clipmap_debug_mesh_surfaces.js} +38 -57
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +18 -9
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +63 -44
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +21 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +24 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +44 -7
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +88 -11
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +2 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +10 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +3 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +5 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +5 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -5
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +22 -16
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +6 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
- package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
- package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
- package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
- package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
- package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
- package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
- package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
- package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
- package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
- package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
- package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
- package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
- package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
- package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
- package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
- package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
- package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
- package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
- package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
- package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
-
import { chunk_mesh_sdf } from "../chunk_mesh_sdf.js";
|
|
3
|
-
import { MESH_SDF_STRUCT } from "../MESH_SDF_STRUCT.js";
|
|
4
|
-
import {
|
|
5
|
-
MESH_CARD_DIRECTIONS,
|
|
6
|
-
MESH_CARD_LAYOUT_CARD_COUNT,
|
|
7
|
-
MESH_CARD_LAYOUT_COLUMN_COUNT,
|
|
8
|
-
MESH_CARD_LAYOUT_DIRECTION_FIRST,
|
|
9
|
-
MESH_CARD_LAYOUT_PAGE_COUNT,
|
|
10
|
-
MESH_CARD_LAYOUT_RECORDS,
|
|
11
|
-
MESH_CARD_LAYOUT_TABLES,
|
|
12
|
-
MESH_CARD_MAX,
|
|
13
|
-
MESH_CARD_NO_PAGE,
|
|
14
|
-
MESH_CARD_PAGE_TEXELS,
|
|
15
|
-
MESH_CARD_RECORD_DIRECTION,
|
|
16
|
-
MESH_CARD_RECORD_FAR,
|
|
17
|
-
MESH_CARD_RECORD_NEAR,
|
|
18
|
-
MESH_CARD_RECORD_TABLE,
|
|
19
|
-
MESH_CARD_RECORD_WORDS,
|
|
20
|
-
MESH_CARD_SPLITS_MAX
|
|
21
|
-
} from "./MESH_CARDS.js";
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* A geometry's cards on the device (`MESH_CARDS.js`): the layout's constants, the placement's
|
|
25
|
-
* scratch by the level-0 grid, a direction's axes and extent, and the brick a direction's column
|
|
26
|
-
* holds at a layer. Pure: nothing here reads a binding.
|
|
27
|
-
*
|
|
28
|
-
* ```wgsl
|
|
29
|
-
* fn mesh_card_placement_of(bricks: vec3<u32>) -> MeshCardPlacement // offsets from the range's start
|
|
30
|
-
* fn mesh_card_axes(direction: u32) -> vec3<u32> // the axis looked along, then u, v
|
|
31
|
-
* fn mesh_card_extent(bricks: vec3<u32>, direction: u32) -> vec3<u32>
|
|
32
|
-
* fn mesh_card_brick(bricks: vec3<u32>, direction: u32, column: vec2<u32>, layer: u32) -> vec3<u32>
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* @type {CodeChunk}
|
|
36
|
-
*/
|
|
37
|
-
export const chunk_mesh_cards = CodeChunk.from(
|
|
38
|
-
//language=WGSL
|
|
39
|
-
`
|
|
40
|
-
const MESH_CARD_MAX = ${MESH_CARD_MAX}u;
|
|
41
|
-
const MESH_CARD_DIRECTIONS = ${MESH_CARD_DIRECTIONS}u;
|
|
42
|
-
const MESH_CARD_SPLITS_MAX = ${MESH_CARD_SPLITS_MAX}u;
|
|
43
|
-
const MESH_CARD_PAGE_TEXELS = ${MESH_CARD_PAGE_TEXELS}u;
|
|
44
|
-
const MESH_CARD_NO_PAGE = ${MESH_CARD_NO_PAGE}u;
|
|
45
|
-
|
|
46
|
-
const MESH_CARD_LAYOUT_CARD_COUNT = ${MESH_CARD_LAYOUT_CARD_COUNT}u;
|
|
47
|
-
const MESH_CARD_LAYOUT_PAGE_COUNT = ${MESH_CARD_LAYOUT_PAGE_COUNT}u;
|
|
48
|
-
const MESH_CARD_LAYOUT_COLUMN_COUNT = ${MESH_CARD_LAYOUT_COLUMN_COUNT}u;
|
|
49
|
-
const MESH_CARD_LAYOUT_DIRECTION_FIRST = ${MESH_CARD_LAYOUT_DIRECTION_FIRST}u;
|
|
50
|
-
const MESH_CARD_LAYOUT_RECORDS = ${MESH_CARD_LAYOUT_RECORDS}u;
|
|
51
|
-
const MESH_CARD_LAYOUT_TABLES = ${MESH_CARD_LAYOUT_TABLES}u;
|
|
52
|
-
|
|
53
|
-
const MESH_CARD_RECORD_DIRECTION = ${MESH_CARD_RECORD_DIRECTION}u;
|
|
54
|
-
const MESH_CARD_RECORD_NEAR = ${MESH_CARD_RECORD_NEAR}u;
|
|
55
|
-
const MESH_CARD_RECORD_FAR = ${MESH_CARD_RECORD_FAR}u;
|
|
56
|
-
const MESH_CARD_RECORD_TABLE = ${MESH_CARD_RECORD_TABLE}u;
|
|
57
|
-
const MESH_CARD_RECORD_WORDS = ${MESH_CARD_RECORD_WORDS}u;
|
|
58
|
-
|
|
59
|
-
struct MeshCardPlacement {
|
|
60
|
-
histograms: u32,
|
|
61
|
-
splits: u32,
|
|
62
|
-
layers: u32,
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
fn mesh_card_placement_of(bricks: vec3<u32>) -> MeshCardPlacement {
|
|
66
|
-
let layers = max(bricks.x, max(bricks.y, bricks.z));
|
|
67
|
-
let columns_max = max(bricks.x * bricks.y, max(bricks.y * bricks.z, bricks.x * bricks.z));
|
|
68
|
-
|
|
69
|
-
var parts: MeshCardPlacement;
|
|
70
|
-
|
|
71
|
-
parts.histograms = MESH_CARD_LAYOUT_TABLES + 2u * MESH_CARD_MAX * columns_max;
|
|
72
|
-
parts.splits = parts.histograms + MESH_CARD_DIRECTIONS * layers * layers;
|
|
73
|
-
parts.layers = layers;
|
|
74
|
-
|
|
75
|
-
return parts;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
fn mesh_card_axes(direction: u32) -> vec3<u32> {
|
|
79
|
-
let axis = direction >> 1u;
|
|
80
|
-
|
|
81
|
-
return vec3<u32>(axis, (axis + 1u) % 3u, (axis + 2u) % 3u);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
fn mesh_card_extent(bricks: vec3<u32>, direction: u32) -> vec3<u32> {
|
|
85
|
-
let axes = mesh_card_axes(direction);
|
|
86
|
-
|
|
87
|
-
return vec3<u32>(bricks[axes.x], bricks[axes.y], bricks[axes.z]);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
fn mesh_card_brick(bricks: vec3<u32>, direction: u32, column: vec2<u32>, layer: u32) -> vec3<u32> {
|
|
91
|
-
let axes = mesh_card_axes(direction);
|
|
92
|
-
|
|
93
|
-
// an even direction looks toward +axis, so its layer 0 is the grid's first brick along it
|
|
94
|
-
let along = select(bricks[axes.x] - 1u - layer, layer, (direction & 1u) == 0u);
|
|
95
|
-
|
|
96
|
-
var brick = vec3<u32>(0u);
|
|
97
|
-
|
|
98
|
-
brick[axes.x] = along;
|
|
99
|
-
brick[axes.y] = column.x;
|
|
100
|
-
brick[axes.z] = column.y;
|
|
101
|
-
|
|
102
|
-
return brick;
|
|
103
|
-
}
|
|
104
|
-
`, [
|
|
105
|
-
chunk_mesh_sdf,
|
|
106
|
-
MESH_SDF_STRUCT.declaration_chunk,
|
|
107
|
-
]);
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @typedef {import("../../../../descriptor/binding/BindGroupLayoutDescriptor.js").BindGroupLayoutDescriptor} BindGroupLayoutDescriptor
|
|
3
|
-
* @typedef {import("../../../material/template/ShadeMaterialTemplate.js").ShadeMaterialTemplate} ShadeMaterialTemplate
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Cells across a raster run's region: the region is MESH_CARD_MAX cells, this many a row.
|
|
7
|
-
* @type {number}
|
|
8
|
-
*/
|
|
9
|
-
export const MESH_CARD_RASTER_CELLS_X: number;
|
|
10
|
-
/**
|
|
11
|
-
* Rows of cells in a raster run's region.
|
|
12
|
-
* @type {number}
|
|
13
|
-
*/
|
|
14
|
-
export const MESH_CARD_RASTER_CELLS_Y: number;
|
|
15
|
-
/**
|
|
16
|
-
* The scratch the cards are drawn into, before the scatter moves their pages into the atlas.
|
|
17
|
-
* @type {GPUTextureFormat[]}
|
|
18
|
-
*/
|
|
19
|
-
export const MESH_CARD_RASTER_TARGET_FORMATS: GPUTextureFormat[];
|
|
20
|
-
/**
|
|
21
|
-
* @type {GPUTextureFormat}
|
|
22
|
-
*/
|
|
23
|
-
export const MESH_CARD_RASTER_DEPTH_FORMAT: GPUTextureFormat;
|
|
24
|
-
/**
|
|
25
|
-
* @type {WebGPUStruct}
|
|
26
|
-
*/
|
|
27
|
-
export const MESH_CARDS_RASTER_SETTINGS: WebGPUStruct;
|
|
28
|
-
/**
|
|
29
|
-
* Group 1: where the vertex stage pulls the geometry and its cards from. Vertex-only.
|
|
30
|
-
*
|
|
31
|
-
* `mesh_card_raster_runs` is a `vec4<u32>` a run: (first scatter thread, card set, the region's
|
|
32
|
-
* corner in the scratch as x | y << 16, the side of its cells in texels).
|
|
33
|
-
*
|
|
34
|
-
* @type {ShaderResourceGroupDescriptor}
|
|
35
|
-
*/
|
|
36
|
-
export const MESH_CARDS_RASTER_GROUP: ShaderResourceGroupDescriptor;
|
|
37
|
-
/**
|
|
38
|
-
* @type {BindGroupLayoutDescriptor}
|
|
39
|
-
*/
|
|
40
|
-
export const MESH_CARDS_RASTER_LAYOUT: BindGroupLayoutDescriptor;
|
|
41
|
-
/**
|
|
42
|
-
* Card capture by raster ({@link MeshCardCaptureMode.Raster}): one pipeline per material template,
|
|
43
|
-
* the template's group 0 — the material's one bind group, which the G-buffer pass binds — then
|
|
44
|
-
* {@link MESH_CARDS_RASTER_GROUP}, and {@link MESH_CARDS_RASTER_SETTINGS} as immediate data.
|
|
45
|
-
*
|
|
46
|
-
* A run's draw covers every card of its card set, each into its cell of the run's region of the
|
|
47
|
-
* scratch: `rgba8unorm` √(diffuse albedo) and depth, `rgba8unorm` emissive / s_e, and a
|
|
48
|
-
* `depth32float` depth through the slab. Draw it with culling off: a card sees either side.
|
|
49
|
-
*
|
|
50
|
-
* Only a template with a surface function can be drawn.
|
|
51
|
-
*
|
|
52
|
-
* @type {TemplatePassDescriptor}
|
|
53
|
-
*/
|
|
54
|
-
export const mesh_cards_raster_pass_descriptor: TemplatePassDescriptor;
|
|
55
|
-
/**
|
|
56
|
-
* Bytes of {@link MESH_CARDS_RASTER_SETTINGS} the draws hand `setImmediates`.
|
|
57
|
-
* @type {number}
|
|
58
|
-
*/
|
|
59
|
-
export const MESH_CARDS_RASTER_IMMEDIATE_SIZE: number;
|
|
60
|
-
export type BindGroupLayoutDescriptor = import("../../../../descriptor/binding/BindGroupLayoutDescriptor.js").BindGroupLayoutDescriptor;
|
|
61
|
-
export type ShadeMaterialTemplate = import("../../../material/template/ShadeMaterialTemplate.js").ShadeMaterialTemplate;
|
|
62
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
63
|
-
import { ShaderResourceGroupDescriptor } from "../../../shader/resource/ShaderResourceGroupDescriptor.js";
|
|
64
|
-
import { TemplatePassDescriptor } from "../../../rasterize/TemplatePassDescriptor.js";
|
|
65
|
-
//# sourceMappingURL=mesh_cards_raster_pass_descriptor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mesh_cards_raster_pass_descriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js"],"names":[],"mappings":"AAkCA;;;GAGG;AAEH;;;GAGG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;GAGG;AACH,uCAFU,MAAM,CAE4E;AAE5F;;;GAGG;AACH,8CAFU,kBAAkB,CAEgD;AAE5E;;GAEG;AACH,6DAA4D;AAE5D;;GAEG;AACH,yCAFU,YAAY,CASQ;AAE9B;;;;;;;GAOG;AACH,sCAFU,6BAA6B,CAEoC;AAe3E;;GAEG;AACH,uCAFU,yBAAyB,CAEiE;AAiOpG;;;;;;;;;;;;GAYG;AACH,gDAFU,sBAAsB,CAiC7B;AAEH;;;GAGG;AACH,+CAFU,MAAM,CAE+D;wCApVlE,OAAO,6DAA6D,EAAE,yBAAyB;oCAC/F,OAAO,qDAAqD,EAAE,qBAAqB;6BAVnE,sCAAsC;8CALrB,2DAA2D;uCARlE,8CAA8C"}
|
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
import { GPUShaderStage } from "../../../../descriptor/GPUShaderStage.js";
|
|
2
|
-
import { PipelineLayoutDescriptor } from "../../../../descriptor/pipeline/PipelineLayoutDescriptor.js";
|
|
3
|
-
import { DepthStencilState } from "../../../../descriptor/pipeline/render/DepthStencilState.js";
|
|
4
|
-
import { RenderPipelineDescriptor } from "../../../../descriptor/pipeline/render/RenderPipelineDescriptor.js";
|
|
5
|
-
import { GEOMETRY_ATTRIBUTE_DATA_RESOURCE } from "../../GEOMETRY_ATTRIBUTE_DATA_RESOURCE.js";
|
|
6
|
-
import { GEOMETRY_METADATA_STRUCT } from "../../GEOMETRY_METADATA_STRUCT.js";
|
|
7
|
-
import { MESHLET_METADATA_RESOURCE } from "../../meshlet/MESHLET_METADATA_RESOURCE.js";
|
|
8
|
-
import {
|
|
9
|
-
chunk_material_opacity_contract,
|
|
10
|
-
chunk_material_opacity_opaque,
|
|
11
|
-
chunk_material_surface_contract
|
|
12
|
-
} from "../../../material/template/chunk_material_surface.js";
|
|
13
|
-
import { rasterization_primitive_state } from "../../../rasterize/native/rasterization_primitive_state.js";
|
|
14
|
-
import { TemplatePassDescriptor } from "../../../rasterize/TemplatePassDescriptor.js";
|
|
15
|
-
import {
|
|
16
|
-
chunk_read_meshlet_vertex_by_draw_index
|
|
17
|
-
} from "../../../shader/chunk/geometry/meshlet/chunk_read_meshlet_vertex_by_draw_index.js";
|
|
18
|
-
import { chunk_random } from "../../../shader/chunk/random/chunk_random.js";
|
|
19
|
-
import { chunk_random_initialize } from "../../../shader/chunk/random/chunk_random_initialize.js";
|
|
20
|
-
import { GRADIENT_SAMPLING_INFO_STRUCT } from "../../../shader/chunk/texture/GRADIENT_SAMPLING_INFO_STRUCT.js";
|
|
21
|
-
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
22
|
-
import { ShaderResourceGroupDescriptor } from "../../../shader/resource/ShaderResourceGroupDescriptor.js";
|
|
23
|
-
import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
|
|
24
|
-
import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
|
|
25
|
-
import { f32, u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
|
|
26
|
-
import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
|
|
27
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
28
|
-
import { MESH_SDF_HEADERS_RESOURCE, MESH_SDF_INDIRECTION_RESOURCE } from "../MESH_SDF_RESOURCES.js";
|
|
29
|
-
import { MESH_SDF_STRUCT } from "../MESH_SDF_STRUCT.js";
|
|
30
|
-
import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
|
|
31
|
-
import { MESH_CARD_SETS_RESOURCE } from "./MESH_CARD_RESOURCES.js";
|
|
32
|
-
import { MESH_CARD_SET_STRUCT } from "./MESH_CARD_SET_STRUCT.js";
|
|
33
|
-
import { MESH_CARD_MAX } from "./MESH_CARDS.js";
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* @typedef {import("../../../../descriptor/binding/BindGroupLayoutDescriptor.js").BindGroupLayoutDescriptor} BindGroupLayoutDescriptor
|
|
37
|
-
* @typedef {import("../../../material/template/ShadeMaterialTemplate.js").ShadeMaterialTemplate} ShadeMaterialTemplate
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Cells across a raster run's region: the region is MESH_CARD_MAX cells, this many a row.
|
|
42
|
-
* @type {number}
|
|
43
|
-
*/
|
|
44
|
-
export const MESH_CARD_RASTER_CELLS_X = 8;
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Rows of cells in a raster run's region.
|
|
48
|
-
* @type {number}
|
|
49
|
-
*/
|
|
50
|
-
export const MESH_CARD_RASTER_CELLS_Y = Math.ceil(MESH_CARD_MAX / MESH_CARD_RASTER_CELLS_X);
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* The scratch the cards are drawn into, before the scatter moves their pages into the atlas.
|
|
54
|
-
* @type {GPUTextureFormat[]}
|
|
55
|
-
*/
|
|
56
|
-
export const MESH_CARD_RASTER_TARGET_FORMATS = ["rgba8unorm", "rgba8unorm"];
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* @type {GPUTextureFormat}
|
|
60
|
-
*/
|
|
61
|
-
export const MESH_CARD_RASTER_DEPTH_FORMAT = "depth32float";
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @type {WebGPUStruct}
|
|
65
|
-
*/
|
|
66
|
-
export const MESH_CARDS_RASTER_SETTINGS = WebGPUStruct.from({
|
|
67
|
-
/** the run drawn, its entry in `mesh_card_raster_runs` */
|
|
68
|
-
run: u32,
|
|
69
|
-
/** the scratch's texels across */
|
|
70
|
-
width: f32,
|
|
71
|
-
/** the scratch's texels down */
|
|
72
|
-
height: f32,
|
|
73
|
-
}, "MeshCardsRasterSettings");
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Group 1: where the vertex stage pulls the geometry and its cards from. Vertex-only.
|
|
77
|
-
*
|
|
78
|
-
* `mesh_card_raster_runs` is a `vec4<u32>` a run: (first scatter thread, card set, the region's
|
|
79
|
-
* corner in the scratch as x | y << 16, the side of its cells in texels).
|
|
80
|
-
*
|
|
81
|
-
* @type {ShaderResourceGroupDescriptor}
|
|
82
|
-
*/
|
|
83
|
-
export const MESH_CARDS_RASTER_GROUP = new ShaderResourceGroupDescriptor();
|
|
84
|
-
|
|
85
|
-
MESH_CARDS_RASTER_GROUP.label = "mesh cards raster";
|
|
86
|
-
|
|
87
|
-
MESH_CARDS_RASTER_GROUP
|
|
88
|
-
.add(MESH_SDF_HEADERS_RESOURCE)
|
|
89
|
-
.add(MESH_SDF_INDIRECTION_RESOURCE)
|
|
90
|
-
.add(MESH_CARD_SETS_RESOURCE)
|
|
91
|
-
.addStorageBuffer("mesh_card_raster_runs", WebGPUArray.from(vec4u))
|
|
92
|
-
.addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT))
|
|
93
|
-
.add(MESHLET_METADATA_RESOURCE)
|
|
94
|
-
.add(GEOMETRY_ATTRIBUTE_DATA_RESOURCE);
|
|
95
|
-
|
|
96
|
-
MESH_CARDS_RASTER_GROUP.addVisibility(GPUShaderStage.VERTEX);
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* @type {BindGroupLayoutDescriptor}
|
|
100
|
-
*/
|
|
101
|
-
export const MESH_CARDS_RASTER_LAYOUT = MESH_CARDS_RASTER_GROUP.generateBindGroupLayoutDescriptor();
|
|
102
|
-
|
|
103
|
-
const vertex_resources = new ShaderResourceSetDescriptor();
|
|
104
|
-
|
|
105
|
-
vertex_resources.setImmediate("settings", MESH_CARDS_RASTER_SETTINGS);
|
|
106
|
-
vertex_resources.createGroup({ index: 0, label: "material (fragment only)" });
|
|
107
|
-
vertex_resources.addGroup(MESH_CARDS_RASTER_GROUP);
|
|
108
|
-
|
|
109
|
-
const VARYINGS = `
|
|
110
|
-
struct MeshCardRasterVertex {
|
|
111
|
-
@builtin(position) position: vec4<f32>,
|
|
112
|
-
@location(0) uv: vec2<f32>,
|
|
113
|
-
@location(1) uv1: vec2<f32>,
|
|
114
|
-
@location(2) position_os: vec3<f32>,
|
|
115
|
-
@location(3) normal: vec3<f32>,
|
|
116
|
-
@location(4) color: vec3<f32>,
|
|
117
|
-
@location(5) @interpolate(flat) card_set: u32,
|
|
118
|
-
@location(6) @interpolate(flat) card: u32,
|
|
119
|
-
@location(7) @interpolate(flat) emissive_scale: f32,
|
|
120
|
-
@location(8) @interpolate(flat) along: vec3<f32>,
|
|
121
|
-
}
|
|
122
|
-
`;
|
|
123
|
-
|
|
124
|
-
/*
|
|
125
|
-
Instance i of run r's draw is card i / m's meshlet i mod m, m the geometry's meshlets; vertex v is
|
|
126
|
-
its triangle v / 3's corner, as the alpha-tested raster reads a meshlet. A card maps the geometry's
|
|
127
|
-
local space onto its cell: lattice (u, v) across the card to texel (u, v) of the cell, its centre on
|
|
128
|
-
the lattice point, which is where the trace starts its ray; depth from the near face over the slab's
|
|
129
|
-
depth to [0, 1], so the hardware clips to the slab as the trace's t ≤ depth does. The geometry lies
|
|
130
|
-
inside its grid, so nothing it draws falls outside the card's face, and the cells need no clip.
|
|
131
|
-
*/
|
|
132
|
-
const vertex_body = CodeChunk.from(
|
|
133
|
-
//language=WGSL
|
|
134
|
-
`
|
|
135
|
-
${VARYINGS}
|
|
136
|
-
|
|
137
|
-
@vertex
|
|
138
|
-
fn main(
|
|
139
|
-
@builtin(vertex_index) vertex_draw_index: u32,
|
|
140
|
-
@builtin(instance_index) instance: u32,
|
|
141
|
-
) -> MeshCardRasterVertex {
|
|
142
|
-
var out: MeshCardRasterVertex;
|
|
143
|
-
|
|
144
|
-
let run = mesh_card_raster_runs[settings.run];
|
|
145
|
-
let card_set = mesh_card_sets[run.y];
|
|
146
|
-
let geometry = geometries[card_set.geometry];
|
|
147
|
-
let header = mesh_sdf_headers[card_set.geometry];
|
|
148
|
-
|
|
149
|
-
// the args draw no instance of a geometry without meshlets
|
|
150
|
-
let meshlets = max(geometry.meshlets_count, 1u);
|
|
151
|
-
let card = instance / meshlets;
|
|
152
|
-
let meshlet_header = meshlet_metadata[geometry.meshlets_address + instance % meshlets];
|
|
153
|
-
|
|
154
|
-
if (vertex_draw_index >= meshlet_header.primitive_count * 3u) {
|
|
155
|
-
// past the meshlet's triangles: a degenerate one, which draws nothing
|
|
156
|
-
return out;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
let attributes = read_meshlet_vertex_by_draw_index(meshlet_header, vertex_draw_index);
|
|
160
|
-
|
|
161
|
-
let record = header.cards + MESH_CARD_LAYOUT_RECORDS + card * MESH_CARD_RECORD_WORDS;
|
|
162
|
-
let direction = mesh_sdf_indirection[record + MESH_CARD_RECORD_DIRECTION];
|
|
163
|
-
let near = mesh_sdf_indirection[record + MESH_CARD_RECORD_NEAR];
|
|
164
|
-
let far = mesh_sdf_indirection[record + MESH_CARD_RECORD_FAR];
|
|
165
|
-
|
|
166
|
-
let axes = mesh_card_axes(direction);
|
|
167
|
-
let toward_plus = (direction & 1u) == 0u;
|
|
168
|
-
|
|
169
|
-
// voxels from the grid's corner
|
|
170
|
-
let p = (attributes.position - header.origin) / header.voxel;
|
|
171
|
-
|
|
172
|
-
let face = f32(select(header.bricks[axes.x] - near, near, toward_plus) * MESH_SDF_BRICK_VOXELS);
|
|
173
|
-
let depth = select(face - p[axes.x], p[axes.x] - face, toward_plus);
|
|
174
|
-
let slab = f32((far - near) * MESH_SDF_BRICK_VOXELS);
|
|
175
|
-
|
|
176
|
-
let corner = vec2<f32>(f32(run.z & 0xffffu), f32(run.z >> 16u))
|
|
177
|
-
+ vec2<f32>(f32(card % ${MESH_CARD_RASTER_CELLS_X}u), f32(card / ${MESH_CARD_RASTER_CELLS_X}u)) * f32(run.w);
|
|
178
|
-
let texel = corner + vec2<f32>(p[axes.y], p[axes.z]) + 0.5;
|
|
179
|
-
|
|
180
|
-
out.position = vec4<f32>(
|
|
181
|
-
texel.x / settings.width * 2.0 - 1.0,
|
|
182
|
-
1.0 - texel.y / settings.height * 2.0,
|
|
183
|
-
depth / slab,
|
|
184
|
-
1.0
|
|
185
|
-
);
|
|
186
|
-
|
|
187
|
-
var along = vec3<f32>(0.0);
|
|
188
|
-
|
|
189
|
-
along[axes.x] = select(-1.0, 1.0, toward_plus);
|
|
190
|
-
|
|
191
|
-
out.uv = attributes.uv;
|
|
192
|
-
out.uv1 = attributes.uv1;
|
|
193
|
-
out.position_os = attributes.position;
|
|
194
|
-
out.normal = attributes.normal;
|
|
195
|
-
out.color = attributes.color;
|
|
196
|
-
out.card_set = run.y;
|
|
197
|
-
out.card = card;
|
|
198
|
-
out.emissive_scale = card_set.emissive_scale;
|
|
199
|
-
out.along = along;
|
|
200
|
-
|
|
201
|
-
return out;
|
|
202
|
-
}
|
|
203
|
-
`, [
|
|
204
|
-
MESH_SDF_STRUCT.declaration_chunk,
|
|
205
|
-
MESH_CARD_SET_STRUCT.declaration_chunk,
|
|
206
|
-
GEOMETRY_METADATA_STRUCT.declaration_chunk,
|
|
207
|
-
chunk_mesh_cards,
|
|
208
|
-
chunk_read_meshlet_vertex_by_draw_index,
|
|
209
|
-
]);
|
|
210
|
-
|
|
211
|
-
const vertex_code = ShaderDescriptor.from({
|
|
212
|
-
label: "Mesh Cards Raster / vertex",
|
|
213
|
-
resources: vertex_resources,
|
|
214
|
-
body: vertex_body,
|
|
215
|
-
}).source;
|
|
216
|
-
|
|
217
|
-
/*
|
|
218
|
-
The template is handed what the G-buffer pass hands it, in the geometry's local space, the card
|
|
219
|
-
being there: real derivatives, as this is a raster with neighbours of its own triangle, unbiased (mip
|
|
220
|
-
bias at 0). Both functions run first, in uniform control
|
|
221
|
-
flow, so a template may sample with implicit derivatives.
|
|
222
|
-
|
|
223
|
-
Coverage is drawn as the trace draws it, a texel's surface opaque with probability its opacity, from
|
|
224
|
-
a seed fixed by the card set, the card and the texel; the depth test keeps the nearest opaque draw.
|
|
225
|
-
The planes are the trace's: √(albedo × (1 − metalness)) and depth through the slab on [1/255, 1];
|
|
226
|
-
emissive over s_e.
|
|
227
|
-
*/
|
|
228
|
-
const fragment_body = CodeChunk.from(
|
|
229
|
-
//language=WGSL
|
|
230
|
-
`
|
|
231
|
-
${VARYINGS}
|
|
232
|
-
|
|
233
|
-
struct MeshCardRasterTargets {
|
|
234
|
-
@location(0) albedo: vec4<f32>,
|
|
235
|
-
@location(1) emissive: vec4<f32>,
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
@fragment
|
|
239
|
-
fn main(in: MeshCardRasterVertex) -> MeshCardRasterTargets {
|
|
240
|
-
let uv = ${GRADIENT_SAMPLING_INFO_STRUCT.wgsl_ref}(in.uv, dpdx(in.uv), dpdy(in.uv));
|
|
241
|
-
let uv1 = ${GRADIENT_SAMPLING_INFO_STRUCT.wgsl_ref}(in.uv1, dpdx(in.uv1), dpdy(in.uv1));
|
|
242
|
-
let position_ddx = dpdx(in.position_os);
|
|
243
|
-
let position_ddy = dpdy(in.position_os);
|
|
244
|
-
|
|
245
|
-
var opacity_input: MaterialOpacityInput;
|
|
246
|
-
|
|
247
|
-
opacity_input.uv = uv;
|
|
248
|
-
opacity_input.mip_bias = 0.0;
|
|
249
|
-
opacity_input.position_ws = in.position_os;
|
|
250
|
-
|
|
251
|
-
let opacity = material_opacity(opacity_input);
|
|
252
|
-
|
|
253
|
-
var surface_input: MaterialSurfaceInput;
|
|
254
|
-
|
|
255
|
-
surface_input.uv = uv;
|
|
256
|
-
surface_input.uv1 = uv1;
|
|
257
|
-
surface_input.gradient_bias = vec2<f32>(1.0);
|
|
258
|
-
surface_input.position_os = in.position_os;
|
|
259
|
-
surface_input.position_os_ddx = position_ddx;
|
|
260
|
-
surface_input.position_os_ddy = position_ddy;
|
|
261
|
-
surface_input.position_ws = in.position_os;
|
|
262
|
-
surface_input.normal_ws = normalize(in.normal);
|
|
263
|
-
surface_input.face_normal_ws = normalize(cross(position_ddx, position_ddy));
|
|
264
|
-
surface_input.view_direction_ws = -in.along;
|
|
265
|
-
surface_input.vertex_color = in.color;
|
|
266
|
-
surface_input.pixel = in.position.xy;
|
|
267
|
-
|
|
268
|
-
let surface = material_surface(surface_input);
|
|
269
|
-
|
|
270
|
-
random_initialize(vec3<u32>(vec2<u32>(in.position.xy), in.card), vec3<u32>(in.card_set, 0u, 0u));
|
|
271
|
-
|
|
272
|
-
if (random() >= opacity) {
|
|
273
|
-
discard;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
let diffuse = surface.albedo * (1.0 - surface.metalness);
|
|
277
|
-
|
|
278
|
-
var out: MeshCardRasterTargets;
|
|
279
|
-
|
|
280
|
-
out.albedo = vec4<f32>(sqrt(max(diffuse, vec3<f32>(0.0))), (1.0 + 254.0 * saturate(in.position.z)) / 255.0);
|
|
281
|
-
|
|
282
|
-
if (in.emissive_scale > 0.0) {
|
|
283
|
-
out.emissive = vec4<f32>(surface.emissive / in.emissive_scale, 0.0);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
return out;
|
|
287
|
-
}
|
|
288
|
-
`, [
|
|
289
|
-
GRADIENT_SAMPLING_INFO_STRUCT.declaration_chunk,
|
|
290
|
-
chunk_material_surface_contract,
|
|
291
|
-
chunk_material_opacity_contract,
|
|
292
|
-
chunk_random,
|
|
293
|
-
chunk_random_initialize,
|
|
294
|
-
]);
|
|
295
|
-
|
|
296
|
-
/**
|
|
297
|
-
* @type {WeakMap<ShadeMaterialTemplate, ShaderResourceSetDescriptor>}
|
|
298
|
-
*/
|
|
299
|
-
const fragment_resources = new WeakMap();
|
|
300
|
-
|
|
301
|
-
/**
|
|
302
|
-
* @param {ShadeMaterialTemplate} template
|
|
303
|
-
* @returns {ShaderResourceSetDescriptor}
|
|
304
|
-
*/
|
|
305
|
-
function fragment_resources_of(template) {
|
|
306
|
-
let resources = fragment_resources.get(template);
|
|
307
|
-
|
|
308
|
-
if (resources === undefined) {
|
|
309
|
-
resources = new ShaderResourceSetDescriptor();
|
|
310
|
-
|
|
311
|
-
resources.addGroup(template.resources);
|
|
312
|
-
|
|
313
|
-
fragment_resources.set(template, resources);
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
return resources;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
const depth_state = DepthStencilState.from({
|
|
320
|
-
depthWriteEnabled: true,
|
|
321
|
-
// depth through the slab from its near face: the nearest is the least
|
|
322
|
-
depthCompare: 'less',
|
|
323
|
-
format: MESH_CARD_RASTER_DEPTH_FORMAT,
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Card capture by raster ({@link MeshCardCaptureMode.Raster}): one pipeline per material template,
|
|
328
|
-
* the template's group 0 — the material's one bind group, which the G-buffer pass binds — then
|
|
329
|
-
* {@link MESH_CARDS_RASTER_GROUP}, and {@link MESH_CARDS_RASTER_SETTINGS} as immediate data.
|
|
330
|
-
*
|
|
331
|
-
* A run's draw covers every card of its card set, each into its cell of the run's region of the
|
|
332
|
-
* scratch: `rgba8unorm` √(diffuse albedo) and depth, `rgba8unorm` emissive / s_e, and a
|
|
333
|
-
* `depth32float` depth through the slab. Draw it with culling off: a card sees either side.
|
|
334
|
-
*
|
|
335
|
-
* Only a template with a surface function can be drawn.
|
|
336
|
-
*
|
|
337
|
-
* @type {TemplatePassDescriptor}
|
|
338
|
-
*/
|
|
339
|
-
export const mesh_cards_raster_pass_descriptor = new TemplatePassDescriptor("Mesh Card Capture / Raster", template => {
|
|
340
|
-
const fragment_code = ShaderDescriptor.from({
|
|
341
|
-
label: `Mesh Cards Raster / ${template.name}`,
|
|
342
|
-
resources: fragment_resources_of(template),
|
|
343
|
-
body: CodeChunk.from('', [
|
|
344
|
-
template.surface,
|
|
345
|
-
template.opacity ?? chunk_material_opacity_opaque,
|
|
346
|
-
fragment_body,
|
|
347
|
-
]),
|
|
348
|
-
}).source;
|
|
349
|
-
|
|
350
|
-
return RenderPipelineDescriptor.from({
|
|
351
|
-
label: `Mesh Card Capture / Raster / ${template.name}`,
|
|
352
|
-
layout: PipelineLayoutDescriptor.from([
|
|
353
|
-
template.resources.generateBindGroupLayoutDescriptor(),
|
|
354
|
-
MESH_CARDS_RASTER_LAYOUT,
|
|
355
|
-
], vertex_resources.immediateSize),
|
|
356
|
-
vertex: {
|
|
357
|
-
module: {
|
|
358
|
-
code: vertex_code
|
|
359
|
-
}
|
|
360
|
-
},
|
|
361
|
-
fragment: {
|
|
362
|
-
module: {
|
|
363
|
-
code: fragment_code
|
|
364
|
-
},
|
|
365
|
-
targets: MESH_CARD_RASTER_TARGET_FORMATS.map(format => ({ format })),
|
|
366
|
-
},
|
|
367
|
-
depthStencil: depth_state,
|
|
368
|
-
primitive: rasterization_primitive_state,
|
|
369
|
-
});
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* Bytes of {@link MESH_CARDS_RASTER_SETTINGS} the draws hand `setImmediates`.
|
|
374
|
-
* @type {number}
|
|
375
|
-
*/
|
|
376
|
-
export const MESH_CARDS_RASTER_IMMEDIATE_SIZE = vertex_resources.immediateSize;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transparent hits a capture ray steps past, at most, before the texel is empty.
|
|
3
|
-
* @type {number}
|
|
4
|
-
*/
|
|
5
|
-
export const MESH_CARD_ALPHA_CONTINUATIONS: number;
|
|
6
|
-
/**
|
|
7
|
-
* @type {WebGPUStruct}
|
|
8
|
-
*/
|
|
9
|
-
export const MESH_CARDS_CAPTURE_SETTINGS: WebGPUStruct;
|
|
10
|
-
/**
|
|
11
|
-
* Card capture (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a texel of each page captured
|
|
12
|
-
* this frame, the frame's pages being stretches of card sets, a run each in `mesh_card_runs`.
|
|
13
|
-
*
|
|
14
|
-
* 1. A ray in the geometry's local space starts on the card's near face, at the texel — the corner
|
|
15
|
-
* lattice of the bricks' faces, as a brick's texels sit on its voxels — and runs along the card's
|
|
16
|
-
* direction through its slab, t ≤ the slab's depth, by `ray_query_blas_nearest`.
|
|
17
|
-
* 2. A hit is opaque with probability its opacity (`sample_material_alpha`), as the path tracer takes
|
|
18
|
-
* alpha. A transparent draw steps the ray past the hit, MESH_CARD_ALPHA_CONTINUATIONS times at
|
|
19
|
-
* most; past that the texel is empty.
|
|
20
|
-
* 3. At the opaque hit, `sample_material_data` with the material's resident row and an identity
|
|
21
|
-
* transform, the card being in local space.
|
|
22
|
-
*
|
|
23
|
-
* Both read the material's textures at the texel's footprint (`mesh_card_texture_level`), filtered
|
|
24
|
-
* exactly ({@link IndirectTextureFilter.Exact}): nothing averages a card texel after it is stored, so a
|
|
25
|
-
* single tap would be kept as the texel, and a tap landing on a thin feature of the texture would put
|
|
26
|
-
* it in one row of texels and not the next.
|
|
27
|
-
*
|
|
28
|
-
* The random state is seeded from the card set and the texel, which fixes every draw: the alpha's and
|
|
29
|
-
* the material's dither. A recapture of an unchanged material therefore writes the same bytes.
|
|
30
|
-
*
|
|
31
|
-
* The albedo plane holds √(albedo × (1 − metalness)), Lumen's diffuse colour as UE stores it, and
|
|
32
|
-
* the hit's depth through the slab mapped onto [1/255, 1]. The emissive plane holds emissive / s_e.
|
|
33
|
-
* A texel whose ray found nothing stores 0 throughout.
|
|
34
|
-
*
|
|
35
|
-
* @type {ComputeShader}
|
|
36
|
-
*/
|
|
37
|
-
export const shader_mesh_cards_capture: ComputeShader;
|
|
38
|
-
import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
|
|
39
|
-
import { ComputeShader } from "../../../shader/ComputeShader.js";
|
|
40
|
-
//# sourceMappingURL=shader_mesh_cards_capture.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shader_mesh_cards_capture.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,4CAFU,MAAM,CAE+B;AAE/C;;GAEG;AACH,0CAFU,YAAY,CASS;AAqB/B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wCAFU,aAAa,CAgNsE;6BArRhE,sCAAsC;8BAJrC,kCAAkC"}
|