@woosh/meep-engine 3.61.1 → 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/network/sim/SimActionExecutor.d.ts +4 -0
- package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
- package/src/engine/network/sim/SimActionExecutor.js +4 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/generation/foliage/material/foliage_atlas_cutout.d.ts.map +1 -1
- package/src/generation/foliage/material/foliage_atlas_cutout.js +21 -5
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -0
- package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_cluster_representatives.js +178 -78
- package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
- package/src/generation/foliage/mesh/tree_mesh_build_bark.js +178 -97
- package/src/generation/foliage/skeleton/ShootLightField.d.ts +1 -0
- package/src/generation/foliage/skeleton/ShootLightField.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/ShootLightField.js +88 -17
- package/src/generation/foliage/skeleton/ShootWoodHash.d.ts +5 -2
- package/src/generation/foliage/skeleton/ShootWoodHash.d.ts.map +1 -1
- package/src/generation/foliage/skeleton/ShootWoodHash.js +191 -25
- 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 +4 -5
- package/src/shade/playground/probe_clipmap_box/README.md +55 -0
- package/src/shade/playground/probe_clipmap_box/index.html +185 -0
- package/src/shade/playground/probe_clipmap_box/main.d.ts +8 -0
- package/src/shade/playground/probe_clipmap_box/main.d.ts.map +1 -0
- package/src/shade/playground/probe_clipmap_box/main.js +323 -0
- package/src/shade/playground/probe_clipmap_box/scene.d.ts +93 -0
- package/src/shade/playground/probe_clipmap_box/scene.d.ts.map +1 -0
- package/src/shade/playground/probe_clipmap_box/scene.js +256 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +56 -12
- 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/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts +12 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.js +49 -24
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts +12 -0
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.js +50 -19
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.js +6 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +89 -20
- 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 +23 -12
- 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 +72 -52
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +32 -0
- 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 +37 -0
- 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 +55 -23
- 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 +134 -69
- 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 +4 -3
- 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 +19 -24
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +14 -19
- 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_accumulate.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +8 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +5 -4
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +18 -23
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +4 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +4 -6
- 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 +9 -8
- 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_project.d.ts +4 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +14 -13
- 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 -6
- 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 +19 -21
- 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/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
- package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +5 -1
- 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/eye/GPUCameraExposureManager.d.ts +26 -8
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +170 -142
- package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -1
- package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +5 -8
- 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/filter/chunk_multiscale_mean.d.ts +15 -4
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js +33 -7
- 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/noise/chunk_sobol_sample_vec2.d.ts +40 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.js +75 -0
- package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.d.ts.map +1 -1
- package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.js +3 -1
- package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts +28 -0
- package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.js +41 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts +12 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.js +24 -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/irradiance_clipmap/GPUIrradianceClipmap.d.ts +3 -2
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +4 -0
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +2 -5
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
- package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +3 -20
- 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/chunk_water_gi.d.ts +1 -1
- package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
- package/src/shade/renderer/water/chunk_water_gi.js +6 -8
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLLanguageCore.js +76 -32
- package/src/core/math/hash/squirrel3.d.ts +0 -17
- package/src/core/math/hash/squirrel3.d.ts.map +0 -1
- package/src/core/math/hash/squirrel3.js +0 -30
- 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/shader/chunk/random/chunk_hash_squirrel3.d.ts +0 -12
- package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts.map +0 -1
- package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.js +0 -30
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A surface material texel fitted from weighted surface samples (`SURFACE_MATERIAL.js`):
|
|
5
|
+
*
|
|
6
|
+
* ```wgsl
|
|
7
|
+
* fn surface_material_fit_add(fit: ptr<function, SurfaceMaterialFit>, weight: f32, albedo: vec3<f32>, metal_rough: vec2<f32>, emissive: vec3<f32>)
|
|
8
|
+
* fn surface_material_fit_solve(fit: SurfaceMaterialFit) -> SurfaceMaterialFitted
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* A sample is a point of the surface under the texel's tent and the material there. Every property is
|
|
12
|
+
* fitted as a constant, the least-squares one: the samples' weighted mean. The sums add in any order,
|
|
13
|
+
* so a fit can be split and joined.
|
|
14
|
+
*
|
|
15
|
+
* `covered` is false for a fit of no weight: no surface was sampled under the tent.
|
|
16
|
+
*
|
|
17
|
+
* @type {CodeChunk}
|
|
18
|
+
*/
|
|
19
|
+
export const chunk_surface_material_fit = CodeChunk.from(
|
|
20
|
+
//language=WGSL
|
|
21
|
+
`
|
|
22
|
+
struct SurfaceMaterialFit {
|
|
23
|
+
weight: f32,
|
|
24
|
+
/** the weighted sums of the samples' albedos, metalness and roughness, and emissives */
|
|
25
|
+
albedo: vec3<f32>,
|
|
26
|
+
metal_rough: vec2<f32>,
|
|
27
|
+
emissive: vec3<f32>,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
struct SurfaceMaterialFitted {
|
|
31
|
+
covered: bool,
|
|
32
|
+
albedo: vec3<f32>,
|
|
33
|
+
/** (metalness, roughness) */
|
|
34
|
+
metal_rough: vec2<f32>,
|
|
35
|
+
emissive: vec3<f32>,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fn surface_material_fit_add(
|
|
39
|
+
fit: ptr<function, SurfaceMaterialFit>,
|
|
40
|
+
weight: f32,
|
|
41
|
+
albedo: vec3<f32>,
|
|
42
|
+
metal_rough: vec2<f32>,
|
|
43
|
+
emissive: vec3<f32>,
|
|
44
|
+
) {
|
|
45
|
+
(*fit).weight += weight;
|
|
46
|
+
(*fit).albedo += weight * albedo;
|
|
47
|
+
(*fit).metal_rough += weight * metal_rough;
|
|
48
|
+
(*fit).emissive += weight * emissive;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
fn surface_material_fit_solve(fit: SurfaceMaterialFit) -> SurfaceMaterialFitted {
|
|
52
|
+
var out: SurfaceMaterialFitted;
|
|
53
|
+
|
|
54
|
+
if (!(fit.weight > 0.0)) {
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let inverse_weight = 1.0 / fit.weight;
|
|
59
|
+
|
|
60
|
+
out.covered = true;
|
|
61
|
+
out.albedo = fit.albedo * inverse_weight;
|
|
62
|
+
out.metal_rough = fit.metal_rough * inverse_weight;
|
|
63
|
+
out.emissive = fit.emissive * inverse_weight;
|
|
64
|
+
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
`);
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a reader stands among a brick's surface material texels (`SURFACE_MATERIAL.js`), and which of
|
|
3
|
+
* them hold the surface it is on:
|
|
4
|
+
*
|
|
5
|
+
* ```wgsl
|
|
6
|
+
* fn surface_material_point(local: vec3<f32>, distance: f32, normal: vec3<f32>) -> vec3<f32>
|
|
7
|
+
* fn surface_material_base(point: vec3<f32>) -> vec3<u32>
|
|
8
|
+
* fn surface_material_corners(distances: texture_3d<f32>, field: vec3<u32>, point: vec3<f32>, present: u32, normal: vec3<f32>, tolerance: f32) -> SurfaceMaterialCorners
|
|
9
|
+
* fn surface_material_corner_weight(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* `local` is a point by the surface in voxels from the brick's corner, a hit's position, `distance` the
|
|
13
|
+
* field there in voxels and `normal` its normal. `surface_material_point` moves the point onto the
|
|
14
|
+
* surface by the distance along the normal and holds it to the brick's [0, 7]; the 8 texels around it,
|
|
15
|
+
* the corners of the voxel from `surface_material_base`, are the ones read. The brick's distances are
|
|
16
|
+
* the tile of `distances` from texel `field`, the field's encoding over ±{@link MESH_SDF_BAND_VOXELS}
|
|
17
|
+
* voxels. `present` has bit `c` for each corner `(c & 1, (c >> 1) & 1, c >> 2)` that holds a material,
|
|
18
|
+
* as the reader's storage says.
|
|
19
|
+
*
|
|
20
|
+
* A texel holds the surface its own distance d puts against the normal from it, as a bake looks at
|
|
21
|
+
* it. The field joins surfaces closer than a voxel, as a banner hanging off a wall, into one; its
|
|
22
|
+
* texels keep them apart. Of the corners that hold a material and weigh anything, the one whose surface
|
|
23
|
+
* lies nearest the surface point names the surface the reader is on, and a corner's weight is its
|
|
24
|
+
* trilinear one where it holds a material and its own surface lies within `tolerance` voxels of that
|
|
25
|
+
* one, 0 elsewhere: the reader's caller says how near two surfaces may be and still be one to it. The
|
|
26
|
+
* normal stands in for each corner's own, so a corner whose surface lies off to its side, as just past
|
|
27
|
+
* a banner's edge, counts it as lying along the normal.
|
|
28
|
+
*
|
|
29
|
+
* @type {CodeChunk}
|
|
30
|
+
*/
|
|
31
|
+
export const chunk_surface_material_corners: CodeChunk;
|
|
32
|
+
/**
|
|
33
|
+
* What a reader's surface takes from a brick's surface material texels kept in all three planes, a
|
|
34
|
+
* tile of each at the same texel, the albedo plane saying which hold a material (a written code is never
|
|
35
|
+
* 0): its diffuse albedo and its emissive, and apart its metalness and roughness:
|
|
36
|
+
*
|
|
37
|
+
* ```wgsl
|
|
38
|
+
* fn surface_material_present(albedo_codes: texture_3d<u32>, texel: vec3<u32>) -> u32
|
|
39
|
+
* fn surface_material_surface(distances: texture_3d<f32>, albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialSurface
|
|
40
|
+
* fn surface_material_metal_rough(distances: texture_3d<f32>, metal_rough_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialMetalRough
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* `surface_material_present` is the `present` of the voxel whose least corner is plane texel `texel`, a
|
|
44
|
+
* tile's origin plus `surface_material_base`. `material` is the tile's origin in the planes. The voxel's
|
|
45
|
+
* 8 texels (`surface_material_corners`) are blended by their weights: trilinear over those holding the
|
|
46
|
+
* surface the reader is on, as the field itself is read. `found` is false where none of the 8 holds a
|
|
47
|
+
* material: no surface sample was near.
|
|
48
|
+
*
|
|
49
|
+
* @type {CodeChunk}
|
|
50
|
+
*/
|
|
51
|
+
export const chunk_surface_material_read: CodeChunk;
|
|
52
|
+
/**
|
|
53
|
+
* What `surface_material_pick` draws when no texel of the voxel weighs anything.
|
|
54
|
+
* @type {number}
|
|
55
|
+
*/
|
|
56
|
+
export const SURFACE_MATERIAL_NO_CORNER: number;
|
|
57
|
+
/**
|
|
58
|
+
* One of the voxel's 8 texels (`surface_material_corners`) drawn in proportion to its weight, and its
|
|
59
|
+
* material: on average what {@link chunk_surface_material_read} blends, from one texel, for a reader
|
|
60
|
+
* that averages its reads, as a probe averages its rays (Fajardo et al., "Stochastic Texture
|
|
61
|
+
* Filtering", 2023):
|
|
62
|
+
*
|
|
63
|
+
* ```wgsl
|
|
64
|
+
* fn surface_material_pick(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, u: f32) -> u32
|
|
65
|
+
* fn surface_material_surface_at(albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners, corner: u32) -> SurfaceMaterialSurface
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* `surface_material_pick` draws corner `c`, `(c & 1, (c >> 1) & 1, c >> 2)`, with the chance of its
|
|
69
|
+
* weight (`surface_material_corner_weight`) over the voxel's (`sample_discrete_wrs_mat2x4`), `u`
|
|
70
|
+
* uniform in [0, 1); a corner of weight 0 is never drawn, and where none weighs anything the draw is
|
|
71
|
+
* {@link SURFACE_MATERIAL_NO_CORNER}. `surface_material_surface_at` is that corner's diffuse albedo and
|
|
72
|
+
* emissive, `found` false for none.
|
|
73
|
+
*
|
|
74
|
+
* @type {CodeChunk}
|
|
75
|
+
*/
|
|
76
|
+
export const chunk_surface_material_pick: CodeChunk;
|
|
77
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
78
|
+
//# sourceMappingURL=chunk_surface_material_read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_surface_material_read.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,6CAFU,SAAS,CAiGZ;AAEP;;;;;;;;;;;;;;;;;;GAkBG;AACH,0CAFU,SAAS,CA0FZ;AAEP;;;GAGG;AACH,yCAFU,MAAM,CAE4B;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,0CAFU,SAAS,CAoDZ;0BA1TmB,uCAAuC"}
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { chunk_rgbe9995_decode } from "../../../shader/chunk/color/rgbe9995/chunk_rgbe9995_decode.js";
|
|
2
|
+
import { F32_MAX_DEFINITION } from "../../../shader/chunk/math/F32_MAX_DEFINITION.js";
|
|
3
|
+
import { chunk_albedo_uncompress } from "../../../shader/chunk/material/chunk_albedo_uncompress.js";
|
|
4
|
+
import { chunk_metal_rough_uncompress } from "../../../shader/chunk/material/chunk_metal_rough_uncompress.js";
|
|
5
|
+
import { chunk_sample_discrete_wrs_mat2x4 } from "../../../shader/chunk/random/reservoir/chunk_sample_discrete_wrs_mat2x4.js";
|
|
6
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
7
|
+
import { MESH_SDF_BAND_VOXELS, MESH_SDF_BRICK_VOXELS } from "../MESH_SDF.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Where a reader stands among a brick's surface material texels (`SURFACE_MATERIAL.js`), and which of
|
|
11
|
+
* them hold the surface it is on:
|
|
12
|
+
*
|
|
13
|
+
* ```wgsl
|
|
14
|
+
* fn surface_material_point(local: vec3<f32>, distance: f32, normal: vec3<f32>) -> vec3<f32>
|
|
15
|
+
* fn surface_material_base(point: vec3<f32>) -> vec3<u32>
|
|
16
|
+
* fn surface_material_corners(distances: texture_3d<f32>, field: vec3<u32>, point: vec3<f32>, present: u32, normal: vec3<f32>, tolerance: f32) -> SurfaceMaterialCorners
|
|
17
|
+
* fn surface_material_corner_weight(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* `local` is a point by the surface in voxels from the brick's corner, a hit's position, `distance` the
|
|
21
|
+
* field there in voxels and `normal` its normal. `surface_material_point` moves the point onto the
|
|
22
|
+
* surface by the distance along the normal and holds it to the brick's [0, 7]; the 8 texels around it,
|
|
23
|
+
* the corners of the voxel from `surface_material_base`, are the ones read. The brick's distances are
|
|
24
|
+
* the tile of `distances` from texel `field`, the field's encoding over ±{@link MESH_SDF_BAND_VOXELS}
|
|
25
|
+
* voxels. `present` has bit `c` for each corner `(c & 1, (c >> 1) & 1, c >> 2)` that holds a material,
|
|
26
|
+
* as the reader's storage says.
|
|
27
|
+
*
|
|
28
|
+
* A texel holds the surface its own distance d puts against the normal from it, as a bake looks at
|
|
29
|
+
* it. The field joins surfaces closer than a voxel, as a banner hanging off a wall, into one; its
|
|
30
|
+
* texels keep them apart. Of the corners that hold a material and weigh anything, the one whose surface
|
|
31
|
+
* lies nearest the surface point names the surface the reader is on, and a corner's weight is its
|
|
32
|
+
* trilinear one where it holds a material and its own surface lies within `tolerance` voxels of that
|
|
33
|
+
* one, 0 elsewhere: the reader's caller says how near two surfaces may be and still be one to it. The
|
|
34
|
+
* normal stands in for each corner's own, so a corner whose surface lies off to its side, as just past
|
|
35
|
+
* a banner's edge, counts it as lying along the normal.
|
|
36
|
+
*
|
|
37
|
+
* @type {CodeChunk}
|
|
38
|
+
*/
|
|
39
|
+
export const chunk_surface_material_corners = CodeChunk.from(
|
|
40
|
+
//language=WGSL
|
|
41
|
+
`
|
|
42
|
+
struct SurfaceMaterialCorners {
|
|
43
|
+
/** the voxel's least corner, a texel of the brick */
|
|
44
|
+
base: vec3<u32>,
|
|
45
|
+
/** the voxel's least corner, a texel of the distances */
|
|
46
|
+
field: vec3<u32>,
|
|
47
|
+
/** the surface point within the voxel: the trilinear weights' fraction */
|
|
48
|
+
fraction: vec3<f32>,
|
|
49
|
+
normal: vec3<f32>,
|
|
50
|
+
/** bit c for each corner (c & 1, (c >> 1) & 1, c >> 2) that holds a material */
|
|
51
|
+
present: u32,
|
|
52
|
+
/** the surface the reader is on, along the normal from the surface point, voxels */
|
|
53
|
+
layer: f32,
|
|
54
|
+
/** how far from it a corner's surface may lie and be the same surface, voxels */
|
|
55
|
+
tolerance: f32,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
fn surface_material_point(local: vec3<f32>, distance: f32, normal: vec3<f32>) -> vec3<f32> {
|
|
59
|
+
return clamp(local - distance * normal, vec3<f32>(0.0), vec3<f32>(${MESH_SDF_BRICK_VOXELS}.0));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
fn surface_material_base(point: vec3<f32>) -> vec3<u32> {
|
|
63
|
+
return vec3<u32>(min(floor(point), vec3<f32>(${MESH_SDF_BRICK_VOXELS - 1}.0)));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
fn surface_material_corner_trilinear(corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32 {
|
|
67
|
+
let w = select(1.0 - corners.fraction, corners.fraction, corner == vec3<u32>(1u));
|
|
68
|
+
|
|
69
|
+
return w.x * w.y * w.z;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
fn surface_material_corner_present(corners: SurfaceMaterialCorners, corner: vec3<u32>) -> bool {
|
|
73
|
+
return (corners.present & (1u << (corner.x | (corner.y << 1u) | (corner.z << 2u)))) != 0u;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** the corner's own surface, along the normal from the surface point, voxels */
|
|
77
|
+
fn surface_material_corner_surface(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32 {
|
|
78
|
+
const band = ${MESH_SDF_BAND_VOXELS}.0;
|
|
79
|
+
|
|
80
|
+
let d = fma(textureLoad(distances, corners.field + corner, 0).r, 2.0 * band, -band);
|
|
81
|
+
|
|
82
|
+
return -d - dot(corners.normal, corners.fraction - vec3<f32>(corner));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
fn surface_material_corners(
|
|
86
|
+
distances: texture_3d<f32>,
|
|
87
|
+
field: vec3<u32>,
|
|
88
|
+
point: vec3<f32>,
|
|
89
|
+
present: u32,
|
|
90
|
+
normal: vec3<f32>,
|
|
91
|
+
tolerance: f32,
|
|
92
|
+
) -> SurfaceMaterialCorners {
|
|
93
|
+
let base = surface_material_base(point);
|
|
94
|
+
|
|
95
|
+
var out: SurfaceMaterialCorners;
|
|
96
|
+
|
|
97
|
+
out.base = base;
|
|
98
|
+
out.field = field + base;
|
|
99
|
+
out.fraction = point - vec3<f32>(base);
|
|
100
|
+
out.normal = normal;
|
|
101
|
+
out.present = present;
|
|
102
|
+
out.tolerance = tolerance;
|
|
103
|
+
|
|
104
|
+
var layer = F32_MAX;
|
|
105
|
+
|
|
106
|
+
for (var c = 0u; c < 8u; c++) {
|
|
107
|
+
let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
|
|
108
|
+
|
|
109
|
+
if (surface_material_corner_trilinear(out, corner) > 0.0 && surface_material_corner_present(out, corner)) {
|
|
110
|
+
let held = surface_material_corner_surface(distances, out, corner);
|
|
111
|
+
|
|
112
|
+
if (abs(held) < abs(layer)) {
|
|
113
|
+
layer = held;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
out.layer = layer;
|
|
119
|
+
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
fn surface_material_corner_weight(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32 {
|
|
124
|
+
if (!surface_material_corner_present(corners, corner)) {
|
|
125
|
+
return 0.0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
let on_layer = abs(surface_material_corner_surface(distances, corners, corner) - corners.layer) <= corners.tolerance;
|
|
129
|
+
|
|
130
|
+
return select(0.0, surface_material_corner_trilinear(corners, corner), on_layer);
|
|
131
|
+
}
|
|
132
|
+
`, [
|
|
133
|
+
F32_MAX_DEFINITION,
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* What a reader's surface takes from a brick's surface material texels kept in all three planes, a
|
|
138
|
+
* tile of each at the same texel, the albedo plane saying which hold a material (a written code is never
|
|
139
|
+
* 0): its diffuse albedo and its emissive, and apart its metalness and roughness:
|
|
140
|
+
*
|
|
141
|
+
* ```wgsl
|
|
142
|
+
* fn surface_material_present(albedo_codes: texture_3d<u32>, texel: vec3<u32>) -> u32
|
|
143
|
+
* fn surface_material_surface(distances: texture_3d<f32>, albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialSurface
|
|
144
|
+
* fn surface_material_metal_rough(distances: texture_3d<f32>, metal_rough_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialMetalRough
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* `surface_material_present` is the `present` of the voxel whose least corner is plane texel `texel`, a
|
|
148
|
+
* tile's origin plus `surface_material_base`. `material` is the tile's origin in the planes. The voxel's
|
|
149
|
+
* 8 texels (`surface_material_corners`) are blended by their weights: trilinear over those holding the
|
|
150
|
+
* surface the reader is on, as the field itself is read. `found` is false where none of the 8 holds a
|
|
151
|
+
* material: no surface sample was near.
|
|
152
|
+
*
|
|
153
|
+
* @type {CodeChunk}
|
|
154
|
+
*/
|
|
155
|
+
export const chunk_surface_material_read = CodeChunk.from(
|
|
156
|
+
//language=WGSL
|
|
157
|
+
`
|
|
158
|
+
struct SurfaceMaterialSurface {
|
|
159
|
+
found: bool,
|
|
160
|
+
albedo: vec3<f32>,
|
|
161
|
+
emissive: vec3<f32>,
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
struct SurfaceMaterialMetalRough {
|
|
165
|
+
found: bool,
|
|
166
|
+
/** (metalness, roughness) */
|
|
167
|
+
metal_rough: vec2<f32>,
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
fn surface_material_present(albedo_codes: texture_3d<u32>, texel: vec3<u32>) -> u32 {
|
|
171
|
+
var present = 0u;
|
|
172
|
+
|
|
173
|
+
for (var c = 0u; c < 8u; c++) {
|
|
174
|
+
let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
|
|
175
|
+
|
|
176
|
+
if (textureLoad(albedo_codes, texel + corner, 0).x != 0u) {
|
|
177
|
+
present |= 1u << c;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return present;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
fn surface_material_surface(distances: texture_3d<f32>, albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialSurface {
|
|
185
|
+
var albedo = vec3<f32>(0.0);
|
|
186
|
+
var emissive = vec3<f32>(0.0);
|
|
187
|
+
var weight = 0.0;
|
|
188
|
+
|
|
189
|
+
for (var c = 0u; c < 8u; c++) {
|
|
190
|
+
let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
|
|
191
|
+
let w = surface_material_corner_weight(distances, corners, corner);
|
|
192
|
+
|
|
193
|
+
if (w > 0.0) {
|
|
194
|
+
let texel = material + corners.base + corner;
|
|
195
|
+
|
|
196
|
+
albedo += w * albedo_uncompress(textureLoad(albedo_codes, texel, 0).x);
|
|
197
|
+
emissive += w * rgbe9995_decode(textureLoad(emissive_codes, texel, 0).x);
|
|
198
|
+
weight += w;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
var out: SurfaceMaterialSurface;
|
|
203
|
+
|
|
204
|
+
out.found = weight > 0.0;
|
|
205
|
+
|
|
206
|
+
if (out.found) {
|
|
207
|
+
out.albedo = albedo / weight;
|
|
208
|
+
out.emissive = emissive / weight;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return out;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
fn surface_material_metal_rough(distances: texture_3d<f32>, metal_rough_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialMetalRough {
|
|
215
|
+
var sum = vec2<f32>(0.0);
|
|
216
|
+
var weight = 0.0;
|
|
217
|
+
|
|
218
|
+
for (var c = 0u; c < 8u; c++) {
|
|
219
|
+
let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
|
|
220
|
+
let w = surface_material_corner_weight(distances, corners, corner);
|
|
221
|
+
|
|
222
|
+
if (w > 0.0) {
|
|
223
|
+
sum += w * metal_rough_uncompress(textureLoad(metal_rough_codes, material + corners.base + corner, 0).x);
|
|
224
|
+
weight += w;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
var out: SurfaceMaterialMetalRough;
|
|
229
|
+
|
|
230
|
+
out.found = weight > 0.0;
|
|
231
|
+
|
|
232
|
+
if (out.found) {
|
|
233
|
+
out.metal_rough = sum / weight;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return out;
|
|
237
|
+
}
|
|
238
|
+
`, [
|
|
239
|
+
chunk_surface_material_corners,
|
|
240
|
+
chunk_albedo_uncompress,
|
|
241
|
+
chunk_rgbe9995_decode,
|
|
242
|
+
chunk_metal_rough_uncompress,
|
|
243
|
+
]);
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* What `surface_material_pick` draws when no texel of the voxel weighs anything.
|
|
247
|
+
* @type {number}
|
|
248
|
+
*/
|
|
249
|
+
export const SURFACE_MATERIAL_NO_CORNER = 8;
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* One of the voxel's 8 texels (`surface_material_corners`) drawn in proportion to its weight, and its
|
|
253
|
+
* material: on average what {@link chunk_surface_material_read} blends, from one texel, for a reader
|
|
254
|
+
* that averages its reads, as a probe averages its rays (Fajardo et al., "Stochastic Texture
|
|
255
|
+
* Filtering", 2023):
|
|
256
|
+
*
|
|
257
|
+
* ```wgsl
|
|
258
|
+
* fn surface_material_pick(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, u: f32) -> u32
|
|
259
|
+
* fn surface_material_surface_at(albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners, corner: u32) -> SurfaceMaterialSurface
|
|
260
|
+
* ```
|
|
261
|
+
*
|
|
262
|
+
* `surface_material_pick` draws corner `c`, `(c & 1, (c >> 1) & 1, c >> 2)`, with the chance of its
|
|
263
|
+
* weight (`surface_material_corner_weight`) over the voxel's (`sample_discrete_wrs_mat2x4`), `u`
|
|
264
|
+
* uniform in [0, 1); a corner of weight 0 is never drawn, and where none weighs anything the draw is
|
|
265
|
+
* {@link SURFACE_MATERIAL_NO_CORNER}. `surface_material_surface_at` is that corner's diffuse albedo and
|
|
266
|
+
* emissive, `found` false for none.
|
|
267
|
+
*
|
|
268
|
+
* @type {CodeChunk}
|
|
269
|
+
*/
|
|
270
|
+
export const chunk_surface_material_pick = CodeChunk.from(
|
|
271
|
+
//language=WGSL
|
|
272
|
+
`
|
|
273
|
+
fn surface_material_weight_of(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, c: u32) -> f32 {
|
|
274
|
+
return surface_material_corner_weight(distances, corners, vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u));
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
fn surface_material_pick(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, u: f32) -> u32 {
|
|
278
|
+
// corner c at column c >> 2, row c & 3
|
|
279
|
+
let weights = mat2x4<f32>(
|
|
280
|
+
vec4<f32>(
|
|
281
|
+
surface_material_weight_of(distances, corners, 0u),
|
|
282
|
+
surface_material_weight_of(distances, corners, 1u),
|
|
283
|
+
surface_material_weight_of(distances, corners, 2u),
|
|
284
|
+
surface_material_weight_of(distances, corners, 3u),
|
|
285
|
+
),
|
|
286
|
+
vec4<f32>(
|
|
287
|
+
surface_material_weight_of(distances, corners, 4u),
|
|
288
|
+
surface_material_weight_of(distances, corners, 5u),
|
|
289
|
+
surface_material_weight_of(distances, corners, 6u),
|
|
290
|
+
surface_material_weight_of(distances, corners, 7u),
|
|
291
|
+
),
|
|
292
|
+
);
|
|
293
|
+
|
|
294
|
+
if (all(weights[0] == vec4<f32>(0.0)) && all(weights[1] == vec4<f32>(0.0))) {
|
|
295
|
+
return ${SURFACE_MATERIAL_NO_CORNER}u;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
var draw = u;
|
|
299
|
+
|
|
300
|
+
return u32(sample_discrete_wrs_mat2x4(weights, &draw));
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
fn surface_material_surface_at(albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners, corner: u32) -> SurfaceMaterialSurface {
|
|
304
|
+
var out: SurfaceMaterialSurface;
|
|
305
|
+
|
|
306
|
+
out.found = corner < ${SURFACE_MATERIAL_NO_CORNER}u;
|
|
307
|
+
|
|
308
|
+
if (out.found) {
|
|
309
|
+
let texel = material + corners.base + vec3<u32>(corner & 1u, (corner >> 1u) & 1u, corner >> 2u);
|
|
310
|
+
|
|
311
|
+
out.albedo = albedo_uncompress(textureLoad(albedo_codes, texel, 0).x);
|
|
312
|
+
out.emissive = rgbe9995_decode(textureLoad(emissive_codes, texel, 0).x);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return out;
|
|
316
|
+
}
|
|
317
|
+
`, [
|
|
318
|
+
chunk_surface_material_read,
|
|
319
|
+
chunk_sample_discrete_wrs_mat2x4,
|
|
320
|
+
]);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A surface material texel written into its planes (`SURFACE_MATERIAL.js`), each through its own codec:
|
|
3
|
+
*
|
|
4
|
+
* ```wgsl
|
|
5
|
+
* fn surface_material_store(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>, fitted: SurfaceMaterialFitted)
|
|
6
|
+
* fn surface_material_clear(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>)
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* `at` is the texel in the planes' atlas. A fit that covered nothing clears: 0 in every plane, no material.
|
|
10
|
+
*
|
|
11
|
+
* @type {CodeChunk}
|
|
12
|
+
*/
|
|
13
|
+
export const chunk_surface_material_store: CodeChunk;
|
|
14
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
15
|
+
//# sourceMappingURL=chunk_surface_material_store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk_surface_material_store.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;GAWG;AACH,2CAFU,SAAS,CA0BZ;0BA5CmB,uCAAuC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { chunk_rgbe9995_encode } from "../../../shader/chunk/color/rgbe9995/chunk_rgbe9995_encode.js";
|
|
2
|
+
import { chunk_albedo_compress } from "../../../shader/chunk/material/chunk_albedo_compress.js";
|
|
3
|
+
import { chunk_metal_rough_compress } from "../../../shader/chunk/material/chunk_metal_rough_compress.js";
|
|
4
|
+
import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
|
|
5
|
+
import { chunk_surface_material_fit } from "./chunk_surface_material_fit.js";
|
|
6
|
+
import { SURFACE_MATERIAL_ALBEDO_PLANE, SURFACE_MATERIAL_EMISSIVE_PLANE, SURFACE_MATERIAL_FORMATS, SURFACE_MATERIAL_METAL_ROUGH_PLANE } from "./SURFACE_MATERIAL.js";
|
|
7
|
+
|
|
8
|
+
const ALBEDO = `texture_storage_3d<${SURFACE_MATERIAL_FORMATS[SURFACE_MATERIAL_ALBEDO_PLANE]}, write>`;
|
|
9
|
+
const METAL_ROUGH = `texture_storage_3d<${SURFACE_MATERIAL_FORMATS[SURFACE_MATERIAL_METAL_ROUGH_PLANE]}, write>`;
|
|
10
|
+
const EMISSIVE = `texture_storage_3d<${SURFACE_MATERIAL_FORMATS[SURFACE_MATERIAL_EMISSIVE_PLANE]}, write>`;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A surface material texel written into its planes (`SURFACE_MATERIAL.js`), each through its own codec:
|
|
14
|
+
*
|
|
15
|
+
* ```wgsl
|
|
16
|
+
* fn surface_material_store(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>, fitted: SurfaceMaterialFitted)
|
|
17
|
+
* fn surface_material_clear(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>)
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* `at` is the texel in the planes' atlas. A fit that covered nothing clears: 0 in every plane, no material.
|
|
21
|
+
*
|
|
22
|
+
* @type {CodeChunk}
|
|
23
|
+
*/
|
|
24
|
+
export const chunk_surface_material_store = CodeChunk.from(
|
|
25
|
+
//language=WGSL
|
|
26
|
+
`
|
|
27
|
+
fn surface_material_clear(albedo: ${ALBEDO}, metal_rough: ${METAL_ROUGH}, emissive: ${EMISSIVE}, at: vec3<u32>) {
|
|
28
|
+
textureStore(albedo, at, vec4<u32>(0u));
|
|
29
|
+
textureStore(metal_rough, at, vec4<u32>(0u));
|
|
30
|
+
textureStore(emissive, at, vec4<u32>(0u));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fn surface_material_store(albedo: ${ALBEDO}, metal_rough: ${METAL_ROUGH}, emissive: ${EMISSIVE}, at: vec3<u32>, fitted: SurfaceMaterialFitted) {
|
|
34
|
+
if (!fitted.covered) {
|
|
35
|
+
surface_material_clear(albedo, metal_rough, emissive, at);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
textureStore(albedo, at, vec4<u32>(albedo_compress(fitted.albedo), 0u, 0u, 0u));
|
|
40
|
+
textureStore(metal_rough, at, vec4<u32>(metal_rough_compress(fitted.metal_rough), 0u, 0u, 0u));
|
|
41
|
+
textureStore(emissive, at, vec4<u32>(rgbe9995_encode(fitted.emissive), 0u, 0u, 0u));
|
|
42
|
+
}
|
|
43
|
+
`, [
|
|
44
|
+
chunk_surface_material_fit,
|
|
45
|
+
chunk_albedo_compress,
|
|
46
|
+
chunk_metal_rough_compress,
|
|
47
|
+
chunk_rgbe9995_encode,
|
|
48
|
+
]);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which planes of a pair's surface material vary, and the codes of every plane at the material's own
|
|
3
|
+
* values, as the bake's material sample makes them (`sample_material_data`, `shader_mesh_surface_trace`):
|
|
4
|
+
*
|
|
5
|
+
* - the diffuse albedo, base × (1 − metalness), the base the albedo texture × the diffuse color × the
|
|
6
|
+
* vertex color;
|
|
7
|
+
* - the metalness and the roughness, the ORM texture's blue and green × their factors;
|
|
8
|
+
* - the emissive, the emissive texture × its factor.
|
|
9
|
+
*
|
|
10
|
+
* A material's missing texture is a white texel, its missing ORM texture too, as its resident row reads
|
|
11
|
+
* it; a material that is not standard is {@link NEUTRAL_SURFACE} over its textures. A product varies
|
|
12
|
+
* where one of its terms does and none of them is 0 throughout: a metalness of 1 throughout leaves no
|
|
13
|
+
* diffuse albedo to vary. The codes are taken without the bake's dither.
|
|
14
|
+
*
|
|
15
|
+
* @param {ShadeMaterial} material
|
|
16
|
+
* @param {boolean} vertex_colored whether the geometry's vertices carry a color other than white
|
|
17
|
+
* @param {MeshSurfaceChannels} out
|
|
18
|
+
* @returns {MeshSurfaceChannels} out
|
|
19
|
+
*/
|
|
20
|
+
export function mesh_surface_channels(material: ShadeMaterial, vertex_colored: boolean, out: MeshSurfaceChannels): MeshSurfaceChannels;
|
|
21
|
+
/**
|
|
22
|
+
* @typedef {import("../../../material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* What a (geometry, material) pair's surface material is made of: which planes vary over its surface,
|
|
26
|
+
* and the code each plane takes everywhere when it does not.
|
|
27
|
+
*/
|
|
28
|
+
export class MeshSurfaceChannels {
|
|
29
|
+
/**
|
|
30
|
+
* Bit `1 << plane` for each plane (`SURFACE_MATERIAL.js`) that varies over the surface.
|
|
31
|
+
* @type {number}
|
|
32
|
+
*/
|
|
33
|
+
texels: number;
|
|
34
|
+
/**
|
|
35
|
+
* The diffuse albedo's code (`albedo_compress`).
|
|
36
|
+
* @type {number}
|
|
37
|
+
*/
|
|
38
|
+
albedo: number;
|
|
39
|
+
/**
|
|
40
|
+
* The metalness and roughness's code (`metal_rough_compress`).
|
|
41
|
+
* @type {number}
|
|
42
|
+
*/
|
|
43
|
+
metal_rough: number;
|
|
44
|
+
/**
|
|
45
|
+
* The emissive's code (`rgbe9995_encode`).
|
|
46
|
+
* @type {number}
|
|
47
|
+
*/
|
|
48
|
+
emissive: number;
|
|
49
|
+
}
|
|
50
|
+
export type ShadeMaterial = import("../../../material/ShadeMaterial.js").ShadeMaterial;
|
|
51
|
+
//# sourceMappingURL=mesh_surface_channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh_surface_channels.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js"],"names":[],"mappings":"AAiDA;;;;;;;;;;;;;;;;;;GAkBG;AACH,gDALW,aAAa,kBACb,OAAO,OACP,mBAAmB,GACjB,mBAAmB,CA0C/B;AAlGD;;GAEG;AAEH;;;GAGG;AACH;IACI;;;OAGG;IACH,QAFU,MAAM,CAEL;IACX;;;OAGG;IACH,QAFU,MAAM,CAEL;IACX;;;OAGG;IACH,aAFU,MAAM,CAEA;IAChB;;;OAGG;IACH,UAFU,MAAM,CAEH;CAChB;4BA5BY,OAAO,oCAAoC,EAAE,aAAa"}
|