@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
|
@@ -12,11 +12,28 @@ import { shader_autoexposure_read_histogram } from "./shader_autoexposure_read_h
|
|
|
12
12
|
* @typedef {import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry} PipelineEnquiry
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
const HISTOGRAM_DESCRIPTOR = BufferResourceDescriptor.empty(
|
|
16
|
+
AUTOEXPOSURE_WRITE_HISTOGRAM_STRUCT.aligned_size,
|
|
17
|
+
GPUBufferUsage.STORAGE,
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const TARGET_LUMINANCE_DESCRIPTOR = BufferResourceDescriptor.from(
|
|
21
|
+
F32_CONTAINER_STRUCT.size,
|
|
22
|
+
GPUBufferUsage.STORAGE | GPUBufferUsage.UNIFORM,
|
|
23
|
+
);
|
|
24
|
+
|
|
15
25
|
/**
|
|
16
|
-
*
|
|
26
|
+
* The exposure: the factor the tonemapper multiplies the scene's linear radiance by ahead of its curve, metered from
|
|
27
|
+
* the frame and adapted to it ({@link update}), or set by {@link exposure_compensation} alone ({@link unadapted}).
|
|
28
|
+
*
|
|
29
|
+
* The factor lives in one buffer for the manager's life, {@link multiplier}, which a frame's {@link update} or
|
|
30
|
+
* {@link unadapted} writes over. A pass recorded ahead of that write in the frame reads the factor the last frame was
|
|
31
|
+
* shown with: the exposure of the image on screen, Unreal Engine's `View.PreExposure`.
|
|
17
32
|
*/
|
|
18
33
|
export class GPUCameraExposureManager {
|
|
19
34
|
/**
|
|
35
|
+
* The adapted luminance: last frame's, which this frame's adaptation reads, and this frame's, which it writes.
|
|
36
|
+
* They swap every {@link update}.
|
|
20
37
|
*
|
|
21
38
|
* @type {GPUTypedBuffer[]}
|
|
22
39
|
*/
|
|
@@ -24,6 +41,12 @@ export class GPUCameraExposureManager {
|
|
|
24
41
|
|
|
25
42
|
#frame_index = 0;
|
|
26
43
|
|
|
44
|
+
/**
|
|
45
|
+
* {@link F32_CONTAINER_STRUCT}: the factor the last {@link update} or {@link unadapted} wrote.
|
|
46
|
+
* @type {GPUTypedBuffer}
|
|
47
|
+
*/
|
|
48
|
+
#multiplier;
|
|
49
|
+
|
|
27
50
|
/**
|
|
28
51
|
* How fast do we adapt to brighter environments?
|
|
29
52
|
* in f-stops per second.
|
|
@@ -54,6 +77,17 @@ export class GPUCameraExposureManager {
|
|
|
54
77
|
*/
|
|
55
78
|
exposure_compensation = 0.0;
|
|
56
79
|
|
|
80
|
+
// what each pass's execution reads, kept across frames: a frame records them and runs them before the next does
|
|
81
|
+
#unadapted_data = { output: -1 };
|
|
82
|
+
#unadapted_value = { value: 1.0 };
|
|
83
|
+
#build_data = { input_color: -1, output: -1 };
|
|
84
|
+
#parse_data = { input_histogram: -1, output: -1 };
|
|
85
|
+
#adapt_data = { goal: -1, previous: -1, adapted: -1, out_multiplier: -1 };
|
|
86
|
+
#adapt_settings = { speed_up: 0, speed_down: 0, time_delta: 0, exp_transition_distance: 0, compensation: 0 };
|
|
87
|
+
#build_bindings = { tInput: null, histogram: null };
|
|
88
|
+
#parse_bindings = { histogram: null, output: null };
|
|
89
|
+
#adapt_bindings = { goal: null, previous: null, settings: this.#adapt_settings, adapted: null, out_multiplier: null };
|
|
90
|
+
|
|
57
91
|
/**
|
|
58
92
|
*
|
|
59
93
|
* @param {GPUDevice} device
|
|
@@ -72,12 +106,36 @@ export class GPUCameraExposureManager {
|
|
|
72
106
|
});
|
|
73
107
|
}
|
|
74
108
|
|
|
109
|
+
// a factor of one until the first frame writes its own
|
|
110
|
+
this.#multiplier = GPUTypedBuffer.create({
|
|
111
|
+
label: 'exposure multiplier',
|
|
112
|
+
device,
|
|
113
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
114
|
+
type: F32_CONTAINER_STRUCT,
|
|
115
|
+
initial_value: {
|
|
116
|
+
value: 1.0
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
|
|
75
120
|
}
|
|
76
121
|
|
|
77
122
|
destroy() {
|
|
78
123
|
for (const buffer of this.#exposure_buffers) {
|
|
79
124
|
buffer.destroy();
|
|
80
125
|
}
|
|
126
|
+
|
|
127
|
+
this.#multiplier.destroy();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* The factor, {@link F32_CONTAINER_STRUCT}, as the last {@link update} or {@link unadapted} wrote it. A frame
|
|
132
|
+
* imports it into its graph once, and hands the handle both to the passes that read it ahead of the exposure,
|
|
133
|
+
* which take the last frame's factor, and to {@link update} or {@link unadapted}, which write this frame's.
|
|
134
|
+
*
|
|
135
|
+
* @returns {GPUBuffer} usable as a uniform or read-only storage
|
|
136
|
+
*/
|
|
137
|
+
get multiplier() {
|
|
138
|
+
return this.#multiplier.buffer;
|
|
81
139
|
}
|
|
82
140
|
|
|
83
141
|
/**
|
|
@@ -93,62 +151,61 @@ export class GPUCameraExposureManager {
|
|
|
93
151
|
}
|
|
94
152
|
|
|
95
153
|
/**
|
|
154
|
+
* This frame's factor from {@link exposure_compensation} alone: 2^compensation.
|
|
96
155
|
*
|
|
97
156
|
* @param {Object} options
|
|
98
157
|
* @param {FrameGraph} options.graph
|
|
99
|
-
* @
|
|
158
|
+
* @param {number} options.multiplier the graph handle of {@link multiplier}, imported into `graph`
|
|
159
|
+
* @return {number} the handle of {@link multiplier} with this frame's factor written
|
|
100
160
|
*/
|
|
101
161
|
unadapted({
|
|
102
162
|
graph,
|
|
163
|
+
multiplier,
|
|
103
164
|
}) {
|
|
165
|
+
assert.defined(graph, 'graph');
|
|
166
|
+
assert.isNonNegativeInteger(multiplier, 'multiplier');
|
|
104
167
|
|
|
105
|
-
const data =
|
|
106
|
-
|
|
107
|
-
const pass = graph.add("unadapted", data,
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
*
|
|
111
|
-
* @param data
|
|
112
|
-
* @param {FramePassResources} resources
|
|
113
|
-
* @param {GraphicsExecutionContext} context
|
|
114
|
-
*/
|
|
115
|
-
(data, resources, context) => {
|
|
168
|
+
const data = this.#unadapted_data;
|
|
169
|
+
const pass = graph.add("unadapted", data, this.#execute_unadapted);
|
|
116
170
|
|
|
117
|
-
|
|
171
|
+
data.output = pass.write(multiplier);
|
|
118
172
|
|
|
173
|
+
return data.output;
|
|
174
|
+
}
|
|
119
175
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
data.output = pass.create("final", BufferResourceDescriptor.from(
|
|
134
|
-
F32_CONTAINER_STRUCT.size,
|
|
135
|
-
GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
|
|
136
|
-
));
|
|
176
|
+
/**
|
|
177
|
+
* @param data
|
|
178
|
+
* @param {FramePassResources} resources
|
|
179
|
+
* @param {GraphicsExecutionContext} context
|
|
180
|
+
*/
|
|
181
|
+
#execute_unadapted = (data, resources, context) => {
|
|
182
|
+
/**
|
|
183
|
+
* @type {ShadeGPUCommandContext}
|
|
184
|
+
*/
|
|
185
|
+
const encoder = context.encoder;
|
|
137
186
|
|
|
138
|
-
|
|
187
|
+
// compensation is in f-stops: each stop doubles/halves brightness
|
|
188
|
+
this.#unadapted_value.value = Math.pow(2, this.exposure_compensation);
|
|
139
189
|
|
|
190
|
+
// in the command stream, so a pass recorded ahead of this one still reads the last frame's factor
|
|
191
|
+
encoder.writeValueBuffer(resources.get(data.output), 0, F32_CONTAINER_STRUCT, this.#unadapted_value);
|
|
140
192
|
}
|
|
141
193
|
|
|
142
194
|
/**
|
|
195
|
+
* This frame's factor metered from `input_color`: the luminance adapted toward the frame's, from the last
|
|
196
|
+
* frame's, by the adaptation speeds; its factor is middle grey over it, times 2^{@link exposure_compensation}.
|
|
143
197
|
*
|
|
144
198
|
* @param {Object} options
|
|
145
199
|
* @param {FrameGraph} options.graph
|
|
146
200
|
* @param {number} options.input_color
|
|
201
|
+
* @param {number} options.multiplier the graph handle of {@link multiplier}, imported into `graph`
|
|
147
202
|
* @param {number} [options.time_delta_seconds]
|
|
203
|
+
* @return {number} the handle of {@link multiplier} with this frame's factor written
|
|
148
204
|
*/
|
|
149
205
|
update({
|
|
150
206
|
input_color,
|
|
151
207
|
graph,
|
|
208
|
+
multiplier,
|
|
152
209
|
time_delta_seconds = 0.01666,
|
|
153
210
|
}) {
|
|
154
211
|
|
|
@@ -160,142 +217,113 @@ export class GPUCameraExposureManager {
|
|
|
160
217
|
this used to be given, is Karis-averaged for precisely that purpose.
|
|
161
218
|
*/
|
|
162
219
|
|
|
220
|
+
assert.defined(graph, 'graph');
|
|
221
|
+
assert.isNonNegativeInteger(multiplier, 'multiplier');
|
|
163
222
|
assert.isNumber(time_delta_seconds, 'time_delta_seconds');
|
|
164
223
|
assert.greaterThanOrEqual(time_delta_seconds, 0, 'time_delta_seconds');
|
|
165
224
|
|
|
166
225
|
this.#frame_index++;
|
|
167
226
|
|
|
168
|
-
const build_data =
|
|
227
|
+
const build_data = this.#build_data;
|
|
228
|
+
const build_pass = graph.add("build histogram", build_data, this.#execute_build_histogram);
|
|
169
229
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
* @param data
|
|
173
|
-
* @param {FramePassResources} resources
|
|
174
|
-
* @param {GraphicsExecutionContext} context
|
|
175
|
-
*/
|
|
176
|
-
function build_histogram(data, resources, context) {
|
|
177
|
-
const input_color = resources.get(data.input_color);
|
|
178
|
-
const output = resources.get(data.output);
|
|
230
|
+
build_data.input_color = build_pass.read(input_color);
|
|
231
|
+
build_data.output = build_pass.create("histogram", HISTOGRAM_DESCRIPTOR);
|
|
179
232
|
|
|
180
|
-
|
|
181
|
-
|
|
233
|
+
const parse_data = this.#parse_data;
|
|
234
|
+
const parse_pass = graph.add("parse histogram", parse_data, this.#execute_parse_histogram);
|
|
182
235
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
236
|
+
parse_data.input_histogram = parse_pass.read(build_data.output);
|
|
237
|
+
parse_data.output = parse_pass.create("target luminance", TARGET_LUMINANCE_DESCRIPTOR);
|
|
187
238
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
group_count_x: gx,
|
|
191
|
-
group_count_y: gy,
|
|
192
|
-
bindings: {
|
|
193
|
-
tInput: input_color.obtainView(),
|
|
194
|
-
histogram: output,
|
|
195
|
-
},
|
|
196
|
-
});
|
|
239
|
+
const exposure_buffer_previous = this.#exposure_buffers[this.#frame_index % 2];
|
|
240
|
+
const exposure_buffer_current = this.#exposure_buffers[(this.#frame_index + 1) % 2];
|
|
197
241
|
|
|
198
|
-
|
|
242
|
+
// the frame's step; the rest of the settings are read as the pass runs
|
|
243
|
+
this.#adapt_settings.time_delta = time_delta_seconds;
|
|
199
244
|
|
|
200
|
-
const
|
|
245
|
+
const adapt_data = this.#adapt_data;
|
|
246
|
+
const adapt_pass = graph.add("adaptation", adapt_data, this.#execute_adapt);
|
|
201
247
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
248
|
+
adapt_data.goal = adapt_pass.read(parse_data.output);
|
|
249
|
+
adapt_data.previous = adapt_pass.read(graph_import_buffer(graph, exposure_buffer_previous.buffer, "previous adapted luminance"));
|
|
250
|
+
adapt_data.adapted = adapt_pass.write(graph_import_buffer(graph, exposure_buffer_current.buffer, "adapted luminance"));
|
|
251
|
+
adapt_data.out_multiplier = adapt_pass.write(multiplier);
|
|
252
|
+
|
|
253
|
+
return adapt_data.out_multiplier;
|
|
254
|
+
}
|
|
207
255
|
|
|
208
|
-
|
|
256
|
+
/**
|
|
257
|
+
* @param data
|
|
258
|
+
* @param {FramePassResources} resources
|
|
259
|
+
* @param {GraphicsExecutionContext} context
|
|
260
|
+
*/
|
|
261
|
+
#execute_build_histogram = (data, resources, context) => {
|
|
262
|
+
const input_color = resources.get(data.input_color);
|
|
263
|
+
const output = resources.get(data.output);
|
|
209
264
|
|
|
210
|
-
const
|
|
265
|
+
const gx = Math.ceil(input_color.width / 16);
|
|
266
|
+
const gy = Math.ceil(input_color.height / 16);
|
|
211
267
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
* @param {FramePassResources} resources
|
|
216
|
-
* @param {GraphicsExecutionContext} context
|
|
217
|
-
*/
|
|
218
|
-
function parse_histogram(data, resources, context) {
|
|
219
|
-
const input_histogram = resources.get(data.input_histogram);
|
|
220
|
-
const output = resources.get(data.output);
|
|
221
|
-
|
|
222
|
-
shader_autoexposure_read_histogram.dispatch({
|
|
223
|
-
encoder: context.encoder,
|
|
224
|
-
bindings: {
|
|
225
|
-
histogram: input_histogram,
|
|
226
|
-
output: output,
|
|
227
|
-
},
|
|
228
|
-
});
|
|
268
|
+
if (gx <= 0 || gy <= 0) {
|
|
269
|
+
// nothing to dispatch
|
|
270
|
+
return;
|
|
229
271
|
}
|
|
230
272
|
|
|
231
|
-
|
|
273
|
+
const bindings = this.#build_bindings;
|
|
232
274
|
|
|
233
|
-
|
|
234
|
-
|
|
275
|
+
bindings.tInput = input_color.obtainView();
|
|
276
|
+
bindings.histogram = output;
|
|
235
277
|
|
|
236
|
-
|
|
237
|
-
|
|
278
|
+
shader_autoexposure_build_histogram.dispatch({
|
|
279
|
+
encoder: context.encoder,
|
|
280
|
+
group_count_x: gx,
|
|
281
|
+
group_count_y: gy,
|
|
282
|
+
bindings,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
238
285
|
|
|
239
|
-
|
|
286
|
+
/**
|
|
287
|
+
* @param data
|
|
288
|
+
* @param {FramePassResources} resources
|
|
289
|
+
* @param {GraphicsExecutionContext} context
|
|
290
|
+
*/
|
|
291
|
+
#execute_parse_histogram = (data, resources, context) => {
|
|
292
|
+
const bindings = this.#parse_bindings;
|
|
240
293
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
F32_CONTAINER_STRUCT.size,
|
|
244
|
-
GPUBufferUsage.STORAGE | GPUBufferUsage.UNIFORM,
|
|
245
|
-
));
|
|
294
|
+
bindings.histogram = resources.get(data.input_histogram);
|
|
295
|
+
bindings.output = resources.get(data.output);
|
|
246
296
|
|
|
297
|
+
shader_autoexposure_read_histogram.dispatch({
|
|
298
|
+
encoder: context.encoder,
|
|
299
|
+
bindings,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
247
302
|
|
|
248
|
-
|
|
303
|
+
/**
|
|
304
|
+
* @param data
|
|
305
|
+
* @param {FramePassResources} resources
|
|
306
|
+
* @param {GraphicsExecutionContext} context
|
|
307
|
+
*/
|
|
308
|
+
#execute_adapt = (data, resources, context) => {
|
|
309
|
+
const settings = this.#adapt_settings;
|
|
249
310
|
|
|
250
|
-
|
|
311
|
+
settings.speed_up = this.adaptation_speed_up;
|
|
312
|
+
settings.speed_down = this.adaptation_speed_down;
|
|
313
|
+
settings.exp_transition_distance = this.exp_transition_distance;
|
|
314
|
+
settings.compensation = this.exposure_compensation;
|
|
251
315
|
|
|
252
|
-
|
|
253
|
-
*
|
|
254
|
-
* @param data
|
|
255
|
-
* @param {FramePassResources} resources
|
|
256
|
-
* @param {GraphicsExecutionContext} context
|
|
257
|
-
*/
|
|
258
|
-
const adapt = (data, resources, context) => {
|
|
259
|
-
|
|
260
|
-
const encoder = context.encoder;
|
|
261
|
-
|
|
262
|
-
const settings = {
|
|
263
|
-
speed_up: this.adaptation_speed_up,
|
|
264
|
-
speed_down: this.adaptation_speed_down,
|
|
265
|
-
time_delta: time_delta_seconds,
|
|
266
|
-
exp_transition_distance: this.exp_transition_distance,
|
|
267
|
-
compensation: this.exposure_compensation,
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const goal = resources.get(data.goal);
|
|
272
|
-
const previous = resources.get(data.previous);
|
|
273
|
-
const adapted = resources.get(data.adapted);
|
|
274
|
-
const out_multiplier = resources.get(data.out_multiplier);
|
|
275
|
-
|
|
276
|
-
shader_autoexposure_adapt.dispatch({
|
|
277
|
-
encoder,
|
|
278
|
-
bindings: {
|
|
279
|
-
goal,
|
|
280
|
-
previous,
|
|
281
|
-
settings,
|
|
282
|
-
adapted,
|
|
283
|
-
out_multiplier,
|
|
284
|
-
}
|
|
285
|
-
});
|
|
286
|
-
}
|
|
316
|
+
const bindings = this.#adapt_bindings;
|
|
287
317
|
|
|
288
|
-
|
|
318
|
+
bindings.goal = resources.get(data.goal);
|
|
319
|
+
bindings.previous = resources.get(data.previous);
|
|
320
|
+
bindings.adapted = resources.get(data.adapted);
|
|
321
|
+
bindings.out_multiplier = resources.get(data.out_multiplier);
|
|
289
322
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
F32_CONTAINER_STRUCT.size,
|
|
295
|
-
GPUBufferUsage.STORAGE | GPUBufferUsage.UNIFORM,
|
|
296
|
-
));
|
|
297
|
-
|
|
298
|
-
return adapt_data.out_multiplier;
|
|
323
|
+
shader_autoexposure_adapt.dispatch({
|
|
324
|
+
encoder: context.encoder,
|
|
325
|
+
bindings,
|
|
326
|
+
});
|
|
299
327
|
}
|
|
300
328
|
|
|
301
|
-
}
|
|
329
|
+
}
|
|
@@ -51,7 +51,7 @@ export class NSS {
|
|
|
51
51
|
* @returns {number}
|
|
52
52
|
*/
|
|
53
53
|
static recommended_jitter_sequence_size(upscale_ratio: number): number;
|
|
54
|
-
static "__#
|
|
54
|
+
static "__#216@#preprocess_tensor_descriptor"(render_w: any, render_h: any): TextureResourceDescriptor;
|
|
55
55
|
/**
|
|
56
56
|
* @param {GraphicsContext} graphics
|
|
57
57
|
*/
|
package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* {@link chunk_forward_sample_indirect} from the probe clipmap (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §9.5): one
|
|
3
3
|
* pick at the fragment by its shading normal and view, jittered by a hash of its position and normal that
|
|
4
|
-
* changes every frame, as Brick4's is, for both lobes. The irradiance is
|
|
4
|
+
* changes every frame, as Brick4's is, for both lobes. The irradiance is the picked SH resolved at the normal,
|
|
5
5
|
* the specular the pick's radiance at the fragment's roughness (§9.3); where no probe weighs anything, both are
|
|
6
6
|
* the environment's. Reads the probes' group, `view` and `tEnvironment`.
|
|
7
7
|
*
|
package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_forward_sample_indirect_probe_clipmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_forward_sample_indirect_probe_clipmap.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,0DAFU,SAAS,CAkCjB;0BA3CwB,oCAAoC"}
|
|
@@ -4,17 +4,16 @@ import { chunk_probe_clipmap_pick } from "../../global_illumination/probe_clipma
|
|
|
4
4
|
import {
|
|
5
5
|
chunk_probe_clipmap_sample_radiance
|
|
6
6
|
} from "../../global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js";
|
|
7
|
-
import { PI_DECLARATION } from "../../shader/chunk/math/PI_DECLARATION.js";
|
|
8
7
|
import { chunk_jitter_from_vectors } from "../../shader/chunk/random/chunk_jitter_from_vectors.js";
|
|
9
8
|
import {
|
|
10
|
-
|
|
11
|
-
} from "../../shader/chunk/spherical_harmonics/
|
|
9
|
+
chunk_sh3_color_get_irradiance_at
|
|
10
|
+
} from "../../shader/chunk/spherical_harmonics/chunk_sh3_color_get_irradiance_at.js";
|
|
12
11
|
import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* {@link chunk_forward_sample_indirect} from the probe clipmap (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §9.5): one
|
|
16
15
|
* pick at the fragment by its shading normal and view, jittered by a hash of its position and normal that
|
|
17
|
-
* changes every frame, as Brick4's is, for both lobes. The irradiance is
|
|
16
|
+
* changes every frame, as Brick4's is, for both lobes. The irradiance is the picked SH resolved at the normal,
|
|
18
17
|
* the specular the pick's radiance at the fragment's roughness (§9.3); where no probe weighs anything, both are
|
|
19
18
|
* the environment's. Reads the probes' group, `view` and `tEnvironment`.
|
|
20
19
|
*
|
|
@@ -37,8 +36,7 @@ fn forward_sample_indirect(
|
|
|
37
36
|
let probes = probe_clipmap_sh_of(pick);
|
|
38
37
|
|
|
39
38
|
if (probes.found) {
|
|
40
|
-
|
|
41
|
-
*irradiance = PI * resolve_irradiance_sh_to_diffuse(probes.sh.Y, probes.sh.CoCg, normal);
|
|
39
|
+
*irradiance = sh3_color_get_irradiance_at(normal, probes.sh);
|
|
42
40
|
*radiance = probe_clipmap_radiance_of(pick, position_ws, normal, view_direction, roughness).radiance;
|
|
43
41
|
} else {
|
|
44
42
|
*irradiance = get_ibl_irradiance(normal);
|
|
@@ -50,8 +48,7 @@ fn forward_sample_indirect(
|
|
|
50
48
|
chunk_get_ibl_irradiance,
|
|
51
49
|
chunk_probe_clipmap_pick,
|
|
52
50
|
chunk_probe_clipmap_sample_radiance,
|
|
53
|
-
|
|
51
|
+
chunk_sh3_color_get_irradiance_at,
|
|
54
52
|
chunk_jitter_from_vectors,
|
|
55
|
-
PI_DECLARATION,
|
|
56
53
|
]
|
|
57
54
|
);
|
|
@@ -105,7 +105,7 @@ export class GPUSceneContext {
|
|
|
105
105
|
* (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
|
|
106
106
|
* page after the root arrives because a cut asked for it. The renderer opens and closes each
|
|
107
107
|
* frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
|
|
108
|
-
* of it. With them, the source of its geometries' caches and
|
|
108
|
+
* of it. With them, the source of its geometries' caches and surface caches ({@link VGeoSDFProxies}): a virtual
|
|
109
109
|
* geometry whose cache is asked for stands in through its proxy.
|
|
110
110
|
*
|
|
111
111
|
* @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
|
|
@@ -400,7 +400,7 @@ export class GPUSceneContext {
|
|
|
400
400
|
* (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
|
|
401
401
|
* page after the root arrives because a cut asked for it. The renderer opens and closes each
|
|
402
402
|
* frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
|
|
403
|
-
* of it. With them, the source of its geometries' caches and
|
|
403
|
+
* of it. With them, the source of its geometries' caches and surface caches ({@link VGeoSDFProxies}): a virtual
|
|
404
404
|
* geometry whose cache is asked for stands in through its proxy.
|
|
405
405
|
*
|
|
406
406
|
* @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
|
|
@@ -6,16 +6,27 @@
|
|
|
6
6
|
*
|
|
7
7
|
* ```wgsl
|
|
8
8
|
* fn multiscale_mean_seed(sample: vec3f) -> MultiscaleMean
|
|
9
|
-
* fn multiscale_mean_add(e: MultiscaleMean, sample: vec3f, short_blend: f32, variance_blend: f32, mean_blend_min: f32, clip: bool) -> MultiscaleMean
|
|
9
|
+
* fn multiscale_mean_add(e: MultiscaleMean, sample: vec3f, short_blend: f32, variance_blend: f32, mean_blend_min: f32, clip: bool, exposure: f32) -> MultiscaleMean
|
|
10
|
+
* fn multiscale_mean_deviation_floor(short_mean: vec3f, exposure: f32) -> vec3f
|
|
10
11
|
* ```
|
|
11
12
|
*
|
|
12
13
|
* `MultiscaleMean` is {@link MULTISCALE_MEAN_STRUCT}.
|
|
13
14
|
*
|
|
15
|
+
* - **Exposure**: the factor the display multiplies the samples by ahead of its tone curve, Unreal Engine's
|
|
16
|
+
* `View.PreExposure`. The reference's two absolute constants, its variance floor of 1e-5 and its firefly offset
|
|
17
|
+
* of 0.1, are in exposed units, as Unreal states its world caches' thresholds (`MaxRayIntensity ·
|
|
18
|
+
* OneOverPreExposure`): over a stream scaled by 1/E at an exposure of E the estimator does what it does over
|
|
19
|
+
* the stream at an exposure of one, so it tells a change from noise as far as the display shows it. Held to the
|
|
20
|
+
* positive normal f32 range, where neither constant overflows or vanishes.
|
|
21
|
+
* - **Deviation floor**: the least deviation the estimator divides by, √1e-5 / exposure, and never under one
|
|
22
|
+
* half-float step of the short mean, `max(|short_mean|·2⁻¹⁰, 2⁻²⁴)`: the state is stored in halves, so a
|
|
23
|
+
* smaller gap between the means is their rounding, and the floor stays above zero at any exposure. Taken as
|
|
24
|
+
* `max(floor, √variance)`, the reference's `√max(floor², variance)` without squaring the floor.
|
|
14
25
|
* - **Seed**: both means at the first sample, nothing of variance, no blend reduction, an inconsistency of one,
|
|
15
26
|
* as WickedEngine's surfels seed it.
|
|
16
|
-
* - **Clip**: a sample past `0.1 + short_mean + 8·deviation` a channel is held there, a firefly.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
27
|
+
* - **Clip**: a sample past `0.1 / exposure + short_mean + 8·deviation` a channel is held there, a firefly. A
|
|
28
|
+
* caller whose variance does not yet rest on a window of samples passes `clip` false: there is no spread to clip
|
|
29
|
+
* to.
|
|
19
30
|
* - **Short mean**: blended by `short_blend`; the variance by `variance_blend`, the reference's half of it, so
|
|
20
31
|
* that its window outlasts the short mean's.
|
|
21
32
|
* - **Long mean**: blended by the catch-up, `smoothstep(relative · max(0.02, inconsistency − 0.2))` held to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk_multiscale_mean.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk_multiscale_mean.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,oCAFU,SAAS,CAuDZ;0BAhHmB,6BAA6B"}
|
|
@@ -2,6 +2,10 @@ import { CodeChunk } from "../../compiler/CodeChunk.js";
|
|
|
2
2
|
import { chunk_rgb_to_luminance } from "../color/chunk_rgb_to_luminance.js";
|
|
3
3
|
import { MULTISCALE_MEAN_STRUCT } from "./MULTISCALE_MEAN_STRUCT.js";
|
|
4
4
|
|
|
5
|
+
/** 2⁻¹²⁶ and 2¹²⁷, the positive normal f32 range's ends */
|
|
6
|
+
const EXPOSURE_MIN = '1.17549435e-38';
|
|
7
|
+
const EXPOSURE_MAX = '1.70141183e38';
|
|
8
|
+
|
|
5
9
|
/**
|
|
6
10
|
* The multi-scale mean estimator (MSME) of a stream of RGB samples: a long mean that blends slowly while the
|
|
7
11
|
* stream is steady and noisy, and catches up with a short mean once the two disagree by more than the stream's
|
|
@@ -10,16 +14,27 @@ import { MULTISCALE_MEAN_STRUCT } from "./MULTISCALE_MEAN_STRUCT.js";
|
|
|
10
14
|
*
|
|
11
15
|
* ```wgsl
|
|
12
16
|
* fn multiscale_mean_seed(sample: vec3f) -> MultiscaleMean
|
|
13
|
-
* fn multiscale_mean_add(e: MultiscaleMean, sample: vec3f, short_blend: f32, variance_blend: f32, mean_blend_min: f32, clip: bool) -> MultiscaleMean
|
|
17
|
+
* fn multiscale_mean_add(e: MultiscaleMean, sample: vec3f, short_blend: f32, variance_blend: f32, mean_blend_min: f32, clip: bool, exposure: f32) -> MultiscaleMean
|
|
18
|
+
* fn multiscale_mean_deviation_floor(short_mean: vec3f, exposure: f32) -> vec3f
|
|
14
19
|
* ```
|
|
15
20
|
*
|
|
16
21
|
* `MultiscaleMean` is {@link MULTISCALE_MEAN_STRUCT}.
|
|
17
22
|
*
|
|
23
|
+
* - **Exposure**: the factor the display multiplies the samples by ahead of its tone curve, Unreal Engine's
|
|
24
|
+
* `View.PreExposure`. The reference's two absolute constants, its variance floor of 1e-5 and its firefly offset
|
|
25
|
+
* of 0.1, are in exposed units, as Unreal states its world caches' thresholds (`MaxRayIntensity ·
|
|
26
|
+
* OneOverPreExposure`): over a stream scaled by 1/E at an exposure of E the estimator does what it does over
|
|
27
|
+
* the stream at an exposure of one, so it tells a change from noise as far as the display shows it. Held to the
|
|
28
|
+
* positive normal f32 range, where neither constant overflows or vanishes.
|
|
29
|
+
* - **Deviation floor**: the least deviation the estimator divides by, √1e-5 / exposure, and never under one
|
|
30
|
+
* half-float step of the short mean, `max(|short_mean|·2⁻¹⁰, 2⁻²⁴)`: the state is stored in halves, so a
|
|
31
|
+
* smaller gap between the means is their rounding, and the floor stays above zero at any exposure. Taken as
|
|
32
|
+
* `max(floor, √variance)`, the reference's `√max(floor², variance)` without squaring the floor.
|
|
18
33
|
* - **Seed**: both means at the first sample, nothing of variance, no blend reduction, an inconsistency of one,
|
|
19
34
|
* as WickedEngine's surfels seed it.
|
|
20
|
-
* - **Clip**: a sample past `0.1 + short_mean + 8·deviation` a channel is held there, a firefly.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
35
|
+
* - **Clip**: a sample past `0.1 / exposure + short_mean + 8·deviation` a channel is held there, a firefly. A
|
|
36
|
+
* caller whose variance does not yet rest on a window of samples passes `clip` false: there is no spread to clip
|
|
37
|
+
* to.
|
|
23
38
|
* - **Short mean**: blended by `short_blend`; the variance by `variance_blend`, the reference's half of it, so
|
|
24
39
|
* that its window outlasts the short mean's.
|
|
25
40
|
* - **Long mean**: blended by the catch-up, `smoothstep(relative · max(0.02, inconsistency − 0.2))` held to
|
|
@@ -55,17 +70,28 @@ fn multiscale_mean_seed(sample: vec3f) -> ${MULTISCALE_MEAN_STRUCT.wgsl_ref} {
|
|
|
55
70
|
})};
|
|
56
71
|
}
|
|
57
72
|
|
|
58
|
-
|
|
73
|
+
// the exposure, held to the positive normal f32 range
|
|
74
|
+
fn multiscale_mean_exposure(exposure: f32) -> f32 {
|
|
75
|
+
return clamp(exposure, ${EXPOSURE_MIN}, ${EXPOSURE_MAX});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
fn multiscale_mean_deviation_floor(short_mean: vec3f, exposure: f32) -> vec3f {
|
|
79
|
+
return max(vec3f(sqrt(1e-5) / multiscale_mean_exposure(exposure)), max(abs(short_mean) * exp2(-10.0), vec3f(exp2(-24.0))));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
fn multiscale_mean_add(e: ${MULTISCALE_MEAN_STRUCT.wgsl_ref}, sample: vec3f, short_blend: f32, variance_blend: f32, mean_blend_min: f32, clip: bool, exposure: f32) -> ${MULTISCALE_MEAN_STRUCT.wgsl_ref} {
|
|
59
83
|
var y = sample;
|
|
60
84
|
|
|
61
85
|
if (clip) {
|
|
62
|
-
|
|
86
|
+
let spread = max(multiscale_mean_deviation_floor(e.short_mean, exposure), sqrt(max(vec3f(0.0), e.variance)));
|
|
87
|
+
|
|
88
|
+
y = min(y, 0.1 / multiscale_mean_exposure(exposure) + e.short_mean + 8.0 * spread);
|
|
63
89
|
}
|
|
64
90
|
|
|
65
91
|
let delta = y - e.short_mean;
|
|
66
92
|
let short_mean = mix(e.short_mean, y, short_blend);
|
|
67
93
|
let variance = mix(e.variance, delta * (y - short_mean), variance_blend);
|
|
68
|
-
let deviation = sqrt(max(vec3f(
|
|
94
|
+
let deviation = max(multiscale_mean_deviation_floor(short_mean, exposure), sqrt(max(vec3f(0.0), variance)));
|
|
69
95
|
|
|
70
96
|
let relative = rgb_to_luminance(abs(e.mean - short_mean) / deviation);
|
|
71
97
|
let inconsistency = mix(e.inconsistency, relative, short_blend);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The code `albedo_compress` (`chunk_albedo_compress.js`) gives an albedo, on the host: each channel
|
|
3
|
+
* clamped to [0, 1], its square root rounded to f32 and then to unorm8, as `pack4x8unorm` rounds, the
|
|
4
|
+
* top byte 255.
|
|
5
|
+
*
|
|
6
|
+
* @param {number} r linear
|
|
7
|
+
* @param {number} g linear
|
|
8
|
+
* @param {number} b linear
|
|
9
|
+
* @returns {number} u32
|
|
10
|
+
*/
|
|
11
|
+
export function albedo_compress(r: number, g: number, b: number): number;
|
|
12
|
+
//# sourceMappingURL=albedo_compress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"albedo_compress.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/material/albedo_compress.js"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,mCALW,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB"}
|