@woosh/meep-engine 3.60.4 → 3.60.6
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 +2621 -0
- package/CONTRIBUTING.md +7 -0
- package/MIGRATION_2_TO_3.md +136 -0
- package/SECURITY.md +4 -0
- package/editor/EditorCameraNavigation.d.ts +2 -1
- package/editor/EditorCameraNavigation.d.ts.map +1 -1
- package/editor/EditorCameraNavigation.js +51 -57
- package/package.json +6 -2
- package/src/engine/EngineHarness.d.ts +3 -9
- package/src/engine/EngineHarness.d.ts.map +1 -1
- package/src/engine/EngineHarness.js +6 -8
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts +9 -6
- package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
- package/src/engine/graphics/camera/makeOrbitalCameraController.js +44 -71
- package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts +64 -0
- package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts.map +1 -0
- package/src/engine/graphics/camera/orbital/MomentumAxis.js +187 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts +86 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts.map +1 -0
- package/src/engine/graphics/camera/orbital/OrbitalCameraRig.js +319 -0
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +34 -10
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +116 -30
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +1 -7
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +1 -37
- package/src/engine/graphics/ecs/water/Water.d.ts +8 -0
- package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
- package/src/engine/graphics/ecs/water/Water.js +8 -0
- package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/WaterSystem.js +731 -734
- package/src/engine/graphics3/decal/DecalTileShader.d.ts +61 -0
- package/src/engine/graphics3/decal/DecalTileShader.d.ts.map +1 -0
- package/src/engine/graphics3/decal/DecalTileShader.js +138 -0
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts +10 -4
- package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
- package/src/engine/graphics3/decal/GPUDecalRenderer.js +149 -44
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts +25 -0
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts.map +1 -0
- package/src/engine/graphics3/decal/chunk_decal_tile_vertex.js +55 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts +22 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts.map +1 -0
- package/src/engine/graphics3/decal/graph_gather_decal_tiles.js +70 -0
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts +7 -5
- package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
- package/src/engine/graphics3/decal/shader_decal_composite.js +48 -44
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts +12 -0
- package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -0
- package/src/engine/graphics3/decal/shader_decal_tile_copy.js +78 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts +11 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts.map +1 -0
- package/src/engine/graphics3/decal/shader_gather_decal_tiles.js +80 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.d.ts +13 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.d.ts.map +1 -0
- package/src/engine/input/devices/mouse/MouseEventButtons.js +23 -0
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts +4 -0
- package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
- package/src/engine/input/ecs/controllers/KeyboardCameraController.js +9 -45
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/water_refraction/README.md +5 -6
- package/src/shade/playground/water_refraction/index.html +1 -1
- package/src/shade/renderer/Renderer.d.ts +11 -0
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +50 -6
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +40 -80
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +197 -147
- 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/sdf/GPUGeometrySDFManager.d.ts +28 -45
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +111 -119
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +22 -3
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
- package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +84 -3
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts +19 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.js +25 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts +31 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.js +343 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +15 -0
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +38 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts +17 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts.map +1 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.js +29 -0
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +7 -13
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +28 -59
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts.map +1 -1
- package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +84 -789
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +1 -8
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +7 -6
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +12 -11
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js +2 -2
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +1 -4
- 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 +1 -10
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +5 -15
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +1 -1
- package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +6 -34
- 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 +1 -7
- package/src/shade/renderer/hiz/HZBFootprint.d.ts +14 -0
- package/src/shade/renderer/hiz/HZBFootprint.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZBFootprint.js +16 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts +10 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.js +11 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts +10 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts.map +1 -0
- package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js +11 -0
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +0 -7
- package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
- package/src/shade/renderer/hiz/HierarchicalZBuffer.js +405 -350
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts +12 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts.map +1 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_x.js +27 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts +12 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts.map +1 -0
- package/src/shade/renderer/hiz/chunk_hzb_footprint_y.js +27 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts +14 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts.map +1 -0
- package/src/shade/renderer/hiz/hzb_footprint_texels.js +34 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +0 -5
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
- package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +37 -57
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts +11 -0
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts.map +1 -0
- package/src/shade/renderer/hiz/{shader_hzb_reduce_mip0_clip.js → shader_hzb_reduce_mip0.js} +120 -111
- package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts +11 -1
- package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
- package/src/shade/renderer/material/GPUMaterialManager.js +16 -8
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -12
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
- package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +17 -118
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +7 -3
- package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/GTAO.js +26 -13
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +14 -0
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +196 -68
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +42 -28
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
- package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +429 -414
- package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts +16 -0
- package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts.map +1 -0
- package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +156 -0
- package/src/shade/renderer/scene/GPUSceneContext.d.ts +2 -2
- package/src/shade/renderer/scene/GPUSceneContext.js +5 -5
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +7 -2
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts +0 -6
- package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
- package/src/shade/renderer/water/GPUWaterRenderer.js +12 -17
- package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts +35 -0
- package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts.map +1 -0
- package/src/shade/renderer/water/medium/graph_water_meshlets.js +89 -0
- package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
- package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water.js +22 -13
- package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
- package/src/shade/renderer/water/shader_water_avboit.js +7 -7
- package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +1 -1
- package/src/shade/renderer/water/surface/graph_water_tessellation.js +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +9 -1
- package/editor/REWORK_PLAN_2026_08.md +0 -692
- package/src/CODEC_LAYOUT_VERIFICATION.md +0 -419
- package/src/CORRECTNESS_HUNT_2026_07_24.md +0 -142
- package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +0 -738
- package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +0 -79
- package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +0 -93
- package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +0 -80
- package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +0 -164
- package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +0 -69
- package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +0 -110
- package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +0 -129
- package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +0 -72
- package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +0 -74
- package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +0 -169
- package/src/DUPLICATION_AUDIT_2026_08_07.md +0 -254
- package/src/DUPLICATION_AUDIT_REMEDIATION.md +0 -250
- package/src/DUPLICATION_REVIEW_2026_10_24.md +0 -1072
- package/src/REVIEW_2026_08_06/adv-core.md +0 -511
- package/src/REVIEW_2026_08_06/adv-gfx.md +0 -480
- package/src/REVIEW_2026_08_06/adv-view.md +0 -446
- package/src/REVIEW_2026_08_06/api-core.md +0 -296
- package/src/REVIEW_2026_08_06/api-engine.md +0 -195
- package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +0 -507
- package/src/REVIEW_2026_08_06/core-binary.md +0 -348
- package/src/REVIEW_2026_08_06/core-collection.md +0 -376
- package/src/REVIEW_2026_08_06/core-math.md +0 -221
- package/src/REVIEW_2026_08_06/core-process.md +0 -266
- package/src/REVIEW_2026_08_06/core-science.md +0 -223
- package/src/REVIEW_2026_08_06/engine-ai-nav.md +0 -279
- package/src/REVIEW_2026_08_06/engine-animation.md +0 -167
- package/src/REVIEW_2026_08_06/engine-asset.md +0 -166
- package/src/REVIEW_2026_08_06/engine-ecs.md +0 -920
- package/src/REVIEW_2026_08_06/engine-input.md +0 -197
- package/src/REVIEW_2026_08_06/engine-misc.md +0 -248
- package/src/REVIEW_2026_08_06/engine-terrain.md +0 -52
- package/src/REVIEW_2026_08_06/generation.md +0 -176
- package/src/REVIEW_2026_08_06/geom-2d.md +0 -434
- package/src/REVIEW_2026_08_06/geom-3d.md +0 -117
- package/src/REVIEW_2026_08_06/gfx-gi.md +0 -143
- package/src/REVIEW_2026_08_06/gfx-render.md +0 -740
- package/src/REVIEW_2026_08_06/gfx-texture.md +0 -690
- package/src/REVIEW_2026_08_06/prior-criticals.md +0 -49
- package/src/REVIEW_2026_08_06/prior-highs.md +0 -138
- package/src/REVIEW_2026_08_06/test-gaps.md +0 -364
- package/src/REVIEW_2026_08_06/view.md +0 -667
- package/src/REVIEW_2026_08_06.md +0 -610
- package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +0 -542
- package/src/core/bvh2/bvh3/NOTES.md +0 -2
- package/src/core/bvh8/NOTES.md +0 -63
- package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +0 -243
- package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +0 -417
- package/src/core/color/COLOR_REVIEW_2026_08_28.md +0 -779
- package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +0 -433
- package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +0 -486
- package/src/core/geom/3d/atlas/BFF_PLAN.md +0 -174
- package/src/core/geom/3d/atlas/REVIEW_02.md +0 -392
- package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +0 -146
- package/src/core/geom/3d/gjk/NOTES.md +0 -8
- package/src/core/geom/3d/topology/TOPO_MESH_RETIREMENT_PLAN.md +0 -135
- package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +0 -381
- package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +0 -684
- package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +0 -554
- package/src/core/model/reactive/evaluation/PREDICATE_APPLICABILITY_PROPOSAL.md +0 -446
- package/src/engine/REVIEW_2026_07_03.md +0 -211
- package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +0 -815
- package/src/engine/control/first-person/DESIGN.md +0 -658
- package/src/engine/control/first-person/DESIGN_COLLISION.md +0 -382
- package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +0 -563
- package/src/engine/control/first-person/TODO.md +0 -160
- package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +0 -531
- package/src/engine/ecs/HIERARCHY_REVIEW.md +0 -717
- package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +0 -262
- package/src/engine/ecs/ik/PLAN.md +0 -179
- package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +0 -272
- package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +0 -199
- package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +0 -521
- package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +0 -463
- package/src/engine/graphics/ecs/camera/pp/NOTES.md +0 -48
- package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +0 -659
- package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +0 -235
- package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +0 -490
- package/src/engine/graphics/texture/sampler/compare/FLIP_IMPLEMENTATION_PLAN.md +0 -466
- package/src/engine/input/GAMEPAD_API_PROPOSAL.md +0 -717
- package/src/engine/input/ecs/ism/ISM_DESIGN.md +0 -1523
- package/src/engine/input/ecs/ism/ISM_IMPLEMENTATION_PLAN.md +0 -627
- package/src/engine/navigation/mesh/OVERLAPPING_SURFACES_2026_08_25.md +0 -661
- package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +0 -229
- package/src/engine/network/CONGESTION_CONTROL.md +0 -87
- package/src/engine/network/MESSAGE_TRANSPORT.md +0 -364
- package/src/engine/network/SMOOTHNESS_DESIGN.md +0 -400
- package/src/engine/physics/cloth/MEASUREMENTS.md +0 -5304
- package/src/engine/physics/cloth/PLAN.md +0 -3056
- package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +0 -1382
- package/src/engine/physics/fluid/REVIEW_02_PLAN.md +0 -243
- package/src/engine/physics/fluid/solver/NOTES.md +0 -46
- package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +0 -536
- package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +0 -432
- package/src/engine/sound/simulation/PROBE_PLACEMENT.md +0 -250
- package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +0 -322
- package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +0 -261
- package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +0 -121
- package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +0 -999
- package/src/format/image/avif/DECISIONS.md +0 -545
- package/src/format/image/jpeg/NOTES.md +0 -3
- package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -814
- package/src/generation/COORDINATES.md +0 -54
- package/src/generation/REVIEW_01_ACTION_PLAN.md +0 -628
- package/src/generation/foliage/ANNUAL_SHOOTS_BRIEF_2026_10_25.md +0 -220
- package/src/generation/foliage/CROWN_FILLING_BRIEF_2026_10_26.md +0 -172
- package/src/generation/foliage/CROWN_FULLNESS_BRIEF_2026_10_26.md +0 -86
- package/src/generation/foliage/FOLIAGE_DESIGN.md +0 -547
- package/src/generation/foliage/FOLIAGE_PLAN.md +0 -198
- package/src/generation/foliage/LEAF_ARCHITECTURE_BRIEF_2026_10_26.md +0 -158
- package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +0 -521
- package/src/generation/foliage/REAL_TIME_TREES_BRIEF_2026_10_27.md +0 -86
- package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +0 -347
- package/src/generation/foliage/SHOOT_SYSTEMS_ALL_SPECIES_BRIEF_2026_10_26.md +0 -248
- package/src/generation/foliage/SPEEDTREE_COMPARISON_2026_10_24.md +0 -694
- package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +0 -552
- package/src/shade/RENDERER_CONTRACT.md +0 -697
- package/src/shade/SHADER_F16_PROPOSAL_2026_10_24.md +0 -263
- package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +0 -569
- package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +0 -755
- package/src/shade/device/mock/EXTENSION_PROPOSAL_2026_08_22.md +0 -458
- package/src/shade/device/mock/IMPLEMENTATION_PLAN.md +0 -255
- package/src/shade/device/mock/REVIEW_2026_08_22.md +0 -527
- package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +0 -894
- package/src/shade/device/timing/profile/SGPT_FORMAT.md +0 -345
- package/src/shade/renderer/NOTES.md +0 -78
- package/src/shade/renderer/PLAN.md +0 -8
- package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +0 -145
- package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +0 -357
- package/src/shade/renderer/atmosphere/NOTES.md +0 -6
- package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts +0 -76
- package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/MomentumAxis.js +0 -164
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts +0 -45
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.js +0 -66
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +0 -98
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +0 -184
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +0 -175
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +0 -411
- package/src/shade/renderer/camera/orbital/README.md +0 -81
- package/src/shade/renderer/camera/orbital/index.d.ts +0 -6
- package/src/shade/renderer/camera/orbital/index.d.ts.map +0 -1
- package/src/shade/renderer/camera/orbital/index.js +0 -9
- package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +0 -964
- package/src/shade/renderer/fluid/GPU_FLUID_OCCUPANCY_AND_SOTA_REVIEW_2026_10_26.md +0 -361
- package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +0 -619
- package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +0 -674
- package/src/shade/renderer/geometry/sdf/NOTES.md +0 -6
- package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +0 -540
- package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +0 -305
- package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +0 -913
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +0 -787
- package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +0 -481
- package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +0 -301
- package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +0 -448
- package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +0 -385
- package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +0 -656
- package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +0 -308
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +0 -657
- package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +0 -551
- package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +0 -529
- package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts +0 -47
- package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.js +0 -80
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts +0 -16
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.js +0 -67
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts +0 -17
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.js +0 -145
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts +0 -12
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts.map +0 -1
- package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.js +0 -105
- package/src/shade/renderer/global_illumination/lpv/NOTES.md +0 -3
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +0 -4306
- package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_RAYS_VARIABLE_AND_SORTED_SCOPE_2026_10_30.md +0 -410
- package/src/shade/renderer/global_illumination/sharc/NOTES.md +0 -8
- package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +0 -1369
- package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +0 -202
- package/src/shade/renderer/gpu_primitive/indirect/NOTES.md +0 -94
- package/src/shade/renderer/hiz/NOTES.md +0 -3
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +0 -8
- package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +0 -1
- package/src/shade/renderer/light/cluster/NOTES.md +0 -11
- package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +0 -524
- package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +0 -1101
- package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts +0 -24
- package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts.map +0 -1
- package/src/shade/renderer/material/resident/shader_resident_texture_means.js +0 -120
- package/src/shade/renderer/particles/DESIGN.md +0 -1011
- package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +0 -280
- package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +0 -453
- package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +0 -520
- package/src/shade/renderer/postprocess/bloom/NOTES.md +0 -6
- package/src/shade/renderer/postprocess/fsr/NOTES.md +0 -4
- package/src/shade/renderer/postprocess/gtao/NOTES.md +0 -6
- package/src/shade/renderer/postprocess/nss/NOTES.md +0 -332
- package/src/shade/renderer/postprocess/perspective/NOTES.md +0 -3
- package/src/shade/renderer/postprocess/sscs/NOTES.md +0 -5
- package/src/shade/renderer/postprocess/ssr/NOTES.md +0 -14
- package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +0 -286
- package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -39
- package/src/shade/renderer/postprocess/taa/NOTES.md +0 -11
- package/src/shade/renderer/postprocess/upscale-dither/NOTES.md +0 -78
- package/src/shade/renderer/postprocess/vrs/NOTES.md +0 -4
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +0 -1218
- package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +0 -600
- package/src/shade/renderer/restir/reservoir/NOTES.md +0 -6
- package/src/shade/renderer/shader/chunk/atmosphere/NOTES.md +0 -6
- package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +0 -391
- package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +0 -153
- package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +0 -322
- package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +0 -247
- package/src/shade/renderer/shader/chunk/fsr/NOTES.md +0 -3
- package/src/shade/renderer/shader/chunk/fsr/spd/NOTES.md +0 -4
- package/src/shade/renderer/shader/chunk/geometry/ray/NOTES.md +0 -4
- package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +0 -159
- package/src/shade/renderer/shader/chunk/mboit/NOTES.md +0 -38
- package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/NOTES.md +0 -3
- package/src/shade/renderer/shader/chunk/spherical_harmonics/sampling/NOTES.md +0 -8
- package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +0 -927
- package/src/shade/renderer/shadow/contact/FINDINGS.md +0 -413
- package/src/shade/renderer/shadow/map/csm/NOTES.md +0 -5
- package/src/shade/renderer/shadow/ray/NOTES.md +0 -31
- package/src/shade/renderer/shadow/sdf/NOTES.md +0 -9
- package/src/shade/renderer/shadow/sdf/brixelizer/NOTES.md +0 -5
- package/src/shade/renderer/shadow/sdf/cascade/NOTES.md +0 -9
- package/src/shade/renderer/shadow/vsm/NOTES.md +0 -12
- package/src/shade/renderer/shadow/vsm/PLAN.md +0 -442
- package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +0 -43
- package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +0 -2444
- package/src/shade/renderer/texture/mipmaps/NOTES.md +0 -3
- package/src/shade/renderer/volumetrics/NOTES.md +0 -1329
- package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +0 -336
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +0 -23
- package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +0 -1
- package/src/shade/renderer/water/medium/GPUWaterBodies.js +0 -75
- package/src/shade/wgsl/NOTES.md +0 -4
|
@@ -5,12 +5,6 @@ export class GPUResidentMaterialContext {
|
|
|
5
5
|
* @param {GraphicsContext} graphics
|
|
6
6
|
*/
|
|
7
7
|
constructor(device: GPUDevice, graphics: GraphicsContext);
|
|
8
|
-
/**
|
|
9
|
-
* Sent with a material when it is repacked because its {@link ShadeMaterial#version} moved: the
|
|
10
|
-
* row the device reads changes with the next {@link update}. Not sent for a material's first pack.
|
|
11
|
-
* @type {Signal<ShadeMaterial>}
|
|
12
|
-
*/
|
|
13
|
-
onMaterialRepacked: any;
|
|
14
8
|
/**
|
|
15
9
|
*
|
|
16
10
|
* @returns {number}
|
|
@@ -26,10 +20,6 @@ export class GPUResidentMaterialContext {
|
|
|
26
20
|
* @returns {GPUTextureContext}
|
|
27
21
|
*/
|
|
28
22
|
get buffer_textures(): GPUTextureContext;
|
|
29
|
-
/**
|
|
30
|
-
* @returns {GPUBuffer}
|
|
31
|
-
*/
|
|
32
|
-
get buffer_texture_means(): GPUBuffer;
|
|
33
23
|
/**
|
|
34
24
|
*
|
|
35
25
|
* @returns {GPUTextureView}
|
|
@@ -54,8 +44,8 @@ export class GPUResidentMaterialContext {
|
|
|
54
44
|
* Make a material resident, or repack it if its {@link ShadeMaterial#version} has moved since —
|
|
55
45
|
* the same contract {@link GPUMaterialManager} restages by. A hit used to be final, so a factor
|
|
56
46
|
* set after the first pack never reached the row. Every caller re-obtains what it needs before
|
|
57
|
-
* {@link update}: the scene's drawn list,
|
|
58
|
-
* moves, so the check rides on walks that already happen.
|
|
47
|
+
* {@link update} or {@link commit}: the scene's drawn list, the manager's materials whenever its
|
|
48
|
+
* version moves, or what a card capture traces, so the check rides on walks that already happen.
|
|
59
49
|
*
|
|
60
50
|
* @param {ShadeMaterial} material
|
|
61
51
|
* @returns {MaterialInfo}
|
|
@@ -75,6 +65,16 @@ export class GPUResidentMaterialContext {
|
|
|
75
65
|
* @param {GPUSceneContext} scene_context
|
|
76
66
|
*/
|
|
77
67
|
ensure_scene_materials(scene_context: GPUSceneContext): void;
|
|
68
|
+
/**
|
|
69
|
+
* Write what {@link obtain_material} made resident or repacked since the last commit, and the media
|
|
70
|
+
* that moved. Takes none of the manager's materials, unlike {@link update}: for a reader that makes
|
|
71
|
+
* resident only what it reads.
|
|
72
|
+
*/
|
|
73
|
+
commit(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Make every material the manager holds resident, then {@link commit}: for the readers that trace
|
|
76
|
+
* the whole scene.
|
|
77
|
+
*/
|
|
78
78
|
update(): void;
|
|
79
79
|
destroy(): void;
|
|
80
80
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUResidentMaterialContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/resident/GPUResidentMaterialContext.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GPUResidentMaterialContext.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/material/resident/GPUResidentMaterialContext.js"],"names":[],"mappings":"AAgIA;IAqKI;;;;OAIG;IACH,yCAFW,eAAe,EAkDzB;IA9LD;;;OAGG;IACH,6BAEC;IAQD;;;OAGG;IACH,kCAEC;IAQD;;;OAGG;IACH,yCAEC;IAED;;;OAGG;IACH,kCAIC;IAmED;;;;;OAKG;IACH,0BAEC;IAOD;;;;;;OAMG;IACH,8BAEC;IAsJD;;;;;;;;;OASG;IACH,0BAHW,aAAa,GACX,YAAY,CAmBxB;IAgBD;;;;OAIG;IACH,wBAHW,YAAY,GACV,WAAW,CAIvB;IAGD,uBA0DC;IAuFD,wBA8EC;IAED;;;;OAIG;IACH,sCAFW,eAAe,QAUzB;IAoCD;;;;OAIG;IACH,eAGC;IAED;;;OAGG;IACH,eAGC;IAGD,gBAIC;;CACJ;8BA9vBY,OAAO,0BAA0B,EAAE,eAAe;8BAClD,OAAO,gCAAgC,EAAE,eAAe;2BACxD,OAAO,+BAA+B,EAAE,YAAY;4BACpD,OAAO,qBAAqB,EAAE,aAAa;oCAC3C,OAAO,6BAA6B,EAAE,qBAAqB;kCAC3D,OAAO,qCAAqC,EAAE,mBAAmB;kCAlB5C,oCAAoC;AAYtE;;;;;;;GAOG;AAEH;IACI,WAAM;IAEN;;;OAGG;IACH,SAFU,MAAM,CAEJ;IAEZ;;OAEG;IACH,QAFU,qBAAqB,CAExB;IAEP;;OAEG;IACH,gBAFU,WAAW,CAEP;IAEd;;OAEG;IACH,aAFU,WAAW,CAEV;IAEX;;;;OAIG;IACH,gBAFU,WAAW,GAAC,IAAI,CAEZ;IACd;;OAEG;IACH,kBAFU,WAAW,CAEL;IAEhB;;;OAGG;IACH,aAFU,MAAM,CAEe;CAClC;AAqBD;IACI,WAAO;IAEP;;OAEG;IACH,QAFU,YAAY,CAEf;CACV"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { assert } from "../../../../core/assert.js";
|
|
2
2
|
import { HashMap } from "../../../../core/collection/map/HashMap.js";
|
|
3
|
-
import Signal from "../../../../core/events/signal/Signal.js";
|
|
4
3
|
import IdPool from "../../../../core/IdPool.js";
|
|
5
4
|
import { isPowerOfTwo } from "../../../../core/math/isPowerOfTwo.js";
|
|
6
5
|
import { round_up } from "../../../../core/math/round_up.js";
|
|
7
6
|
import { TextureViewDescriptor } from "../../../descriptor/texture/TextureViewDescriptor.js";
|
|
8
7
|
import { ShadeGPUCommandContext } from "../../../device/ShadeGPUCommandContext.js";
|
|
9
8
|
import { GPU_DATABASE_NULL } from "../../buffer/table/GPU_DATABASE_NULL.js";
|
|
10
|
-
import { WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION } from "../../gpu_primitive/indirect/WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION.js";
|
|
11
9
|
import { MEDIA_TABLE_CAPACITY, MEDIA_TABLE_STRUCT } from "../../medium/MEDIA_TABLE_STRUCT.js";
|
|
12
10
|
import { MEDIUM_STRUCT } from "../../medium/MEDIUM_STRUCT.js";
|
|
13
11
|
import { write_gpu_typed_buffer } from "../../shader/type/serde/write_gpu_typed_buffer.js";
|
|
@@ -25,7 +23,6 @@ import {
|
|
|
25
23
|
RESIDENT_MATERIAL_TEXTURE_RESOLUTION,
|
|
26
24
|
RESIDENT_MATERIAL_TEXTURE_SLOT_RESOLUTION
|
|
27
25
|
} from "./RESIDENT_MATERIAL_TEXTURE_LAYOUT.js";
|
|
28
|
-
import { shader_resident_texture_means, shader_resident_texture_rows } from "./shader_resident_texture_means.js";
|
|
29
26
|
|
|
30
27
|
/**
|
|
31
28
|
* @typedef {import("../../GraphicsContext.js").GraphicsContext} GraphicsContext
|
|
@@ -131,13 +128,6 @@ const NEUTRAL_SURFACE = Object.freeze({
|
|
|
131
128
|
|
|
132
129
|
export class GPUResidentMaterialContext {
|
|
133
130
|
|
|
134
|
-
/**
|
|
135
|
-
* Sent with a material when it is repacked because its {@link ShadeMaterial#version} moved: the
|
|
136
|
-
* row the device reads changes with the next {@link update}. Not sent for a material's first pack.
|
|
137
|
-
* @type {Signal<ShadeMaterial>}
|
|
138
|
-
*/
|
|
139
|
-
onMaterialRepacked = new Signal();
|
|
140
|
-
|
|
141
131
|
/**
|
|
142
132
|
* @type {GraphicsContext}
|
|
143
133
|
*/
|
|
@@ -200,31 +190,6 @@ export class GPUResidentMaterialContext {
|
|
|
200
190
|
return this.#buffer_textures;
|
|
201
191
|
}
|
|
202
192
|
|
|
203
|
-
/**
|
|
204
|
-
* Each texture slot's mean, `vec4<f32>`, of its texels as the atlas stores them: an albedo's colour
|
|
205
|
-
* premultiplied by its coverage. Written whenever the textures are (§6.6 of
|
|
206
|
-
* PROBE_CLIPMAP_PROPOSAL_2026_10_27.md): what a GI hit that no card sees takes of its material.
|
|
207
|
-
* Replaced when the slots outgrow it, so take it each frame.
|
|
208
|
-
*
|
|
209
|
-
* @type {GPUBuffer}
|
|
210
|
-
*/
|
|
211
|
-
#buffer_texture_means;
|
|
212
|
-
|
|
213
|
-
/** The rows' sums the means are made of. @type {GPUBuffer|null} */
|
|
214
|
-
#buffer_texture_rows = null;
|
|
215
|
-
|
|
216
|
-
/** Slots the means hold. */
|
|
217
|
-
#texture_means_capacity = 0;
|
|
218
|
-
|
|
219
|
-
#texture_means_settings = { slot_count: 0 };
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* @returns {GPUBuffer}
|
|
223
|
-
*/
|
|
224
|
-
get buffer_texture_means() {
|
|
225
|
-
return this.#buffer_texture_means;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
193
|
/**
|
|
229
194
|
*
|
|
230
195
|
* @returns {GPUTextureView}
|
|
@@ -368,13 +333,6 @@ export class GPUResidentMaterialContext {
|
|
|
368
333
|
size: MEDIA_TABLE_STRUCT.size,
|
|
369
334
|
});
|
|
370
335
|
|
|
371
|
-
// a slot's worth until the first textures are written
|
|
372
|
-
this.#buffer_texture_means = device.createBuffer({
|
|
373
|
-
label: 'Material Texture Means',
|
|
374
|
-
usage: GPUBufferUsage.STORAGE,
|
|
375
|
-
size: 16,
|
|
376
|
-
});
|
|
377
|
-
|
|
378
336
|
this.#buffer_textures = new GPUTextureContext(device);
|
|
379
337
|
const descriptor = this.#buffer_textures.descriptor;
|
|
380
338
|
|
|
@@ -485,8 +443,8 @@ export class GPUResidentMaterialContext {
|
|
|
485
443
|
* Make a material resident, or repack it if its {@link ShadeMaterial#version} has moved since —
|
|
486
444
|
* the same contract {@link GPUMaterialManager} restages by. A hit used to be final, so a factor
|
|
487
445
|
* set after the first pack never reached the row. Every caller re-obtains what it needs before
|
|
488
|
-
* {@link update}: the scene's drawn list,
|
|
489
|
-
* moves, so the check rides on walks that already happen.
|
|
446
|
+
* {@link update} or {@link commit}: the scene's drawn list, the manager's materials whenever its
|
|
447
|
+
* version moves, or what a card capture traces, so the check rides on walks that already happen.
|
|
490
448
|
*
|
|
491
449
|
* @param {ShadeMaterial} material
|
|
492
450
|
* @returns {MaterialInfo}
|
|
@@ -505,8 +463,6 @@ export class GPUResidentMaterialContext {
|
|
|
505
463
|
this.#pack_material(info);
|
|
506
464
|
} else if (info.version !== material.version) {
|
|
507
465
|
this.#pack_material(info);
|
|
508
|
-
|
|
509
|
-
this.onMaterialRepacked.send1(material);
|
|
510
466
|
}
|
|
511
467
|
|
|
512
468
|
return info;
|
|
@@ -592,8 +548,6 @@ export class GPUResidentMaterialContext {
|
|
|
592
548
|
}
|
|
593
549
|
}
|
|
594
550
|
|
|
595
|
-
this.#record_texture_means(encoder, textures);
|
|
596
|
-
|
|
597
551
|
encoder.finish();
|
|
598
552
|
|
|
599
553
|
}
|
|
@@ -683,65 +637,6 @@ export class GPUResidentMaterialContext {
|
|
|
683
637
|
}
|
|
684
638
|
}
|
|
685
639
|
|
|
686
|
-
/**
|
|
687
|
-
* Every texture slot's mean, after the slots are written (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.6):
|
|
688
|
-
* the rows' sums, then the slots' means, which {@link buffer_texture_means} holds.
|
|
689
|
-
*
|
|
690
|
-
* @param {ShadeGPUCommandContext} encoder
|
|
691
|
-
* @param {TextureInfo[]} textures
|
|
692
|
-
*/
|
|
693
|
-
#record_texture_means(encoder, textures) {
|
|
694
|
-
let slot_count = 0;
|
|
695
|
-
|
|
696
|
-
for (let i = 0; i < textures.length; i++) {
|
|
697
|
-
slot_count = Math.max(slot_count, textures[i].id + 1);
|
|
698
|
-
}
|
|
699
|
-
|
|
700
|
-
if (slot_count === 0) {
|
|
701
|
-
return;
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
if (this.#texture_means_capacity < slot_count) {
|
|
705
|
-
// textures arrive a few at a time as a scene loads: doubling replaces the buffers a
|
|
706
|
-
// logarithmic number of times
|
|
707
|
-
const capacity = Math.max(slot_count, 2 * this.#texture_means_capacity);
|
|
708
|
-
|
|
709
|
-
this.#buffer_texture_means.destroy();
|
|
710
|
-
this.#buffer_texture_rows?.destroy();
|
|
711
|
-
|
|
712
|
-
this.#texture_means_capacity = capacity;
|
|
713
|
-
this.#buffer_texture_means = this.#device.createBuffer({
|
|
714
|
-
label: 'Material Texture Means',
|
|
715
|
-
usage: GPUBufferUsage.STORAGE,
|
|
716
|
-
size: 16 * capacity,
|
|
717
|
-
});
|
|
718
|
-
this.#buffer_texture_rows = this.#device.createBuffer({
|
|
719
|
-
label: 'Material Texture Rows',
|
|
720
|
-
usage: GPUBufferUsage.STORAGE,
|
|
721
|
-
size: 16 * RESIDENT_MATERIAL_TEXTURE_RESOLUTION * capacity,
|
|
722
|
-
});
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
const settings = this.#texture_means_settings;
|
|
726
|
-
|
|
727
|
-
settings.slot_count = slot_count;
|
|
728
|
-
|
|
729
|
-
// a workgroup a slot, folded as folded_workgroup_index reads it: the array holds more slots than a
|
|
730
|
-
// dimension does
|
|
731
|
-
shader_resident_texture_rows.dispatch({
|
|
732
|
-
encoder,
|
|
733
|
-
group_count_x: Math.min(slot_count, WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION),
|
|
734
|
-
group_count_y: Math.ceil(slot_count / WEBGPU_GUARANTEED_MAX_COMPUTE_WORKGROUPS_PER_DIMENSION),
|
|
735
|
-
bindings: { settings, textures: this.textureView, texture_rows: this.#buffer_texture_rows },
|
|
736
|
-
});
|
|
737
|
-
|
|
738
|
-
shader_resident_texture_means.dispatch({
|
|
739
|
-
encoder,
|
|
740
|
-
group_count_x: Math.ceil(slot_count / 64),
|
|
741
|
-
bindings: { settings, texture_rows: this.#buffer_texture_rows, texture_means: this.#buffer_texture_means },
|
|
742
|
-
});
|
|
743
|
-
}
|
|
744
|
-
|
|
745
640
|
build_materials() {
|
|
746
641
|
|
|
747
642
|
/**
|
|
@@ -871,25 +766,29 @@ export class GPUResidentMaterialContext {
|
|
|
871
766
|
|
|
872
767
|
}
|
|
873
768
|
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
769
|
+
/**
|
|
770
|
+
* Write what {@link obtain_material} made resident or repacked since the last commit, and the media
|
|
771
|
+
* that moved. Takes none of the manager's materials, unlike {@link update}: for a reader that makes
|
|
772
|
+
* resident only what it reads.
|
|
773
|
+
*/
|
|
774
|
+
commit() {
|
|
878
775
|
this.#write_media();
|
|
879
|
-
|
|
880
|
-
if (this.#version === this.#version_commited) {
|
|
881
|
-
return;
|
|
882
|
-
}
|
|
883
|
-
|
|
884
776
|
this.#commit();
|
|
885
777
|
}
|
|
886
778
|
|
|
779
|
+
/**
|
|
780
|
+
* Make every material the manager holds resident, then {@link commit}: for the readers that trace
|
|
781
|
+
* the whole scene.
|
|
782
|
+
*/
|
|
783
|
+
update() {
|
|
784
|
+
this.#update_from_manager();
|
|
785
|
+
this.commit();
|
|
786
|
+
}
|
|
787
|
+
|
|
887
788
|
|
|
888
789
|
destroy() {
|
|
889
790
|
this.#buffer_materials.destroy();
|
|
890
791
|
this.#buffer_media.destroy();
|
|
891
792
|
this.#buffer_textures.destroy();
|
|
892
|
-
this.#buffer_texture_means.destroy();
|
|
893
|
-
this.#buffer_texture_rows?.destroy();
|
|
894
793
|
}
|
|
895
794
|
}
|
|
@@ -27,21 +27,25 @@ export class GTAO {
|
|
|
27
27
|
* @param {number} options.input_depth this frame's depth
|
|
28
28
|
* @param {number} options.input_hzb hierarchical depth built from it
|
|
29
29
|
* @param {number} options.input_normal G-buffer normals
|
|
30
|
+
* @param {number} options.input_normal_previous last frame's G-buffer normals, at the size last frame was
|
|
31
|
+
* drawn at: which surface each history texel was written on
|
|
30
32
|
* @param {number} options.input_velocity per-pixel velocity, in this frame's pixels
|
|
31
33
|
* @param {number} options.input_occlusion depth-clip pass output: history confidence in r
|
|
32
34
|
* @param {number} options.frame_index the renderer's frame counter: drives the noise, the history
|
|
33
35
|
* ping-pong, and whether the history follows on from the last frame drawn
|
|
34
36
|
* @param {number} options.output G-buffer albedo; AO is blended into its alpha
|
|
35
37
|
* @param {number[]} options.resolution this frame's render size
|
|
36
|
-
* @returns {{visibility:number, occlusion:number, bent_normals:number}} the accumulated visibility
|
|
37
|
-
*
|
|
38
|
+
* @returns {{visibility:number, occlusion:number, bent_normals:number}} the accumulated visibility and
|
|
39
|
+
* bend (`rgba16float`), `output` after the composite, and the accumulated bent normals, octahedral in
|
|
40
|
+
* `rg16uint` as `input_normal` is
|
|
38
41
|
*/
|
|
39
|
-
graph_pass({ graph, camera, input_depth, input_hzb, input_normal, input_velocity, input_occlusion, frame_index, output, resolution }: {
|
|
42
|
+
graph_pass({ graph, camera, input_depth, input_hzb, input_normal, input_normal_previous, input_velocity, input_occlusion, frame_index, output, resolution }: {
|
|
40
43
|
graph: FrameGraph;
|
|
41
44
|
camera: number;
|
|
42
45
|
input_depth: number;
|
|
43
46
|
input_hzb: number;
|
|
44
47
|
input_normal: number;
|
|
48
|
+
input_normal_previous: number;
|
|
45
49
|
input_velocity: number;
|
|
46
50
|
input_occlusion: number;
|
|
47
51
|
frame_index: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GTAO.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/GTAO.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GTAO.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/GTAO.js"],"names":[],"mappings":"AASA;;GAEG;AAEH;IAqBI;;;OAGG;IACH,uCAWC;IA7BD;;;;OAIG;IACH,eAFU,OAAO,CAEI;IA0BrB;;;;OAIG;IACH,0BAFW,eAAe,QAOzB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH;QAjB+B,KAAK;QACT,MAAM,EAAtB,MAAM;QACU,WAAW,EAA3B,MAAM;QACU,SAAS,EAAzB,MAAM;QACU,YAAY,EAA5B,MAAM;QACU,qBAAqB,EAArC,MAAM;QAEU,cAAc,EAA9B,MAAM;QACU,eAAe,EAA/B,MAAM;QACU,WAAW,EAA3B,MAAM;QAEU,MAAM,EAAtB,MAAM;QACY,UAAU,EAA5B,MAAM,EAAE;QACN;QAAC,UAAU,EAAC,MAAM,CAAC;QAAC,SAAS,EAAC,MAAM,CAAC;QAAC,YAAY,EAAC,MAAM,CAAA;KAAC,CAqHtE;;CACJ;8BA3LY,OAAO,6CAA6C,EAAE,eAAe"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { TextureResourceDescriptor } from "../../../device/graph/TextureResourceDescriptor.js";
|
|
1
2
|
import { graph_image_pass } from "../../shader/graph/graph_image_pass.js";
|
|
2
3
|
import { graph_import_texture } from "../../shader/graph/graph_import_texture.js";
|
|
3
4
|
import { GPUTextureContext } from "../../texture/GPUTextureContext.js";
|
|
4
|
-
import { shader_denoise_luminance_spatial } from "../denoise/fragment_shader_denoise_ao.js";
|
|
5
5
|
import { ao_reproject_shader } from "./ao_reproject_shader.js";
|
|
6
6
|
import { fragment_shader_gtao } from "./fragment_shader_gtao.js";
|
|
7
7
|
import { shader_ao_composit } from "./graph_composit_ao_to_gBuffer.js";
|
|
8
|
+
import { shader_gtao_spatial_denoise } from "./shader_gtao_spatial_denoise.js";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @typedef {import("../../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry} PipelineEnquiry
|
|
@@ -40,7 +41,8 @@ export class GTAO {
|
|
|
40
41
|
for (let i = 0; i < 2; i++) {
|
|
41
42
|
const texture = new GPUTextureContext(graphics.device);
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
// visibility, and the bend: the bent normal minus the shading normal
|
|
45
|
+
texture.descriptor.format = "rgba16float";
|
|
44
46
|
texture.descriptor.usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT;
|
|
45
47
|
|
|
46
48
|
this.#history[i] = texture;
|
|
@@ -54,7 +56,7 @@ export class GTAO {
|
|
|
54
56
|
*/
|
|
55
57
|
enquirePipelines(enquiry) {
|
|
56
58
|
enquiry.render.push(fragment_shader_gtao.pipeline);
|
|
57
|
-
enquiry.render.push(
|
|
59
|
+
enquiry.render.push(shader_gtao_spatial_denoise.pipeline);
|
|
58
60
|
enquiry.render.push(ao_reproject_shader.pipeline);
|
|
59
61
|
enquiry.render.push(shader_ao_composit.pipeline);
|
|
60
62
|
}
|
|
@@ -67,14 +69,17 @@ export class GTAO {
|
|
|
67
69
|
* @param {number} options.input_depth this frame's depth
|
|
68
70
|
* @param {number} options.input_hzb hierarchical depth built from it
|
|
69
71
|
* @param {number} options.input_normal G-buffer normals
|
|
72
|
+
* @param {number} options.input_normal_previous last frame's G-buffer normals, at the size last frame was
|
|
73
|
+
* drawn at: which surface each history texel was written on
|
|
70
74
|
* @param {number} options.input_velocity per-pixel velocity, in this frame's pixels
|
|
71
75
|
* @param {number} options.input_occlusion depth-clip pass output: history confidence in r
|
|
72
76
|
* @param {number} options.frame_index the renderer's frame counter: drives the noise, the history
|
|
73
77
|
* ping-pong, and whether the history follows on from the last frame drawn
|
|
74
78
|
* @param {number} options.output G-buffer albedo; AO is blended into its alpha
|
|
75
79
|
* @param {number[]} options.resolution this frame's render size
|
|
76
|
-
* @returns {{visibility:number, occlusion:number, bent_normals:number}} the accumulated visibility
|
|
77
|
-
*
|
|
80
|
+
* @returns {{visibility:number, occlusion:number, bent_normals:number}} the accumulated visibility and
|
|
81
|
+
* bend (`rgba16float`), `output` after the composite, and the accumulated bent normals, octahedral in
|
|
82
|
+
* `rg16uint` as `input_normal` is
|
|
78
83
|
*/
|
|
79
84
|
graph_pass({
|
|
80
85
|
graph,
|
|
@@ -82,6 +87,7 @@ export class GTAO {
|
|
|
82
87
|
input_depth,
|
|
83
88
|
input_hzb,
|
|
84
89
|
input_normal,
|
|
90
|
+
input_normal_previous,
|
|
85
91
|
input_velocity,
|
|
86
92
|
input_occlusion,
|
|
87
93
|
frame_index,
|
|
@@ -102,8 +108,15 @@ export class GTAO {
|
|
|
102
108
|
const moments_history = graph_import_texture(graph, h0, "ao_history");
|
|
103
109
|
const moments_output = graph_import_texture(graph, h1, "ao_output");
|
|
104
110
|
|
|
111
|
+
// written by the reprojection beside the history, so it is asked of the graph rather than of a pass
|
|
112
|
+
let bent_normals = graph.create_resource("bent normals", TextureResourceDescriptor.from({
|
|
113
|
+
resolution,
|
|
114
|
+
dimension: "2d",
|
|
115
|
+
format: "rg16uint",
|
|
116
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.RENDER_ATTACHMENT
|
|
117
|
+
}));
|
|
105
118
|
|
|
106
|
-
const [raw_occlusion
|
|
119
|
+
const [raw_occlusion] = graph_image_pass({
|
|
107
120
|
graph,
|
|
108
121
|
shader: fragment_shader_gtao,
|
|
109
122
|
output_resolution: resolution,
|
|
@@ -126,16 +139,13 @@ export class GTAO {
|
|
|
126
139
|
// apply small spatial denoise
|
|
127
140
|
[moments] = graph_image_pass({
|
|
128
141
|
graph,
|
|
129
|
-
shader:
|
|
142
|
+
shader: shader_gtao_spatial_denoise,
|
|
130
143
|
output_resolution: resolution,
|
|
131
144
|
input_depth,
|
|
132
145
|
inputs: {
|
|
133
146
|
tInput: moments,
|
|
134
147
|
tDepth: input_depth,
|
|
135
148
|
tNormal: input_normal,
|
|
136
|
-
settings: {
|
|
137
|
-
step_size: 1,
|
|
138
|
-
}
|
|
139
149
|
}
|
|
140
150
|
});
|
|
141
151
|
|
|
@@ -145,18 +155,21 @@ export class GTAO {
|
|
|
145
155
|
this.reset_history = false;
|
|
146
156
|
this.#history_frame_index = frame_index;
|
|
147
157
|
|
|
148
|
-
[moments] = graph_image_pass({
|
|
158
|
+
[moments, bent_normals] = graph_image_pass({
|
|
149
159
|
graph,
|
|
150
160
|
shader: ao_reproject_shader,
|
|
151
|
-
output: [moments_output],
|
|
161
|
+
output: [moments_output, bent_normals],
|
|
152
162
|
input_depth,
|
|
153
163
|
inputs: {
|
|
154
164
|
tInput: moments,
|
|
155
165
|
tHistory: moments_history,
|
|
156
166
|
tVelocity: input_velocity,
|
|
157
167
|
tOcclusion: input_occlusion,
|
|
168
|
+
tNormal: input_normal,
|
|
169
|
+
tNormalPrevious: input_normal_previous,
|
|
158
170
|
settings: {
|
|
159
171
|
history_validity: history_valid ? 1 : 0,
|
|
172
|
+
frame_index,
|
|
160
173
|
},
|
|
161
174
|
}
|
|
162
175
|
});
|
|
@@ -179,7 +192,7 @@ export class GTAO {
|
|
|
179
192
|
return {
|
|
180
193
|
visibility: moments,
|
|
181
194
|
occlusion: filtered_occlusion,
|
|
182
|
-
bent_normals:
|
|
195
|
+
bent_normals: bent_normals,
|
|
183
196
|
};
|
|
184
197
|
}
|
|
185
198
|
}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accumulates GTAO over time: visibility, and the bend that makes the bent normal.
|
|
3
|
+
*
|
|
4
|
+
* The bend takes the history only where the history was written on this texel's surface, by the face normals of
|
|
5
|
+
* `tNormalPrevious` — last frame's G-buffer normal — against this frame's.
|
|
6
|
+
*
|
|
7
|
+
* `tInput`, `tHistory` and the first target are `rgba16float`: visibility in `x`, and in `yzw` the world-space
|
|
8
|
+
* bend — the bent normal minus the shading normal. Each is clamped to this frame's 3x3 neighbourhood before it
|
|
9
|
+
* blends, visibility to a box and the bend to a ball. The second target is the bent normal itself,
|
|
10
|
+
* `normalize(shading normal + bend)`, octahedral in `rg16uint` as the G-buffer normal is, which is what lighting
|
|
11
|
+
* reads.
|
|
12
|
+
*
|
|
13
|
+
* @type {ImageShader}
|
|
14
|
+
*/
|
|
1
15
|
export const ao_reproject_shader: ImageShader;
|
|
2
16
|
import { ImageShader } from "../../shader/ImageShader.js";
|
|
3
17
|
//# sourceMappingURL=ao_reproject_shader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ao_reproject_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/ao_reproject_shader.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ao_reproject_shader.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/postprocess/gtao/ao_reproject_shader.js"],"names":[],"mappings":"AAwRA;;;;;;;;;;;;;GAaG;AACH,kCAFU,WAAW,CAqBnB;4BA9S0B,6BAA6B"}
|