@woosh/meep-engine 3.60.4 → 3.60.5

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 (379) hide show
  1. package/CHANGELOG.md +2602 -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.map +1 -1
  63. package/src/shade/renderer/Renderer.js +7 -5
  64. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts +40 -80
  65. package/src/shade/renderer/camera/orbital/OrbitalCameraController.d.ts.map +1 -1
  66. package/src/shade/renderer/camera/orbital/OrbitalCameraController.js +197 -147
  67. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  68. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  69. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  70. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  71. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  72. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +2 -2
  73. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +2 -2
  74. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +2 -1
  75. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +1 -1
  76. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +18 -1
  77. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts +31 -0
  78. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.d.ts.map +1 -0
  79. package/src/shade/renderer/geometry/virtual/proxy/vgeo_to_proxy_mesh.js +343 -0
  80. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts +17 -0
  81. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.d.ts.map +1 -0
  82. package/src/shade/renderer/geometry/virtual/runtime/vgeo_meshlet_metadata_write.js +29 -0
  83. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/virtual/runtime/vgeo_runtime_meshlet_batch.js +7 -13
  85. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  86. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +1 -8
  87. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +5 -5
  88. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  89. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +10 -10
  90. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +1 -4
  91. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  92. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +1 -10
  93. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +5 -15
  94. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +1 -1
  95. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +6 -34
  96. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  97. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +1 -7
  98. package/src/shade/renderer/hiz/HZBFootprint.d.ts +14 -0
  99. package/src/shade/renderer/hiz/HZBFootprint.d.ts.map +1 -0
  100. package/src/shade/renderer/hiz/HZBFootprint.js +16 -0
  101. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts +10 -0
  102. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.d.ts.map +1 -0
  103. package/src/shade/renderer/hiz/HZB_FOOTPRINT_X.js +11 -0
  104. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts +10 -0
  105. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.d.ts.map +1 -0
  106. package/src/shade/renderer/hiz/HZB_FOOTPRINT_Y.js +11 -0
  107. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts +0 -7
  108. package/src/shade/renderer/hiz/HierarchicalZBuffer.d.ts.map +1 -1
  109. package/src/shade/renderer/hiz/HierarchicalZBuffer.js +405 -350
  110. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts +12 -0
  111. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.d.ts.map +1 -0
  112. package/src/shade/renderer/hiz/chunk_hzb_footprint_x.js +27 -0
  113. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts +12 -0
  114. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.d.ts.map +1 -0
  115. package/src/shade/renderer/hiz/chunk_hzb_footprint_y.js +27 -0
  116. package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts +14 -0
  117. package/src/shade/renderer/hiz/hzb_footprint_texels.d.ts.map +1 -0
  118. package/src/shade/renderer/hiz/hzb_footprint_texels.js +34 -0
  119. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts +0 -5
  120. package/src/shade/renderer/hiz/shader_hzb_reduce_any.d.ts.map +1 -1
  121. package/src/shade/renderer/hiz/shader_hzb_reduce_any.js +37 -57
  122. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts +11 -0
  123. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0.d.ts.map +1 -0
  124. package/src/shade/renderer/hiz/{shader_hzb_reduce_mip0_clip.js → shader_hzb_reduce_mip0.js} +120 -111
  125. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  126. package/src/shade/renderer/material/GPUMaterialManager.d.ts +7 -0
  127. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  128. package/src/shade/renderer/material/GPUMaterialManager.js +11 -0
  129. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +12 -12
  130. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  131. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +17 -118
  132. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  133. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +7 -2
  134. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +0 -6
  135. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  136. package/src/shade/renderer/water/GPUWaterRenderer.js +12 -17
  137. package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts +35 -0
  138. package/src/shade/renderer/water/medium/graph_water_meshlets.d.ts.map +1 -0
  139. package/src/shade/renderer/water/medium/graph_water_meshlets.js +89 -0
  140. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  141. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  142. package/src/shade/renderer/water/shader_water.js +22 -13
  143. package/src/shade/renderer/water/shader_water_avboit.d.ts.map +1 -1
  144. package/src/shade/renderer/water/shader_water_avboit.js +7 -7
  145. package/src/shade/renderer/water/surface/graph_water_tessellation.d.ts +1 -1
  146. package/src/shade/renderer/water/surface/graph_water_tessellation.js +1 -1
  147. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +9 -1
  148. package/editor/REWORK_PLAN_2026_08.md +0 -692
  149. package/src/CODEC_LAYOUT_VERIFICATION.md +0 -419
  150. package/src/CORRECTNESS_HUNT_2026_07_24.md +0 -142
  151. package/src/DUPLICATION_AUDIT_2026_08_07/00_core_reuse_surface.md +0 -738
  152. package/src/DUPLICATION_AUDIT_2026_08_07/A_core_math_geom.md +0 -79
  153. package/src/DUPLICATION_AUDIT_2026_08_07/B_core_data.md +0 -93
  154. package/src/DUPLICATION_AUDIT_2026_08_07/C_gfx_render.md +0 -80
  155. package/src/DUPLICATION_AUDIT_2026_08_07/D_gfx_features.md +0 -164
  156. package/src/DUPLICATION_AUDIT_2026_08_07/E_physics.md +0 -69
  157. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +0 -110
  158. package/src/DUPLICATION_AUDIT_2026_08_07/G_net_save.md +0 -129
  159. package/src/DUPLICATION_AUDIT_2026_08_07/H_engine_misc.md +0 -72
  160. package/src/DUPLICATION_AUDIT_2026_08_07/I_generation_view.md +0 -74
  161. package/src/DUPLICATION_AUDIT_2026_08_07/K_crosscutting.md +0 -169
  162. package/src/DUPLICATION_AUDIT_2026_08_07.md +0 -254
  163. package/src/DUPLICATION_AUDIT_REMEDIATION.md +0 -250
  164. package/src/DUPLICATION_REVIEW_2026_10_24.md +0 -1072
  165. package/src/REVIEW_2026_08_06/adv-core.md +0 -511
  166. package/src/REVIEW_2026_08_06/adv-gfx.md +0 -480
  167. package/src/REVIEW_2026_08_06/adv-view.md +0 -446
  168. package/src/REVIEW_2026_08_06/api-core.md +0 -296
  169. package/src/REVIEW_2026_08_06/api-engine.md +0 -195
  170. package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +0 -507
  171. package/src/REVIEW_2026_08_06/core-binary.md +0 -348
  172. package/src/REVIEW_2026_08_06/core-collection.md +0 -376
  173. package/src/REVIEW_2026_08_06/core-math.md +0 -221
  174. package/src/REVIEW_2026_08_06/core-process.md +0 -266
  175. package/src/REVIEW_2026_08_06/core-science.md +0 -223
  176. package/src/REVIEW_2026_08_06/engine-ai-nav.md +0 -279
  177. package/src/REVIEW_2026_08_06/engine-animation.md +0 -167
  178. package/src/REVIEW_2026_08_06/engine-asset.md +0 -166
  179. package/src/REVIEW_2026_08_06/engine-ecs.md +0 -920
  180. package/src/REVIEW_2026_08_06/engine-input.md +0 -197
  181. package/src/REVIEW_2026_08_06/engine-misc.md +0 -248
  182. package/src/REVIEW_2026_08_06/engine-terrain.md +0 -52
  183. package/src/REVIEW_2026_08_06/generation.md +0 -176
  184. package/src/REVIEW_2026_08_06/geom-2d.md +0 -434
  185. package/src/REVIEW_2026_08_06/geom-3d.md +0 -117
  186. package/src/REVIEW_2026_08_06/gfx-gi.md +0 -143
  187. package/src/REVIEW_2026_08_06/gfx-render.md +0 -740
  188. package/src/REVIEW_2026_08_06/gfx-texture.md +0 -690
  189. package/src/REVIEW_2026_08_06/prior-criticals.md +0 -49
  190. package/src/REVIEW_2026_08_06/prior-highs.md +0 -138
  191. package/src/REVIEW_2026_08_06/test-gaps.md +0 -364
  192. package/src/REVIEW_2026_08_06/view.md +0 -667
  193. package/src/REVIEW_2026_08_06.md +0 -610
  194. package/src/core/binary/lz4/LZ4_HIGH_COMPRESSION_PLAN_2026_09_14.md +0 -542
  195. package/src/core/bvh2/bvh3/NOTES.md +0 -2
  196. package/src/core/bvh8/NOTES.md +0 -63
  197. package/src/core/cache/wtinylfu/benchmark/CacheWTinylfu.bench.md +0 -243
  198. package/src/core/color/COLOR_FIX_PLAN_2026_08_28.md +0 -417
  199. package/src/core/color/COLOR_REVIEW_2026_08_28.md +0 -779
  200. package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +0 -433
  201. package/src/core/geom/3d/atlas/ATLAS_PORT_PLAN.md +0 -486
  202. package/src/core/geom/3d/atlas/BFF_PLAN.md +0 -174
  203. package/src/core/geom/3d/atlas/REVIEW_02.md +0 -392
  204. package/src/core/geom/3d/gjk/GJK_REVIEW_NOTES.md +0 -146
  205. package/src/core/geom/3d/gjk/NOTES.md +0 -8
  206. package/src/core/geom/3d/topology/TOPO_MESH_RETIREMENT_PLAN.md +0 -135
  207. package/src/core/geom/GEOMETRY_REVIEW_002_API_ISSUES.md +0 -381
  208. package/src/core/geom/GEOMETRY_REVIEW_002_NAMING.md +0 -684
  209. package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +0 -554
  210. package/src/core/model/reactive/evaluation/PREDICATE_APPLICABILITY_PROPOSAL.md +0 -446
  211. package/src/engine/REVIEW_2026_07_03.md +0 -211
  212. package/src/engine/asset/loaders/image/IMAGE_CODEC_REVIEW_2026_08_28.md +0 -815
  213. package/src/engine/control/first-person/DESIGN.md +0 -658
  214. package/src/engine/control/first-person/DESIGN_COLLISION.md +0 -382
  215. package/src/engine/control/first-person/DESIGN_EXTENSIONS.md +0 -563
  216. package/src/engine/control/first-person/TODO.md +0 -160
  217. package/src/engine/ecs/ASYNC_SYSTEMS_PROPOSAL.md +0 -531
  218. package/src/engine/ecs/HIERARCHY_REVIEW.md +0 -717
  219. package/src/engine/ecs/async/WORKER_SYSTEM_PLAN.md +0 -262
  220. package/src/engine/ecs/ik/PLAN.md +0 -179
  221. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +0 -272
  222. package/src/engine/ecs/storage/binary/object-v2/DESIGN.md +0 -199
  223. package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +0 -521
  224. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +0 -463
  225. package/src/engine/graphics/ecs/camera/pp/NOTES.md +0 -48
  226. package/src/engine/graphics/render/frame_graph/CORRECTNESS_FIXES_2026_09_04.md +0 -659
  227. package/src/engine/graphics/render/frame_graph/FRAME_GRAPH_RECOMMENDATIONS.md +0 -235
  228. package/src/engine/graphics/sh3/path_tracer/REVIEW_001_ACTION_PLAN.md +0 -490
  229. package/src/engine/graphics/texture/sampler/compare/FLIP_IMPLEMENTATION_PLAN.md +0 -466
  230. package/src/engine/input/GAMEPAD_API_PROPOSAL.md +0 -717
  231. package/src/engine/input/ecs/ism/ISM_DESIGN.md +0 -1523
  232. package/src/engine/input/ecs/ism/ISM_IMPLEMENTATION_PLAN.md +0 -627
  233. package/src/engine/navigation/mesh/OVERLAPPING_SURFACES_2026_08_25.md +0 -661
  234. package/src/engine/navigation/mesh/PATHFINDING_PLAN.md +0 -229
  235. package/src/engine/network/CONGESTION_CONTROL.md +0 -87
  236. package/src/engine/network/MESSAGE_TRANSPORT.md +0 -364
  237. package/src/engine/network/SMOOTHNESS_DESIGN.md +0 -400
  238. package/src/engine/physics/cloth/MEASUREMENTS.md +0 -5304
  239. package/src/engine/physics/cloth/PLAN.md +0 -3056
  240. package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +0 -1382
  241. package/src/engine/physics/fluid/REVIEW_02_PLAN.md +0 -243
  242. package/src/engine/physics/fluid/solver/NOTES.md +0 -46
  243. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +0 -536
  244. package/src/engine/sound/simulation/IMPLEMENTATION_PLAN.md +0 -432
  245. package/src/engine/sound/simulation/PROBE_PLACEMENT.md +0 -250
  246. package/src/engine/sound/simulation/PROBE_TRANSFER_RESEARCH.md +0 -322
  247. package/src/engine/sound/simulation/REFLECTION_IR_PLAN.md +0 -261
  248. package/src/engine/sound/simulation/VISIBILITY_GRAPH_PLAN.md +0 -121
  249. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +0 -999
  250. package/src/format/image/avif/DECISIONS.md +0 -545
  251. package/src/format/image/jpeg/NOTES.md +0 -3
  252. package/src/format/scene/gltf/MESHOPT_COMPRESSION_PLAN.md +0 -814
  253. package/src/generation/COORDINATES.md +0 -54
  254. package/src/generation/REVIEW_01_ACTION_PLAN.md +0 -628
  255. package/src/generation/foliage/ANNUAL_SHOOTS_BRIEF_2026_10_25.md +0 -220
  256. package/src/generation/foliage/CROWN_FILLING_BRIEF_2026_10_26.md +0 -172
  257. package/src/generation/foliage/CROWN_FULLNESS_BRIEF_2026_10_26.md +0 -86
  258. package/src/generation/foliage/FOLIAGE_DESIGN.md +0 -547
  259. package/src/generation/foliage/FOLIAGE_PLAN.md +0 -198
  260. package/src/generation/foliage/LEAF_ARCHITECTURE_BRIEF_2026_10_26.md +0 -158
  261. package/src/generation/foliage/LOD_REWORK_BRIEF_2026_10_27.md +0 -521
  262. package/src/generation/foliage/REAL_TIME_TREES_BRIEF_2026_10_27.md +0 -86
  263. package/src/generation/foliage/SELF_ORGANIZING_FRAMEWORK_BRIEF_2026_10_26.md +0 -347
  264. package/src/generation/foliage/SHOOT_SYSTEMS_ALL_SPECIES_BRIEF_2026_10_26.md +0 -248
  265. package/src/generation/foliage/SPEEDTREE_COMPARISON_2026_10_24.md +0 -694
  266. package/src/generation/foliage/TWO_FRONT_ENDS_BRIEF_2026_10_28.md +0 -552
  267. package/src/shade/RENDERER_CONTRACT.md +0 -697
  268. package/src/shade/SHADER_F16_PROPOSAL_2026_10_24.md +0 -263
  269. package/src/shade/device/IMMEDIATE_DATA_PLAN_2026_08_28.md +0 -569
  270. package/src/shade/device/PASS_ENCODER_PROPOSAL_2026_08_31.md +0 -755
  271. package/src/shade/device/mock/EXTENSION_PROPOSAL_2026_08_22.md +0 -458
  272. package/src/shade/device/mock/IMPLEMENTATION_PLAN.md +0 -255
  273. package/src/shade/device/mock/REVIEW_2026_08_22.md +0 -527
  274. package/src/shade/device/timing/GPU_PROFILER_PROPOSAL_2026_08_28.md +0 -894
  275. package/src/shade/device/timing/profile/SGPT_FORMAT.md +0 -345
  276. package/src/shade/renderer/NOTES.md +0 -78
  277. package/src/shade/renderer/PLAN.md +0 -8
  278. package/src/shade/renderer/animation/ADDITIVE_BLENDING_PLAN.md +0 -145
  279. package/src/shade/renderer/animation/SKINNING_FRAME_PLAN.md +0 -357
  280. package/src/shade/renderer/atmosphere/NOTES.md +0 -6
  281. package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts +0 -76
  282. package/src/shade/renderer/camera/orbital/MomentumAxis.d.ts.map +0 -1
  283. package/src/shade/renderer/camera/orbital/MomentumAxis.js +0 -164
  284. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts +0 -45
  285. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.d.ts.map +0 -1
  286. package/src/shade/renderer/camera/orbital/OrbitalCameraConfig.js +0 -66
  287. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts +0 -98
  288. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.d.ts.map +0 -1
  289. package/src/shade/renderer/camera/orbital/OrbitalCameraInput.js +0 -184
  290. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts +0 -175
  291. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.d.ts.map +0 -1
  292. package/src/shade/renderer/camera/orbital/OrbitalCameraRig.js +0 -411
  293. package/src/shade/renderer/camera/orbital/README.md +0 -81
  294. package/src/shade/renderer/camera/orbital/index.d.ts +0 -6
  295. package/src/shade/renderer/camera/orbital/index.d.ts.map +0 -1
  296. package/src/shade/renderer/camera/orbital/index.js +0 -9
  297. package/src/shade/renderer/extension/RENDER_EXTENSION_DESIGN.md +0 -964
  298. package/src/shade/renderer/fluid/GPU_FLUID_OCCUPANCY_AND_SOTA_REVIEW_2026_10_26.md +0 -361
  299. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +0 -619
  300. package/src/shade/renderer/geometry/meshlet/COMPACTION_PLAN_2026_09_16.md +0 -674
  301. package/src/shade/renderer/geometry/sdf/NOTES.md +0 -6
  302. package/src/shade/renderer/geometry/virtual/ATTRIBUTE_PLAN_2026_09_18.md +0 -540
  303. package/src/shade/renderer/geometry/virtual/MICRON_COMPARISON_2026_08_20.md +0 -305
  304. package/src/shade/renderer/geometry/virtual/VGEO_FORMAT.md +0 -913
  305. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_DESIGN.md +0 -787
  306. package/src/shade/renderer/geometry/virtual/VIRTUAL_GEOMETRY_PLAN.md +0 -481
  307. package/src/shade/renderer/geometry/virtual/VK_LOD_CLUSTERS_COMPARISON_2026_08_20.md +0 -301
  308. package/src/shade/renderer/geometry/virtual/WEDGE_PLAN_2026_09_18.md +0 -448
  309. package/src/shade/renderer/geometry/virtual/runtime/CULL_PLAN_2026_09_16.md +0 -385
  310. package/src/shade/renderer/geometry/virtual/runtime/CUT_PLAN_2026_09_14.md +0 -656
  311. package/src/shade/renderer/geometry/virtual/runtime/REVIEW_LEDGER.md +0 -308
  312. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN.md +0 -657
  313. package/src/shade/renderer/geometry/virtual/runtime/RUNTIME_PLAN_2026_09_14.md +0 -551
  314. package/src/shade/renderer/geometry/virtual/runtime/SHADOW_PLAN_2026_09_28.md +0 -529
  315. package/src/shade/renderer/global_illumination/lpv/NOTES.md +0 -3
  316. package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_CLIPMAP_PROPOSAL_2026_10_27.md +0 -4306
  317. package/src/shade/renderer/global_illumination/probe_clipmap/PROBE_RAYS_VARIABLE_AND_SORTED_SCOPE_2026_10_30.md +0 -410
  318. package/src/shade/renderer/global_illumination/sharc/NOTES.md +0 -8
  319. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +0 -1369
  320. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +0 -202
  321. package/src/shade/renderer/gpu_primitive/indirect/NOTES.md +0 -94
  322. package/src/shade/renderer/hiz/NOTES.md +0 -3
  323. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts +0 -8
  324. package/src/shade/renderer/hiz/shader_hzb_reduce_mip0_clip.d.ts.map +0 -1
  325. package/src/shade/renderer/light/cluster/NOTES.md +0 -11
  326. package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +0 -524
  327. package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +0 -1101
  328. package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts +0 -24
  329. package/src/shade/renderer/material/resident/shader_resident_texture_means.d.ts.map +0 -1
  330. package/src/shade/renderer/material/resident/shader_resident_texture_means.js +0 -120
  331. package/src/shade/renderer/particles/DESIGN.md +0 -1011
  332. package/src/shade/renderer/particles/EMITTER_GLOBAL_STATE_PLAN_2026_10_29.md +0 -280
  333. package/src/shade/renderer/particles/ORIENTATION_PLAN_2026_10_15.md +0 -453
  334. package/src/shade/renderer/path_tracer/PATH_TRACED_MEDIA_PLAN_2026_10_02.md +0 -520
  335. package/src/shade/renderer/postprocess/bloom/NOTES.md +0 -6
  336. package/src/shade/renderer/postprocess/fsr/NOTES.md +0 -4
  337. package/src/shade/renderer/postprocess/gtao/NOTES.md +0 -6
  338. package/src/shade/renderer/postprocess/nss/NOTES.md +0 -332
  339. package/src/shade/renderer/postprocess/perspective/NOTES.md +0 -3
  340. package/src/shade/renderer/postprocess/sscs/NOTES.md +0 -5
  341. package/src/shade/renderer/postprocess/ssr/NOTES.md +0 -14
  342. package/src/shade/renderer/postprocess/ssr/REPROJECTION_PROPOSAL.md +0 -286
  343. package/src/shade/renderer/postprocess/ssr/prefilter/NOTES.md +0 -39
  344. package/src/shade/renderer/postprocess/taa/NOTES.md +0 -11
  345. package/src/shade/renderer/postprocess/upscale-dither/NOTES.md +0 -78
  346. package/src/shade/renderer/postprocess/vrs/NOTES.md +0 -4
  347. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_LEDGER.md +0 -1218
  348. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_PLAN_2026_09_03.md +0 -600
  349. package/src/shade/renderer/restir/reservoir/NOTES.md +0 -6
  350. package/src/shade/renderer/shader/chunk/atmosphere/NOTES.md +0 -6
  351. package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +0 -391
  352. package/src/shade/renderer/shader/chunk/color/tonemap/ACES_TONE_MAPPING_BRIEF_2026_10_17.md +0 -153
  353. package/src/shade/renderer/shader/chunk/color/tonemap/HDR_TONE_MAPPING_FORMS_BRIEF_2026_10_16.md +0 -322
  354. package/src/shade/renderer/shader/chunk/color/tonemap/SDR_TONE_MAPPING_BRIEF_2026_10_16.md +0 -247
  355. package/src/shade/renderer/shader/chunk/fsr/NOTES.md +0 -3
  356. package/src/shade/renderer/shader/chunk/fsr/spd/NOTES.md +0 -4
  357. package/src/shade/renderer/shader/chunk/geometry/ray/NOTES.md +0 -4
  358. package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +0 -159
  359. package/src/shade/renderer/shader/chunk/mboit/NOTES.md +0 -38
  360. package/src/shade/renderer/shader/chunk/spherical_harmonics/l1i/NOTES.md +0 -3
  361. package/src/shade/renderer/shader/chunk/spherical_harmonics/sampling/NOTES.md +0 -8
  362. package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +0 -927
  363. package/src/shade/renderer/shadow/contact/FINDINGS.md +0 -413
  364. package/src/shade/renderer/shadow/map/csm/NOTES.md +0 -5
  365. package/src/shade/renderer/shadow/ray/NOTES.md +0 -31
  366. package/src/shade/renderer/shadow/sdf/NOTES.md +0 -9
  367. package/src/shade/renderer/shadow/sdf/brixelizer/NOTES.md +0 -5
  368. package/src/shade/renderer/shadow/sdf/cascade/NOTES.md +0 -9
  369. package/src/shade/renderer/shadow/vsm/NOTES.md +0 -12
  370. package/src/shade/renderer/shadow/vsm/PLAN.md +0 -442
  371. package/src/shade/renderer/shadow/vsm/REVIEW_LEDGER.md +0 -43
  372. package/src/shade/renderer/texture/COMPRESSED_TEXTURE_PLAN_2026_09_01.md +0 -2444
  373. package/src/shade/renderer/texture/mipmaps/NOTES.md +0 -3
  374. package/src/shade/renderer/volumetrics/NOTES.md +0 -1329
  375. package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +0 -336
  376. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts +0 -23
  377. package/src/shade/renderer/water/medium/GPUWaterBodies.d.ts.map +0 -1
  378. package/src/shade/renderer/water/medium/GPUWaterBodies.js +0 -75
  379. package/src/shade/wgsl/NOTES.md +0 -4
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The mip 0 reduction's footprint across x, in source texels, by {@link HZB_FOOTPRINT_X}:
3
+ *
4
+ * ```wgsl
5
+ * const HZB_FOOTPRINT_X: i32
6
+ * ```
7
+ *
8
+ * @type {CodeChunkChoice}
9
+ */
10
+ export const chunk_hzb_footprint_x: CodeChunkChoice;
11
+ import { CodeChunkChoice } from "../shader/compiler/CodeChunkChoice.js";
12
+ //# sourceMappingURL=chunk_hzb_footprint_x.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_hzb_footprint_x.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/chunk_hzb_footprint_x.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,oCAFU,eAAe,CAEkD;gCAb3C,uCAAuC"}
@@ -0,0 +1,27 @@
1
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
2
+ import { CodeChunkChoice } from "../shader/compiler/CodeChunkChoice.js";
3
+ import { HZB_FOOTPRINT_X } from "./HZB_FOOTPRINT_X.js";
4
+ import { HZBFootprint } from "./HZBFootprint.js";
5
+
6
+ /**
7
+ * The mip 0 reduction's footprint across x, in source texels, by {@link HZB_FOOTPRINT_X}:
8
+ *
9
+ * ```wgsl
10
+ * const HZB_FOOTPRINT_X: i32
11
+ * ```
12
+ *
13
+ * @type {CodeChunkChoice}
14
+ */
15
+ export const chunk_hzb_footprint_x = CodeChunkChoice.from(HZB_FOOTPRINT_X);
16
+
17
+ chunk_hzb_footprint_x.add(HZBFootprint.Two, CodeChunk.from(
18
+ //language=WGSL
19
+ `
20
+ const HZB_FOOTPRINT_X: i32 = 2;
21
+ `));
22
+
23
+ chunk_hzb_footprint_x.add(HZBFootprint.Three, CodeChunk.from(
24
+ //language=WGSL
25
+ `
26
+ const HZB_FOOTPRINT_X: i32 = 3;
27
+ `));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The mip 0 reduction's footprint across y, in source texels, by {@link HZB_FOOTPRINT_Y}:
3
+ *
4
+ * ```wgsl
5
+ * const HZB_FOOTPRINT_Y: i32
6
+ * ```
7
+ *
8
+ * @type {CodeChunkChoice}
9
+ */
10
+ export const chunk_hzb_footprint_y: CodeChunkChoice;
11
+ import { CodeChunkChoice } from "../shader/compiler/CodeChunkChoice.js";
12
+ //# sourceMappingURL=chunk_hzb_footprint_y.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_hzb_footprint_y.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/chunk_hzb_footprint_y.js"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,oCAFU,eAAe,CAEkD;gCAb3C,uCAAuC"}
@@ -0,0 +1,27 @@
1
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
2
+ import { CodeChunkChoice } from "../shader/compiler/CodeChunkChoice.js";
3
+ import { HZB_FOOTPRINT_Y } from "./HZB_FOOTPRINT_Y.js";
4
+ import { HZBFootprint } from "./HZBFootprint.js";
5
+
6
+ /**
7
+ * The mip 0 reduction's footprint across y, in source texels, by {@link HZB_FOOTPRINT_Y}:
8
+ *
9
+ * ```wgsl
10
+ * const HZB_FOOTPRINT_Y: i32
11
+ * ```
12
+ *
13
+ * @type {CodeChunkChoice}
14
+ */
15
+ export const chunk_hzb_footprint_y = CodeChunkChoice.from(HZB_FOOTPRINT_Y);
16
+
17
+ chunk_hzb_footprint_y.add(HZBFootprint.Two, CodeChunk.from(
18
+ //language=WGSL
19
+ `
20
+ const HZB_FOOTPRINT_Y: i32 = 2;
21
+ `));
22
+
23
+ chunk_hzb_footprint_y.add(HZBFootprint.Three, CodeChunk.from(
24
+ //language=WGSL
25
+ `
26
+ const HZB_FOOTPRINT_Y: i32 = 3;
27
+ `));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The widest footprint, in source texels along one axis, of any HZB texel when `output_size` texels cover
3
+ * `source_size`: HZB texel `i` covers `[i·s/o, (i+1)·s/o)` and reduces every source texel that span
4
+ * touches, clipped to the source.
5
+ *
6
+ * An upper bound on the footprints {@link shader_hzb_reduce_mip0} reads, whose bounds are this span
7
+ * nudged inward by a float epsilon.
8
+ *
9
+ * @param {number} source_size source texels on the axis
10
+ * @param {number} output_size HZB mip 0 texels on the axis
11
+ * @returns {number}
12
+ */
13
+ export function hzb_footprint_texels(source_size: number, output_size: number): number;
14
+ //# sourceMappingURL=hzb_footprint_texels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hzb_footprint_texels.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/hzb_footprint_texels.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,kDAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAqBlB"}
@@ -0,0 +1,34 @@
1
+ import { assert } from "../../../core/assert.js";
2
+
3
+ /**
4
+ * The widest footprint, in source texels along one axis, of any HZB texel when `output_size` texels cover
5
+ * `source_size`: HZB texel `i` covers `[i·s/o, (i+1)·s/o)` and reduces every source texel that span
6
+ * touches, clipped to the source.
7
+ *
8
+ * An upper bound on the footprints {@link shader_hzb_reduce_mip0} reads, whose bounds are this span
9
+ * nudged inward by a float epsilon.
10
+ *
11
+ * @param {number} source_size source texels on the axis
12
+ * @param {number} output_size HZB mip 0 texels on the axis
13
+ * @returns {number}
14
+ */
15
+ export function hzb_footprint_texels(source_size, output_size) {
16
+ assert.isNonNegativeInteger(source_size, 'source_size');
17
+ assert.isNonNegativeInteger(output_size, 'output_size');
18
+ assert.greaterThan(output_size, 0, 'output_size');
19
+
20
+ let widest = 0;
21
+
22
+ for (let i = 0; i < output_size; i++) {
23
+ const first = Math.floor(i * source_size / output_size);
24
+ const end = Math.min(Math.ceil((i + 1) * source_size / output_size), source_size);
25
+
26
+ const width = end - first;
27
+
28
+ if (width > widest) {
29
+ widest = width;
30
+ }
31
+ }
32
+
33
+ return widest;
34
+ }
@@ -1,8 +1,3 @@
1
- /**
2
- * Initial reduction pass, works with non-power-of-two resolutions as input
3
- * @type {ComputeShader}
4
- */
5
- export const shader_hzb_reduce_mip0: ComputeShader;
6
1
  /**
7
2
  * Mip1+ reduction pass, works with non-power-of-two resolutions as input
8
3
  * @type {ComputeShader}
@@ -1 +1 @@
1
- {"version":3,"file":"shader_hzb_reduce_any.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_any.js"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,qCAFU,aAAa,CAepB;AAGH;;;GAGG;AACH,oCAFU,aAAa,CAcpB;8BAvD2B,4BAA4B"}
1
+ {"version":3,"file":"shader_hzb_reduce_any.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_any.js"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,oCAFU,aAAa,CAcpB;8BAnC2B,4BAA4B"}
@@ -1,57 +1,37 @@
1
- import { vec2f, vec2u } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
- import { ComputeShader } from "../shader/ComputeShader.js";
3
- import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
4
- import { generate_downsampler_code } from "./generate_downsampler_code.js";
5
-
6
- import { HZB_TEXTURE_FORMAT } from "./HZB_TEXTURE_FORMAT.js";
7
-
8
- const resources = new ShaderResourceSetDescriptor();
9
-
10
- // per-pass, eight bytes, read-only: immediate data rather than a uniform buffer. The reduction
11
- // walks the mip chain a pass at a time and every pass wants a different resolution, which used to
12
- // mean a persistent table of them bound at a per-mip dynamic offset.
13
- resources.setImmediate("output_resolution", vec2u);
14
-
15
- resources.createGroup()
16
- .addTexture("tInput", "unfilterable-float")
17
- .addStorageTexture("tOutput", HZB_TEXTURE_FORMAT, "2d", "write-only")
18
- ;
19
-
20
-
21
- /**
22
- * Initial reduction pass, works with non-power-of-two resolutions as input
23
- * @type {ComputeShader}
24
- */
25
- export const shader_hzb_reduce_mip0 = ComputeShader.from({
26
- label: 'HZB / reduce mip0',
27
- // NOTE: we reduce from depth, so texel read happens from the .R (X) channel for both min and max.
28
- body: generate_downsampler_code({
29
- type: vec2f,
30
- initial_value: 'vec2( 1.0, 0.0 )',
31
- //language=WGSL
32
- reduction_code: `
33
- output.x = min(texel.x, output.x);
34
- output.y = max(texel.x, output.y);
35
- `,
36
- }),
37
- resources,
38
- });
39
-
40
-
41
- /**
42
- * Mip1+ reduction pass, works with non-power-of-two resolutions as input
43
- * @type {ComputeShader}
44
- */
45
- export const shader_hzb_reduce_any = ComputeShader.from({
46
- label: 'HZB / reduce any resolution',
47
- body: generate_downsampler_code({
48
- type: vec2f,
49
- initial_value: 'vec2( 1.0, 0.0 )',
50
- //language=WGSL
51
- reduction_code: `
52
- output.x = min(texel.x, output.x);
53
- output.y = max(texel.y, output.y);
54
- `,
55
- }),
56
- resources,
57
- });
1
+ import { vec2f, vec2u } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { ComputeShader } from "../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { generate_downsampler_code } from "./generate_downsampler_code.js";
5
+
6
+ import { HZB_TEXTURE_FORMAT } from "./HZB_TEXTURE_FORMAT.js";
7
+
8
+ const resources = new ShaderResourceSetDescriptor();
9
+
10
+ // per-pass, eight bytes, read-only: immediate data rather than a uniform buffer. The reduction
11
+ // walks the mip chain a pass at a time and every pass wants a different resolution, which used to
12
+ // mean a persistent table of them bound at a per-mip dynamic offset.
13
+ resources.setImmediate("output_resolution", vec2u);
14
+
15
+ resources.createGroup()
16
+ .addTexture("tInput", "unfilterable-float")
17
+ .addStorageTexture("tOutput", HZB_TEXTURE_FORMAT, "2d", "write-only")
18
+ ;
19
+
20
+
21
+ /**
22
+ * Mip1+ reduction pass, works with non-power-of-two resolutions as input
23
+ * @type {ComputeShader}
24
+ */
25
+ export const shader_hzb_reduce_any = ComputeShader.from({
26
+ label: 'HZB / reduce any resolution',
27
+ body: generate_downsampler_code({
28
+ type: vec2f,
29
+ initial_value: 'vec2( 1.0, 0.0 )',
30
+ //language=WGSL
31
+ reduction_code: `
32
+ output.x = min(texel.x, output.x);
33
+ output.y = max(texel.y, output.y);
34
+ `,
35
+ }),
36
+ resources,
37
+ });
@@ -0,0 +1,11 @@
1
+ /**
2
+ * First reduction: depth of a region of the source (`settings.clip_region`) into the HZB's mip 0, min in
3
+ * R and max in G. The region is the whole viewport for a camera, and a slot of the atlas for a shadow
4
+ * map. Each HZB texel reduces every source texel its area overlaps, a footprint of
5
+ * {@link HZB_FOOTPRINT_X} by {@link HZB_FOOTPRINT_Y} texels at most.
6
+ *
7
+ * @type {ComputeShader}
8
+ */
9
+ export const shader_hzb_reduce_mip0: ComputeShader;
10
+ import { ComputeShader } from "../shader/ComputeShader.js";
11
+ //# sourceMappingURL=shader_hzb_reduce_mip0.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_hzb_reduce_mip0.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/hiz/shader_hzb_reduce_mip0.js"],"names":[],"mappings":"AA2GA;;;;;;;GAOG;AACH,qCAFU,aAAa,CAMpB;8BApH2B,4BAA4B"}
@@ -1,111 +1,120 @@
1
- import { vec2u, vec4u } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
- import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
3
- import { CodeChunk } from "../shader/compiler/CodeChunk.js";
4
- import { ComputeShader } from "../shader/ComputeShader.js";
5
- import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
6
- import { HZB_TEXTURE_FORMAT } from "./HZB_TEXTURE_FORMAT.js";
7
-
8
- /**
9
- * Per-pass, 24 bytes, read-only.
10
- *
11
- * `clip_region` and `output_resolution` were two uniforms, so two buffers per pass. WGSL allows one
12
- * immediate per entry point, so carrying them as immediate data means carrying them together.
13
- *
14
- * @type {WebGPUStruct}
15
- */
16
- const HZB_CLIP_SETTINGS = WebGPUStruct.from({
17
- // x, y, width, height
18
- clip_region: vec4u,
19
- output_resolution: vec2u,
20
- }, 'HzbClipSettings');
21
-
22
- const resources = new ShaderResourceSetDescriptor();
23
-
24
- resources.setImmediate("settings", HZB_CLIP_SETTINGS);
25
-
26
- resources.createGroup()
27
- .addTexture("tInput", "unfilterable-float")
28
- .addStorageTexture("tOutput", HZB_TEXTURE_FORMAT, "2d", "write-only")
29
- ;
30
-
31
- const body = CodeChunk.from(
32
- //language=WGSL
33
- `
34
- @compute @workgroup_size(16, 16)
35
- fn main(
36
- @builtin(global_invocation_id) global_id: vec3<u32>,
37
- ) {
38
- if (any(global_id.xy >= settings.output_resolution)) {
39
- return;
40
- }
41
-
42
- // 1. Calculate the UV bounds of the current *output* pixel.
43
- // We use the output resolution to determine how wide one pixel is in UV space.
44
- let output_resolution_f = vec2<f32>(settings.output_resolution);
45
- let uv = (vec2<f32>(global_id.xy) + 0.5) / output_resolution_f;
46
- let output_pixel_size2 = 0.5 / output_resolution_f;
47
- let uv_min = uv - output_pixel_size2;
48
- let uv_max = uv + output_pixel_size2;
49
-
50
- // minor epsilon to avoid float rounding errors
51
- const EPSILON = 1e-6;
52
-
53
- // Nudge the bounds slightly inward to absorb floating-point drift
54
- let safe_uv_min = uv_min + EPSILON;
55
- let safe_uv_max = uv_max - EPSILON;
56
-
57
- // 2. Convert UV bounds to Source Texel coordinates (float).
58
- // We map the 0..1 UVs to the size of the source clip region.
59
- let source_size = vec2<f32>(settings.clip_region.zw);
60
- let texel_min_f = safe_uv_min * source_size;
61
- let texel_max_f = safe_uv_max * source_size;
62
-
63
- // 3. Convert to Integer Loop Bounds.
64
- // Floor the min to find the first pixel.
65
- // Ceil the max to find the exclusive upper bound.
66
- // Example (5px -> 2px):
67
- // Output Px 0 covers UV 0.0-0.5 -> Source 0.0 to 2.5
68
- // Floor(0.0) = 0. Ceil(2.5) = 3. Loop 0, 1, 2. (Pixel 2 is partially covered)
69
- // Output Px 1 covers UV 0.5-1.0 -> Source 2.5 to 5.0
70
- // Floor(2.5) = 2. Ceil(5.0) = 5. Loop 2, 3, 4. (Pixel 2 is partially covered again)
71
- let bound_min = vec2<i32>(floor(texel_min_f));
72
- let bound_max = vec2<i32>(ceil(texel_max_f));
73
-
74
- // 4. Clamp bounds to the clip region size to be safe.
75
- let limit = vec2<i32>(settings.clip_region.zw);
76
-
77
- let start = max(bound_min, vec2<i32>(0)) + vec2<i32>(settings.clip_region.xy);
78
- let end = min(bound_max, limit) + vec2<i32>(settings.clip_region.xy);
79
-
80
- var output = vec2<f32>(1.0, 0.0); // Initialize min/max
81
-
82
- // 5. Loop. Note strict usage of < end (exclusive) and i32 types.
83
- for (var y = start.y; y < end.y; y++) {
84
- for (var x = start.x; x < end.x; x++) {
85
-
86
- // Add the clip region offset (atlas support)
87
- let load_coord = vec2<i32>(x, y);
88
-
89
- let v = textureLoad(tInput, load_coord, 0).r;
90
-
91
- output.x = min(output.x, v);
92
- output.y = max(output.y, v);
93
- }
94
- }
95
-
96
- textureStore(tOutput, vec2<i32>(global_id.xy), vec4<f32>(output, 0.0, 0.0));
97
- }
98
- `, [
99
- ]
100
- )
101
-
102
- /**
103
- * Same as standard first mip reduction, but with a clipping region.
104
- * Primarily used for shadow maps where shadows are atlased into a single texture
105
- * @type {ComputeShader}
106
- */
107
- export const shader_hzb_reduce_mip0_clip = ComputeShader.from({
108
- label: 'HZB / reduce mip0 with clip',
109
- resources,
110
- body,
111
- });
1
+ import { vec2u, vec4u } from "../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { WebGPUStruct } from "../shader/type/WebGPUStruct.js";
3
+ import { CodeChunk } from "../shader/compiler/CodeChunk.js";
4
+ import { ComputeShader } from "../shader/ComputeShader.js";
5
+ import { ShaderResourceSetDescriptor } from "../shader/resource/ShaderResourceSetDescriptor.js";
6
+ import { chunk_hzb_footprint_x } from "./chunk_hzb_footprint_x.js";
7
+ import { chunk_hzb_footprint_y } from "./chunk_hzb_footprint_y.js";
8
+ import { HZB_TEXTURE_FORMAT } from "./HZB_TEXTURE_FORMAT.js";
9
+
10
+ /**
11
+ * Per-pass, 24 bytes, read-only.
12
+ *
13
+ * `clip_region` and `output_resolution` were two uniforms, so two buffers per pass. WGSL allows one
14
+ * immediate per entry point, so carrying them as immediate data means carrying them together.
15
+ *
16
+ * @type {WebGPUStruct}
17
+ */
18
+ const HZB_CLIP_SETTINGS = WebGPUStruct.from({
19
+ // x, y, width, height
20
+ clip_region: vec4u,
21
+ output_resolution: vec2u,
22
+ }, 'HzbClipSettings');
23
+
24
+ const resources = new ShaderResourceSetDescriptor();
25
+
26
+ resources.setImmediate("settings", HZB_CLIP_SETTINGS);
27
+
28
+ resources.createGroup()
29
+ .addTexture("tInput", "unfilterable-float")
30
+ .addStorageTexture("tOutput", HZB_TEXTURE_FORMAT, "2d", "write-only")
31
+ ;
32
+
33
+ const body = CodeChunk.from(
34
+ //language=WGSL
35
+ `
36
+ @compute @workgroup_size(16, 16)
37
+ fn main(
38
+ @builtin(global_invocation_id) global_id: vec3<u32>,
39
+ ) {
40
+ if (any(global_id.xy >= settings.output_resolution)) {
41
+ return;
42
+ }
43
+
44
+ // 1. Calculate the UV bounds of the current *output* pixel.
45
+ // We use the output resolution to determine how wide one pixel is in UV space.
46
+ let output_resolution_f = vec2<f32>(settings.output_resolution);
47
+ let uv = (vec2<f32>(global_id.xy) + 0.5) / output_resolution_f;
48
+ let output_pixel_size2 = 0.5 / output_resolution_f;
49
+ let uv_min = uv - output_pixel_size2;
50
+ let uv_max = uv + output_pixel_size2;
51
+
52
+ // minor epsilon to avoid float rounding errors
53
+ const EPSILON = 1e-6;
54
+
55
+ // Nudge the bounds slightly inward to absorb floating-point drift
56
+ let safe_uv_min = uv_min + EPSILON;
57
+ let safe_uv_max = uv_max - EPSILON;
58
+
59
+ // 2. Convert UV bounds to Source Texel coordinates (float).
60
+ // We map the 0..1 UVs to the size of the source clip region.
61
+ let source_size = vec2<f32>(settings.clip_region.zw);
62
+ let texel_min_f = safe_uv_min * source_size;
63
+ let texel_max_f = safe_uv_max * source_size;
64
+
65
+ // 3. Convert to Integer Bounds.
66
+ // Floor the min to find the first pixel.
67
+ // Ceil the max to find the exclusive upper bound.
68
+ // Example (5px -> 2px):
69
+ // Output Px 0 covers UV 0.0-0.5 -> Source 0.0 to 2.5
70
+ // Floor(0.0) = 0. Ceil(2.5) = 3. Pixels 0, 1, 2. (Pixel 2 is partially covered)
71
+ // Output Px 1 covers UV 0.5-1.0 -> Source 2.5 to 5.0
72
+ // Floor(2.5) = 2. Ceil(5.0) = 5. Pixels 2, 3, 4. (Pixel 2 is partially covered again)
73
+ let bound_min = vec2<i32>(floor(texel_min_f));
74
+ let bound_max = vec2<i32>(ceil(texel_max_f));
75
+
76
+ // 4. Clamp bounds to the clip region size to be safe.
77
+ let limit = vec2<i32>(settings.clip_region.zw);
78
+
79
+ let start = max(bound_min, vec2<i32>(0)) + vec2<i32>(settings.clip_region.xy);
80
+ let end = min(bound_max, limit) + vec2<i32>(settings.clip_region.xy);
81
+
82
+ // 5. Read the footprint, HZB_FOOTPRINT_X by HZB_FOOTPRINT_Y texels: the widest footprint of this
83
+ // dispatch on each axis. A narrower one repeats its last texel, which min/max ignores.
84
+ let last = end - vec2<i32>(1);
85
+
86
+ var output = vec2<f32>(1.0, 0.0); // Initialize min/max
87
+
88
+ for (var j = 0; j < HZB_FOOTPRINT_Y; j++) {
89
+ for (var i = 0; i < HZB_FOOTPRINT_X; i++) {
90
+
91
+ let load_coord = min(start + vec2<i32>(i, j), last);
92
+
93
+ let v = textureLoad(tInput, load_coord, 0).r;
94
+
95
+ output.x = min(output.x, v);
96
+ output.y = max(output.y, v);
97
+ }
98
+ }
99
+
100
+ textureStore(tOutput, vec2<i32>(global_id.xy), vec4<f32>(output, 0.0, 0.0));
101
+ }
102
+ `, [
103
+ chunk_hzb_footprint_x,
104
+ chunk_hzb_footprint_y,
105
+ ]
106
+ )
107
+
108
+ /**
109
+ * First reduction: depth of a region of the source (`settings.clip_region`) into the HZB's mip 0, min in
110
+ * R and max in G. The region is the whole viewport for a camera, and a slot of the atlas for a shadow
111
+ * map. Each HZB texel reduces every source texel its area overlaps, a footprint of
112
+ * {@link HZB_FOOTPRINT_X} by {@link HZB_FOOTPRINT_Y} texels at most.
113
+ *
114
+ * @type {ComputeShader}
115
+ */
116
+ export const shader_hzb_reduce_mip0 = ComputeShader.from({
117
+ label: 'HZB / reduce mip0',
118
+ resources,
119
+ body,
120
+ });
@@ -13,7 +13,7 @@ export class TinyGltf {
13
13
  * @readonly
14
14
  * @type {TextureFormat}
15
15
  */
16
- static readonly "__#300@#UNCOMPRESSED_TARGET": TextureFormat;
16
+ static readonly "__#302@#UNCOMPRESSED_TARGET": TextureFormat;
17
17
  /**
18
18
  * @param {AssetManager} assetManager
19
19
  * @param {AssetRequestScope} [scope]
@@ -9,6 +9,13 @@ export class GPUMaterialManager {
9
9
  * @param {GPUSamplerManager} [samplers] required by templates that bind shared samplers — terrain's
10
10
  */
11
11
  constructor(device: GPUDevice, textures: TextureManager, render_pipelines: RenderPipelineManager, bindings: BindGroupManager, virtual_textures?: VirtualTextureManager, samplers?: GPUSamplerManager);
12
+ /**
13
+ * Sent with a material when {@link update} restages its row because its {@link ShadeMaterial#version}
14
+ * moved: what the scene's material table and the material's uniform hold changes with this frame.
15
+ * Not sent for a material's first row, which {@link obtain} writes.
16
+ * @type {Signal<ShadeMaterial>}
17
+ */
18
+ onMaterialRestaged: any;
12
19
  /**
13
20
  *
14
21
  * @type {Map<ShadeMaterial, GPUMaterialContext>}
@@ -1 +1 @@
1
- {"version":3,"file":"GPUMaterialManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/GPUMaterialManager.js"],"names":[],"mappings":"AA2NA;IAoFI;;;;;;;;OAQG;IACH,yCANW,cAAc,oBACd,qBAAqB,YACrB,gBAAgB,qBAChB,qBAAqB,aACrB,iBAAiB,EAiD3B;IArID;;;OAGG;IACH,UAFU,IAAI,aAAa,EAAE,kBAAkB,CAAC,CAE3B;IAyBrB;;;OAGG;IACH,yCAEC;IAID;;;OAGG;IACH,sBAEC;IAsLD;;;;;;;;OAQG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACE,gBAAgB,EAAhC,MAAM;QACU,oBAAoB,EAApC,MAAM;QACJ;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAiMnF;IAED;;;;OAIG;IACH,iBAHW,aAAa,GACX,kBAAkB,CAqB9B;IAED;;;;;;;;;;;;OAYG;IACH,kBAHW,aAAa,GACX,OAAO,CAyBnB;IAED;;;;OAIG;IACH,gBAaC;IAED;;;;;;;OAOG;IACH,0BAFW,eAAe,QAazB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,qBAAqB,GACnB,QAAQ,IAAI,CAAC,CAMzB;IAsBD;;;;;;OAMG;IACH,0BAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;OAMG;IACH,wBAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAuED;;;OAGG;IACH,YAFW,sBAAsB,QAiChC;;CAEJ;8BA33BY,OAAO,0CAA0C,EAAE,eAAe;6BAClE,OAAO,2BAA2B,EAAE,cAAc;yBAIlD,OAAO,2DAA2D,EAAE,UAAU;qCAC9E,OAAO,wCAAwC,EAAE,sBAAsB;oCACvE,OAAO,gDAAgD,EAAE,qBAAqB;+BAC9E,OAAO,gCAAgC,EAAE,gBAAgB;gCACzD,OAAO,yBAAyB,EAAE,iBAAiB;6BACnD,OAAO,8BAA8B,EAAE,cAAc;oCACrD,OAAO,6CAA6C,EAAE,qBAAqB;4BAC3E,OAAO,oBAAoB,EAAE,aAAa;oCAC1C,OAAO,qCAAqC,EAAE,qBAAqB;mCAtBzE,yBAAyB;mCAjBG,8CAA8C"}
1
+ {"version":3,"file":"GPUMaterialManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/GPUMaterialManager.js"],"names":[],"mappings":"AA4NA;IA4FI;;;;;;;;OAQG;IACH,yCANW,cAAc,oBACd,qBAAqB,YACrB,gBAAgB,qBAChB,qBAAqB,aACrB,iBAAiB,EAiD3B;IAlJD;;;;;OAKG;IACH,wBAAkC;IAOlC;;;OAGG;IACH,UAFU,IAAI,aAAa,EAAE,kBAAkB,CAAC,CAE3B;IAyBrB;;;OAGG;IACH,yCAEC;IAID;;;OAGG;IACH,sBAEC;IAsLD;;;;;;;;OAQG;IACH;QAN+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACE,gBAAgB,EAAhC,MAAM;QACU,oBAAoB,EAApC,MAAM;QACJ;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAiMnF;IAED;;;;OAIG;IACH,iBAHW,aAAa,GACX,kBAAkB,CAqB9B;IAED;;;;;;;;;;;;OAYG;IACH,kBAHW,aAAa,GACX,OAAO,CAyBnB;IAED;;;;OAIG;IACH,gBAaC;IAED;;;;;;;OAOG;IACH,0BAFW,eAAe,QAazB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,qBAAqB,GACnB,QAAQ,IAAI,CAAC,CAMzB;IAsBD;;;;;;OAMG;IACH,0BAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;OAMG;IACH,wBAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAuED;;;OAGG;IACH,YAFW,sBAAsB,QAmChC;;CAEJ;8BAr4BY,OAAO,0CAA0C,EAAE,eAAe;6BAClE,OAAO,2BAA2B,EAAE,cAAc;yBAIlD,OAAO,2DAA2D,EAAE,UAAU;qCAC9E,OAAO,wCAAwC,EAAE,sBAAsB;oCACvE,OAAO,gDAAgD,EAAE,qBAAqB;+BAC9E,OAAO,gCAAgC,EAAE,gBAAgB;gCACzD,OAAO,yBAAyB,EAAE,iBAAiB;6BACnD,OAAO,8BAA8B,EAAE,cAAc;oCACrD,OAAO,6CAA6C,EAAE,qBAAqB;4BAC3E,OAAO,oBAAoB,EAAE,aAAa;oCAC1C,OAAO,qCAAqC,EAAE,qBAAqB;mCAtBzE,yBAAyB;mCAjBG,8CAA8C"}
@@ -1,4 +1,5 @@
1
1
  import { assert } from "../../../core/assert.js";
2
+ import Signal from "../../../core/events/signal/Signal.js";
2
3
  import { BindGroupLayoutDescriptor } from "../../descriptor/binding/BindGroupLayoutDescriptor.js";
3
4
  import { BufferBindingLayout } from "../../descriptor/binding/BufferBindingLayout.js";
4
5
  import { GPUShaderStage } from "../../descriptor/GPUShaderStage.js";
@@ -219,6 +220,14 @@ const material_buffer_pipeline_descriptor = RenderPipelineDescriptor.from({
219
220
 
220
221
  export class GPUMaterialManager {
221
222
 
223
+ /**
224
+ * Sent with a material when {@link update} restages its row because its {@link ShadeMaterial#version}
225
+ * moved: what the scene's material table and the material's uniform hold changes with this frame.
226
+ * Not sent for a material's first row, which {@link obtain} writes.
227
+ * @type {Signal<ShadeMaterial>}
228
+ */
229
+ onMaterialRestaged = new Signal();
230
+
222
231
  /**
223
232
  * @type {GPUDevice}
224
233
  */
@@ -906,6 +915,8 @@ export class GPUMaterialManager {
906
915
  const row = this.#stage_metadata(material_ctx);
907
916
 
908
917
  material_ctx.write_uniform(queue, row);
918
+
919
+ this.onMaterialRestaged.send1(material_ctx.source);
909
920
  }
910
921
  }
911
922
 
@@ -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, and the manager's materials whenever its version
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":"AAmIA;IAqMI;;;;OAIG;IACH,yCAFW,eAAe,EAyDzB;IA/PD;;;;OAIG;IACH,wBAAkC;IA4BlC;;;OAGG;IACH,6BAEC;IAQD;;;OAGG;IACH,kCAEC;IAQD;;;OAGG;IACH,yCAEC;IAoBD;;OAEG;IACH,sCAEC;IAED;;;OAGG;IACH,kCAIC;IAmED;;;;;OAKG;IACH,0BAEC;IAOD;;;;;;OAMG;IACH,8BAEC;IA6JD;;;;;;;;;OASG;IACH,0BAHW,aAAa,GACX,YAAY,CAqBxB;IAgBD;;;;OAIG;IACH,wBAHW,YAAY,GACV,WAAW,CAIvB;IAGD,uBA4DC;IAkJD,wBA8EC;IAED;;;;OAIG;IACH,sCAFW,eAAe,QAUzB;IAoCD,eAWC;IAGD,gBAMC;;CACJ;8BAh2BY,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;kCAnB5C,oCAAoC;AAatE;;;;;;;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
+ {"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"}