@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.
Files changed (419) hide show
  1. package/CHANGELOG.md +2621 -0
  2. package/CONTRIBUTING.md +7 -0
  3. package/MIGRATION_2_TO_3.md +136 -0
  4. package/SECURITY.md +4 -0
  5. package/editor/EditorCameraNavigation.d.ts +2 -1
  6. package/editor/EditorCameraNavigation.d.ts.map +1 -1
  7. package/editor/EditorCameraNavigation.js +51 -57
  8. package/package.json +6 -2
  9. package/src/engine/EngineHarness.d.ts +3 -9
  10. package/src/engine/EngineHarness.d.ts.map +1 -1
  11. package/src/engine/EngineHarness.js +6 -8
  12. package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts +9 -6
  13. package/src/engine/graphics/camera/makeOrbitalCameraController.d.ts.map +1 -1
  14. package/src/engine/graphics/camera/makeOrbitalCameraController.js +44 -71
  15. package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts +64 -0
  16. package/src/engine/graphics/camera/orbital/MomentumAxis.d.ts.map +1 -0
  17. package/src/engine/graphics/camera/orbital/MomentumAxis.js +187 -0
  18. package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts +86 -0
  19. package/src/engine/graphics/camera/orbital/OrbitalCameraRig.d.ts.map +1 -0
  20. package/src/engine/graphics/camera/orbital/OrbitalCameraRig.js +319 -0
  21. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +34 -10
  22. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  23. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +116 -30
  24. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts +1 -7
  25. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.d.ts.map +1 -1
  26. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js +1 -37
  27. package/src/engine/graphics/ecs/water/Water.d.ts +8 -0
  28. package/src/engine/graphics/ecs/water/Water.d.ts.map +1 -1
  29. package/src/engine/graphics/ecs/water/Water.js +8 -0
  30. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  31. package/src/engine/graphics3/WaterSystem.js +731 -734
  32. package/src/engine/graphics3/decal/DecalTileShader.d.ts +61 -0
  33. package/src/engine/graphics3/decal/DecalTileShader.d.ts.map +1 -0
  34. package/src/engine/graphics3/decal/DecalTileShader.js +138 -0
  35. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts +10 -4
  36. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  37. package/src/engine/graphics3/decal/GPUDecalRenderer.js +149 -44
  38. package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts +25 -0
  39. package/src/engine/graphics3/decal/chunk_decal_tile_vertex.d.ts.map +1 -0
  40. package/src/engine/graphics3/decal/chunk_decal_tile_vertex.js +55 -0
  41. package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts +22 -0
  42. package/src/engine/graphics3/decal/graph_gather_decal_tiles.d.ts.map +1 -0
  43. package/src/engine/graphics3/decal/graph_gather_decal_tiles.js +70 -0
  44. package/src/engine/graphics3/decal/shader_decal_composite.d.ts +7 -5
  45. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  46. package/src/engine/graphics3/decal/shader_decal_composite.js +48 -44
  47. package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts +12 -0
  48. package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -0
  49. package/src/engine/graphics3/decal/shader_decal_tile_copy.js +78 -0
  50. package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts +11 -0
  51. package/src/engine/graphics3/decal/shader_gather_decal_tiles.d.ts.map +1 -0
  52. package/src/engine/graphics3/decal/shader_gather_decal_tiles.js +80 -0
  53. package/src/engine/input/devices/mouse/MouseEventButtons.d.ts +13 -0
  54. package/src/engine/input/devices/mouse/MouseEventButtons.d.ts.map +1 -0
  55. package/src/engine/input/devices/mouse/MouseEventButtons.js +23 -0
  56. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts +4 -0
  57. package/src/engine/input/ecs/controllers/KeyboardCameraController.d.ts.map +1 -1
  58. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +9 -45
  59. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  60. package/src/shade/playground/water_refraction/README.md +5 -6
  61. package/src/shade/playground/water_refraction/index.html +1 -1
  62. package/src/shade/renderer/Renderer.d.ts +11 -0
  63. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  64. package/src/shade/renderer/Renderer.js +50 -6
  65. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +40 -80
  66. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  67. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +197 -147
  68. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  69. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  70. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  71. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  72. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  73. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +28 -45
  74. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  75. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +111 -119
  76. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +22 -3
  77. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
  78. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +84 -3
  79. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts +19 -0
  80. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.d.ts.map +1 -0
  81. package/src/shade/renderer/geometry/virtual/proxy/vgeo_proxy_triangle_limit.js +25 -0
  82. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts +31 -0
  83. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts.map +1 -0
  84. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.js +343 -0
  85. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +15 -0
  86. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts.map +1 -1
  87. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +38 -0
  88. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts +17 -0
  89. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts.map +1 -0
  90. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.js +29 -0
  91. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -1
  92. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +7 -13
  93. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +28 -59
  94. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts.map +1 -1
  95. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +84 -789
  96. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +1 -8
  98. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +7 -6
  99. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  100. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +12 -11
  101. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.d.ts +2 -2
  102. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_instance.js +2 -2
  103. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +1 -4
  104. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  105. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +1 -10
  106. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +5 -15
  107. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +1 -1
  108. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +6 -34
  109. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  110. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +1 -7
  111. package/src/shade/renderer/hiz/HZBFootprint.d.ts +14 -0
  112. package/src/shade/renderer/hiz/HZBFootprint.d.ts.map +1 -0
  113. package/src/shade/renderer/hiz/HZBFootprint.js +16 -0
  114. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts +10 -0
  115. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts.map +1 -0
  116. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.js +11 -0
  117. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts +10 -0
  118. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts.map +1 -0
  119. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js +11 -0
  120. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +0 -7
  121. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  122. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +405 -350
  123. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts +12 -0
  124. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts.map +1 -0
  125. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.js +27 -0
  126. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts +12 -0
  127. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts.map +1 -0
  128. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.js +27 -0
  129. package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts +14 -0
  130. package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts.map +1 -0
  131. package/src/shade/renderer/hiz/hzb_footprint_texels.js +34 -0
  132. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +0 -5
  133. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  134. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +37 -57
  135. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts +11 -0
  136. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts.map +1 -0
  137. package/src/shade/renderer/hiz/{shader_hzb_reduce_mip0_clip.js → shader_hzb_reduce_mip0.js} +120 -111
  138. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  139. package/src/shade/renderer/material/GPUMaterialManager.d.ts +11 -1
  140. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  141. package/src/shade/renderer/material/GPUMaterialManager.js +16 -8
  142. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -12
  143. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  144. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +17 -118
  145. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +7 -3
  146. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  147. package/src/shade/renderer/postprocess/gtao/GTAO.js +26 -13
  148. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +14 -0
  149. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  150. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +196 -68
  151. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.d.ts.map +1 -1
  152. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +42 -28
  153. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.d.ts.map +1 -1
  154. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +429 -414
  155. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts +16 -0
  156. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.d.ts.map +1 -0
  157. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +156 -0
  158. package/src/shade/renderer/scene/GPUSceneContext.d.ts +2 -2
  159. package/src/shade/renderer/scene/GPUSceneContext.js +5 -5
  160. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  161. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +7 -2
  162. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +0 -6
  163. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  164. package/src/shade/renderer/water/GPUWaterRenderer.js +12 -17
  165. package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts +35 -0
  166. package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts.map +1 -0
  167. package/src/shade/renderer/water/medium/graph_water_meshlets.js +89 -0
  168. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  169. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  170. package/src/shade/renderer/water/shader_water.js +22 -13
  171. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
  172. package/src/shade/renderer/water/shader_water_avboit.js +7 -7
  173. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +1 -1
  174. package/src/shade/renderer/water/surface/graph_water_tessellation.js +1 -1
  175. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +9 -1
  176. package/editor/REWORK_PLAN_2026_08.md +0 -692
  177. package/src/CODEC_LAYOUT_VERIFICATION.md +0 -419
  178. package/src/CORRECTNESS_HUNT_2026_07_24.md +0 -142
  179. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +0 -738
  180. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +0 -79
  181. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +0 -93
  182. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +0 -80
  183. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +0 -164
  184. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +0 -69
  185. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +0 -110
  186. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +0 -129
  187. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +0 -72
  188. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +0 -74
  189. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +0 -169
  190. package/src/DUPLICATION_AUDIT_2026_08_07.md +0 -254
  191. package/src/DUPLICATION_AUDIT_REMEDIATION.md +0 -250
  192. package/src/DUPLICATION_REVIEW_2026_10_24.md +0 -1072
  193. package/src/REVIEW_2026_08_06/adv-core.md +0 -511
  194. package/src/REVIEW_2026_08_06/adv-gfx.md +0 -480
  195. package/src/REVIEW_2026_08_06/adv-view.md +0 -446
  196. package/src/REVIEW_2026_08_06/api-core.md +0 -296
  197. package/src/REVIEW_2026_08_06/api-engine.md +0 -195
  198. package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +0 -507
  199. package/src/REVIEW_2026_08_06/core-binary.md +0 -348
  200. package/src/REVIEW_2026_08_06/core-collection.md +0 -376
  201. package/src/REVIEW_2026_08_06/core-math.md +0 -221
  202. package/src/REVIEW_2026_08_06/core-process.md +0 -266
  203. package/src/REVIEW_2026_08_06/core-science.md +0 -223
  204. package/src/REVIEW_2026_08_06/engine-ai-nav.md +0 -279
  205. package/src/REVIEW_2026_08_06/engine-animation.md +0 -167
  206. package/src/REVIEW_2026_08_06/engine-asset.md +0 -166
  207. package/src/REVIEW_2026_08_06/engine-ecs.md +0 -920
  208. package/src/REVIEW_2026_08_06/engine-input.md +0 -197
  209. package/src/REVIEW_2026_08_06/engine-misc.md +0 -248
  210. package/src/REVIEW_2026_08_06/engine-terrain.md +0 -52
  211. package/src/REVIEW_2026_08_06/generation.md +0 -176
  212. package/src/REVIEW_2026_08_06/geom-2d.md +0 -434
  213. package/src/REVIEW_2026_08_06/geom-3d.md +0 -117
  214. package/src/REVIEW_2026_08_06/gfx-gi.md +0 -143
  215. package/src/REVIEW_2026_08_06/gfx-render.md +0 -740
  216. package/src/REVIEW_2026_08_06/gfx-texture.md +0 -690
  217. package/src/REVIEW_2026_08_06/prior-criticals.md +0 -49
  218. package/src/REVIEW_2026_08_06/prior-highs.md +0 -138
  219. package/src/REVIEW_2026_08_06/test-gaps.md +0 -364
  220. package/src/REVIEW_2026_08_06/view.md +0 -667
  221. package/src/REVIEW_2026_08_06.md +0 -610
  222. package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +0 -542
  223. package/src/core/bvh2/bvh3/NOTES.md +0 -2
  224. package/src/core/bvh8/NOTES.md +0 -63
  225. package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +0 -243
  226. package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +0 -417
  227. package/src/core/color/COLOR_REVIEW_2026_08_28.md +0 -779
  228. package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +0 -433
  229. package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +0 -486
  230. package/src/core/geom/3d/atlas/BFF_PLAN.md +0 -174
  231. package/src/core/geom/3d/atlas/REVIEW_02.md +0 -392
  232. package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +0 -146
  233. package/src/core/geom/3d/gjk/NOTES.md +0 -8
  234. package/src/core/geom/3d/topology/TOPO_MESH_RETIREMENT_PLAN.md +0 -135
  235. package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +0 -381
  236. package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +0 -684
  237. package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +0 -554
  238. package/src/core/model/reactive/evaluation/PREDICATE_APPLICABILITY_PROPOSAL.md +0 -446
  239. package/src/engine/REVIEW_2026_07_03.md +0 -211
  240. package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +0 -815
  241. package/src/engine/control/first-person/DESIGN.md +0 -658
  242. package/src/engine/control/first-person/DESIGN_COLLISION.md +0 -382
  243. package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +0 -563
  244. package/src/engine/control/first-person/TODO.md +0 -160
  245. package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +0 -531
  246. package/src/engine/ecs/HIERARCHY_REVIEW.md +0 -717
  247. package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +0 -262
  248. package/src/engine/ecs/ik/PLAN.md +0 -179
  249. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +0 -272
  250. package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +0 -199
  251. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +0 -521
  252. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +0 -463
  253. package/src/engine/graphics/ecs/camera/pp/NOTES.md +0 -48
  254. package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +0 -659
  255. package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +0 -235
  256. package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +0 -490
  257. package/src/engine/graphics/texture/sampler/compare/FLIP_IMPLEMENTATION_PLAN.md +0 -466
  258. package/src/engine/input/GAMEPAD_API_PROPOSAL.md +0 -717
  259. package/src/engine/input/ecs/ism/ISM_DESIGN.md +0 -1523
  260. package/src/engine/input/ecs/ism/ISM_IMPLEMENTATION_PLAN.md +0 -627
  261. package/src/engine/navigation/mesh/OVERLAPPING_SURFACES_2026_08_25.md +0 -661
  262. package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +0 -229
  263. package/src/engine/network/CONGESTION_CONTROL.md +0 -87
  264. package/src/engine/network/MESSAGE_TRANSPORT.md +0 -364
  265. package/src/engine/network/SMOOTHNESS_DESIGN.md +0 -400
  266. package/src/engine/physics/cloth/MEASUREMENTS.md +0 -5304
  267. package/src/engine/physics/cloth/PLAN.md +0 -3056
  268. package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +0 -1382
  269. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +0 -243
  270. package/src/engine/physics/fluid/solver/NOTES.md +0 -46
  271. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +0 -536
  272. package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +0 -432
  273. package/src/engine/sound/simulation/PROBE_PLACEMENT.md +0 -250
  274. package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +0 -322
  275. package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +0 -261
  276. package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +0 -121
  277. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +0 -999
  278. package/src/format/image/avif/DECISIONS.md +0 -545
  279. package/src/format/image/jpeg/NOTES.md +0 -3
  280. package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -814
  281. package/src/generation/COORDINATES.md +0 -54
  282. package/src/generation/REVIEW_01_ACTION_PLAN.md +0 -628
  283. package/src/generation/foliage/ANNUAL_SHOOTS_BRIEF_2026_10_25.md +0 -220
  284. package/src/generation/foliage/CROWN_FILLING_BRIEF_2026_10_26.md +0 -172
  285. package/src/generation/foliage/CROWN_FULLNESS_BRIEF_2026_10_26.md +0 -86
  286. package/src/generation/foliage/FOLIAGE_DESIGN.md +0 -547
  287. package/src/generation/foliage/FOLIAGE_PLAN.md +0 -198
  288. package/src/generation/foliage/LEAF_ARCHITECTURE_BRIEF_2026_10_26.md +0 -158
  289. package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +0 -521
  290. package/src/generation/foliage/REAL_TIME_TREES_BRIEF_2026_10_27.md +0 -86
  291. package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +0 -347
  292. package/src/generation/foliage/SHOOT_SYSTEMS_ALL_SPECIES_BRIEF_2026_10_26.md +0 -248
  293. package/src/generation/foliage/SPEEDTREE_COMPARISON_2026_10_24.md +0 -694
  294. package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +0 -552
  295. package/src/shade/RENDERER_CONTRACT.md +0 -697
  296. package/src/shade/SHADER_F16_PROPOSAL_2026_10_24.md +0 -263
  297. package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +0 -569
  298. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +0 -755
  299. package/src/shade/device/mock/EXTENSION_PROPOSAL_2026_08_22.md +0 -458
  300. package/src/shade/device/mock/IMPLEMENTATION_PLAN.md +0 -255
  301. package/src/shade/device/mock/REVIEW_2026_08_22.md +0 -527
  302. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +0 -894
  303. package/src/shade/device/timing/profile/SGPT_FORMAT.md +0 -345
  304. package/src/shade/renderer/NOTES.md +0 -78
  305. package/src/shade/renderer/PLAN.md +0 -8
  306. package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +0 -145
  307. package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +0 -357
  308. package/src/shade/renderer/atmosphere/NOTES.md +0 -6
  309. package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts +0 -76
  310. package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts.map +0 -1
  311. package/src/shade/renderer/camera/orbital/MomentumAxis.js +0 -164
  312. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts +0 -45
  313. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts.map +0 -1
  314. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.js +0 -66
  315. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +0 -98
  316. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +0 -1
  317. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +0 -184
  318. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +0 -175
  319. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +0 -1
  320. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +0 -411
  321. package/src/shade/renderer/camera/orbital/README.md +0 -81
  322. package/src/shade/renderer/camera/orbital/index.d.ts +0 -6
  323. package/src/shade/renderer/camera/orbital/index.d.ts.map +0 -1
  324. package/src/shade/renderer/camera/orbital/index.js +0 -9
  325. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +0 -964
  326. package/src/shade/renderer/fluid/GPU_FLUID_OCCUPANCY_AND_SOTA_REVIEW_2026_10_26.md +0 -361
  327. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +0 -619
  328. package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +0 -674
  329. package/src/shade/renderer/geometry/sdf/NOTES.md +0 -6
  330. package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +0 -540
  331. package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +0 -305
  332. package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +0 -913
  333. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +0 -787
  334. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +0 -481
  335. package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +0 -301
  336. package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +0 -448
  337. package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +0 -385
  338. package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +0 -656
  339. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +0 -308
  340. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +0 -657
  341. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +0 -551
  342. package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +0 -529
  343. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts +0 -47
  344. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.d.ts.map +0 -1
  345. package/src/shade/renderer/geometry/virtual/sdf/VGEO_SDF.js +0 -80
  346. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts +0 -16
  347. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.d.ts.map +0 -1
  348. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_collect.js +0 -67
  349. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts +0 -17
  350. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.d.ts.map +0 -1
  351. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_decode.js +0 -145
  352. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts +0 -12
  353. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.d.ts.map +0 -1
  354. package/src/shade/renderer/geometry/virtual/sdf/shader_vgeo_sdf_traverse.js +0 -105
  355. package/src/shade/renderer/global_illumination/lpv/NOTES.md +0 -3
  356. package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +0 -4306
  357. package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_RAYS_VARIABLE_AND_SORTED_SCOPE_2026_10_30.md +0 -410
  358. package/src/shade/renderer/global_illumination/sharc/NOTES.md +0 -8
  359. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +0 -1369
  360. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +0 -202
  361. package/src/shade/renderer/gpu_primitive/indirect/NOTES.md +0 -94
  362. package/src/shade/renderer/hiz/NOTES.md +0 -3
  363. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +0 -8
  364. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +0 -1
  365. package/src/shade/renderer/light/cluster/NOTES.md +0 -11
  366. package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +0 -524
  367. package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +0 -1101
  368. package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts +0 -24
  369. package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts.map +0 -1
  370. package/src/shade/renderer/material/resident/shader_resident_texture_means.js +0 -120
  371. package/src/shade/renderer/particles/DESIGN.md +0 -1011
  372. package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +0 -280
  373. package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +0 -453
  374. package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +0 -520
  375. package/src/shade/renderer/postprocess/bloom/NOTES.md +0 -6
  376. package/src/shade/renderer/postprocess/fsr/NOTES.md +0 -4
  377. package/src/shade/renderer/postprocess/gtao/NOTES.md +0 -6
  378. package/src/shade/renderer/postprocess/nss/NOTES.md +0 -332
  379. package/src/shade/renderer/postprocess/perspective/NOTES.md +0 -3
  380. package/src/shade/renderer/postprocess/sscs/NOTES.md +0 -5
  381. package/src/shade/renderer/postprocess/ssr/NOTES.md +0 -14
  382. package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +0 -286
  383. package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -39
  384. package/src/shade/renderer/postprocess/taa/NOTES.md +0 -11
  385. package/src/shade/renderer/postprocess/upscale-dither/NOTES.md +0 -78
  386. package/src/shade/renderer/postprocess/vrs/NOTES.md +0 -4
  387. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +0 -1218
  388. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +0 -600
  389. package/src/shade/renderer/restir/reservoir/NOTES.md +0 -6
  390. package/src/shade/renderer/shader/chunk/atmosphere/NOTES.md +0 -6
  391. package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +0 -391
  392. package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +0 -153
  393. package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +0 -322
  394. package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +0 -247
  395. package/src/shade/renderer/shader/chunk/fsr/NOTES.md +0 -3
  396. package/src/shade/renderer/shader/chunk/fsr/spd/NOTES.md +0 -4
  397. package/src/shade/renderer/shader/chunk/geometry/ray/NOTES.md +0 -4
  398. package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +0 -159
  399. package/src/shade/renderer/shader/chunk/mboit/NOTES.md +0 -38
  400. package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/NOTES.md +0 -3
  401. package/src/shade/renderer/shader/chunk/spherical_harmonics/sampling/NOTES.md +0 -8
  402. package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +0 -927
  403. package/src/shade/renderer/shadow/contact/FINDINGS.md +0 -413
  404. package/src/shade/renderer/shadow/map/csm/NOTES.md +0 -5
  405. package/src/shade/renderer/shadow/ray/NOTES.md +0 -31
  406. package/src/shade/renderer/shadow/sdf/NOTES.md +0 -9
  407. package/src/shade/renderer/shadow/sdf/brixelizer/NOTES.md +0 -5
  408. package/src/shade/renderer/shadow/sdf/cascade/NOTES.md +0 -9
  409. package/src/shade/renderer/shadow/vsm/NOTES.md +0 -12
  410. package/src/shade/renderer/shadow/vsm/PLAN.md +0 -442
  411. package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +0 -43
  412. package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +0 -2444
  413. package/src/shade/renderer/texture/mipmaps/NOTES.md +0 -3
  414. package/src/shade/renderer/volumetrics/NOTES.md +0 -1329
  415. package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +0 -336
  416. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +0 -23
  417. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +0 -1
  418. package/src/shade/renderer/water/medium/GPUWaterBodies.js +0 -75
  419. package/src/shade/wgsl/NOTES.md +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"GPUProbeClipmapGI.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js"],"names":[],"mappings":"AAeA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IA0DI;;OAEG;IACH,sBAFW,eAAe,EAMzB;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,oCAEC;IAED;;;;;;;;;;;;;;OAcG;IACH;QAT+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACgB,QAAQ,EAAtC,oBAAoB;QACJ,KAAK,EAArB,MAAM;QACU,MAAM,EAAtB,MAAM;QACK,IAAI;QACE,MAAM,GAAvB,MAAM;aAkGhB;IAED;;;OAGG;IACH,0BAEC;IAED;;;;;;;;;OASG;IACH,4CAUC;IAwDD;;;;;;;;;;OAUG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACgB,QAAQ,EAAtC,oBAAoB;QACF,UAAU,EAA5B,MAAM,EAAE;QACN,MAAM,CAmBlB;IAED;;;;;OAKG;IACH,uBAFW,aAAa,QASvB;IAED;;;OAGG;IACH,0BAHW,aAAa,GACX,OAAO,CAanB;IAyCD;;;OAGG;IACH,gBAoBC;IAED,gBAcC;;CACJ;yBArcY,OAAO,8DAA8D,EAAE,UAAU;8BACjF,OAAO,0BAA0B,EAAE,eAAe;6BAClD,OAAO,8BAA8B,EAAE,cAAc;mCACrD,OAAO,2BAA2B,EAAE,oBAAoB;4BACxD,OAAO,4BAA4B,EAAE,aAAa;gCAjB/B,4BAA4B;gCAQ5B,4BAA4B;uCAErB,6BAA6B"}
1
+ {"version":3,"file":"GPUProbeClipmapGI.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js"],"names":[],"mappings":"AAeA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IA0DI;;OAEG;IACH,sBAFW,eAAe,EAMzB;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,qCAEC;IAED;;OAEG;IACH,oCAEC;IAED;;;;;;;;;;;;;;OAcG;IACH;QAT+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACgB,QAAQ,EAAtC,oBAAoB;QACJ,KAAK,EAArB,MAAM;QACU,MAAM,EAAtB,MAAM;QACK,IAAI;QACE,MAAM,GAAvB,MAAM;aA2FhB;IAED;;;OAGG;IACH,0BAEC;IAED;;;;;;;;;OASG;IACH,4CAUC;IAwDD;;;;;;;;;;OAUG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACgB,QAAQ,EAAtC,oBAAoB;QACF,UAAU,EAA5B,MAAM,EAAE;QACN,MAAM,CAmBlB;IAED;;;;;OAKG;IACH,uBAFW,aAAa,QASvB;IAED;;;OAGG;IACH,0BAHW,aAAa,GACX,OAAO,CAanB;IAyCD;;;OAGG;IACH,gBAoBC;IAED,gBAcC;;CACJ;yBA9bY,OAAO,8DAA8D,EAAE,UAAU;8BACjF,OAAO,0BAA0B,EAAE,eAAe;6BAClD,OAAO,8BAA8B,EAAE,cAAc;mCACrD,OAAO,2BAA2B,EAAE,oBAAoB;4BACxD,OAAO,4BAA4B,EAAE,aAAa;gCAjB/B,4BAA4B;gCAQ5B,4BAA4B;uCAErB,6BAA6B"}
@@ -180,12 +180,6 @@ export class GPUProbeClipmapGI {
180
180
 
181
181
  const scene = view.scene;
182
182
  const sdf = scene.geometries.sdf;
183
- const materials = this.#graphics.materials_resident;
184
-
185
- // the scene's materials as they are this frame: a repack recaptures its pairs
186
- materials.ensure_scene_materials(scene);
187
- materials.update();
188
-
189
183
  sdf.configure(settings.mesh_sdf_voxel_size, settings.mesh_sdf_max_bricks);
190
184
  sdf.trim();
191
185
  sdf.cards.capture_mode = settings.card_capture_mode;
@@ -193,7 +187,7 @@ export class GPUProbeClipmapGI {
193
187
  graph,
194
188
  budget: settings.mesh_sdf_bake_budget,
195
189
  capture_budget: settings.card_capture_budget,
196
- materials,
190
+ materials: this.#graphics.materials_resident,
197
191
  material_contexts: this.#graphics.materials,
198
192
  });
199
193
 
@@ -235,7 +229,6 @@ export class GPUProbeClipmapGI {
235
229
  brick_clipmap: this.#brick_clipmap,
236
230
  bricks,
237
231
  scene,
238
- materials,
239
232
  card_rows: this.#holds.rows_buffer,
240
233
  resampling: settings.resampling,
241
234
  });
@@ -9,14 +9,15 @@
9
9
  * `GPU_DATABASE_NULL` until then and for a row out of the SDF world.
10
10
  *
11
11
  * A row is in the SDF world when its `flags` carry `MESH_FLAG_SDF_WORLD`, whatever its geometry: a
12
- * virtual geometry's cache is held as a mesh's is, and comes from its own source (`VGeoSDFProxies`).
12
+ * virtual geometry's cache is held as a mesh's is, and is its proxy's once `VGeoSDFProxies` aliases it: the
13
+ * hold and its side move to the proxy, and the pair's card set captures the proxy's layout.
13
14
  * A skinned row draws a clone: the hold and the pair are its source's,
14
15
  * whose unskinned field and cards the clone's header is aliased to (§6.3). A row written again moves
15
16
  * its hold and its pair, the new ones taken before the old ones go, so a cache or card set a row keeps
16
17
  * drawing is never let go in between.
17
18
  *
18
- * When the resident material context repacks a material whose version moved, each of that
19
- * material's pairs is recaptured (§6.5), and the holds of its rows move to the side it draws now.
19
+ * When the material manager restages a material whose version moved, each of that material's pairs
20
+ * is recaptured (§6.5), and the holds of its rows move to the side it draws now.
20
21
  *
21
22
  * {@link attach} subscribes and walks the rows already there; {@link detach} gives every hold and card
22
23
  * set back. Neither trims: a cache with no holder stays until its user trims, so leaving the mode keeps
@@ -25,7 +26,7 @@
25
26
  export class ProbeClipmapSceneHolds {
26
27
  /**
27
28
  * @param {GPUSceneContext} scene
28
- * @param {GraphicsContext} graphics whose resident materials' repacks recapture the pairs of the material
29
+ * @param {GraphicsContext} graphics whose material manager's restages recapture the pairs of the material
29
30
  */
30
31
  constructor(scene: GPUSceneContext, graphics: GraphicsContext);
31
32
  /**
@@ -43,7 +44,7 @@ export class ProbeClipmapSceneHolds {
43
44
  */
44
45
  get pair_count(): number;
45
46
  /**
46
- * Recaptures asked for, a pair each time its material was repacked.
47
+ * Recaptures asked for, a pair each time its material was restaged.
47
48
  * @returns {number}
48
49
  */
49
50
  get recaptures_requested(): number;
@@ -79,6 +80,6 @@ export type GPUSceneContext = import("../../scene/GPUSceneContext.js").GPUSceneC
79
80
  export type MeshletGeometry = import("../../geometry/MeshletGeometry.js").MeshletGeometry;
80
81
  export type GPUGeometryMetadata = import("../../geometry/GPUGeometryMetadata.js").GPUGeometryMetadata;
81
82
  export type ShadeMaterial = import("../../material/ShadeMaterial.js").ShadeMaterial;
82
- export type GPUResidentMaterialContext = import("../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext;
83
+ export type GPUMaterialManager = import("../../material/GPUMaterialManager.js").GPUMaterialManager;
83
84
  export type GraphicsContext = import("../../GraphicsContext.js").GraphicsContext;
84
85
  //# sourceMappingURL=ProbeClipmapSceneHolds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProbeClipmapSceneHolds.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js"],"names":[],"mappings":"AAwDA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IAwEI;;;OAGG;IACH,mBAHW,eAAe,YACf,eAAe,EASzB;IAED;;OAEG;IACH,sEAEC;IAED;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,mCAEC;IAED;;;OAGG;IACH,qCAEC;IAED,0BAEC;IAED;;;;;;OAMG;IACH,oBAJW,mBAAmB,YACnB,aAAa,GACX,MAAM,GAAC,SAAS,CAI5B;IAED;;;;OAIG;IACH,6BAIC;IAED,eAiBC;IAED,eAuCC;IAED;;OAEG;IACH,cAiBC;;CA4TJ;8BA1mBY,OAAO,gCAAgC,EAAE,eAAe;8BACxD,OAAO,mCAAmC,EAAE,eAAe;kCAC3D,OAAO,uCAAuC,EAAE,mBAAmB;4BACnE,OAAO,iCAAiC,EAAE,aAAa;yCACvD,OAAO,uDAAuD,EAAE,0BAA0B;8BAC1F,OAAO,0BAA0B,EAAE,eAAe"}
1
+ {"version":3,"file":"ProbeClipmapSceneHolds.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js"],"names":[],"mappings":"AAwDA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;IAwEI;;;OAGG;IACH,mBAHW,eAAe,YACf,eAAe,EASzB;IAED;;OAEG;IACH,sEAEC;IAED;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,yBAEC;IAED;;;OAGG;IACH,mCAEC;IAED;;;OAGG;IACH,qCAEC;IAED,0BAEC;IAED;;;;;;OAMG;IACH,oBAJW,mBAAmB,YACnB,aAAa,GACX,MAAM,GAAC,SAAS,CAI5B;IAED;;;;OAIG;IACH,6BAIC;IAED,eAiBC;IAED,eAuCC;IAED;;OAEG;IACH,cAiBC;;CA4TJ;8BA3mBY,OAAO,gCAAgC,EAAE,eAAe;8BACxD,OAAO,mCAAmC,EAAE,eAAe;kCAC3D,OAAO,uCAAuC,EAAE,mBAAmB;4BACnE,OAAO,iCAAiC,EAAE,aAAa;iCACvD,OAAO,sCAAsC,EAAE,kBAAkB;8BACjE,OAAO,0BAA0B,EAAE,eAAe"}
@@ -10,7 +10,7 @@ import { row_of_entity } from "../../scene/rows/GPUSceneRows.js";
10
10
  * @typedef {import("../../geometry/MeshletGeometry.js").MeshletGeometry} MeshletGeometry
11
11
  * @typedef {import("../../geometry/GPUGeometryMetadata.js").GPUGeometryMetadata} GPUGeometryMetadata
12
12
  * @typedef {import("../../material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
13
- * @typedef {import("../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext} GPUResidentMaterialContext
13
+ * @typedef {import("../../material/GPUMaterialManager.js").GPUMaterialManager} GPUMaterialManager
14
14
  * @typedef {import("../../GraphicsContext.js").GraphicsContext} GraphicsContext
15
15
  */
16
16
 
@@ -65,14 +65,15 @@ class Pair {
65
65
  * `GPU_DATABASE_NULL` until then and for a row out of the SDF world.
66
66
  *
67
67
  * A row is in the SDF world when its `flags` carry `MESH_FLAG_SDF_WORLD`, whatever its geometry: a
68
- * virtual geometry's cache is held as a mesh's is, and comes from its own source (`VGeoSDFProxies`).
68
+ * virtual geometry's cache is held as a mesh's is, and is its proxy's once `VGeoSDFProxies` aliases it: the
69
+ * hold and its side move to the proxy, and the pair's card set captures the proxy's layout.
69
70
  * A skinned row draws a clone: the hold and the pair are its source's,
70
71
  * whose unskinned field and cards the clone's header is aliased to (§6.3). A row written again moves
71
72
  * its hold and its pair, the new ones taken before the old ones go, so a cache or card set a row keeps
72
73
  * drawing is never let go in between.
73
74
  *
74
- * When the resident material context repacks a material whose version moved, each of that
75
- * material's pairs is recaptured (§6.5), and the holds of its rows move to the side it draws now.
75
+ * When the material manager restages a material whose version moved, each of that material's pairs
76
+ * is recaptured (§6.5), and the holds of its rows move to the side it draws now.
76
77
  *
77
78
  * {@link attach} subscribes and walks the rows already there; {@link detach} gives every hold and card
78
79
  * set back. Neither trims: a cache with no holder stays until its user trims, so leaving the mode keeps
@@ -86,7 +87,7 @@ export class ProbeClipmapSceneHolds {
86
87
  #scene;
87
88
 
88
89
  /**
89
- * @type {GPUResidentMaterialContext}
90
+ * @type {GPUMaterialManager}
90
91
  */
91
92
  #materials;
92
93
 
@@ -152,14 +153,14 @@ export class ProbeClipmapSceneHolds {
152
153
 
153
154
  /**
154
155
  * @param {GPUSceneContext} scene
155
- * @param {GraphicsContext} graphics whose resident materials' repacks recapture the pairs of the material
156
+ * @param {GraphicsContext} graphics whose material manager's restages recapture the pairs of the material
156
157
  */
157
158
  constructor(scene, graphics) {
158
159
  assert.defined(scene, 'scene');
159
160
  assert.defined(graphics, 'graphics');
160
161
 
161
162
  this.#scene = scene;
162
- this.#materials = graphics.materials_resident;
163
+ this.#materials = graphics.materials;
163
164
  this.#device = graphics.device;
164
165
  }
165
166
 
@@ -187,7 +188,7 @@ export class ProbeClipmapSceneHolds {
187
188
  }
188
189
 
189
190
  /**
190
- * Recaptures asked for, a pair each time its material was repacked.
191
+ * Recaptures asked for, a pair each time its material was restaged.
191
192
  * @returns {number}
192
193
  */
193
194
  get recaptures_requested() {
@@ -241,7 +242,7 @@ export class ProbeClipmapSceneHolds {
241
242
  this.#scene.geometries.sdf.onBaked.add(this.#baked, this);
242
243
  cards.onResident.add(this.#card_set_resident, this);
243
244
  cards.onWithdrawn.add(this.#card_set_withdrawn, this);
244
- this.#materials.onMaterialRepacked.add(this.#repacked, this);
245
+ this.#materials.onMaterialRestaged.add(this.#restaged, this);
245
246
 
246
247
  // a row not yet written is taken now, and moved when it is
247
248
  rows.for_each_mesh((entity, geometry, material, skinned, flags) => this.#written(entity, geometry, material, flags));
@@ -263,7 +264,7 @@ export class ProbeClipmapSceneHolds {
263
264
  sdf.onBaked.remove(this.#baked, this);
264
265
  cards.onResident.remove(this.#card_set_resident, this);
265
266
  cards.onWithdrawn.remove(this.#card_set_withdrawn, this);
266
- this.#materials.onMaterialRepacked.remove(this.#repacked, this);
267
+ this.#materials.onMaterialRestaged.remove(this.#restaged, this);
267
268
 
268
269
  for (const [entity, record] of this.#held) {
269
270
  sdf.release(record, this.#pair_of.get(entity).two_sided);
@@ -524,7 +525,7 @@ export class ProbeClipmapSceneHolds {
524
525
  /**
525
526
  * @param {ShadeMaterial} material
526
527
  */
527
- #repacked(material) {
528
+ #restaged(material) {
528
529
  const of_material = this.#pairs_of_material.get(material.id);
529
530
 
530
531
  if (of_material === undefined) {
@@ -10,8 +10,8 @@
10
10
  * `mesh_brick_accept` is the gather's leaf filter, with `bounds` the row's world box and `voxel` the
11
11
  * cascade's: the row is in the SDF world, its geometry's field is resident (a skinned clone's through
12
12
  * its source's, the hook), and its box resolves in the cascade (`brick_provider_resolves`). A virtual
13
- * geometry's field is the one baked for its proxy and adopted into it (§7.8), so its rows are taken as
14
- * a mesh's are, once it is resident.
13
+ * geometry's header is an alias of its proxy's (§7.8), so its rows are taken as a mesh's are, once the
14
+ * proxy's field is resident.
15
15
  *
16
16
  * `mesh_brick_instance` makes the instance the texels sample: the inverse of its transform, its box,
17
17
  * its smallest axis scale, and the coarsest level of its field no coarser than the cascade,
@@ -19,8 +19,8 @@ import { MESH_BRICK_INSTANCE_STRUCT } from "./MESH_BRICK_INSTANCE_STRUCT.js";
19
19
  * `mesh_brick_accept` is the gather's leaf filter, with `bounds` the row's world box and `voxel` the
20
20
  * cascade's: the row is in the SDF world, its geometry's field is resident (a skinned clone's through
21
21
  * its source's, the hook), and its box resolves in the cascade (`brick_provider_resolves`). A virtual
22
- * geometry's field is the one baked for its proxy and adopted into it (§7.8), so its rows are taken as
23
- * a mesh's are, once it is resident.
22
+ * geometry's header is an alias of its proxy's (§7.8), so its rows are taken as a mesh's are, once the
23
+ * proxy's field is resident.
24
24
  *
25
25
  * `mesh_brick_instance` makes the instance the texels sample: the inverse of its transform, its box,
26
26
  * its smallest axis scale, and the coarsest level of its field no coarser than the cascade,
@@ -156,13 +156,11 @@ export class GPUProbeClipmap {
156
156
  * the update orders after
157
157
  * @param {import("../../../scene/GPUSceneContext.js").GPUSceneContext} options.scene the scene the rays
158
158
  * light and shade: its lights, its environment, its rows and their geometry caches' cards
159
- * @param {import("../../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext} options.materials
160
- * the resident materials, updated this frame: what a hit no card sees takes
161
159
  * @param {GPUBuffer} options.card_rows the row → card set table, a word a `meshes` row
162
160
  * @param {boolean} options.resampling whether each update re-samples its neighbours, adding what they have
163
161
  * seen to its rays (`shader_probe_clipmap_resample`)
164
162
  */
165
- graph_update({ graph, x, y, z, depth, normal, camera, stbn, resolution, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene, materials, card_rows, resampling }: {
163
+ graph_update({ graph, x, y, z, depth, normal, camera, stbn, resolution, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene, card_rows, resampling }: {
166
164
  graph: FrameGraph;
167
165
  x: number;
168
166
  y: number;
@@ -178,7 +176,6 @@ export class GPUProbeClipmap {
178
176
  brick_clipmap: import("../brick/GPUBrickClipmap.js").GPUBrickClipmap;
179
177
  bricks: number;
180
178
  scene: import("../../../scene/GPUSceneContext.js").GPUSceneContext;
181
- materials: import("../../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext;
182
179
  card_rows: GPUBuffer;
183
180
  resampling: boolean;
184
181
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"GPUProbeClipmap.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js"],"names":[],"mappings":"AAoHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH;IAwOI;;;;;;;;OAQG;IACH;QAN2B,aAAa,EAA7B,MAAM;QACU,UAAU,EAA1B,MAAM;QACU,OAAO,EAAvB,MAAM;QACU,mBAAmB,EAAnC,MAAM;QACU,gBAAgB,EAAhC,MAAM;OAmGhB;IAjVD;;;OAGG;IACH,wBAHU,MAAM,CAGF;IAEd;;;;OAIG;IACH,qBAHU,MAAM,CAGL;IAEX;;;;OAIG;IACH,kBAHU,MAAM,CAGR;IAER;;;;OAIG;IACH,8BAHU,MAAM,CAGI;IAEpB;;;;OAIG;IACH,2BAHU,MAAM,CAGC;IAmTjB;;;;;;;;OAQG;IACH,4CAUC;IAED;;OAEG;IACH,8BAEC;IAED;;;;;OAKG;IACH,wBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,gBAJW,MAAM,QACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,oBAHW,oBAAoB,GAClB,OAAO,CAQnB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH;QAxB+B,KAAK,EAAzB,UAAU;QACM,CAAC,EAAjB,MAAM;QACU,CAAC,EAAjB,MAAM;QACU,CAAC,EAAjB,MAAM;QACU,KAAK,EAArB,MAAM;QACU,MAAM,EAAtB,MAAM;QACa,MAAM;QACd,IAAI;QACY,UAAU,EAArC,UAAU,MAAM,CAAC;QACD,eAAe,EAA/B,MAAM;QACU,UAAU,EAA1B,MAAM;QACU,cAAc,EAA9B,MAAM;QACyD,aAAa,EAA5E,OAAO,6BAA6B,EAAE,eAAe;QAErC,MAAM,EAAtB,MAAM;QAE+D,KAAK,EAA1E,OAAO,mCAAmC,EAAE,eAAe;QAE4C,SAAS,EAAhH,OAAO,0DAA0D,EAAE,0BAA0B;QAE1E,SAAS;QACX,UAAU,EAA3B,OAAO;aAiPjB;IA0eD,gBAcC;;CACJ;mCArvCY,OAAO,4BAA4B,EAAE,oBAAoB;yBACzD,OAAO,iEAAiE,EAAE,UAAU"}
1
+ {"version":3,"file":"GPUProbeClipmap.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js"],"names":[],"mappings":"AAoHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH;IAqOI;;;;;;;;OAQG;IACH;QAN2B,aAAa,EAA7B,MAAM;QACU,UAAU,EAA1B,MAAM;QACU,OAAO,EAAvB,MAAM;QACU,mBAAmB,EAAnC,MAAM;QACU,gBAAgB,EAAhC,MAAM;OAmGhB;IA9UD;;;OAGG;IACH,wBAHU,MAAM,CAGF;IAEd;;;;OAIG;IACH,qBAHU,MAAM,CAGL;IAEX;;;;OAIG;IACH,kBAHU,MAAM,CAGR;IAER;;;;OAIG;IACH,8BAHU,MAAM,CAGI;IAEpB;;;;OAIG;IACH,2BAHU,MAAM,CAGC;IAgTjB;;;;;;;;OAQG;IACH,4CAUC;IAED;;OAEG;IACH,8BAEC;IAED;;;;;OAKG;IACH,wBAEC;IAED;;;OAGG;IACH,uBAEC;IAED;;;;OAIG;IACH,gBAJW,MAAM,QACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,mBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;OAGG;IACH,oBAHW,oBAAoB,GAClB,OAAO,CAQnB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH;QAtB+B,KAAK,EAAzB,UAAU;QACM,CAAC,EAAjB,MAAM;QACU,CAAC,EAAjB,MAAM;QACU,CAAC,EAAjB,MAAM;QACU,KAAK,EAArB,MAAM;QACU,MAAM,EAAtB,MAAM;QACa,MAAM;QACd,IAAI;QACY,UAAU,EAArC,UAAU,MAAM,CAAC;QACD,eAAe,EAA/B,MAAM;QACU,UAAU,EAA1B,MAAM;QACU,cAAc,EAA9B,MAAM;QACyD,aAAa,EAA5E,OAAO,6BAA6B,EAAE,eAAe;QAErC,MAAM,EAAtB,MAAM;QAE+D,KAAK,EAA1E,OAAO,mCAAmC,EAAE,eAAe;QAExC,SAAS;QACX,UAAU,EAA3B,OAAO;aA+OjB;IAweD,gBAcC;;CACJ;mCA5uCY,OAAO,4BAA4B,EAAE,oBAAoB;yBACzD,OAAO,iEAAiE,EAAE,UAAU"}
@@ -380,9 +380,6 @@ export class GPUProbeClipmap {
380
380
  */
381
381
  #scene = null;
382
382
 
383
- /** The frame's resident materials, a hit's fallback. @type {import("../../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext|null} */
384
- #materials = null;
385
-
386
383
  /** The frame's row → card set table. @type {GPUBuffer|null} */
387
384
  #card_rows = null;
388
385
 
@@ -599,13 +596,11 @@ export class GPUProbeClipmap {
599
596
  * the update orders after
600
597
  * @param {import("../../../scene/GPUSceneContext.js").GPUSceneContext} options.scene the scene the rays
601
598
  * light and shade: its lights, its environment, its rows and their geometry caches' cards
602
- * @param {import("../../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext} options.materials
603
- * the resident materials, updated this frame: what a hit no card sees takes
604
599
  * @param {GPUBuffer} options.card_rows the row → card set table, a word a `meshes` row
605
600
  * @param {boolean} options.resampling whether each update re-samples its neighbours, adding what they have
606
601
  * seen to its rays (`shader_probe_clipmap_resample`)
607
602
  */
608
- graph_update({ graph, x, y, z, depth, normal, camera, stbn, resolution, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene, materials, card_rows, resampling }) {
603
+ graph_update({ graph, x, y, z, depth, normal, camera, stbn, resolution, response_frames, ray_budget, rays_per_probe, brick_clipmap, bricks, scene, card_rows, resampling }) {
609
604
  assert.defined(graph, 'graph');
610
605
  assert.defined(camera, 'camera');
611
606
  assert.defined(stbn, 'stbn');
@@ -616,7 +611,6 @@ export class GPUProbeClipmap {
616
611
  assert.defined(brick_clipmap, 'brick_clipmap');
617
612
  assert.isNonNegativeInteger(bricks, 'bricks');
618
613
  assert.defined(scene, 'scene');
619
- assert.defined(materials, 'materials');
620
614
  assert.defined(card_rows, 'card_rows');
621
615
  assert.isBoolean(resampling, 'resampling');
622
616
  assert.notOk(this.#destroyed, 'destroyed');
@@ -772,7 +766,6 @@ export class GPUProbeClipmap {
772
766
 
773
767
  this.#brick_clipmap = brick_clipmap;
774
768
  this.#scene = scene;
775
- this.#materials = materials;
776
769
  this.#card_rows = card_rows;
777
770
 
778
771
  const tiles_x = Math.ceil(resolution[0] / PROBE_WANT_TILE);
@@ -1213,8 +1206,6 @@ export class GPUProbeClipmap {
1213
1206
  b.mesh_card_sets = cards.records;
1214
1207
  b.mesh_card_albedo = cards.atlas.texture_at(0).obtainView();
1215
1208
  b.mesh_card_emissive = cards.atlas.texture_at(1).obtainView();
1216
- b.materials = this.#materials.buffer_materials;
1217
- b.texture_means = this.#materials.buffer_texture_means;
1218
1209
  b.tEnvironment = lights.environment.obtainView();
1219
1210
 
1220
1211
  shader_probe_clipmap_shade.dispatchIndirect({
@@ -5,16 +5,6 @@
5
5
  * @type {number}
6
6
  */
7
7
  export const PROBE_HIT_SURFACE_TOLERANCE_VOXELS: number;
8
- /**
9
- * The resident materials' table, as the ray passes read it: `materials[mesh.material]`.
10
- * @type {ShaderResourceDescriptor}
11
- */
12
- export const PROBE_HIT_MATERIALS_RESOURCE: ShaderResourceDescriptor;
13
- /**
14
- * Each resident texture slot's mean, `GPUResidentMaterialContext.buffer_texture_means`.
15
- * @type {ShaderResourceDescriptor}
16
- */
17
- export const PROBE_HIT_TEXTURE_MEANS_RESOURCE: ShaderResourceDescriptor;
18
8
  /**
19
9
  * What a GI hit's surface is (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.6), its diffuse albedo and its
20
10
  * emissive, from the `meshes` row the hit is on:
@@ -27,15 +17,15 @@ export const PROBE_HIT_TEXTURE_MEANS_RESOURCE: ShaderResourceDescriptor;
27
17
  * the geometry's local space through its node, the normal by the transpose of the node's linear
28
18
  * part, and the tolerance {@link PROBE_HIT_SURFACE_TOLERANCE_VOXELS} voxels of the hit's cascade,
29
19
  * `voxel`, in local units by the transform's mean scale, the cube root of its determinant.
30
- * - **The material's mean**, where no card set is resident or no card sees the hit: the colour factor
31
- * × the albedo slot's mean colour × (1 − the metallic factor × the ORM slot's mean metalness), and the
32
- * emissive factor × the emissive slot's mean. What a card would have held, Lumen's diffuse colour,
33
- * from the means of what it is made of.
20
+ * - **Black**, where no card set is resident or no card sees the hit, as UE's Lumen leaves a hit no
21
+ * card covers: a surface whose albedo is not known brings back no light rather than light it may not
22
+ * have. The cost is energy, never invented energy: a material's colour factor is all of a flat one's
23
+ * albedo but only the bound of a textured one's, and in Sponza it made the bounce-lit gallery 60%
24
+ * brighter on screen (§6.6).
34
25
  * - **Row 0** names no object, the scene root never being a mesh: the hit is black.
35
26
  *
36
27
  * @type {CodeChunk}
37
28
  */
38
29
  export const chunk_probe_clipmap_hit_surface: CodeChunk;
39
- import { ShaderResourceDescriptor } from "../../../shader/resource/ShaderResourceDescriptor.js";
40
30
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
41
31
  //# sourceMappingURL=chunk_probe_clipmap_hit_surface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_probe_clipmap_hit_surface.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,iDAFU,MAAM,CAEsC;AAEtD;;;GAGG;AACH,2CAFU,wBAAwB,CAEsF;AAExH;;;GAGG;AACH,+CAFU,wBAAwB,CAE+F;AAEjI;;;;;;;;;;;;;;;;;;;GAmBG;AACH,8CAFU,SAAS,CAoDZ;yCA9FkC,sDAAsD;0BADrE,uCAAuC"}
1
+ {"version":3,"file":"chunk_probe_clipmap_hit_surface.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,iDAFU,MAAM,CAEsC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8CAFU,SAAS,CA0CZ;0BAvEmB,uCAAuC"}
@@ -1,16 +1,11 @@
1
1
  import { GPU_DATABASE_NULL } from "../../../buffer/table/GPU_DATABASE_NULL.js";
2
2
  import { chunk_mesh_card_surface } from "../../../geometry/sdf/cards/chunk_mesh_card_surface.js";
3
3
  import { MESH_CARD_ROWS_RESOURCE } from "../../../geometry/sdf/cards/MESH_CARD_RESOURCES.js";
4
- import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../../material/resident/INDIRECT_MATERIAL_ARRAY_TYPE.js";
5
4
  import { chunk_scene_database_access } from "../../../scene/chunk_scene_database_access.js";
6
5
  import { SCENE_DATABASE_RESOURCE } from "../../../scene/SCENE_DATABASE_RESOURCE.js";
7
6
  import { chunk_mat4_inverse } from "../../../shader/chunk/geometry/mat4/chunk_mat4_inverse.js";
8
7
  import { chunk_mat4_linear_determinant } from "../../../shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.js";
9
- import { chunk_albedo_unpremultiply } from "../../../shader/chunk/material/chunk_albedo_unpremultiply.js";
10
8
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
11
- import { ShaderResourceDescriptor } from "../../../shader/resource/ShaderResourceDescriptor.js";
12
- import { vec4f } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
13
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
14
9
 
15
10
  /**
16
11
  * The tolerance a card's depth is held to at a GI hit, in voxels of the hit's brick cascade: a hit is
@@ -20,18 +15,6 @@ import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
20
15
  */
21
16
  export const PROBE_HIT_SURFACE_TOLERANCE_VOXELS = 1.5;
22
17
 
23
- /**
24
- * The resident materials' table, as the ray passes read it: `materials[mesh.material]`.
25
- * @type {ShaderResourceDescriptor}
26
- */
27
- export const PROBE_HIT_MATERIALS_RESOURCE = ShaderResourceDescriptor.uniform("materials", INDIRECT_MATERIAL_ARRAY_TYPE);
28
-
29
- /**
30
- * Each resident texture slot's mean, `GPUResidentMaterialContext.buffer_texture_means`.
31
- * @type {ShaderResourceDescriptor}
32
- */
33
- export const PROBE_HIT_TEXTURE_MEANS_RESOURCE = ShaderResourceDescriptor.storageBuffer("texture_means", WebGPUArray.from(vec4f));
34
-
35
18
  /**
36
19
  * What a GI hit's surface is (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.6), its diffuse albedo and its
37
20
  * emissive, from the `meshes` row the hit is on:
@@ -44,10 +27,11 @@ export const PROBE_HIT_TEXTURE_MEANS_RESOURCE = ShaderResourceDescriptor.storage
44
27
  * the geometry's local space through its node, the normal by the transpose of the node's linear
45
28
  * part, and the tolerance {@link PROBE_HIT_SURFACE_TOLERANCE_VOXELS} voxels of the hit's cascade,
46
29
  * `voxel`, in local units by the transform's mean scale, the cube root of its determinant.
47
- * - **The material's mean**, where no card set is resident or no card sees the hit: the colour factor
48
- * × the albedo slot's mean colour × (1 − the metallic factor × the ORM slot's mean metalness), and the
49
- * emissive factor × the emissive slot's mean. What a card would have held, Lumen's diffuse colour,
50
- * from the means of what it is made of.
30
+ * - **Black**, where no card set is resident or no card sees the hit, as UE's Lumen leaves a hit no
31
+ * card covers: a surface whose albedo is not known brings back no light rather than light it may not
32
+ * have. The cost is energy, never invented energy: a material's colour factor is all of a flat one's
33
+ * albedo but only the bound of a textured one's, and in Sponza it made the bounce-lit gallery 60%
34
+ * brighter on screen (§6.6).
51
35
  * - **Row 0** names no object, the scene root never being a mesh: the hit is black.
52
36
  *
53
37
  * @type {CodeChunk}
@@ -67,11 +51,10 @@ fn probe_clipmap_hit_surface(row: u32, position: vec3<f32>, normal: vec3<f32>, v
67
51
  return out;
68
52
  }
69
53
 
70
- let mesh = scene_read_mesh(&scene_database, row);
71
54
  let card_set = mesh_card_rows[row];
72
55
 
73
56
  if (card_set != ${GPU_DATABASE_NULL}u) {
74
- let global = scene_read_node(&scene_database, mesh.node).global;
57
+ let global = scene_read_node(&scene_database, scene_read_mesh(&scene_database, row).node).global;
75
58
  let linear = mat3x3<f32>(global[0].xyz, global[1].xyz, global[2].xyz);
76
59
 
77
60
  let p = (mat4_inverse(global) * vec4<f32>(position, 1.0)).xyz;
@@ -83,28 +66,17 @@ fn probe_clipmap_hit_surface(row: u32, position: vec3<f32>, normal: vec3<f32>, v
83
66
  if (seen.found) {
84
67
  out.albedo = seen.albedo;
85
68
  out.emissive = seen.emissive;
86
-
87
- return out;
88
69
  }
89
70
  }
90
71
 
91
- let material = materials[mesh.material];
92
- let metalness = material.metallic_factor * texture_means[material.texture_orm].b;
93
-
94
- out.albedo = albedo_unpremultiply(texture_means[material.texture_albedo]) * material.color_albedo.rgb * (1.0 - metalness);
95
- out.emissive = texture_means[material.texture_emissive].rgb * material.emissive_factor;
96
-
97
72
  return out;
98
73
  }
99
74
  `, [
100
75
  chunk_scene_database_access,
101
76
  chunk_mat4_inverse,
102
77
  chunk_mat4_linear_determinant,
103
- chunk_albedo_unpremultiply,
104
78
  chunk_mesh_card_surface,
105
79
  ]);
106
80
 
107
81
  chunk_probe_clipmap_hit_surface.requireResource(SCENE_DATABASE_RESOURCE);
108
82
  chunk_probe_clipmap_hit_surface.requireResource(MESH_CARD_ROWS_RESOURCE);
109
- chunk_probe_clipmap_hit_surface.requireResource(PROBE_HIT_MATERIALS_RESOURCE);
110
- chunk_probe_clipmap_hit_surface.requireResource(PROBE_HIT_TEXTURE_MEANS_RESOURCE);
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_shade.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,yCAFU,aAAa,CAyDpB;8BAxH2B,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_shade.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js"],"names":[],"mappings":"AAqDA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,yCAFU,aAAa,CAyDpB;8BAlH2B,kCAAkC"}
@@ -19,11 +19,7 @@ import { ComputeShader } from "../../../shader/ComputeShader.js";
19
19
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
20
20
  import { BRICK_TRACE_HIT, BRICK_TRACE_MISS } from "../brick/BRICK_CLIPMAP.js";
21
21
  import { BRICK_LEVELS_RESOURCE } from "../brick/chunk_brick_clipmap_trace.js";
22
- import {
23
- chunk_probe_clipmap_hit_surface,
24
- PROBE_HIT_MATERIALS_RESOURCE,
25
- PROBE_HIT_TEXTURE_MEANS_RESOURCE
26
- } from "./chunk_probe_clipmap_hit_surface.js";
22
+ import { chunk_probe_clipmap_hit_surface } from "./chunk_probe_clipmap_hit_surface.js";
27
23
  import {
28
24
  chunk_probe_clipmap,
29
25
  chunk_probe_clipmap_ray_origin,
@@ -49,8 +45,6 @@ resources.createGroup()
49
45
  resources.createGroup()
50
46
  .add(SCENE_DATABASE_RESOURCE)
51
47
  .add(MESH_CARD_ROWS_RESOURCE)
52
- .add(PROBE_HIT_MATERIALS_RESOURCE)
53
- .add(PROBE_HIT_TEXTURE_MEANS_RESOURCE)
54
48
  .add(MESH_SDF_HEADERS_RESOURCE)
55
49
  .add(MESH_SDF_INDIRECTION_RESOURCE)
56
50
  .add(MESH_CARD_SETS_RESOURCE)
@@ -0,0 +1,14 @@
1
+ /**
2
+ * How many source texels, along one axis, the mip 0 reduction reads per HZB texel: the widest footprint
3
+ * any HZB texel of the dispatch has on that axis ({@link hzb_footprint_texels }). Narrower footprints in
4
+ * the same dispatch read their last texel again.
5
+ *
6
+ * Two when the axis halves exactly, three when mip 0 is padded past half the source, which the HZB's
7
+ * sizing caps at three ({@link HierarchicalZBuffersetViewportSize }).
8
+ */
9
+ export type HZBFootprint = number;
10
+ export namespace HZBFootprint {
11
+ let Two: number;
12
+ let Three: number;
13
+ }
14
+ //# sourceMappingURL=HZBFootprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HZBFootprint.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/HZBFootprint.js"],"names":[],"mappings":";;;;;;;;2BAQU,MAAM"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * How many source texels, along one axis, the mip 0 reduction reads per HZB texel: the widest footprint
3
+ * any HZB texel of the dispatch has on that axis ({@link hzb_footprint_texels}). Narrower footprints in
4
+ * the same dispatch read their last texel again.
5
+ *
6
+ * Two when the axis halves exactly, three when mip 0 is padded past half the source, which the HZB's
7
+ * sizing caps at three ({@link HierarchicalZBuffer#setViewportSize}).
8
+ *
9
+ * @enum {number}
10
+ */
11
+ export const HZBFootprint = {
12
+ /** Two texels: the source is exactly twice the HZB's mip 0 on this axis. */
13
+ Two: 0,
14
+ /** Three texels: the HZB's mip 0 is padded past half the source on this axis. */
15
+ Three: 1,
16
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The mip 0 reduction's footprint across x — decided by {@link chunk_hzb_footprint_x}.
3
+ *
4
+ * `HierarchicalZBuffer` sets it from the viewport and its mip 0 width, each time the viewport changes.
5
+ *
6
+ * @type {ShaderSwitch}
7
+ */
8
+ export const HZB_FOOTPRINT_X: ShaderSwitch;
9
+ import { ShaderSwitch } from "../shader/compiler/ShaderSwitch.js";
10
+ //# sourceMappingURL=HZB_FOOTPRINT_X.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HZB_FOOTPRINT_X.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/HZB_FOOTPRINT_X.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,8BAFU,YAAY,CAE4D;6BAVrD,oCAAoC"}
@@ -0,0 +1,11 @@
1
+ import { ShaderSwitch } from "../shader/compiler/ShaderSwitch.js";
2
+ import { HZBFootprint } from "./HZBFootprint.js";
3
+
4
+ /**
5
+ * The mip 0 reduction's footprint across x — decided by {@link chunk_hzb_footprint_x}.
6
+ *
7
+ * `HierarchicalZBuffer` sets it from the viewport and its mip 0 width, each time the viewport changes.
8
+ *
9
+ * @type {ShaderSwitch}
10
+ */
11
+ export const HZB_FOOTPRINT_X = ShaderSwitch.enum('hzb footprint x', HZBFootprint);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The mip 0 reduction's footprint across y — decided by {@link chunk_hzb_footprint_y}.
3
+ *
4
+ * `HierarchicalZBuffer` sets it from the viewport and its mip 0 height, each time the viewport changes.
5
+ *
6
+ * @type {ShaderSwitch}
7
+ */
8
+ export const HZB_FOOTPRINT_Y: ShaderSwitch;
9
+ import { ShaderSwitch } from "../shader/compiler/ShaderSwitch.js";
10
+ //# sourceMappingURL=HZB_FOOTPRINT_Y.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HZB_FOOTPRINT_Y.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,8BAFU,YAAY,CAE4D;6BAVrD,oCAAoC"}
@@ -0,0 +1,11 @@
1
+ import { ShaderSwitch } from "../shader/compiler/ShaderSwitch.js";
2
+ import { HZBFootprint } from "./HZBFootprint.js";
3
+
4
+ /**
5
+ * The mip 0 reduction's footprint across y — decided by {@link chunk_hzb_footprint_y}.
6
+ *
7
+ * `HierarchicalZBuffer` sets it from the viewport and its mip 0 height, each time the viewport changes.
8
+ *
9
+ * @type {ShaderSwitch}
10
+ */
11
+ export const HZB_FOOTPRINT_Y = ShaderSwitch.enum('hzb footprint y', HZBFootprint);
@@ -1,10 +1,3 @@
1
- /**
2
- * @typedef {import("../../device/pipeline/PipelineEnquiry.js").PipelineEnquiry} PipelineEnquiry
3
- * @typedef {import("../../device/ShadeGPUCommandContext.js").ShadeGPUCommandContext} ShadeGPUCommandContext
4
- * @typedef {import("../GraphicsContext.js").GraphicsContext} GraphicsContext
5
- * @typedef {import("../texture/GPUTextureContext.js").GPUTextureContext} GPUTextureContext
6
- * @typedef {import("./hzb_plan_reduction_steps.js").HZBReductionStep} HZBReductionStep
7
- */
8
1
  export class HierarchicalZBuffer {
9
2
  /**
10
3
  * Offer the pipelines {@link build} dispatches — see {@link PipelineEnquiry}.
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchicalZBuffer.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/HierarchicalZBuffer.js"],"names":[],"mappings":"AAaA;;;;;;GAMG;AAEH;IAkBI;;;;OAIG;IACH,iCAFW,eAAe,QAWzB;IAsBD;;;OAGG;IACH,sBAFW,eAAe,EAczB;IApCD;;;OAGG;IACH,2EAEC;IA8CD;;;;;OAKG;IACH,eAJW,sBAAsB,UACtB,iBAAiB,kBACjB,MAAM,EAAE,QA2HlB;IA6DD;;;;OAIG;IACH,mBAHW,MAAM,KACN,MAAM,QAkBhB;IA8BD,gBAEC;;CACJ;8BA/UY,OAAO,0CAA0C,EAAE,eAAe;qCAClE,OAAO,wCAAwC,EAAE,sBAAsB;8BACvE,OAAO,uBAAuB,EAAE,eAAe;gCAC/C,OAAO,iCAAiC,EAAE,iBAAiB;+BAC3D,OAAO,+BAA+B,EAAE,gBAAgB"}
1
+ {"version":3,"file":"HierarchicalZBuffer.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/HierarchicalZBuffer.js"],"names":[],"mappings":"AAqDA;IAgCI;;;;OAIG;IACH,iCAFW,eAAe,QAazB;IAsBD;;;OAGG;IACH,sBAFW,eAAe,EAczB;IApCD;;;OAGG;IACH,2EAEC;IA8CD;;;;;OAKG;IACH,eAJW,sBAAsB,UACtB,iBAAiB,kBACjB,MAAM,EAAE,QAoHlB;IA6DD;;;;OAIG;IACH,mBAHW,MAAM,KACN,MAAM,QAgChB;IA8BD,gBAEC;;CACJ;8BAjYY,OAAO,0CAA0C,EAAE,eAAe;qCAClE,OAAO,wCAAwC,EAAE,sBAAsB;8BACvE,OAAO,uBAAuB,EAAE,eAAe;gCAC/C,OAAO,iCAAiC,EAAE,iBAAiB;+BAC3D,OAAO,+BAA+B,EAAE,gBAAgB"}