@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
@@ -0,0 +1,140 @@
1
+ import { BinaryBuffer } from "../../../../../core/binary/BinaryBuffer.js";
2
+ import { MESH_SDF_BRICK_TEXEL_COUNT, MESH_SDF_EMPTY, MESH_SDF_EMPTY_INSIDE } from "../MESH_SDF.js";
3
+ import { MESH_SURFACE_PLANE_BLOCK_WORDS, MESH_SURFACE_PRESENCE_BLOCK_WORDS } from "../surface/MESH_SURFACE_BLOCK.js";
4
+ import { ModelCacheBundle, ModelCacheBundleCache, ModelCacheBundleField } from "./ModelCacheBundle.js";
5
+ import { MODEL_CACHE_BUNDLE_FORMAT_VERSION, MODEL_CACHE_BUNDLE_MAGIC } from "./MODEL_CACHE_BUNDLE.js";
6
+
7
+ /**
8
+ * @param {BinaryBuffer} buffer
9
+ * @param {string} what
10
+ * @returns {Uint32Array}
11
+ */
12
+ function read_words(buffer, what) {
13
+ const length = buffer.readUint32();
14
+
15
+ if (4 * length > buffer.data.byteLength - buffer.position) {
16
+ throw new Error(`model cache bundle: ${what} runs past the end`);
17
+ }
18
+
19
+ const words = new Uint32Array(length);
20
+
21
+ buffer.readUint32Array(words, 0, length);
22
+
23
+ return words;
24
+ }
25
+
26
+ /**
27
+ * A bundle from bytes (`MODEL_CACHE_BUNDLE.js`). Throws on a file of another kind, one that needs a
28
+ * newer reader, or one whose references or lengths do not hold together.
29
+ *
30
+ * @param {Uint8Array} bytes
31
+ * @returns {ModelCacheBundle}
32
+ */
33
+ export function model_cache_bundle_read(bytes) {
34
+ const buffer = new BinaryBuffer();
35
+
36
+ buffer.fromArrayBuffer(bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength));
37
+
38
+ if (buffer.readUint32() !== MODEL_CACHE_BUNDLE_MAGIC) {
39
+ throw new Error("model cache bundle: not a bundle");
40
+ }
41
+
42
+ buffer.readUint16();
43
+
44
+ const needs = buffer.readUint16();
45
+
46
+ if (needs > MODEL_CACHE_BUNDLE_FORMAT_VERSION) {
47
+ throw new Error(`model cache bundle: needs a reader of version ${needs}, this one is ${MODEL_CACHE_BUNDLE_FORMAT_VERSION}`);
48
+ }
49
+
50
+ const bundle = new ModelCacheBundle();
51
+
52
+ bundle.voxel_size = buffer.readFloat32();
53
+ bundle.max_bricks = buffer.readUint32();
54
+
55
+ const brick_count = buffer.readUint32();
56
+ const field_count = buffer.readUint32();
57
+ const cache_count = buffer.readUint32();
58
+
59
+ bundle.bricks = new Uint8Array(brick_count * MESH_SDF_BRICK_TEXEL_COUNT);
60
+ buffer.readBytes(bundle.bricks, 0, bundle.bricks.length);
61
+
62
+ for (let f = 0; f < field_count; f++) {
63
+ const field = new ModelCacheBundleField();
64
+
65
+ for (let i = 0; i < 3; i++) {
66
+ field.origin[i] = buffer.readFloat32();
67
+ }
68
+
69
+ field.voxel = buffer.readFloat32();
70
+
71
+ for (let i = 0; i < 3; i++) {
72
+ field.bricks[i] = buffer.readUint32();
73
+ }
74
+
75
+ field.level_count = buffer.readUint32();
76
+ field.two_sided = buffer.readUint32();
77
+ field.entries = read_words(buffer, "a field's entries");
78
+ field.numbered = read_words(buffer, "a field's numbering");
79
+ field.blocks = buffer.readUint32();
80
+ field.table = read_words(buffer, "a field's table");
81
+
82
+ let stored = 0;
83
+
84
+ for (let i = 0; i < field.entries.length; i++) {
85
+ const entry = field.entries[i];
86
+
87
+ if (entry === MESH_SDF_EMPTY || entry === MESH_SDF_EMPTY_INSIDE) {
88
+ continue;
89
+ }
90
+
91
+ if (entry >= brick_count) {
92
+ throw new Error(`model cache bundle: field ${f} names brick ${entry} of ${brick_count}`);
93
+ }
94
+
95
+ stored++;
96
+ }
97
+
98
+ if (field.numbered.length !== stored || field.numbered.some(entry => entry >= field.entries.length)) {
99
+ throw new Error(`model cache bundle: field ${f}'s numbering does not name its ${stored} stored bricks`);
100
+ }
101
+
102
+ if (field.table.length !== 0 && field.table.length !== stored) {
103
+ throw new Error(`model cache bundle: field ${f}'s table holds ${field.table.length} words for ${stored} stored bricks`);
104
+ }
105
+
106
+ bundle.fields.push(field);
107
+ }
108
+
109
+ for (let c = 0; c < cache_count; c++) {
110
+ const cache = new ModelCacheBundleCache();
111
+
112
+ cache.field = buffer.readUint32();
113
+ cache.texels = buffer.readUint32();
114
+
115
+ for (let p = 0; p < 3; p++) {
116
+ cache.codes[p] = buffer.readUint32();
117
+ }
118
+
119
+ cache.presence = read_words(buffer, "a cache's presence");
120
+
121
+ for (let p = 0; p < 3; p++) {
122
+ cache.planes[p] = read_words(buffer, "a cache's plane");
123
+ }
124
+
125
+ if (cache.field >= field_count) {
126
+ throw new Error(`model cache bundle: cache ${c} names field ${cache.field} of ${field_count}`);
127
+ }
128
+
129
+ const blocks = cache.texels === 0 ? 0 : bundle.fields[cache.field].blocks;
130
+
131
+ if (cache.presence.length !== blocks * MESH_SURFACE_PRESENCE_BLOCK_WORDS
132
+ || cache.planes.some((words, p) => words.length !== ((cache.texels & (1 << p)) === 0 ? 0 : blocks * MESH_SURFACE_PLANE_BLOCK_WORDS[p]))) {
133
+ throw new Error(`model cache bundle: cache ${c}'s blocks are not its field's ${blocks}`);
134
+ }
135
+
136
+ bundle.caches.push(cache);
137
+ }
138
+
139
+ return bundle;
140
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A bundle as bytes (`MODEL_CACHE_BUNDLE.js`).
3
+ *
4
+ * @param {import("./ModelCacheBundle.js").ModelCacheBundle} bundle
5
+ * @returns {Uint8Array}
6
+ */
7
+ export function model_cache_bundle_write(bundle: import("./ModelCacheBundle.js").ModelCacheBundle): Uint8Array;
8
+ //# sourceMappingURL=model_cache_bundle_write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model_cache_bundle_write.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,iDAHW,OAAO,uBAAuB,EAAE,gBAAgB,GAC9C,UAAU,CAuDtB"}
@@ -0,0 +1,76 @@
1
+ import { BinaryBuffer } from "../../../../../core/binary/BinaryBuffer.js";
2
+ import {
3
+ MODEL_CACHE_BUNDLE_FORMAT_VERSION,
4
+ MODEL_CACHE_BUNDLE_MAGIC,
5
+ MODEL_CACHE_BUNDLE_MIN_READER_VERSION
6
+ } from "./MODEL_CACHE_BUNDLE.js";
7
+
8
+ /**
9
+ * @param {BinaryBuffer} buffer
10
+ * @param {Uint32Array} words
11
+ */
12
+ function write_words(buffer, words) {
13
+ buffer.writeUint32(words.length);
14
+ buffer.writeUint32Array(words, 0, words.length);
15
+ }
16
+
17
+ /**
18
+ * A bundle as bytes (`MODEL_CACHE_BUNDLE.js`).
19
+ *
20
+ * @param {import("./ModelCacheBundle.js").ModelCacheBundle} bundle
21
+ * @returns {Uint8Array}
22
+ */
23
+ export function model_cache_bundle_write(bundle) {
24
+ const buffer = new BinaryBuffer();
25
+
26
+ buffer.writeUint32(MODEL_CACHE_BUNDLE_MAGIC);
27
+ buffer.writeUint16(MODEL_CACHE_BUNDLE_FORMAT_VERSION);
28
+ buffer.writeUint16(MODEL_CACHE_BUNDLE_MIN_READER_VERSION);
29
+ buffer.writeFloat32(bundle.voxel_size);
30
+ buffer.writeUint32(bundle.max_bricks);
31
+ buffer.writeUint32(bundle.brick_count);
32
+ buffer.writeUint32(bundle.fields.length);
33
+ buffer.writeUint32(bundle.caches.length);
34
+
35
+ buffer.writeBytes(bundle.bricks, 0, bundle.bricks.length);
36
+
37
+ for (const field of bundle.fields) {
38
+ for (let i = 0; i < 3; i++) {
39
+ buffer.writeFloat32(field.origin[i]);
40
+ }
41
+
42
+ buffer.writeFloat32(field.voxel);
43
+
44
+ for (let i = 0; i < 3; i++) {
45
+ buffer.writeUint32(field.bricks[i]);
46
+ }
47
+
48
+ buffer.writeUint32(field.level_count);
49
+ buffer.writeUint32(field.two_sided);
50
+
51
+ write_words(buffer, field.entries);
52
+ write_words(buffer, field.numbered);
53
+
54
+ buffer.writeUint32(field.blocks);
55
+ write_words(buffer, field.table);
56
+ }
57
+
58
+ for (const cache of bundle.caches) {
59
+ buffer.writeUint32(cache.field);
60
+ buffer.writeUint32(cache.texels);
61
+
62
+ for (let p = 0; p < 3; p++) {
63
+ buffer.writeUint32(cache.codes[p]);
64
+ }
65
+
66
+ write_words(buffer, cache.presence);
67
+
68
+ for (let p = 0; p < 3; p++) {
69
+ write_words(buffer, cache.planes[p]);
70
+ }
71
+ }
72
+
73
+ buffer.trim();
74
+
75
+ return new Uint8Array(buffer.data);
76
+ }
@@ -7,6 +7,9 @@
7
7
  * fn mesh_sdf_level_bricks(header: MeshSDF, level: u32) -> vec3<u32>
8
8
  * fn mesh_sdf_level_offset(header: MeshSDF, level: u32) -> u32 // the level's first entry
9
9
  * fn mesh_sdf_level_voxel(header: MeshSDF, level: u32) -> f32
10
+ * fn mesh_sdf_brick_count(header: MeshSDF) -> u32 // every level's bricks
11
+ * fn mesh_sdf_numbers(header: MeshSDF) -> u32 // the first brick's number
12
+ * fn mesh_sdf_numbered(header: MeshSDF) -> u32 // the brick numbered 0
10
13
  * fn mesh_sdf_brick_of(header: MeshSDF, brick: u32) -> vec4<u32> // level, then x, y, z
11
14
  * fn mesh_sdf_brick_corner(header: MeshSDF, brick: vec4<u32>) -> vec3<f32> // texel 0's point
12
15
  * fn mesh_sdf_encode(distance: f32, voxel: f32) -> f32 // saturate(d / 2R + 0.5)
@@ -14,6 +17,12 @@
14
17
  * fn mesh_sdf_entry_holds_slot(entry: u32) -> bool // not EMPTY, on either side
15
18
  * ```
16
19
  *
20
+ * A geometry's range in the indirection, n being its brick count: its stored count at `indirection - 2`,
21
+ * its pending word at `indirection - 1` (`MESH_SDF_BAKE.js`), its n entries from `indirection` in the
22
+ * layout's order, then each brick's number among the bricks given a slot ({@link MESH_SDF_UNNUMBERED}
23
+ * for one with none) from `mesh_sdf_numbers`, then the bricks by number from `mesh_sdf_numbered`, as
24
+ * many as the stored count says.
25
+ *
17
26
  * @type {CodeChunk}
18
27
  */
19
28
  export const chunk_mesh_sdf: CodeChunk;
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_mesh_sdf.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;GAiBG;AACH,6BAFU,SAAS,CAoFZ;0BA/GmB,oCAAoC"}
1
+ {"version":3,"file":"chunk_mesh_sdf.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,6BAFU,SAAS,CAiGZ;0BAtImB,oCAAoC"}
@@ -5,6 +5,7 @@ import {
5
5
  MESH_SDF_BRICK_VOXELS,
6
6
  MESH_SDF_EMPTY,
7
7
  MESH_SDF_EMPTY_INSIDE,
8
+ MESH_SDF_UNNUMBERED,
8
9
  MeshSDFState
9
10
  } from "./MESH_SDF.js";
10
11
  import { MESH_SDF_STRUCT } from "./MESH_SDF_STRUCT.js";
@@ -18,6 +19,9 @@ import { MESH_SDF_STRUCT } from "./MESH_SDF_STRUCT.js";
18
19
  * fn mesh_sdf_level_bricks(header: MeshSDF, level: u32) -> vec3<u32>
19
20
  * fn mesh_sdf_level_offset(header: MeshSDF, level: u32) -> u32 // the level's first entry
20
21
  * fn mesh_sdf_level_voxel(header: MeshSDF, level: u32) -> f32
22
+ * fn mesh_sdf_brick_count(header: MeshSDF) -> u32 // every level's bricks
23
+ * fn mesh_sdf_numbers(header: MeshSDF) -> u32 // the first brick's number
24
+ * fn mesh_sdf_numbered(header: MeshSDF) -> u32 // the brick numbered 0
21
25
  * fn mesh_sdf_brick_of(header: MeshSDF, brick: u32) -> vec4<u32> // level, then x, y, z
22
26
  * fn mesh_sdf_brick_corner(header: MeshSDF, brick: vec4<u32>) -> vec3<f32> // texel 0's point
23
27
  * fn mesh_sdf_encode(distance: f32, voxel: f32) -> f32 // saturate(d / 2R + 0.5)
@@ -25,6 +29,12 @@ import { MESH_SDF_STRUCT } from "./MESH_SDF_STRUCT.js";
25
29
  * fn mesh_sdf_entry_holds_slot(entry: u32) -> bool // not EMPTY, on either side
26
30
  * ```
27
31
  *
32
+ * A geometry's range in the indirection, n being its brick count: its stored count at `indirection - 2`,
33
+ * its pending word at `indirection - 1` (`MESH_SDF_BAKE.js`), its n entries from `indirection` in the
34
+ * layout's order, then each brick's number among the bricks given a slot ({@link MESH_SDF_UNNUMBERED}
35
+ * for one with none) from `mesh_sdf_numbers`, then the bricks by number from `mesh_sdf_numbered`, as
36
+ * many as the stored count says.
37
+ *
28
38
  * @type {CodeChunk}
29
39
  */
30
40
  export const chunk_mesh_sdf = CodeChunk.from(
@@ -35,6 +45,7 @@ const MESH_SDF_BRICK_TEXELS = ${MESH_SDF_BRICK_TEXELS}u;
35
45
  const MESH_SDF_BAND_VOXELS = ${MESH_SDF_BAND_VOXELS}.0;
36
46
  const MESH_SDF_EMPTY = ${MESH_SDF_EMPTY}u;
37
47
  const MESH_SDF_EMPTY_INSIDE = ${MESH_SDF_EMPTY_INSIDE}u;
48
+ const MESH_SDF_UNNUMBERED = ${MESH_SDF_UNNUMBERED}u;
38
49
  const MESH_SDF_STATE_NONE = ${MeshSDFState.None}u;
39
50
  const MESH_SDF_STATE_BAKING = ${MeshSDFState.Baking}u;
40
51
  const MESH_SDF_STATE_RESIDENT = ${MeshSDFState.Resident}u;
@@ -63,6 +74,18 @@ fn mesh_sdf_level_voxel(header: ${MESH_SDF_STRUCT.wgsl_ref}, level: u32) -> f32
63
74
  return header.voxel * f32(1u << level);
64
75
  }
65
76
 
77
+ fn mesh_sdf_brick_count(header: ${MESH_SDF_STRUCT.wgsl_ref}) -> u32 {
78
+ return mesh_sdf_level_offset(header, header.level_count) - header.indirection;
79
+ }
80
+
81
+ fn mesh_sdf_numbers(header: ${MESH_SDF_STRUCT.wgsl_ref}) -> u32 {
82
+ return header.indirection + mesh_sdf_brick_count(header);
83
+ }
84
+
85
+ fn mesh_sdf_numbered(header: ${MESH_SDF_STRUCT.wgsl_ref}) -> u32 {
86
+ return header.indirection + 2u * mesh_sdf_brick_count(header);
87
+ }
88
+
66
89
  fn mesh_sdf_brick_of(header: ${MESH_SDF_STRUCT.wgsl_ref}, brick: u32) -> vec4<u32> {
67
90
  var rest = brick;
68
91
  var level = 0u;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A texel's term of its brick's content key (`MESH_SDF_BRICK_KEY.js`): the key is the sum of its
3
+ * texels' terms. The WGSL twin of `mesh_sdf_brick_key`.
4
+ *
5
+ * ```wgsl
6
+ * fn mesh_sdf_brick_key_term(texel: u32, byte: u32) -> u32 // texel x + 8y + 64z
7
+ * ```
8
+ *
9
+ * @type {CodeChunk}
10
+ */
11
+ export const chunk_mesh_sdf_brick_key: CodeChunk;
12
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
13
+ //# sourceMappingURL=chunk_mesh_sdf_brick_key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_mesh_sdf_brick_key.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,uCAFU,SAAS,CAUZ;0BArBmB,oCAAoC"}
@@ -0,0 +1,23 @@
1
+ import { chunk_hash_lowbias32 } from "../../shader/chunk/random/chunk_hash_lowbias32.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+ import { MESH_SDF_BRICK_KEY_SEED } from "./MESH_SDF_BRICK_KEY.js";
4
+
5
+ /**
6
+ * A texel's term of its brick's content key (`MESH_SDF_BRICK_KEY.js`): the key is the sum of its
7
+ * texels' terms. The WGSL twin of `mesh_sdf_brick_key`.
8
+ *
9
+ * ```wgsl
10
+ * fn mesh_sdf_brick_key_term(texel: u32, byte: u32) -> u32 // texel x + 8y + 64z
11
+ * ```
12
+ *
13
+ * @type {CodeChunk}
14
+ */
15
+ export const chunk_mesh_sdf_brick_key = CodeChunk.from(
16
+ //language=WGSL
17
+ `
18
+ fn mesh_sdf_brick_key_term(texel: u32, byte: u32) -> u32 {
19
+ return hash_lowbias32(((texel << 8u) | byte) ^ 0x${MESH_SDF_BRICK_KEY_SEED.toString(16)}u);
20
+ }
21
+ `, [
22
+ chunk_hash_lowbias32,
23
+ ]);
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Model Surface Caches: one (geometry, material) pair's surface material (`SURFACE_MATERIAL.js`) on its
3
+ * geometry's field, by cache id, the storage of which {@link GPUGeometrySDFManager} keeps beside the
4
+ * fields.
5
+ *
6
+ * - **Blocks.** A field's bricks are surveyed once (`MESH_SURFACE_BAKE.js`): a brick keeps each of its
7
+ * eight 4³ blocks (`MESH_SURFACE_BLOCK.js`) some texel of which can hold surface, numbered in the
8
+ * geometry's block table, a word a brick, and the count read back. Every cache of the geometry keeps
9
+ * its blocks by those numbers.
10
+ * - **What a cache keeps** follows its material and its geometry (`mesh_surface_channels`): each plane
11
+ * that varies over the surface keeps its blocks, coded, and each other plane only its code in the
12
+ * record, the value every texel takes. A cache that keeps any plane keeps a block of presence for each
13
+ * block: which texels a bake found surface under. A cache that keeps no plane is never baked.
14
+ * - **Storage** is one buffer of words, `mesh_surface_data`, for the tables and for each cache's run of
15
+ * blocks in its presence and each plane it keeps, each run its own allocation. The record
16
+ * (`MESH_SURFACE_STRUCT`) is written when the runs are given.
17
+ *
18
+ * **Lifetime.** {@link acquire} makes a cache for a pair and {@link release} gives it back; the caller
19
+ * keeps one per pair. A cache of an aliased geometry ({@link alias}) is its source's, baked from the
20
+ * source's triangles. A cache waits until its geometry's field is resident ({@link set_layout}) and,
21
+ * when it keeps a plane, surveyed ({@link set_blocks}); it is then baked, and turns resident on the frame
22
+ * its last brick is recorded: the bake's writes come before any later pass reads it. Every bake recorded
23
+ * in full sends {@link onBaked}, the first and each one after. A field that goes ({@link drop_layout})
24
+ * withdraws its caches ({@link onWithdrawn}) back to waiting.
25
+ *
26
+ * **A frame** ({@link graph_bake}) takes at most `budget` bricks: surveys first, then first bakes in the
27
+ * order they were asked for, then bakes again in the order queued. A bake is a thread a texel of each
28
+ * brick, then a workgroup a texel that holds surface, then a workgroup a block. A survey's or a bake's
29
+ * bricks may span frames. {@link recapture} takes a cache's material as it is now: a resident cache
30
+ * keeping the same planes is queued again and reads its last bake until the new one is done, a cache
31
+ * whose bake is under way starts it again, and one keeping other planes than before is withdrawn and
32
+ * laid out anew. The rays read the geometry's BLAS and the material's resident row: what reads a cache
33
+ * needs neither.
34
+ */
35
+ export class GPUMeshSurfaceCaches {
36
+ /**
37
+ * @param {GPUDevice} device
38
+ */
39
+ constructor(device: GPUDevice);
40
+ /**
41
+ * Sent with a cache id each time a bake of it is recorded in full, its first and each one after:
42
+ * what was taken from its last one is to be taken again.
43
+ * @type {Signal<number>}
44
+ */
45
+ onBaked: any;
46
+ /**
47
+ * Sent with a resident cache's id when what it holds goes: its field went, or its material now
48
+ * varies in other planes. It is baked again.
49
+ * @type {Signal<number>}
50
+ */
51
+ onWithdrawn: any;
52
+ /**
53
+ * Caches given out: acquired and not yet released.
54
+ * @returns {number}
55
+ */
56
+ get count(): number;
57
+ /**
58
+ * Caches readers may use.
59
+ * @returns {number}
60
+ */
61
+ get resident_count(): number;
62
+ /**
63
+ * Bricks baked since this was made, every bake's.
64
+ * @returns {number}
65
+ */
66
+ get bricks_baked(): number;
67
+ /**
68
+ * Whether a frame has anything to do: bricks to survey or bake, or caches turned resident with
69
+ * nothing to bake, still to be announced.
70
+ * @returns {boolean}
71
+ */
72
+ get has_pending_bake(): boolean;
73
+ /**
74
+ * Whether readers may use the cache: baked at least once, and its field still there.
75
+ *
76
+ * @param {number} id
77
+ * @returns {boolean}
78
+ */
79
+ is_resident(id: number): boolean;
80
+ /**
81
+ * The cache's geometry id: the source's, for an aliased geometry.
82
+ *
83
+ * @param {number} id
84
+ * @returns {number}
85
+ */
86
+ geometry_of(id: number): number;
87
+ /**
88
+ * The material the cache was acquired for: what a bundle exported with it names it by, to offer it
89
+ * back (`GPUGeometrySDFManager.upload_bundle`).
90
+ *
91
+ * @param {number} id
92
+ * @returns {ShadeMaterial}
93
+ */
94
+ material_of(id: number): ShadeMaterial;
95
+ /**
96
+ * The blocks a surveyed field's bricks keep, or undefined before its survey is read back.
97
+ *
98
+ * @param {number} geometry
99
+ * @returns {number|undefined}
100
+ */
101
+ blocks_of(geometry: number): number | undefined;
102
+ /**
103
+ * Every cache's record, by id. Replaced when it grows; take it each frame.
104
+ * @returns {GPUBuffer}
105
+ */
106
+ get records(): GPUBuffer;
107
+ /**
108
+ * The caches' words: the block tables and the caches' blocks. Replaced when it grows; take it each
109
+ * frame.
110
+ * @returns {GPUBuffer}
111
+ */
112
+ get data(): GPUBuffer;
113
+ /**
114
+ * Put what the caches' readers (`chunk_mesh_surface_sample`) take into their bindings, under the
115
+ * names they take. The records and the words are replaced as they grow: take them each frame.
116
+ *
117
+ * @param {Object} bindings
118
+ * @returns {Object} bindings
119
+ */
120
+ write_bindings(bindings: any): any;
121
+ /**
122
+ * A cache for a pair. The caller keeps one per pair.
123
+ *
124
+ * @param {number} geometry the geometry id the pair draws; an aliased one's cache is its source's ({@link alias})
125
+ * @param {ShadeMaterial} material
126
+ * @returns {number} cache id
127
+ */
128
+ acquire(geometry: number, material: ShadeMaterial): number;
129
+ /**
130
+ * @param {number} id
131
+ */
132
+ release(id: number): void;
133
+ /**
134
+ * The cache's material has changed (its version moved): take it as it is now. A cache that keeps the
135
+ * same planes as before is baked again, and a resident one reads its last bake until the new one is
136
+ * done; one that keeps none has its record's codes rewritten and is announced at once. A cache that
137
+ * keeps other planes than before is withdrawn and laid out anew.
138
+ *
139
+ * @param {number} id
140
+ */
141
+ recapture(id: number): void;
142
+ /**
143
+ * A geometry's field is resident, having stored `stored` bricks: its caches that keep no plane are
144
+ * laid out at once, and the first that keeps one has its bricks queued to be surveyed.
145
+ *
146
+ * @param {number} geometry
147
+ * @param {number} stored
148
+ * @param {boolean} colored whether the geometry has vertices of a color other than white, which the
149
+ * diffuse albedo varies with (`meshlet_batch_colored`)
150
+ */
151
+ set_layout(geometry: number, stored: number, colored: boolean): void;
152
+ /**
153
+ * A geometry's field is resident, taken from a bundle (`ModelCacheBundle`) with the survey its
154
+ * caches were laid out by: `blocks` blocks numbered in `table`, a word a stored brick, or no table
155
+ * when no cache of it kept a plane, which leaves a cache that keeps one to have the field surveyed.
156
+ * Each of `provisions` offers a cache of the bundle to the geometry's cache of its material, for as
157
+ * long as this field is the geometry's: a cache whose material makes it keep the planes the bundle's
158
+ * did, with the same codes, takes the bundle's blocks and is resident without a bake; any other is
159
+ * baked as `set_layout` would have it.
160
+ *
161
+ * @param {number} geometry
162
+ * @param {number} stored
163
+ * @param {boolean} colored whether the geometry has vertices of a color other than white
164
+ * @param {number} blocks
165
+ * @param {Uint32Array} table `stored` words, or none
166
+ * @param {{material: ShadeMaterial, cache: ModelCacheBundleCache}[]} provisions
167
+ */
168
+ adopt_layout(geometry: number, stored: number, colored: boolean, blocks: number, table: Uint32Array, provisions: {
169
+ material: ShadeMaterial;
170
+ cache: ModelCacheBundleCache;
171
+ }[]): void;
172
+ /**
173
+ * The block table of a geometry's field as the storage holds it, read back whole as `words`: its
174
+ * blocks and words, or 0 and none before a survey.
175
+ *
176
+ * @param {number} geometry
177
+ * @param {Uint32Array} words `data` read back
178
+ * @returns {{blocks: number, table: Uint32Array}}
179
+ */
180
+ export_table(geometry: number, words: Uint32Array): {
181
+ blocks: number;
182
+ table: Uint32Array;
183
+ };
184
+ /**
185
+ * A resident cache as a bundle's cache laid out by bundle field `field`, its blocks as the storage
186
+ * holds them, read back whole as `words`.
187
+ *
188
+ * @param {number} id
189
+ * @param {number} field
190
+ * @param {Uint32Array} words `data` read back
191
+ * @param {ModelCacheBundleCache} out
192
+ * @returns {ModelCacheBundleCache} out
193
+ */
194
+ export_cache(id: number, field: number, words: Uint32Array, out: ModelCacheBundleCache): ModelCacheBundleCache;
195
+ /**
196
+ * A geometry's survey is read back: its field's bricks keep `blocks` blocks, numbered in its table.
197
+ * Its caches that keep a plane are laid out.
198
+ *
199
+ * @param {number} geometry
200
+ * @param {number} blocks
201
+ */
202
+ set_blocks(geometry: number, blocks: number): void;
203
+ /**
204
+ * A geometry's field is gone: its caches wait for the next.
205
+ *
206
+ * @param {number} geometry
207
+ */
208
+ drop_layout(geometry: number): void;
209
+ /**
210
+ * The geometry `clone` is drawn as `source` from here on: its caches, and those acquired for it after,
211
+ * follow `source`'s field and are baked from `source`'s triangles, the two being in one local space.
212
+ * A cache of `clone` waits for `source`'s field, as one acquired for `source` does.
213
+ *
214
+ * @param {number} clone
215
+ * @param {number} source
216
+ */
217
+ alias(clone: number, source: number): void;
218
+ /**
219
+ * `clone` is no longer aliased: caches acquired for it from here on follow its own field. Those it has
220
+ * keep following its source's until they are given back.
221
+ *
222
+ * @param {number} clone
223
+ */
224
+ unalias(clone: number): void;
225
+ /**
226
+ * Record the frame's surveys and bake: at most `budget` bricks. Records nothing when nothing waits.
227
+ * Caches whose bake this completes are announced through {@link onBaked}, resident from here; the
228
+ * surveys it completes are read back.
229
+ *
230
+ * @param {Object} options
231
+ * @param {FrameGraph} options.graph
232
+ * @param {number} options.budget bricks surveyed and baked at most, `surface_bake_budget`: a frame
233
+ * lists every texel of its bricks in one storage binding
234
+ * @param {number} options.arena graph handle of the fields' indirection, as the frame's bake left it
235
+ * @param {GPUBuffer} options.headers the fields' headers
236
+ * @param {GPUTextureView} options.field_atlas the fields' atlas
237
+ * @param {GPUResidentMaterialContext} options.materials what the trace shades with: each baked
238
+ * material is made resident, and the rows committed, before the trace is recorded
239
+ * @param {Object} options.blas the geometry bindings `ray_query_blas_nearest` reads
240
+ */
241
+ graph_bake({ graph, budget, arena, headers, field_atlas, materials, blas }: {
242
+ graph: FrameGraph;
243
+ budget: number;
244
+ arena: number;
245
+ headers: GPUBuffer;
246
+ field_atlas: GPUTextureView;
247
+ materials: GPUResidentMaterialContext;
248
+ blas: any;
249
+ }): void;
250
+ /**
251
+ * @returns {number} bytes
252
+ */
253
+ get gpu_memory_usage(): number;
254
+ destroy(): void;
255
+ #private;
256
+ }
257
+ export type FrameGraph = import("../../../../../engine/graphics/render/frame_graph/FrameGraph.js").FrameGraph;
258
+ export type ShadeMaterial = import("../../../material/ShadeMaterial.js").ShadeMaterial;
259
+ export type GPUResidentMaterialContext = import("../../../material/resident/GPUResidentMaterialContext.js").GPUResidentMaterialContext;
260
+ export type Allocation = import("../../../../../core/binary/allocator/OffsetAllocator.js").Allocation;
261
+ export type ModelCacheBundleCache = import("../bundle/ModelCacheBundle.js").ModelCacheBundleCache;
262
+ //# sourceMappingURL=GPUMeshSurfaceCaches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GPUMeshSurfaceCaches.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js"],"names":[],"mappings":"AAuHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH;IAkNI;;OAEG;IACH,+BAIC;IAlND;;;;OAIG;IACH,aAAuB;IAEvB;;;;OAIG;IACH,iBAA2B;IAwM3B;;;OAGG;IACH,oBAEC;IAED;;;OAGG;IACH,6BAEC;IAED;;;OAGG;IACH,2BAEC;IAED;;;;OAIG;IACH,gCAKC;IAED;;;;;OAKG;IACH,gBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;;;;OAKG;IACH,gBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,GACJ,aAAa,CAIzB;IAED;;;;;OAKG;IACH,oBAHW,MAAM,GACJ,MAAM,GAAC,SAAS,CAI5B;IAED;;;OAGG;IACH,yBAIC;IAED;;;;OAIG;IACH,sBAIC;IAED;;;;;;OAMG;IACH,mCAOC;IAED;;;;;;OAMG;IACH,kBAJW,MAAM,YACN,aAAa,GACX,MAAM,CAkClB;IAED;;OAEG;IACH,YAFW,MAAM,QA4BhB;IAED;;;;;;;OAOG;IACH,cAFW,MAAM,QAiDhB;IAED;;;;;;;;OAQG;IACH,qBALW,MAAM,UACN,MAAM,WACN,OAAO,QAuBjB;IAED;;;;;;;;;;;;;;;OAeG;IACH,uBAPW,MAAM,UACN,MAAM,WACN,OAAO,UACP,MAAM,SACN,WAAW,cACX;QAAC,QAAQ,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,qBAAqB,CAAA;KAAC,EAAE,QA+BnE;IA2CD;;;;;;;OAOG;IACH,uBAJW,MAAM,SACN,WAAW,GACT;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAC,CAWhD;IAED;;;;;;;;;OASG;IACH,iBANW,MAAM,SACN,MAAM,SACN,WAAW,OACX,qBAAqB,GACnB,qBAAqB,CAqBjC;IA6BD;;;;;;OAMG;IACH,qBAHW,MAAM,UACN,MAAM,QAWhB;IAED;;;;OAIG;IACH,sBAFW,MAAM,QA0ChB;IAED;;;;;;;OAOG;IACH,aAHW,MAAM,UACN,MAAM,QAoChB;IAED;;;;;OAKG;IACH,eAFW,MAAM,QAIhB;IA8bD;;;;;;;;;;;;;;;OAeG;IACH;QAV+B,KAAK,EAAzB,UAAU;QACM,MAAM,EAAtB,MAAM;QAEU,KAAK,EAArB,MAAM;QACa,OAAO;QACF,WAAW;QACC,SAAS,EAA7C,0BAA0B;QAEV,IAAI;aAiE9B;IA6UD;;OAEG;IACH,+BAUC;IAED,gBAgBC;;CACJ;yBApvDY,OAAO,iEAAiE,EAAE,UAAU;4BACpF,OAAO,oCAAoC,EAAE,aAAa;yCAC1D,OAAO,0DAA0D,EAAE,0BAA0B;yBAC7F,OAAO,yDAAyD,EAAE,UAAU;oCAC5E,OAAO,+BAA+B,EAAE,qBAAqB"}