@woosh/meep-engine 3.61.2 → 3.61.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +1 -1
  3. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  4. package/src/shade/playground/probe_clipmap/README.md +3 -4
  5. package/src/shade/playground/probe_clipmap/index.html +5 -13
  6. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  7. package/src/shade/playground/probe_clipmap/main.js +0 -5
  8. package/src/shade/playground/probe_clipmap_box/README.md +1 -1
  9. package/src/shade/playground/probe_clipmap_box/index.html +1 -1
  10. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  11. package/src/shade/renderer/Renderer.js +50 -11
  12. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  13. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  14. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  15. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  16. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  17. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
  18. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
  19. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
  20. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
  21. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  22. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
  23. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
  24. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
  25. package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
  26. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
  27. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
  28. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
  29. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
  30. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
  31. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
  32. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
  33. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
  34. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
  35. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
  36. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
  37. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
  38. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
  39. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
  40. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
  41. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  42. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
  43. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
  44. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
  45. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
  46. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
  47. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
  48. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
  49. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
  50. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  51. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
  52. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
  53. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
  54. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
  55. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
  56. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
  57. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
  58. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
  59. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
  60. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
  61. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
  62. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
  63. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
  64. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
  65. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
  66. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
  67. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
  68. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
  69. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
  70. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
  71. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
  72. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
  73. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
  74. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
  75. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
  76. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
  77. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
  78. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
  79. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
  80. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
  81. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
  82. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
  83. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
  85. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
  86. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
  87. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
  88. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
  89. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
  90. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
  91. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
  92. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
  93. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
  94. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
  95. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
  96. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
  97. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
  98. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
  99. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
  100. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
  101. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
  102. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
  103. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
  104. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
  105. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
  106. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
  107. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
  108. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
  109. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
  110. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
  111. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
  112. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
  113. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
  114. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
  115. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
  116. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
  117. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
  118. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
  119. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
  120. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
  121. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
  122. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
  123. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
  124. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
  125. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
  126. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
  127. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
  128. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
  129. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
  130. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
  131. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
  132. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
  133. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
  134. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
  135. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
  136. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
  137. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
  138. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
  139. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
  140. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
  141. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
  142. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
  143. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
  144. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
  145. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
  146. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
  147. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
  148. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
  149. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
  150. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
  151. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
  152. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -7
  153. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  154. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +82 -17
  155. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
  156. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  157. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
  158. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
  159. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  160. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
  161. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
  162. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
  163. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
  164. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
  165. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  166. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +49 -36
  167. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
  168. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  169. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
  170. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
  171. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  172. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
  173. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
  174. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  175. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
  176. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  177. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
  178. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
  179. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
  180. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
  181. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
  182. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
  183. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
  184. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
  185. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
  186. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
  187. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  188. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
  189. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
  190. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  191. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
  192. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
  193. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
  194. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
  195. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
  196. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
  197. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
  198. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
  199. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
  200. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
  201. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
  202. package/src/shade/renderer/global_illumination/probe_clipmap/debug/{graph_probe_clipmap_debug_mesh_cards.js → graph_probe_clipmap_debug_mesh_surfaces.js} +38 -57
  203. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
  204. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
  205. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
  206. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
  207. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
  208. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
  209. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
  210. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
  211. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
  212. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
  213. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
  214. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
  215. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
  216. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
  217. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
  218. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +18 -9
  219. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  220. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +63 -44
  221. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +21 -1
  222. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  223. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +24 -1
  224. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
  225. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
  226. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
  227. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
  228. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
  229. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
  230. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +44 -7
  231. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  232. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +88 -11
  233. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
  234. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
  235. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
  236. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
  237. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
  238. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
  239. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +2 -0
  240. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  241. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +10 -4
  242. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
  243. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
  244. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
  245. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
  246. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
  247. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
  248. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +3 -3
  249. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +5 -5
  250. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
  251. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  252. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +5 -1
  253. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
  254. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
  255. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
  256. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  257. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
  258. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -5
  259. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  260. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +22 -16
  261. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  262. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +6 -2
  263. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
  264. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
  265. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
  266. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
  267. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
  268. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
  269. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
  270. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
  271. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
  272. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
  273. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
  274. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  275. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
  276. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  277. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
  278. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  279. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
  280. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
  281. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
  282. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
  283. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
  284. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
  285. package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
  286. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
  287. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
  288. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
  289. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  290. package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
  291. package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
  292. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
  293. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
  294. package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
  295. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
  296. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
  297. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
  298. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
  299. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
  300. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
  301. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
  302. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
  303. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
  304. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
  305. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
  306. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
  307. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
  308. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
  309. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
  310. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
  311. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
  312. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
  313. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
  314. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
  315. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
  316. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
  317. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
  318. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
  319. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
  320. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
  321. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
  322. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
  323. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
  324. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
  325. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
  326. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
  327. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
  328. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
  329. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
  330. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  331. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
  332. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  333. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  334. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
  335. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
  336. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
  337. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
  338. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
  339. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
  340. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
  341. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
  342. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
  343. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
  344. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
  345. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
  346. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
  347. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
  348. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
  349. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
  350. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
  351. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
  352. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
  353. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
  354. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
  355. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
  356. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
  357. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
  358. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
  359. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
  360. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
  361. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
  362. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
  363. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
  364. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
  365. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
  366. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
  367. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
  368. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
  369. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
  370. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
  371. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
  372. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
  373. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
  374. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
  375. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
  376. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
  377. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
  378. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
  379. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
  380. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
  381. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
  382. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
  383. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
  384. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
  385. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
  386. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
  387. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
  388. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
  389. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
@@ -1,136 +0,0 @@
1
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
- import { ComputeShader } from "../../../shader/ComputeShader.js";
3
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
4
- import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
5
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
6
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
7
- import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "../bake/chunk_mesh_sdf_bake.js";
8
- import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
9
- import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
10
- import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
11
- import { MESH_CARD_DIRECTIONS } from "./MESH_CARDS.js";
12
-
13
- /**
14
- * @type {WebGPUStruct}
15
- */
16
- export const MESH_CARDS_MERGE_SETTINGS = WebGPUStruct.from({
17
- /** the geometry whose cards are placed */
18
- geometry: u32,
19
- /** where in `mesh_sdf_take` the page pass's dispatch goes, in words */
20
- dispatch: u32,
21
- }, "MeshCardsMergeSettings");
22
-
23
- const resources = new ShaderResourceSetDescriptor();
24
-
25
- resources.setImmediate("settings", MESH_CARDS_MERGE_SETTINGS);
26
-
27
- resources.createGroup()
28
- .add(MESH_SDF_HEADERS_RESOURCE)
29
- .add(MESH_SDF_ARENA_RESOURCE)
30
- .addStorageBuffer("mesh_sdf_take", WebGPUArray.u32, true);
31
-
32
- /**
33
- * Card placement, step 3 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): one thread. The six directions'
34
- * splits are taken in order of gain, as the greedy search over all six would take them, until the
35
- * gains run out or the geometry has MESH_CARD_MAX cards. Every run start is then covered, or the
36
- * ceiling has left some uncovered, which read the material mean.
37
- *
38
- * The cards are written direction by direction, each direction's cards by their near layer. Each
39
- * card records its direction, its slab, and where its column table starts: a word for each column of
40
- * its direction, laid out card after card. The layout's header gets the card count, each direction's
41
- * first card, and the columns over every card. The page pass's dispatch goes to `mesh_sdf_take`: a
42
- * thread a column.
43
- *
44
- * @type {ComputeShader}
45
- */
46
- export const shader_mesh_cards_merge = ComputeShader.from({
47
- label: "Mesh Cards Merge",
48
- resources,
49
- body: CodeChunk.from(
50
- //language=WGSL
51
- `
52
- @compute @workgroup_size(1)
53
- fn main() {
54
- let header = mesh_sdf_headers[settings.geometry];
55
- let parts = mesh_card_placement_of(header.bricks);
56
- let base = header.cards;
57
-
58
- // each direction's next split, and its card starts so far: layer 0 starts the whole-grid card
59
- var next = array<u32, ${MESH_CARD_DIRECTIONS}>();
60
- var bounds = array<vec2<u32>, ${MESH_CARD_DIRECTIONS}>();
61
-
62
- for (var d = 0u; d < MESH_CARD_DIRECTIONS; d++) {
63
- bounds[d] = vec2<u32>(1u, 0u);
64
- }
65
-
66
- for (var taken = 0u; taken < MESH_CARD_SPLITS_MAX; taken++) {
67
- var best = MESH_CARD_DIRECTIONS;
68
- var best_gain = 0u;
69
-
70
- for (var d = 0u; d < MESH_CARD_DIRECTIONS; d++) {
71
- if (next[d] >= MESH_CARD_SPLITS_MAX) {
72
- continue;
73
- }
74
-
75
- let gain = atomicLoad(&mesh_sdf_indirection[base + parts.splits + (d * MESH_CARD_SPLITS_MAX + next[d]) * 2u]);
76
-
77
- if (gain > best_gain) {
78
- best_gain = gain;
79
- best = d;
80
- }
81
- }
82
-
83
- if (best == MESH_CARD_DIRECTIONS) {
84
- break;
85
- }
86
-
87
- let layer = atomicLoad(&mesh_sdf_indirection[base + parts.splits + (best * MESH_CARD_SPLITS_MAX + next[best]) * 2u + 1u]);
88
-
89
- bounds[best][layer >> 5u] |= 1u << (layer & 31u);
90
- next[best]++;
91
- }
92
-
93
- var cards = 0u;
94
- var columns = 0u;
95
-
96
- for (var d = 0u; d < MESH_CARD_DIRECTIONS; d++) {
97
- let extent = mesh_card_extent(header.bricks, d);
98
- let bound = bounds[d];
99
-
100
- atomicStore(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_DIRECTION_FIRST + d], cards);
101
-
102
- var near = 0u;
103
-
104
- while (near < extent.x) {
105
- var far = near + 1u;
106
-
107
- while (far < extent.x && ((bound[far >> 5u] >> (far & 31u)) & 1u) == 0u) {
108
- far++;
109
- }
110
-
111
- let record = base + MESH_CARD_LAYOUT_RECORDS + cards * MESH_CARD_RECORD_WORDS;
112
-
113
- atomicStore(&mesh_sdf_indirection[record + MESH_CARD_RECORD_DIRECTION], d);
114
- atomicStore(&mesh_sdf_indirection[record + MESH_CARD_RECORD_NEAR], near);
115
- atomicStore(&mesh_sdf_indirection[record + MESH_CARD_RECORD_FAR], far);
116
- atomicStore(&mesh_sdf_indirection[record + MESH_CARD_RECORD_TABLE], columns);
117
-
118
- cards++;
119
- columns += extent.y * extent.z;
120
- near = far;
121
- }
122
- }
123
-
124
- atomicStore(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_CARD_COUNT], cards);
125
- atomicStore(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_COLUMN_COUNT], columns);
126
- atomicStore(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_PAGE_COUNT], 0u);
127
-
128
- mesh_sdf_take[settings.dispatch] = (columns + ${MESH_SDF_BAKE_WORKGROUP_SIZE - 1}u) / ${MESH_SDF_BAKE_WORKGROUP_SIZE}u;
129
- mesh_sdf_take[settings.dispatch + 1u] = 1u;
130
- mesh_sdf_take[settings.dispatch + 2u] = 1u;
131
- }
132
- `, [
133
- chunk_mesh_sdf_bake,
134
- chunk_mesh_cards,
135
- ]),
136
- });
@@ -1,20 +0,0 @@
1
- /**
2
- * @type {WebGPUStruct}
3
- */
4
- export const MESH_CARDS_PAGES_SETTINGS: WebGPUStruct;
5
- /**
6
- * Card placement, step 4 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a column of every card,
7
- * dispatched by the merge. A card has a page in a column when its slab holds an occupied brick
8
- * there; the page is the column's 8×8 texels on the corner lattice of the bricks' faces.
9
- *
10
- * A column with a page takes the next page index, and writes it into its card's column table and
11
- * itself into the page list: its card, then its column's u and v, a byte each. A column without one
12
- * writes MESH_CARD_NO_PAGE. The pages come out in whatever order the threads take them. Capture
13
- * walks the page list and a hit reads the column table, so neither needs another order.
14
- *
15
- * @type {ComputeShader}
16
- */
17
- export const shader_mesh_cards_pages: ComputeShader;
18
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
19
- import { ComputeShader } from "../../../shader/ComputeShader.js";
20
- //# sourceMappingURL=shader_mesh_cards_pages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader_mesh_cards_pages.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js"],"names":[],"mappings":"AAUA;;GAEG;AACH,wCAFU,YAAY,CAKO;AAU7B;;;;;;;;;;;GAWG;AACH,sCAFU,aAAa,CAmEpB;6BAnG0B,sCAAsC;8BAHrC,kCAAkC"}
@@ -1,104 +0,0 @@
1
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
- import { ComputeShader } from "../../../shader/ComputeShader.js";
3
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
4
- import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
5
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
6
- import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "../bake/chunk_mesh_sdf_bake.js";
7
- import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
8
- import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
9
- import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
10
-
11
- /**
12
- * @type {WebGPUStruct}
13
- */
14
- export const MESH_CARDS_PAGES_SETTINGS = WebGPUStruct.from({
15
- /** the geometry whose cards are placed */
16
- geometry: u32,
17
- }, "MeshCardsPagesSettings");
18
-
19
- const resources = new ShaderResourceSetDescriptor();
20
-
21
- resources.setImmediate("settings", MESH_CARDS_PAGES_SETTINGS);
22
-
23
- resources.createGroup()
24
- .add(MESH_SDF_HEADERS_RESOURCE)
25
- .add(MESH_SDF_ARENA_RESOURCE);
26
-
27
- /**
28
- * Card placement, step 4 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a column of every card,
29
- * dispatched by the merge. A card has a page in a column when its slab holds an occupied brick
30
- * there; the page is the column's 8×8 texels on the corner lattice of the bricks' faces.
31
- *
32
- * A column with a page takes the next page index, and writes it into its card's column table and
33
- * itself into the page list: its card, then its column's u and v, a byte each. A column without one
34
- * writes MESH_CARD_NO_PAGE. The pages come out in whatever order the threads take them. Capture
35
- * walks the page list and a hit reads the column table, so neither needs another order.
36
- *
37
- * @type {ComputeShader}
38
- */
39
- export const shader_mesh_cards_pages = ComputeShader.from({
40
- label: "Mesh Cards Pages",
41
- resources,
42
- body: CodeChunk.from(
43
- //language=WGSL
44
- `
45
- @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
46
- fn main(@builtin(global_invocation_id) id: vec3<u32>) {
47
- let header = mesh_sdf_headers[settings.geometry];
48
- let base = header.cards;
49
- let bricks = header.bricks;
50
-
51
- let thread = id.x;
52
- let columns = atomicLoad(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_COLUMN_COUNT]);
53
-
54
- if (thread >= columns) {
55
- return;
56
- }
57
-
58
- // the card whose columns hold the thread: the last whose table starts at or before it
59
- let cards = atomicLoad(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_CARD_COUNT]);
60
-
61
- var card = 0u;
62
-
63
- for (var c = 1u; c < cards; c++) {
64
- if (atomicLoad(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_RECORDS + c * MESH_CARD_RECORD_WORDS + MESH_CARD_RECORD_TABLE]) > thread) {
65
- break;
66
- }
67
-
68
- card = c;
69
- }
70
-
71
- let record = base + MESH_CARD_LAYOUT_RECORDS + card * MESH_CARD_RECORD_WORDS;
72
- let direction = atomicLoad(&mesh_sdf_indirection[record + MESH_CARD_RECORD_DIRECTION]);
73
- let near = atomicLoad(&mesh_sdf_indirection[record + MESH_CARD_RECORD_NEAR]);
74
- let far = atomicLoad(&mesh_sdf_indirection[record + MESH_CARD_RECORD_FAR]);
75
- let table = atomicLoad(&mesh_sdf_indirection[record + MESH_CARD_RECORD_TABLE]);
76
-
77
- let extent = mesh_card_extent(bricks, direction);
78
- let index = thread - table;
79
- let column = vec2<u32>(index % extent.y, index / extent.y);
80
-
81
- var seen = false;
82
-
83
- for (var layer = near; layer < far && !seen; layer++) {
84
- let brick = mesh_card_brick(bricks, direction, column, layer);
85
-
86
- seen = mesh_sdf_entry_holds_slot(atomicLoad(&mesh_sdf_indirection[header.indirection + brick.x + bricks.x * (brick.y + bricks.y * brick.z)]));
87
- }
88
-
89
- var page = MESH_CARD_NO_PAGE;
90
-
91
- if (seen) {
92
- page = atomicAdd(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_PAGE_COUNT], 1u);
93
-
94
- // the page list follows the tables
95
- atomicStore(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_TABLES + columns + page], (card << 16u) | (column.y << 8u) | column.x);
96
- }
97
-
98
- atomicStore(&mesh_sdf_indirection[base + MESH_CARD_LAYOUT_TABLES + thread], page);
99
- }
100
- `, [
101
- chunk_mesh_sdf_bake,
102
- chunk_mesh_cards,
103
- ]),
104
- });
@@ -1,20 +0,0 @@
1
- /**
2
- * Threads a workgroup of {@link shader_mesh_cards_raster_args}.
3
- * @type {number}
4
- */
5
- export const MESH_CARDS_RASTER_ARGS_WORKGROUP_SIZE: number;
6
- /**
7
- * @type {WebGPUStruct}
8
- */
9
- export const MESH_CARDS_RASTER_ARGS_SETTINGS: WebGPUStruct;
10
- /**
11
- * Card capture by raster, step 1: a thread a run, writing its draw. The draw is every card of the
12
- * layout times every meshlet of the geometry, as instances, at a meshlet's worth of vertices: the
13
- * card count is the device's, so the draw follows it rather than {@link MESH_CARD_MAX}.
14
- *
15
- * @type {ComputeShader}
16
- */
17
- export const shader_mesh_cards_raster_args: ComputeShader;
18
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
19
- import { ComputeShader } from "../../../shader/ComputeShader.js";
20
- //# sourceMappingURL=shader_mesh_cards_raster_args.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader_mesh_cards_raster_args.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH,oDAFU,MAAM,CAEwC;AAExD;;GAEG;AACH,8CAFU,YAAY,CAKY;AAclC;;;;;;GAMG;AACH,4CAFU,aAAa,CAkCpB;6BAzE0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -1,80 +0,0 @@
1
- import { STRUCT_UNINDEXED_DRAW_COMMAND } from "../../../gpu_primitive/indirect/STRUCT_UNINDEXED_DRAW_COMMAND.js";
2
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
3
- import { ComputeShader } from "../../../shader/ComputeShader.js";
4
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
5
- import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
6
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
7
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
8
- import { GEOMETRY_METADATA_STRUCT } from "../../GEOMETRY_METADATA_STRUCT.js";
9
- import { GEOMETRY_MESHLET_TRIANGLE_LIMIT } from "../../meshlet/GEOMETRY_MESHLET_TRIANGLE_LIMIT.js";
10
- import { MESH_SDF_HEADERS_RESOURCE, MESH_SDF_INDIRECTION_RESOURCE } from "../MESH_SDF_RESOURCES.js";
11
- import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
12
- import { MESH_CARD_SETS_RESOURCE } from "./MESH_CARD_RESOURCES.js";
13
- import { MESH_CARD_SET_STRUCT } from "./MESH_CARD_SET_STRUCT.js";
14
-
15
- /**
16
- * Threads a workgroup of {@link shader_mesh_cards_raster_args}.
17
- * @type {number}
18
- */
19
- export const MESH_CARDS_RASTER_ARGS_WORKGROUP_SIZE = 64;
20
-
21
- /**
22
- * @type {WebGPUStruct}
23
- */
24
- export const MESH_CARDS_RASTER_ARGS_SETTINGS = WebGPUStruct.from({
25
- /** raster runs this frame */
26
- run_count: u32,
27
- }, "MeshCardsRasterArgsSettings");
28
-
29
- const resources = new ShaderResourceSetDescriptor();
30
-
31
- resources.setImmediate("settings", MESH_CARDS_RASTER_ARGS_SETTINGS);
32
-
33
- resources.createGroup()
34
- .add(MESH_SDF_HEADERS_RESOURCE)
35
- .add(MESH_SDF_INDIRECTION_RESOURCE)
36
- .add(MESH_CARD_SETS_RESOURCE)
37
- .addStorageBuffer("mesh_card_raster_runs", WebGPUArray.from(vec4u))
38
- .addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT))
39
- .addStorageBuffer("mesh_card_raster_draws", WebGPUArray.from(STRUCT_UNINDEXED_DRAW_COMMAND), true);
40
-
41
- /**
42
- * Card capture by raster, step 1: a thread a run, writing its draw. The draw is every card of the
43
- * layout times every meshlet of the geometry, as instances, at a meshlet's worth of vertices: the
44
- * card count is the device's, so the draw follows it rather than {@link MESH_CARD_MAX}.
45
- *
46
- * @type {ComputeShader}
47
- */
48
- export const shader_mesh_cards_raster_args = ComputeShader.from({
49
- label: "Mesh Cards Raster Args",
50
- resources,
51
- body: CodeChunk.from(
52
- //language=WGSL
53
- `
54
- @compute @workgroup_size(${MESH_CARDS_RASTER_ARGS_WORKGROUP_SIZE})
55
- fn main(@builtin(global_invocation_id) id: vec3<u32>) {
56
- let run = id.x;
57
-
58
- if (run >= settings.run_count) {
59
- return;
60
- }
61
-
62
- let card_set = mesh_card_sets[mesh_card_raster_runs[run].y];
63
- let cards = mesh_sdf_indirection[mesh_sdf_headers[card_set.geometry].cards + MESH_CARD_LAYOUT_CARD_COUNT];
64
-
65
- var draw: ${STRUCT_UNINDEXED_DRAW_COMMAND.wgsl_ref};
66
-
67
- draw.vertexCount = ${GEOMETRY_MESHLET_TRIANGLE_LIMIT * 3}u;
68
- draw.instanceCount = min(cards, MESH_CARD_MAX) * geometries[card_set.geometry].meshlets_count;
69
- draw.firstVertex = 0u;
70
- draw.firstInstance = 0u;
71
-
72
- mesh_card_raster_draws[run] = draw;
73
- }
74
- `, [
75
- STRUCT_UNINDEXED_DRAW_COMMAND.declaration_chunk,
76
- GEOMETRY_METADATA_STRUCT.declaration_chunk,
77
- MESH_CARD_SET_STRUCT.declaration_chunk,
78
- chunk_mesh_cards,
79
- ]),
80
- });
@@ -1,18 +0,0 @@
1
- /**
2
- * @type {WebGPUStruct}
3
- */
4
- export const MESH_CARDS_RASTER_SCATTER_SETTINGS: WebGPUStruct;
5
- /**
6
- * Card capture by raster, step 3: a thread a texel of each page of the frame's raster runs, a whole
7
- * card set each, moving the texel from its card's cell of the scratch into the page's atlas tile.
8
- * The thread → (run, page, texel) mapping is the trace's: the runs' first threads are ascending.
9
- *
10
- * Page texel (x, y) of column (u, v) is lattice point (7u + x, 7v + y) of the card, texel
11
- * (7u + x, 7v + y) of its cell: a page's last texel and the next column's first are one texel.
12
- *
13
- * @type {ComputeShader}
14
- */
15
- export const shader_mesh_cards_raster_scatter: ComputeShader;
16
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
17
- import { ComputeShader } from "../../../shader/ComputeShader.js";
18
- //# sourceMappingURL=shader_mesh_cards_raster_scatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader_mesh_cards_raster_scatter.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js"],"names":[],"mappings":"AAcA;;GAEG;AACH,iDAFU,YAAY,CASe;AAgBrC;;;;;;;;;GASG;AACH,+CAFU,aAAa,CAgEpB;6BA1G0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -1,113 +0,0 @@
1
- import { chunk_index_to_grid2d } from "../../../shader/chunk/grid/chunk_index_to_grid2d.js";
2
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
3
- import { ComputeShader } from "../../../shader/ComputeShader.js";
4
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
5
- import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
6
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
7
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
8
- import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
9
- import { MESH_SDF_HEADERS_RESOURCE, MESH_SDF_INDIRECTION_RESOURCE } from "../MESH_SDF_RESOURCES.js";
10
- import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
11
- import { MESH_CARD_SETS_RESOURCE } from "./MESH_CARD_RESOURCES.js";
12
- import { MESH_CARD_SET_STRUCT } from "./MESH_CARD_SET_STRUCT.js";
13
- import { MESH_CARD_RASTER_CELLS_X } from "./mesh_cards_raster_pass_descriptor.js";
14
-
15
- /**
16
- * @type {WebGPUStruct}
17
- */
18
- export const MESH_CARDS_RASTER_SCATTER_SETTINGS = WebGPUStruct.from({
19
- /** raster runs this frame */
20
- run_count: u32,
21
- /** texels over every run's pages: the threads that do work */
22
- thread_count: u32,
23
- /** workgroups along x, the rest folded into y */
24
- groups_x: u32,
25
- }, "MeshCardsRasterScatterSettings");
26
-
27
- const resources = new ShaderResourceSetDescriptor();
28
-
29
- resources.setImmediate("settings", MESH_CARDS_RASTER_SCATTER_SETTINGS);
30
-
31
- resources.createGroup()
32
- .add(MESH_SDF_HEADERS_RESOURCE)
33
- .add(MESH_SDF_INDIRECTION_RESOURCE)
34
- .add(MESH_CARD_SETS_RESOURCE)
35
- .addStorageBuffer("mesh_card_raster_runs", WebGPUArray.from(vec4u))
36
- .addTexture("mesh_card_raster_albedo", "float", "2d")
37
- .addTexture("mesh_card_raster_emissive", "float", "2d")
38
- .addStorageTexture("mesh_card_albedo", "rgba8unorm", "2d", "write-only")
39
- .addStorageTexture("mesh_card_emissive", "rgba8unorm", "2d", "write-only");
40
-
41
- /**
42
- * Card capture by raster, step 3: a thread a texel of each page of the frame's raster runs, a whole
43
- * card set each, moving the texel from its card's cell of the scratch into the page's atlas tile.
44
- * The thread → (run, page, texel) mapping is the trace's: the runs' first threads are ascending.
45
- *
46
- * Page texel (x, y) of column (u, v) is lattice point (7u + x, 7v + y) of the card, texel
47
- * (7u + x, 7v + y) of its cell: a page's last texel and the next column's first are one texel.
48
- *
49
- * @type {ComputeShader}
50
- */
51
- export const shader_mesh_cards_raster_scatter = ComputeShader.from({
52
- label: "Mesh Cards Raster Scatter",
53
- resources,
54
- body: CodeChunk.from(
55
- //language=WGSL
56
- `
57
- @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
58
- fn main(
59
- @builtin(workgroup_id) workgroup_id: vec3<u32>,
60
- @builtin(local_invocation_index) lane: u32,
61
- ) {
62
- let thread = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
63
-
64
- if (thread >= settings.thread_count) {
65
- return;
66
- }
67
-
68
- // the run the thread falls in: the last whose first thread is at or below it
69
- var low = 0u;
70
- var high = settings.run_count;
71
-
72
- while (high - low > 1u) {
73
- let middle = (low + high) / 2u;
74
-
75
- if (mesh_card_raster_runs[middle].x <= thread) {
76
- low = middle;
77
- } else {
78
- high = middle;
79
- }
80
- }
81
-
82
- let run = mesh_card_raster_runs[low];
83
- let card_set = mesh_card_sets[run.y];
84
-
85
- let page_texels = MESH_CARD_PAGE_TEXELS * MESH_CARD_PAGE_TEXELS;
86
- let within = thread - run.x;
87
- let page = within / page_texels;
88
- let texel = vec2<u32>(within % MESH_CARD_PAGE_TEXELS, (within / MESH_CARD_PAGE_TEXELS) % MESH_CARD_PAGE_TEXELS);
89
-
90
- let header = mesh_sdf_headers[card_set.geometry];
91
- let columns = mesh_sdf_indirection[header.cards + MESH_CARD_LAYOUT_COLUMN_COUNT];
92
-
93
- // the page list follows the tables
94
- let listed = mesh_sdf_indirection[header.cards + MESH_CARD_LAYOUT_TABLES + columns + page];
95
- let card = listed >> 16u;
96
- let column = vec2<u32>(listed & 0xffu, (listed >> 8u) & 0xffu);
97
-
98
- let corner = vec2<u32>(run.z & 0xffffu, run.z >> 16u)
99
- + vec2<u32>(card % ${MESH_CARD_RASTER_CELLS_X}u, card / ${MESH_CARD_RASTER_CELLS_X}u) * run.w;
100
- let drawn = corner + column * MESH_SDF_BRICK_VOXELS + texel;
101
-
102
- let tiles_per_row = textureDimensions(mesh_card_albedo).x / MESH_CARD_PAGE_TEXELS;
103
- let stored = index_to_grid2d(card_set.page_base + page, tiles_per_row) * MESH_CARD_PAGE_TEXELS + texel;
104
-
105
- textureStore(mesh_card_albedo, stored, textureLoad(mesh_card_raster_albedo, drawn, 0));
106
- textureStore(mesh_card_emissive, stored, textureLoad(mesh_card_raster_emissive, drawn, 0));
107
- }
108
- `, [
109
- MESH_CARD_SET_STRUCT.declaration_chunk,
110
- chunk_mesh_cards,
111
- chunk_index_to_grid2d,
112
- ]),
113
- });
@@ -1,30 +0,0 @@
1
- /**
2
- * @type {WebGPUStruct}
3
- */
4
- export const MESH_CARDS_SPLIT_SETTINGS: WebGPUStruct;
5
- /**
6
- * Card placement, step 2 (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a direction runs its
7
- * greedy search. The direction starts with one card over the whole grid, its outer projection, and
8
- * each split takes the layer that newly covers the most run starts.
9
- *
10
- * Within a direction the cards partition the layers. A run start (m, z) lies in the card whose
11
- * layers hold z, and is covered when that card's near face is at or before m. A split of card
12
- * [k₀, k₁) at layer s gives the far part [s, k₁), which newly covers the uncovered run starts with
13
- * k₀ < m ≤ s ≤ z < k₁. The near part keeps its own, so coverage never shrinks. That count is a
14
- * rectangle of the (m, z) histogram, read from its 2-D prefix sums in four loads.
15
- *
16
- * A direction's gains never grow from one split to the next, and splits along one direction leave
17
- * the others' gains alone. Merging the six directions' sequences by gain is therefore the greedy
18
- * search over all six, which the merge does. The splits are written in the order taken, (gain,
19
- * layer) each, MESH_CARD_SPLITS_MAX at most; the first gain of 0 ends the sequence.
20
- *
21
- * Runs on the device as the bake does, a pass with nothing to wait on, though the six threads do
22
- * work a frame's passes must not: the prefix sums over every (m, z) of the direction, and up to 26
23
- * scans of its layers. It runs once for each geometry that turns resident.
24
- *
25
- * @type {ComputeShader}
26
- */
27
- export const shader_mesh_cards_split: ComputeShader;
28
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
29
- import { ComputeShader } from "../../../shader/ComputeShader.js";
30
- //# sourceMappingURL=shader_mesh_cards_split.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader_mesh_cards_split.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js"],"names":[],"mappings":"AAUA;;GAEG;AACH,wCAFU,YAAY,CAKO;AAU7B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,sCAFU,aAAa,CAmGpB;6BA7I0B,sCAAsC;8BAHrC,kCAAkC"}