@woosh/meep-engine 3.61.1 → 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 (474) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +1 -1
  3. package/src/engine/network/sim/SimActionExecutor.d.ts +4 -0
  4. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  5. package/src/engine/network/sim/SimActionExecutor.js +4 -0
  6. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  7. package/src/generation/foliage/material/foliage_atlas_cutout.d.ts.map +1 -1
  8. package/src/generation/foliage/material/foliage_atlas_cutout.js +21 -5
  9. package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -0
  10. package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
  11. package/src/generation/foliage/mesh/tree_cluster_representatives.js +178 -78
  12. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
  13. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +178 -97
  14. package/src/generation/foliage/skeleton/ShootLightField.d.ts +1 -0
  15. package/src/generation/foliage/skeleton/ShootLightField.d.ts.map +1 -1
  16. package/src/generation/foliage/skeleton/ShootLightField.js +88 -17
  17. package/src/generation/foliage/skeleton/ShootWoodHash.d.ts +5 -2
  18. package/src/generation/foliage/skeleton/ShootWoodHash.d.ts.map +1 -1
  19. package/src/generation/foliage/skeleton/ShootWoodHash.js +191 -25
  20. package/src/shade/playground/probe_clipmap/README.md +3 -4
  21. package/src/shade/playground/probe_clipmap/index.html +5 -13
  22. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  23. package/src/shade/playground/probe_clipmap/main.js +4 -5
  24. package/src/shade/playground/probe_clipmap_box/README.md +55 -0
  25. package/src/shade/playground/probe_clipmap_box/index.html +185 -0
  26. package/src/shade/playground/probe_clipmap_box/main.d.ts +8 -0
  27. package/src/shade/playground/probe_clipmap_box/main.d.ts.map +1 -0
  28. package/src/shade/playground/probe_clipmap_box/main.js +323 -0
  29. package/src/shade/playground/probe_clipmap_box/scene.d.ts +93 -0
  30. package/src/shade/playground/probe_clipmap_box/scene.d.ts.map +1 -0
  31. package/src/shade/playground/probe_clipmap_box/scene.js +256 -0
  32. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  33. package/src/shade/renderer/Renderer.js +56 -12
  34. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  35. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  36. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  37. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  38. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  39. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
  40. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
  41. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
  42. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
  43. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  44. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
  45. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
  46. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
  47. package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
  48. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
  49. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
  50. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
  51. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
  52. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
  53. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
  54. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
  55. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
  56. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
  57. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
  58. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
  59. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
  60. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
  61. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
  62. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
  63. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  64. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
  65. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
  66. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
  67. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
  68. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
  69. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
  70. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
  71. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
  72. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  73. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
  74. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
  75. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
  76. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
  77. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
  78. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
  79. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
  80. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
  81. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
  82. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
  83. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
  84. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
  85. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
  86. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
  87. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
  89. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
  90. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
  91. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
  92. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
  93. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
  94. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
  95. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
  96. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
  97. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
  98. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
  99. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
  100. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
  101. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
  102. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
  103. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
  104. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
  105. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
  106. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
  107. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
  108. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
  109. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
  110. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
  111. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
  112. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
  113. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
  114. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
  115. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
  116. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
  117. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
  118. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
  119. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
  120. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
  121. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
  122. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
  123. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
  124. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
  125. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
  126. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
  127. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
  128. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
  129. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
  130. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
  131. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
  132. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
  133. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
  134. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
  135. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
  136. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
  137. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
  138. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
  139. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
  140. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
  141. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
  142. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
  143. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
  144. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
  145. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
  146. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
  147. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
  148. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
  149. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
  150. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
  151. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
  152. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
  153. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
  154. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
  155. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
  156. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
  157. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
  158. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
  159. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
  160. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
  161. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
  162. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
  163. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
  164. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
  165. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
  167. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
  168. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
  170. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
  171. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
  172. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
  173. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
  174. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts +12 -0
  175. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts.map +1 -1
  176. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.js +49 -24
  177. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts +12 -0
  178. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts.map +1 -1
  179. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.js +50 -19
  180. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.d.ts.map +1 -1
  181. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.js +6 -2
  182. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -8
  183. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  184. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +89 -20
  185. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
  186. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  187. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
  188. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
  189. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  190. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
  191. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
  192. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
  193. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
  194. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
  195. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  196. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +49 -36
  197. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
  198. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  199. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
  200. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
  201. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  202. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
  203. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
  204. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  205. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
  206. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  207. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
  208. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
  209. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
  210. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
  211. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
  212. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
  213. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
  214. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
  215. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
  216. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
  217. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  218. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
  219. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
  220. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  221. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
  222. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
  223. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
  224. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
  225. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
  226. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
  227. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
  228. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
  229. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
  230. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
  231. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
  232. 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
  233. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
  234. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
  235. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
  236. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
  237. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
  238. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
  239. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
  240. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
  241. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
  242. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
  243. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
  244. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
  245. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
  246. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
  247. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
  248. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +23 -12
  249. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  250. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +72 -52
  251. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +32 -0
  252. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  253. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +37 -0
  254. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
  255. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
  256. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
  257. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
  258. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
  259. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
  260. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +55 -23
  261. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  262. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +134 -69
  263. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
  264. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
  265. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
  266. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
  267. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
  268. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
  269. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +4 -3
  270. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  271. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +19 -24
  272. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +2 -2
  273. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
  274. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +14 -19
  275. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
  276. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
  277. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
  278. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
  279. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
  280. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
  281. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +1 -1
  282. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
  283. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +8 -4
  284. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +1 -1
  285. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +5 -4
  286. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -1
  287. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +18 -23
  288. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +1 -1
  289. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -1
  290. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +4 -2
  291. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -1
  292. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +4 -6
  293. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
  294. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  295. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +9 -8
  296. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
  297. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
  298. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -3
  299. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
  300. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +14 -13
  301. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
  302. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  303. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
  304. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -6
  305. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  306. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +19 -21
  307. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  308. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +6 -2
  309. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
  310. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
  311. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
  312. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
  313. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
  314. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
  315. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
  316. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
  317. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
  318. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
  319. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
  320. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  321. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
  322. package/src/shade/renderer/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
  323. package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +5 -1
  324. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  325. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
  326. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  327. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
  328. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
  329. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
  330. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
  331. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
  332. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
  333. package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
  334. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
  335. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
  336. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
  337. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +26 -8
  338. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  339. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +170 -142
  340. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  341. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +1 -1
  342. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -1
  343. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +5 -8
  344. package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
  345. package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
  346. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts +15 -4
  347. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts.map +1 -1
  348. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js +33 -7
  349. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
  350. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
  351. package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
  352. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
  353. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
  354. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
  355. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
  356. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
  357. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
  358. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
  359. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
  360. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
  361. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
  362. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
  363. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
  364. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
  365. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
  366. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
  367. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts +40 -0
  368. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts.map +1 -0
  369. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.js +75 -0
  370. package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.d.ts.map +1 -1
  371. package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.js +3 -1
  372. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts +28 -0
  373. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts.map +1 -0
  374. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.js +41 -0
  375. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts +12 -0
  376. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts.map +1 -0
  377. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.js +24 -0
  378. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
  379. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
  380. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
  381. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
  382. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
  383. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
  384. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
  385. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
  386. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
  387. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
  388. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
  389. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
  390. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
  391. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
  392. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
  393. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
  394. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
  395. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
  396. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
  397. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
  398. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +3 -2
  399. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
  400. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +4 -0
  401. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +2 -5
  402. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
  403. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +3 -20
  404. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  405. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
  406. package/src/shade/renderer/water/chunk_water_gi.d.ts +1 -1
  407. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
  408. package/src/shade/renderer/water/chunk_water_gi.js +6 -8
  409. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  410. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  411. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  412. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +76 -32
  413. package/src/core/math/hash/squirrel3.d.ts +0 -17
  414. package/src/core/math/hash/squirrel3.d.ts.map +0 -1
  415. package/src/core/math/hash/squirrel3.js +0 -30
  416. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
  417. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
  418. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
  419. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
  420. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
  421. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
  422. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
  423. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
  424. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
  425. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
  426. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
  427. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
  428. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
  429. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
  430. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
  431. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
  432. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
  433. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
  434. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
  435. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
  436. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
  437. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
  438. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
  439. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
  440. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
  441. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
  442. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
  443. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
  444. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
  445. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
  446. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
  447. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
  448. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
  449. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
  450. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
  451. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
  452. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
  453. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
  454. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
  455. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
  456. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
  457. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
  458. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
  459. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
  460. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
  461. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
  462. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
  463. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
  464. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
  465. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
  466. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
  467. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
  468. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
  469. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
  470. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
  471. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
  472. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts +0 -12
  473. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts.map +0 -1
  474. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.js +0 -30
@@ -0,0 +1,294 @@
1
+ import { chunk_slot_stack } from "../../../gpu_primitive/slot_stack/chunk_slot_stack.js";
2
+ import { chunk_subgroup_atomic_add } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_add.js";
3
+ import { chunk_subgroup_atomic_load } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_load.js";
4
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
5
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
6
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
7
+ import { atomic_u32, u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
8
+ import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
9
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
10
+ import { chunk_tile_atlas_slot_origin } from "../../../texture/atlas/chunk_tile_atlas_slot_origin.js";
11
+ import { chunk_mesh_sdf_brick_key } from "../chunk_mesh_sdf_brick_key.js";
12
+ import { MESH_SDF_BRICK_TEXEL_COUNT } from "../MESH_SDF.js";
13
+ import { MESH_SDF_ATLAS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
14
+ import { chunk_mesh_sdf_bake, chunk_mesh_sdf_range_find, MESH_SDF_ARENA_RESOURCE, MESH_SDF_RANGES_RESOURCE } from "./chunk_mesh_sdf_bake.js";
15
+ import {
16
+ chunk_mesh_sdf_contents,
17
+ MESH_SDF_CONTENT_TABLE_RESOURCE,
18
+ MESH_SDF_CONTENTS_RESOURCE
19
+ } from "./chunk_mesh_sdf_contents.js";
20
+ import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
21
+
22
+ /** An uploaded brick's record in `mesh_sdf_upload_bricks`: its content key. */
23
+ const MESH_SDF_UPLOAD_KEY = 0;
24
+ /** An uploaded brick's record: the slot find found under its key, then the slot it takes. */
25
+ const MESH_SDF_UPLOAD_SLOT = 1;
26
+ /** An uploaded brick's record: 1 when its slot is fresh, which store fills. */
27
+ const MESH_SDF_UPLOAD_FRESH = 2;
28
+ /** An uploaded brick's record: its texels whose bytes differ from the slot's it found. */
29
+ const MESH_SDF_UPLOAD_DIFFERS = 3;
30
+
31
+ /**
32
+ * Words of an uploaded brick's record in `mesh_sdf_upload_bricks`: its content key, its slot, 1 when
33
+ * the slot is fresh, and its texels whose bytes differ from the slot's it found.
34
+ * @type {number}
35
+ */
36
+ export const MESH_SDF_UPLOAD_BRICK_WORDS = 4;
37
+
38
+ /**
39
+ * Words of an uploaded brick's bytes in `mesh_sdf_upload_bytes`, four bytes a word, texel t in byte
40
+ * `t % 4` of word `t / 4`.
41
+ * @type {number}
42
+ */
43
+ export const MESH_SDF_UPLOAD_BYTE_WORDS = MESH_SDF_BRICK_TEXEL_COUNT / 4;
44
+
45
+ /**
46
+ * @type {WebGPUStruct}
47
+ */
48
+ export const MESH_SDF_UPLOAD_SETTINGS = WebGPUStruct.from({
49
+ /** bricks uploaded */
50
+ brick_count: u32,
51
+ /** 1 when the bricks share slots with what is resident and are listed for later bricks to share */
52
+ deduplicate: u32,
53
+ /** slots the stack holds */
54
+ slot_capacity: u32,
55
+ /** runs in `mesh_sdf_ranges`: an uploaded field's entries each */
56
+ range_count: u32,
57
+ /** entries over every run */
58
+ entry_count: u32,
59
+ /** workgroups along x, the rest folded into y */
60
+ groups_x: u32,
61
+ }, "MeshSDFUploadSettings");
62
+
63
+ const resources = new ShaderResourceSetDescriptor();
64
+
65
+ resources.setImmediate("settings", MESH_SDF_UPLOAD_SETTINGS);
66
+
67
+ resources.createGroup()
68
+ .addStorageBuffer("mesh_sdf_upload_bytes", WebGPUArray.u32)
69
+ .addStorageBuffer("mesh_sdf_upload_bricks", WebGPUArray.from(atomic_u32), true)
70
+ .add(MESH_SDF_ARENA_RESOURCE)
71
+ .addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true)
72
+ .add(MESH_SDF_CONTENTS_RESOURCE)
73
+ .add(MESH_SDF_CONTENT_TABLE_RESOURCE)
74
+ .add(MESH_SDF_RANGES_RESOURCE)
75
+ .addStorageTexture("mesh_sdf_atlas_store", "r8unorm", "3d", "write-only");
76
+
77
+ const compare_resources = new ShaderResourceSetDescriptor();
78
+
79
+ compare_resources.setImmediate("settings", MESH_SDF_UPLOAD_SETTINGS);
80
+
81
+ compare_resources.createGroup()
82
+ .addStorageBuffer("mesh_sdf_upload_bytes", WebGPUArray.u32)
83
+ .addStorageBuffer("mesh_sdf_upload_bricks", WebGPUArray.from(atomic_u32), true)
84
+ .add(MESH_SDF_ATLAS_RESOURCE);
85
+
86
+ /**
87
+ * What the upload's passes share: the thread a workgroup and lane are, folded over y, and an
88
+ * uploaded brick's record and bytes. A pass a thread a texel has a workgroup's 64 lanes, and so each
89
+ * of its subgroups, of one brick, whose words it loads once a subgroup (`chunk_subgroup_atomic_load`).
90
+ */
91
+ const chunk_mesh_sdf_upload = CodeChunk.from(
92
+ //language=WGSL
93
+ `
94
+ const MESH_SDF_UPLOAD_BRICK_WORDS = ${MESH_SDF_UPLOAD_BRICK_WORDS}u;
95
+ const MESH_SDF_UPLOAD_BYTE_WORDS = ${MESH_SDF_UPLOAD_BYTE_WORDS}u;
96
+ const MESH_SDF_UPLOAD_KEY = ${MESH_SDF_UPLOAD_KEY}u;
97
+ const MESH_SDF_UPLOAD_SLOT = ${MESH_SDF_UPLOAD_SLOT}u;
98
+ const MESH_SDF_UPLOAD_FRESH = ${MESH_SDF_UPLOAD_FRESH}u;
99
+ const MESH_SDF_UPLOAD_DIFFERS = ${MESH_SDF_UPLOAD_DIFFERS}u;
100
+
101
+ fn mesh_sdf_upload_thread(workgroup_id: vec3<u32>, lane: u32) -> u32 {
102
+ return (workgroup_id.y * settings.groups_x + workgroup_id.x) * MESH_SDF_BAKE_WORKGROUP_SIZE + lane;
103
+ }
104
+
105
+ fn mesh_sdf_upload_byte(brick: u32, texel: u32) -> u32 {
106
+ return (mesh_sdf_upload_bytes[brick * MESH_SDF_UPLOAD_BYTE_WORDS + texel / 4u] >> (8u * (texel % 4u))) & 0xffu;
107
+ }
108
+
109
+ fn mesh_sdf_upload_key(brick: u32) -> u32 {
110
+ return atomicLoad(&mesh_sdf_upload_bricks[brick * MESH_SDF_UPLOAD_BRICK_WORDS + MESH_SDF_UPLOAD_KEY]);
111
+ }
112
+ `, [
113
+ chunk_mesh_sdf_bake,
114
+ ]);
115
+
116
+ /**
117
+ * @param {string} label
118
+ * @param {string} text the body of `main`, after `thread`
119
+ * @param {CodeChunk[]} dependencies
120
+ * @param {string} [before] code ahead of `main`
121
+ * @param {ShaderResourceSetDescriptor} [set]
122
+ * @returns {{body: CodeChunk, shader: ComputeShader}}
123
+ */
124
+ function upload_pass(label, text, dependencies, before = "", set = resources) {
125
+ const body = CodeChunk.from(
126
+ //language=WGSL
127
+ `
128
+ ${before}
129
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
130
+ fn main(
131
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
132
+ @builtin(local_invocation_index) lane: u32,
133
+ ) {
134
+ let thread = mesh_sdf_upload_thread(workgroup_id, lane);
135
+ ${text}
136
+ }
137
+ `, [chunk_mesh_sdf_upload, ...dependencies]);
138
+
139
+ return { body, shader: ComputeShader.from({ label, resources: set, body }) };
140
+ }
141
+
142
+ const key_pass = upload_pass("Mesh SDF Upload Key", `
143
+ if (thread >= settings.brick_count * ${MESH_SDF_BRICK_TEXEL_COUNT}u) {
144
+ return;
145
+ }
146
+
147
+ let brick = thread / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
148
+ let texel = thread % ${MESH_SDF_BRICK_TEXEL_COUNT}u;
149
+
150
+ subgroup_atomic_add_u32(&mesh_sdf_upload_bricks[brick * MESH_SDF_UPLOAD_BRICK_WORDS + MESH_SDF_UPLOAD_KEY], mesh_sdf_brick_key_term(texel, mesh_sdf_upload_byte(brick, texel)));
151
+ `, [chunk_mesh_sdf_brick_key, chunk_subgroup_atomic_add]);
152
+
153
+ /**
154
+ * Upload, first pass, key, when deduplicating: a thread a texel of the bricks uploaded, its term of
155
+ * its brick's content key added into the brick's record (`MESH_SDF_BRICK_KEY.js`), as the bake's key
156
+ * pass does.
157
+ *
158
+ * @type {ComputeShader}
159
+ */
160
+ export const shader_mesh_sdf_upload_key = key_pass.shader;
161
+
162
+ /**
163
+ * Upload, second pass, find, when deduplicating: a thread a brick uploaded, which finds a slot listed
164
+ * under its key (`chunk_mesh_sdf_contents`), or none.
165
+ *
166
+ * @type {ComputeShader}
167
+ */
168
+ export const shader_mesh_sdf_upload_find = upload_pass("Mesh SDF Upload Find", `
169
+ if (thread >= settings.brick_count) {
170
+ return;
171
+ }
172
+
173
+ atomicStore(&mesh_sdf_upload_bricks[thread * MESH_SDF_UPLOAD_BRICK_WORDS + MESH_SDF_UPLOAD_SLOT], mesh_sdf_content_find(mesh_sdf_upload_key(thread)));
174
+ `, [chunk_mesh_sdf_contents]).shader;
175
+
176
+ /**
177
+ * Upload, third pass, compare, when deduplicating: a thread a texel of the bricks uploaded. A brick
178
+ * that found a slot holds each of its bytes against the byte the slot holds there, and a texel that
179
+ * differs marks the brick's record.
180
+ *
181
+ * @type {ComputeShader}
182
+ */
183
+ export const shader_mesh_sdf_upload_compare = upload_pass("Mesh SDF Upload Compare", `
184
+ if (thread >= settings.brick_count * ${MESH_SDF_BRICK_TEXEL_COUNT}u) {
185
+ return;
186
+ }
187
+
188
+ let brick = thread / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
189
+ let texel = thread % ${MESH_SDF_BRICK_TEXEL_COUNT}u;
190
+ let word = brick * MESH_SDF_UPLOAD_BRICK_WORDS;
191
+ let slot = subgroup_atomic_load_u32(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_SLOT]);
192
+
193
+ if (slot == MESH_SDF_NO_CONTENT) {
194
+ return;
195
+ }
196
+
197
+ let t = MESH_SDF_BRICK_TEXELS;
198
+ let slots = textureDimensions(mesh_sdf_atlas) / t;
199
+ let origin = tile_atlas_slot_origin(slot, slots.xy, vec3<u32>(t));
200
+
201
+ // r8unorm reads a byte back as byte / 255
202
+ let held = u32(round(textureLoad(mesh_sdf_atlas, origin + vec3<u32>(texel % t, (texel / t) % t, texel / (t * t)), 0).x * 255.0));
203
+
204
+ subgroup_atomic_add_u32(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_DIFFERS], select(0u, 1u, mesh_sdf_upload_byte(brick, texel) != held));
205
+ `, [chunk_subgroup_atomic_add, chunk_subgroup_atomic_load, chunk_tile_atlas_slot_origin], "", compare_resources).shader;
206
+
207
+ /**
208
+ * Upload, fourth pass, fresh: a thread a brick uploaded. A brick that found a slot holding its bytes
209
+ * takes it; the rest pop a fresh slot, which store fills. Deduplicating, a brick that found no slot
210
+ * lists its own under its key, so later bricks of the same bytes share it, and one whose bytes differ
211
+ * from the slot's it found keeps its own listed nowhere: its key is another bytes' too. Two bricks of
212
+ * one key that found nothing are both listed, and a find takes the first. The host grew the atlas for
213
+ * every brick uploaded, so no pop here is refused.
214
+ *
215
+ * @type {ComputeShader}
216
+ */
217
+ export const shader_mesh_sdf_upload_fresh = upload_pass("Mesh SDF Upload Fresh", `
218
+ if (thread >= settings.brick_count) {
219
+ return;
220
+ }
221
+
222
+ let word = thread * MESH_SDF_UPLOAD_BRICK_WORDS;
223
+ let found = settings.deduplicate != 0u && atomicLoad(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_SLOT]) != MESH_SDF_NO_CONTENT;
224
+
225
+ if (found && atomicLoad(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_DIFFERS]) == 0u) {
226
+ return;
227
+ }
228
+
229
+ let slot = slot_stack_pop(&mesh_sdf_indirection[MESH_SDF_COUNTER_SLOTS], &mesh_sdf_slots, settings.slot_capacity);
230
+
231
+ if (settings.deduplicate != 0u && !found) {
232
+ mesh_sdf_content_list(slot, mesh_sdf_upload_key(thread));
233
+ }
234
+
235
+ atomicStore(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_SLOT], slot);
236
+ atomicStore(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_FRESH], 1u);
237
+ `, [chunk_mesh_sdf_contents, chunk_slot_stack]).shader;
238
+
239
+ /**
240
+ * Upload, fifth pass, store: a thread a texel of the bricks uploaded, a fresh brick's byte into its
241
+ * slot.
242
+ *
243
+ * @type {ComputeShader}
244
+ */
245
+ export const shader_mesh_sdf_upload_store = upload_pass("Mesh SDF Upload Store", `
246
+ if (thread >= settings.brick_count * ${MESH_SDF_BRICK_TEXEL_COUNT}u) {
247
+ return;
248
+ }
249
+
250
+ let brick = thread / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
251
+ let texel = thread % ${MESH_SDF_BRICK_TEXEL_COUNT}u;
252
+ let word = brick * MESH_SDF_UPLOAD_BRICK_WORDS;
253
+
254
+ if (subgroup_atomic_load_u32(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_FRESH]) == 0u) {
255
+ return;
256
+ }
257
+
258
+ let t = MESH_SDF_BRICK_TEXELS;
259
+ let slots = textureDimensions(mesh_sdf_atlas_store) / t;
260
+ let origin = tile_atlas_slot_origin(subgroup_atomic_load_u32(&mesh_sdf_upload_bricks[word + MESH_SDF_UPLOAD_SLOT]), slots.xy, vec3<u32>(t));
261
+
262
+ textureStore(
263
+ mesh_sdf_atlas_store,
264
+ origin + vec3<u32>(texel % t, (texel / t) % t, texel / (t * t)),
265
+ vec4<f32>(f32(mesh_sdf_upload_byte(brick, texel)) / 255.0, 0.0, 0.0, 0.0)
266
+ );
267
+ `, [chunk_subgroup_atomic_load, chunk_tile_atlas_slot_origin]).shader;
268
+
269
+ /**
270
+ * Upload, last pass, link: a thread an entry of the fields uploaded, a run each in `mesh_sdf_ranges`
271
+ * as `(first thread, first entry)`. An entry naming an uploaded brick, by its place in the upload,
272
+ * holds the brick's slot instead, one entry more (`chunk_mesh_sdf_contents`); an EMPTY one is left.
273
+ * Runs before free in its bake, so a field dropped since its upload gives back slots, never places.
274
+ *
275
+ * @type {ComputeShader}
276
+ */
277
+ export const shader_mesh_sdf_upload_link = upload_pass("Mesh SDF Upload Link", `
278
+ if (thread >= settings.entry_count) {
279
+ return;
280
+ }
281
+
282
+ let range = mesh_sdf_range_find(settings.range_count, thread);
283
+ let at = mesh_sdf_ranges[range].y + thread - mesh_sdf_ranges[range].x;
284
+ let entry = atomicLoad(&mesh_sdf_indirection[at]);
285
+
286
+ if (!mesh_sdf_entry_holds_slot(entry)) {
287
+ return;
288
+ }
289
+
290
+ let slot = atomicLoad(&mesh_sdf_upload_bricks[entry * MESH_SDF_UPLOAD_BRICK_WORDS + MESH_SDF_UPLOAD_SLOT]);
291
+
292
+ mesh_sdf_content_hold(slot);
293
+ atomicStore(&mesh_sdf_indirection[at], slot);
294
+ `, [chunk_mesh_sdf_contents, chunk_mesh_sdf_range_find]).shader;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * "MCBN", read as a little-endian u32.
3
+ * @type {number}
4
+ */
5
+ export const MODEL_CACHE_BUNDLE_MAGIC: number;
6
+ /**
7
+ * The format this code writes.
8
+ * @type {number}
9
+ */
10
+ export const MODEL_CACHE_BUNDLE_FORMAT_VERSION: number;
11
+ /**
12
+ * The oldest reader that takes what this code writes.
13
+ * @type {number}
14
+ */
15
+ export const MODEL_CACHE_BUNDLE_MIN_READER_VERSION: number;
16
+ //# sourceMappingURL=MODEL_CACHE_BUNDLE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MODEL_CACHE_BUNDLE.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,uCAFU,MAAM,CAEmC;AAEnD;;;GAGG;AACH,gDAFU,MAAM,CAEmC;AAEnD;;;GAGG;AACH,oDAFU,MAAM,CAEuC"}
@@ -0,0 +1,36 @@
1
+ /*
2
+ A ModelCacheBundle as bytes, little-endian, every count before what it counts:
3
+
4
+ header u32 magic, u16 format version, u16 version a reader needs at least
5
+ f32 voxel_size, u32 max_bricks
6
+ u32 bricks, u32 fields, u32 caches
7
+ bricks MESH_SDF_BRICK_TEXEL_COUNT bytes each
8
+ field f32×3 origin, f32 voxel, u32×3 bricks, u32 level_count, u32 two_sided
9
+ u32 entries, u32 each: a brick's index, or MESH_SDF_EMPTY or MESH_SDF_EMPTY_INSIDE
10
+ u32 stored, u32 each: the entry of stored brick n
11
+ u32 blocks, u32 table words (0 or stored), u32 each
12
+ cache u32 field, u32 texels, u32×3 codes by plane
13
+ u32 presence words, u32 each
14
+ for each plane, in SURFACE_MATERIAL.js's order: u32 words, u32 each
15
+
16
+ A reader takes a file whose version a reader needs is at most its own, and refuses one that names a
17
+ brick, an entry or a field it does not hold.
18
+ */
19
+
20
+ /**
21
+ * "MCBN", read as a little-endian u32.
22
+ * @type {number}
23
+ */
24
+ export const MODEL_CACHE_BUNDLE_MAGIC = 0x4E42434D;
25
+
26
+ /**
27
+ * The format this code writes.
28
+ * @type {number}
29
+ */
30
+ export const MODEL_CACHE_BUNDLE_FORMAT_VERSION = 1;
31
+
32
+ /**
33
+ * The oldest reader that takes what this code writes.
34
+ * @type {number}
35
+ */
36
+ export const MODEL_CACHE_BUNDLE_MIN_READER_VERSION = 1;
@@ -0,0 +1,126 @@
1
+ /**
2
+ * A geometry's Model SDF in a {@link ModelCacheBundle}: its layout as its header holds it, its entries
3
+ * naming the bundle's bricks, the order its stored bricks were numbered in, and the block table its
4
+ * Model Surface Caches are laid out by.
5
+ */
6
+ export class ModelCacheBundleField {
7
+ /**
8
+ * The grid's smallest corner, the geometry's local units.
9
+ * @type {Float32Array}
10
+ */
11
+ origin: Float32Array;
12
+ /**
13
+ * Level 0's voxel, local units.
14
+ * @type {number}
15
+ */
16
+ voxel: number;
17
+ /**
18
+ * Level 0's bricks along x, y and z.
19
+ * @type {Uint32Array}
20
+ */
21
+ bricks: Uint32Array;
22
+ /**
23
+ * @type {number}
24
+ */
25
+ level_count: number;
26
+ /**
27
+ * 1 when baked for a holder that draws both sides, which nothing is inside of.
28
+ * @type {number}
29
+ */
30
+ two_sided: number;
31
+ /**
32
+ * Every brick's entry, level after level in `MeshSDFLayout`'s order: a brick of the bundle's, by
33
+ * index, or `MESH_SDF_EMPTY` or `MESH_SDF_EMPTY_INSIDE`.
34
+ * @type {Uint32Array}
35
+ */
36
+ entries: Uint32Array;
37
+ /**
38
+ * The field's stored bricks by number: brick n's entry index. Every entry naming a brick is numbered
39
+ * once.
40
+ * @type {Uint32Array}
41
+ */
42
+ numbered: Uint32Array;
43
+ /**
44
+ * Blocks its stored bricks keep (`MESH_SURFACE_BLOCK.js`), 0 without a table.
45
+ * @type {number}
46
+ */
47
+ blocks: number;
48
+ /**
49
+ * Its block table, a word a stored brick by number, or empty when no cache of it kept a plane.
50
+ * @type {Uint32Array}
51
+ */
52
+ table: Uint32Array;
53
+ }
54
+ /**
55
+ * A (geometry, material) pair's Model Surface Cache in a {@link ModelCacheBundle}, laid out by one of
56
+ * the bundle's fields.
57
+ */
58
+ export class ModelCacheBundleCache {
59
+ /**
60
+ * The field of the bundle it is laid out by, by index.
61
+ * @type {number}
62
+ */
63
+ field: number;
64
+ /**
65
+ * Bit `1 << plane` for each plane it keeps blocks of (`SURFACE_MATERIAL.js`).
66
+ * @type {number}
67
+ */
68
+ texels: number;
69
+ /**
70
+ * Each plane's code, by plane: what a plane it keeps no blocks of holds everywhere.
71
+ * @type {Uint32Array}
72
+ */
73
+ codes: Uint32Array;
74
+ /**
75
+ * Its presence, `MESH_SURFACE_PRESENCE_BLOCK_WORDS` a block for each of its field's blocks, or empty
76
+ * when it keeps no plane.
77
+ * @type {Uint32Array}
78
+ */
79
+ presence: Uint32Array;
80
+ /**
81
+ * Each plane's blocks, by plane, `MESH_SURFACE_PLANE_BLOCK_WORDS` a block for each of its field's
82
+ * blocks, or empty for a plane it does not keep.
83
+ * @type {Uint32Array[]}
84
+ */
85
+ planes: Uint32Array[];
86
+ }
87
+ /**
88
+ * Model SDFs and Model Surface Caches in one package: the bricks once each, the fields naming them by
89
+ * index, so a brick two fields hold is kept once, and the caches naming their fields. Baked at
90
+ * `voxel_size` and `max_bricks`, the configuration of the `GPUGeometrySDFManager` that made it, which
91
+ * takes it only at the same.
92
+ *
93
+ * `GPUGeometrySDFManager.export_bundle` makes one of what is resident; `upload_bundle` takes one back,
94
+ * with or without sharing its bricks with those resident; `model_cache_bundle_write` and
95
+ * `model_cache_bundle_read` keep it as bytes.
96
+ */
97
+ export class ModelCacheBundle {
98
+ /**
99
+ * The voxel the fields were baked at, `GPUGeometrySDFManager.configure`'s.
100
+ * @type {number}
101
+ */
102
+ voxel_size: number;
103
+ /**
104
+ * The cap on bricks along a geometry's longest axis they were baked under.
105
+ * @type {number}
106
+ */
107
+ max_bricks: number;
108
+ /**
109
+ * The bricks the fields hold, `MESH_SDF_BRICK_TEXEL_COUNT` bytes each, texel x + 8y + 64z.
110
+ * @type {Uint8Array}
111
+ */
112
+ bricks: Uint8Array;
113
+ /**
114
+ * @type {ModelCacheBundleField[]}
115
+ */
116
+ fields: ModelCacheBundleField[];
117
+ /**
118
+ * @type {ModelCacheBundleCache[]}
119
+ */
120
+ caches: ModelCacheBundleCache[];
121
+ /**
122
+ * @returns {number}
123
+ */
124
+ get brick_count(): number;
125
+ }
126
+ //# sourceMappingURL=ModelCacheBundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelCacheBundle.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH;IACI;;;OAGG;IACH,QAFU,YAAY,CAEO;IAE7B;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,QAFU,WAAW,CAEO;IAE5B;;OAEG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,WAFU,MAAM,CAEF;IAEd;;;;OAIG;IACH,SAFU,WAAW,CAEQ;IAE7B;;;;OAIG;IACH,UAFU,WAAW,CAES;IAE9B;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,OAFU,WAAW,CAEM;CAC9B;AAED;;;GAGG;AACH;IACI;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,QAFU,MAAM,CAEL;IAEX;;;OAGG;IACH,OAFU,WAAW,CAEM;IAE3B;;;;OAIG;IACH,UAFU,WAAW,CAES;IAE9B;;;;OAIG;IACH,QAFU,WAAW,EAAE,CAE+C;CACzE;AAED;;;;;;;;;GASG;AACH;IACI;;;OAGG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,QAFU,UAAU,CAEO;IAE3B;;OAEG;IACH,QAFU,qBAAqB,EAAE,CAErB;IAEZ;;OAEG;IACH,QAFU,qBAAqB,EAAE,CAErB;IAEZ;;OAEG;IACH,0BAEC;CACJ"}
@@ -0,0 +1,148 @@
1
+ import { MESH_SDF_BRICK_TEXEL_COUNT } from "../MESH_SDF.js";
2
+
3
+ /**
4
+ * A geometry's Model SDF in a {@link ModelCacheBundle}: its layout as its header holds it, its entries
5
+ * naming the bundle's bricks, the order its stored bricks were numbered in, and the block table its
6
+ * Model Surface Caches are laid out by.
7
+ */
8
+ export class ModelCacheBundleField {
9
+ /**
10
+ * The grid's smallest corner, the geometry's local units.
11
+ * @type {Float32Array}
12
+ */
13
+ origin = new Float32Array(3);
14
+
15
+ /**
16
+ * Level 0's voxel, local units.
17
+ * @type {number}
18
+ */
19
+ voxel = 0;
20
+
21
+ /**
22
+ * Level 0's bricks along x, y and z.
23
+ * @type {Uint32Array}
24
+ */
25
+ bricks = new Uint32Array(3);
26
+
27
+ /**
28
+ * @type {number}
29
+ */
30
+ level_count = 0;
31
+
32
+ /**
33
+ * 1 when baked for a holder that draws both sides, which nothing is inside of.
34
+ * @type {number}
35
+ */
36
+ two_sided = 0;
37
+
38
+ /**
39
+ * Every brick's entry, level after level in `MeshSDFLayout`'s order: a brick of the bundle's, by
40
+ * index, or `MESH_SDF_EMPTY` or `MESH_SDF_EMPTY_INSIDE`.
41
+ * @type {Uint32Array}
42
+ */
43
+ entries = new Uint32Array(0);
44
+
45
+ /**
46
+ * The field's stored bricks by number: brick n's entry index. Every entry naming a brick is numbered
47
+ * once.
48
+ * @type {Uint32Array}
49
+ */
50
+ numbered = new Uint32Array(0);
51
+
52
+ /**
53
+ * Blocks its stored bricks keep (`MESH_SURFACE_BLOCK.js`), 0 without a table.
54
+ * @type {number}
55
+ */
56
+ blocks = 0;
57
+
58
+ /**
59
+ * Its block table, a word a stored brick by number, or empty when no cache of it kept a plane.
60
+ * @type {Uint32Array}
61
+ */
62
+ table = new Uint32Array(0);
63
+ }
64
+
65
+ /**
66
+ * A (geometry, material) pair's Model Surface Cache in a {@link ModelCacheBundle}, laid out by one of
67
+ * the bundle's fields.
68
+ */
69
+ export class ModelCacheBundleCache {
70
+ /**
71
+ * The field of the bundle it is laid out by, by index.
72
+ * @type {number}
73
+ */
74
+ field = 0;
75
+
76
+ /**
77
+ * Bit `1 << plane` for each plane it keeps blocks of (`SURFACE_MATERIAL.js`).
78
+ * @type {number}
79
+ */
80
+ texels = 0;
81
+
82
+ /**
83
+ * Each plane's code, by plane: what a plane it keeps no blocks of holds everywhere.
84
+ * @type {Uint32Array}
85
+ */
86
+ codes = new Uint32Array(3);
87
+
88
+ /**
89
+ * Its presence, `MESH_SURFACE_PRESENCE_BLOCK_WORDS` a block for each of its field's blocks, or empty
90
+ * when it keeps no plane.
91
+ * @type {Uint32Array}
92
+ */
93
+ presence = new Uint32Array(0);
94
+
95
+ /**
96
+ * Each plane's blocks, by plane, `MESH_SURFACE_PLANE_BLOCK_WORDS` a block for each of its field's
97
+ * blocks, or empty for a plane it does not keep.
98
+ * @type {Uint32Array[]}
99
+ */
100
+ planes = [new Uint32Array(0), new Uint32Array(0), new Uint32Array(0)];
101
+ }
102
+
103
+ /**
104
+ * Model SDFs and Model Surface Caches in one package: the bricks once each, the fields naming them by
105
+ * index, so a brick two fields hold is kept once, and the caches naming their fields. Baked at
106
+ * `voxel_size` and `max_bricks`, the configuration of the `GPUGeometrySDFManager` that made it, which
107
+ * takes it only at the same.
108
+ *
109
+ * `GPUGeometrySDFManager.export_bundle` makes one of what is resident; `upload_bundle` takes one back,
110
+ * with or without sharing its bricks with those resident; `model_cache_bundle_write` and
111
+ * `model_cache_bundle_read` keep it as bytes.
112
+ */
113
+ export class ModelCacheBundle {
114
+ /**
115
+ * The voxel the fields were baked at, `GPUGeometrySDFManager.configure`'s.
116
+ * @type {number}
117
+ */
118
+ voxel_size = 0;
119
+
120
+ /**
121
+ * The cap on bricks along a geometry's longest axis they were baked under.
122
+ * @type {number}
123
+ */
124
+ max_bricks = 0;
125
+
126
+ /**
127
+ * The bricks the fields hold, `MESH_SDF_BRICK_TEXEL_COUNT` bytes each, texel x + 8y + 64z.
128
+ * @type {Uint8Array}
129
+ */
130
+ bricks = new Uint8Array(0);
131
+
132
+ /**
133
+ * @type {ModelCacheBundleField[]}
134
+ */
135
+ fields = [];
136
+
137
+ /**
138
+ * @type {ModelCacheBundleCache[]}
139
+ */
140
+ caches = [];
141
+
142
+ /**
143
+ * @returns {number}
144
+ */
145
+ get brick_count() {
146
+ return this.bricks.length / MESH_SDF_BRICK_TEXEL_COUNT;
147
+ }
148
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * A bundle from bytes (`MODEL_CACHE_BUNDLE.js`). Throws on a file of another kind, one that needs a
3
+ * newer reader, or one whose references or lengths do not hold together.
4
+ *
5
+ * @param {Uint8Array} bytes
6
+ * @returns {ModelCacheBundle}
7
+ */
8
+ export function model_cache_bundle_read(bytes: Uint8Array): ModelCacheBundle;
9
+ import { ModelCacheBundle } from "./ModelCacheBundle.js";
10
+ //# sourceMappingURL=model_cache_bundle_read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model_cache_bundle_read.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,+CAHW,UAAU,GACR,gBAAgB,CA6G5B;iCAxI8E,uBAAuB"}