@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,343 @@
1
+ import { chunk_generate_next_linear_congruential_index } from "../../../gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js";
2
+ import { chunk_slot_stack } from "../../../gpu_primitive/slot_stack/chunk_slot_stack.js";
3
+ import { chunk_hash_lowbias32 } from "../../../shader/chunk/random/chunk_hash_lowbias32.js";
4
+ import { chunk_subgroup_atomic_add } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_add.js";
5
+ import { chunk_subgroup_atomic_load } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_load.js";
6
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
7
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
8
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
9
+ import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
10
+ import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
11
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
12
+ import { chunk_tile_atlas_slot_origin } from "../../../texture/atlas/chunk_tile_atlas_slot_origin.js";
13
+ import { MESH_SDF_ATLAS_RESOURCE, MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
14
+ import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_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
+ /**
23
+ * @type {WebGPUStruct}
24
+ */
25
+ export const MESH_SDF_RESOLVE_SETTINGS = WebGPUStruct.from({
26
+ /** entries of `mesh_sdf_ring`, a power of two; the staging starts here */
27
+ ring_capacity: u32,
28
+ /** slots the stack holds */
29
+ slot_capacity: u32,
30
+ /** where the frame's log starts in the arena */
31
+ log_offset: u32,
32
+ /** where the records of the frame's bricks taken start in the arena, MESH_SDF_TAKEN_WORDS each */
33
+ tally_offset: u32,
34
+ /** where the frame's claims start in the arena */
35
+ claim_offset: u32,
36
+ /** records of the frame's claims, a power of two, no fewer than the probe limit */
37
+ claim_size: u32,
38
+ }, "MeshSDFResolveSettings");
39
+
40
+ const resources = new ShaderResourceSetDescriptor();
41
+
42
+ resources.setImmediate("settings", MESH_SDF_RESOLVE_SETTINGS);
43
+
44
+ resources.createGroup()
45
+ .add(MESH_SDF_HEADERS_RESOURCE)
46
+ .addStorageBuffer("mesh_sdf_ring", WebGPUArray.from(vec4u))
47
+ .addStorageBuffer("mesh_sdf_take", WebGPUArray.u32)
48
+ .add(MESH_SDF_ARENA_RESOURCE)
49
+ .addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true)
50
+ .add(MESH_SDF_CONTENTS_RESOURCE)
51
+ .add(MESH_SDF_CONTENT_TABLE_RESOURCE);
52
+
53
+ const compare_resources = new ShaderResourceSetDescriptor();
54
+
55
+ compare_resources.setImmediate("settings", MESH_SDF_RESOLVE_SETTINGS);
56
+
57
+ compare_resources.createGroup()
58
+ .add(MESH_SDF_HEADERS_RESOURCE)
59
+ .addStorageBuffer("mesh_sdf_ring", WebGPUArray.from(vec4u))
60
+ .addStorageBuffer("mesh_sdf_take", WebGPUArray.u32)
61
+ .add(MESH_SDF_ARENA_RESOURCE)
62
+ .add(MESH_SDF_ATLAS_RESOURCE);
63
+
64
+ /**
65
+ * What the passes of resolve share: the brick a thread is of, by its place in the take, its record's
66
+ * word, its content key and its staged bytes.
67
+ *
68
+ * ```wgsl
69
+ * fn mesh_sdf_resolve_entry(taken: u32) -> u32 // the brick's entry when it is PENDING, else MESH_SDF_NO_CONTENT
70
+ * fn mesh_sdf_resolve_record(taken: u32) -> u32 // its record's first word
71
+ * fn mesh_sdf_resolve_key(record: u32) -> u32 // its content key
72
+ * fn mesh_sdf_resolve_byte(taken: u32, texel: u32) -> u32 // a texel's byte as evaluate staged it, texel x + 8y + 64z
73
+ * ```
74
+ */
75
+ const chunk_mesh_sdf_resolve = CodeChunk.from(
76
+ //language=WGSL
77
+ `
78
+ fn mesh_sdf_resolve_entry(taken: u32) -> u32 {
79
+ if (taken >= mesh_sdf_take[MESH_SDF_TAKE_COUNT]) {
80
+ return MESH_SDF_NO_CONTENT;
81
+ }
82
+
83
+ let item = mesh_sdf_ring[(mesh_sdf_take[MESH_SDF_TAKE_START] + taken) & (settings.ring_capacity - 1u)];
84
+ let header = mesh_sdf_headers[item.x];
85
+
86
+ if (header.state != MESH_SDF_STATE_BAKING || header.generation != item.y) {
87
+ return MESH_SDF_NO_CONTENT;
88
+ }
89
+
90
+ let entry = header.indirection + item.z;
91
+
92
+ if (atomicLoad(&mesh_sdf_indirection[entry]) != MESH_SDF_PENDING) {
93
+ return MESH_SDF_NO_CONTENT;
94
+ }
95
+
96
+ return entry;
97
+ }
98
+
99
+ fn mesh_sdf_resolve_record(taken: u32) -> u32 {
100
+ return settings.tally_offset + taken * MESH_SDF_TAKEN_WORDS;
101
+ }
102
+
103
+ fn mesh_sdf_resolve_key(record: u32) -> u32 {
104
+ return atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_KEY]);
105
+ }
106
+
107
+ fn mesh_sdf_resolve_byte(taken: u32, texel: u32) -> u32 {
108
+ // a word a texel, four words an entry of the staging
109
+ return mesh_sdf_ring[settings.ring_capacity + taken * MESH_SDF_STAGING_VEC4S + texel / 4u][texel % 4u];
110
+ }
111
+ `, [
112
+ chunk_mesh_sdf_bake,
113
+ ]);
114
+
115
+ /**
116
+ * @param {string} label
117
+ * @param {string} text the pass's body, in `main` after `taken`
118
+ * @param {CodeChunk[]} dependencies
119
+ * @returns {ComputeShader}
120
+ */
121
+ function resolve_pass(label, text, dependencies) {
122
+ return ComputeShader.from({
123
+ label,
124
+ resources,
125
+ body: CodeChunk.from(
126
+ //language=WGSL
127
+ `
128
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
129
+ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
130
+ let taken = id.x;
131
+ ${text}
132
+ }
133
+ `, [chunk_mesh_sdf_resolve, chunk_mesh_sdf_contents, ...dependencies]),
134
+ });
135
+ }
136
+
137
+ /**
138
+ * Bake step 5, resolve, first pass, find: a thread a brick taken, over the frame's budget. A PENDING
139
+ * brick finds a slot listed under its content key (`chunk_mesh_sdf_contents`), which compare holds its
140
+ * bytes against, and keeps it in its record. One that finds none claims its key in the frame's
141
+ * claims, a table of the frame's bricks by key: the first to claim a key is its representative, which
142
+ * fresh gives a slot, and every brick names its key's representative in its record, whose bytes
143
+ * compare holds its own against.
144
+ *
145
+ * The keys are key's, read after its dispatch. No list shares this dispatch, so every find meets the
146
+ * table as the last frame left it.
147
+ *
148
+ * @type {ComputeShader}
149
+ */
150
+ export const shader_mesh_sdf_resolve_find = resolve_pass("Mesh SDF Resolve Find", `
151
+ let entry = mesh_sdf_resolve_entry(taken);
152
+
153
+ if (entry == MESH_SDF_NO_CONTENT) {
154
+ return;
155
+ }
156
+
157
+ let record = mesh_sdf_resolve_record(taken);
158
+ let key = mesh_sdf_resolve_key(record);
159
+ let slot = mesh_sdf_content_find(key);
160
+
161
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT], slot);
162
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_REP], taken);
163
+
164
+ if (slot != MESH_SDF_NO_CONTENT) {
165
+ return;
166
+ }
167
+
168
+ // the frame's first brick of the key, by claim: a bucket holds a brick's place + 1
169
+ let mask = settings.claim_size - 1u;
170
+
171
+ var bucket = hash_lowbias32(key) & mask;
172
+
173
+ for (var probe = 0u; probe < HASH_TABLE_PROBE_LIMIT; probe++) {
174
+ let word = settings.claim_offset + bucket;
175
+ let stored = atomicLoad(&mesh_sdf_indirection[word]);
176
+
177
+ if (stored == 0u) {
178
+ let claim = atomicCompareExchangeWeak(&mesh_sdf_indirection[word], 0u, taken + 1u);
179
+
180
+ if (claim.exchanged) {
181
+ return;
182
+ }
183
+
184
+ if (claim.old_value == 0u) {
185
+ // a weak exchange may fail on a bucket still empty: the same bucket again
186
+ continue;
187
+ }
188
+
189
+ if (mesh_sdf_resolve_key(mesh_sdf_resolve_record(claim.old_value - 1u)) == key) {
190
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_REP], claim.old_value - 1u);
191
+ return;
192
+ }
193
+ } else if (mesh_sdf_resolve_key(mesh_sdf_resolve_record(stored - 1u)) == key) {
194
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_REP], stored - 1u);
195
+ return;
196
+ }
197
+
198
+ bucket = generate_next_linear_congruential_index(bucket, mask);
199
+ }
200
+
201
+ // claims run out: its own representative, its bytes in a slot of their own
202
+ `, [chunk_hash_lowbias32, chunk_generate_next_linear_congruential_index]);
203
+
204
+ /**
205
+ * Bake step 5, resolve, second pass, compare: a thread a texel of each brick taken, eight workgroups a
206
+ * brick, dispatched by take. A PENDING brick that found a slot holds each of its staged bytes against
207
+ * the byte the slot holds there, and one that names a representative other than itself against the
208
+ * representative's staged byte, and the texels that differ are counted in the brick's record. A key
209
+ * finds the bricks its bytes may be those of; this pass says whether they are.
210
+ *
211
+ * A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the brick's words are loaded
212
+ * and its count added once a subgroup (`chunk_subgroup_atomic_load`, `chunk_subgroup_atomic_add`).
213
+ *
214
+ * @type {ComputeShader}
215
+ */
216
+ export const shader_mesh_sdf_resolve_compare = ComputeShader.from({
217
+ label: "Mesh SDF Resolve Compare",
218
+ resources: compare_resources,
219
+ body: CodeChunk.from(
220
+ //language=WGSL
221
+ `
222
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
223
+ fn main(
224
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
225
+ @builtin(local_invocation_index) lane: u32,
226
+ ) {
227
+ let taken = workgroup_id.x / MESH_SDF_GROUPS_PER_BRICK;
228
+ let item = mesh_sdf_ring[(mesh_sdf_take[MESH_SDF_TAKE_START] + taken) & (settings.ring_capacity - 1u)];
229
+ let header = mesh_sdf_headers[item.x];
230
+
231
+ // the same for every lane of the workgroup, and of each of its subgroups: one brick
232
+ if (header.state != MESH_SDF_STATE_BAKING || header.generation != item.y) {
233
+ return;
234
+ }
235
+
236
+ if (subgroup_atomic_load_u32(&mesh_sdf_indirection[header.indirection + item.z]) != MESH_SDF_PENDING) {
237
+ return;
238
+ }
239
+
240
+ let record = mesh_sdf_resolve_record(taken);
241
+ let slot = subgroup_atomic_load_u32(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT]);
242
+ let rep = subgroup_atomic_load_u32(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_REP]);
243
+ let texel = (workgroup_id.x % MESH_SDF_GROUPS_PER_BRICK) * MESH_SDF_BAKE_WORKGROUP_SIZE + lane;
244
+
245
+ var other: u32;
246
+
247
+ if (slot != MESH_SDF_NO_CONTENT) {
248
+ let t = MESH_SDF_BRICK_TEXELS;
249
+ let slots = textureDimensions(mesh_sdf_atlas) / t;
250
+ let origin = tile_atlas_slot_origin(slot, slots.xy, vec3<u32>(t));
251
+
252
+ // r8unorm reads a byte back as byte / 255
253
+ other = u32(round(textureLoad(mesh_sdf_atlas, origin + vec3<u32>(texel % t, (texel / t) % t, texel / (t * t)), 0).x * 255.0));
254
+ } else if (rep != taken) {
255
+ other = mesh_sdf_resolve_byte(rep, texel);
256
+ } else {
257
+ // a representative: the first of its key in the frame, nothing to hold it against
258
+ return;
259
+ }
260
+
261
+ subgroup_atomic_add_u32(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_DIFFERS], select(0u, 1u, mesh_sdf_resolve_byte(taken, texel) != other));
262
+ }
263
+ `, [
264
+ chunk_mesh_sdf_resolve,
265
+ chunk_subgroup_atomic_add,
266
+ chunk_subgroup_atomic_load,
267
+ chunk_tile_atlas_slot_origin,
268
+ ]),
269
+ });
270
+
271
+ /**
272
+ * Bake step 5, resolve, third pass, fresh: a thread a brick taken. A representative pops a slot and
273
+ * lists it under its key, and its record says the slot is fresh, which store fills. A brick whose
274
+ * bytes differ from those it was compared with pops a fresh slot of its own, listed nowhere, so no
275
+ * brick after shares it: its key is another bytes' too, and the log counts it collided. Take held the
276
+ * frame's bricks to the free slots, and a brick pops one slot at most, so no pop here is refused.
277
+ *
278
+ * @type {ComputeShader}
279
+ */
280
+ export const shader_mesh_sdf_resolve_fresh = resolve_pass("Mesh SDF Resolve Fresh", `
281
+ let entry = mesh_sdf_resolve_entry(taken);
282
+
283
+ if (entry == MESH_SDF_NO_CONTENT) {
284
+ return;
285
+ }
286
+
287
+ let record = mesh_sdf_resolve_record(taken);
288
+ let differs = atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_DIFFERS]) != 0u;
289
+
290
+ // the slot found, or the representative's, is the brick's
291
+ if (!differs
292
+ && (atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT]) != MESH_SDF_NO_CONTENT
293
+ || atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_REP]) != taken)) {
294
+ return;
295
+ }
296
+
297
+ let slot = slot_stack_pop(&mesh_sdf_indirection[MESH_SDF_COUNTER_SLOTS], &mesh_sdf_slots, settings.slot_capacity);
298
+
299
+ if (differs) {
300
+ atomicAdd(&mesh_sdf_indirection[settings.log_offset + MESH_SDF_LOG_COLLIDED], 1u);
301
+ } else {
302
+ mesh_sdf_content_list(slot, mesh_sdf_resolve_key(record));
303
+ }
304
+
305
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT], slot);
306
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_FRESH], 1u);
307
+ `, [chunk_slot_stack]);
308
+
309
+ /**
310
+ * Bake step 5, resolve, last pass, hold: a thread a brick taken. A PENDING brick takes its slot, the
311
+ * one it found or popped, or its representative's when it has none, holds it one entry more, and its
312
+ * entry holds it. Logs the bricks that took a slot already holding their bytes, or their
313
+ * representative's.
314
+ *
315
+ * @type {ComputeShader}
316
+ */
317
+ export const shader_mesh_sdf_resolve_hold = resolve_pass("Mesh SDF Resolve Hold", `
318
+ let entry = mesh_sdf_resolve_entry(taken);
319
+
320
+ if (entry == MESH_SDF_NO_CONTENT) {
321
+ return;
322
+ }
323
+
324
+ let record = mesh_sdf_resolve_record(taken);
325
+
326
+ var slot = atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT]);
327
+
328
+ if (slot == MESH_SDF_NO_CONTENT) {
329
+ let rep = atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_REP]);
330
+
331
+ slot = atomicLoad(&mesh_sdf_indirection[mesh_sdf_resolve_record(rep) + MESH_SDF_TAKEN_SLOT]);
332
+
333
+ atomicStore(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT], slot);
334
+ }
335
+
336
+ mesh_sdf_content_hold(slot);
337
+
338
+ atomicStore(&mesh_sdf_indirection[entry], slot);
339
+
340
+ if (atomicLoad(&mesh_sdf_indirection[record + MESH_SDF_TAKEN_FRESH]) == 0u) {
341
+ atomicAdd(&mesh_sdf_indirection[settings.log_offset + MESH_SDF_LOG_SHARED], 1u);
342
+ }
343
+ `, []);
@@ -3,9 +3,9 @@
3
3
  */
4
4
  export const MESH_SDF_STORE_SETTINGS: WebGPUStruct;
5
5
  /**
6
- * Bake step 4, store: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
7
- * take. A brick evaluate gave a slot has its staged bytes written there; an EMPTY one and a stale
8
- * one write nothing.
6
+ * Bake step 6, store: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
7
+ * take. A brick resolve gave a fresh slot has its staged bytes written there; one that took a slot
8
+ * holding its bytes already, an EMPTY one and a stale one write nothing.
9
9
  *
10
10
  * The bytes go back as `byte / 255`, which `r8unorm` stores as the same byte, so the atlas holds what
11
11
  * evaluate rounded and no second rounding.
@@ -1 +1 @@
1
- {"version":3,"file":"shader_mesh_sdf_store.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js"],"names":[],"mappings":"AAWA;;GAEG;AACH,sCAFU,YAAY,CAKK;AAa3B;;;;;;;;;GASG;AACH,oCAFU,aAAa,CA6CpB;6BA9E0B,sCAAsC;8BAJrC,kCAAkC"}
1
+ {"version":3,"file":"shader_mesh_sdf_store.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js"],"names":[],"mappings":"AAWA;;GAEG;AACH,sCAFU,YAAY,CAOK;AAa3B;;;;;;;;;GASG;AACH,oCAFU,aAAa,CA+CpB;6BAlF0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -15,6 +15,8 @@ import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
15
15
  export const MESH_SDF_STORE_SETTINGS = WebGPUStruct.from({
16
16
  /** entries of `mesh_sdf_ring`, a power of two; the staging starts here */
17
17
  ring_capacity: u32,
18
+ /** where the records of the frame's bricks taken start in the arena, MESH_SDF_TAKEN_WORDS each */
19
+ tally_offset: u32,
18
20
  }, "MeshSDFStoreSettings");
19
21
 
20
22
  const resources = new ShaderResourceSetDescriptor();
@@ -29,9 +31,9 @@ resources.createGroup()
29
31
  .addStorageTexture("mesh_sdf_atlas_store", "r8unorm", "3d", "write-only");
30
32
 
31
33
  /**
32
- * Bake step 4, store: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
33
- * take. A brick evaluate gave a slot has its staged bytes written there; an EMPTY one and a stale
34
- * one write nothing.
34
+ * Bake step 6, store: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
35
+ * take. A brick resolve gave a fresh slot has its staged bytes written there; one that took a slot
36
+ * holding its bytes already, an EMPTY one and a stale one write nothing.
35
37
  *
36
38
  * The bytes go back as `byte / 255`, which `r8unorm` stores as the same byte, so the atlas holds what
37
39
  * evaluate rounded and no second rounding.
@@ -57,12 +59,14 @@ fn main(
57
59
  return;
58
60
  }
59
61
 
60
- let slot = mesh_sdf_indirection[header.indirection + item.z];
62
+ let record = settings.tally_offset + taken * MESH_SDF_TAKEN_WORDS;
61
63
 
62
- if (!mesh_sdf_entry_holds_slot(slot)) {
64
+ if (mesh_sdf_indirection[record + MESH_SDF_TAKEN_FRESH] == 0u) {
63
65
  return;
64
66
  }
65
67
 
68
+ let slot = mesh_sdf_indirection[record + MESH_SDF_TAKEN_SLOT];
69
+
66
70
  // a word a texel, four words an entry of the staging
67
71
  let texel = (workgroup_id.x % MESH_SDF_GROUPS_PER_BRICK) * MESH_SDF_BAKE_WORKGROUP_SIZE + lane;
68
72
  let byte = mesh_sdf_ring[settings.ring_capacity + taken * MESH_SDF_STAGING_VEC4S + texel / 4u][texel % 4u];
@@ -8,8 +8,8 @@ export const MESH_SDF_TAKE_SETTINGS: WebGPUStruct;
8
8
  * bound no pop of evaluate's can fail. A take held back by the slots logs itself starved, which is
9
9
  * how the host learns to grow the atlas.
10
10
  *
11
- * Writes the dispatch evaluate and store share, eight workgroups a brick, and where on the ring the
12
- * frame's bricks start; logs what it took and what is left queued.
11
+ * Writes the dispatch evaluate, key and store share, eight workgroups a brick, where on the ring the
12
+ * frame's bricks start, and how many resolve walks; logs what it took and what is left queued.
13
13
  *
14
14
  * @type {ComputeShader}
15
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shader_mesh_sdf_take.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js"],"names":[],"mappings":"AAQA;;GAEG;AACH,qCAFU,YAAY,CAOI;AAU1B;;;;;;;;;;GAUG;AACH,mCAFU,aAAa,CAoCpB;6BAlE0B,sCAAsC;8BAJrC,kCAAkC"}
1
+ {"version":3,"file":"shader_mesh_sdf_take.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js"],"names":[],"mappings":"AAQA;;GAEG;AACH,qCAFU,YAAY,CAOI;AAU1B;;;;;;;;;;GAUG;AACH,mCAFU,aAAa,CAqCpB;6BAnE0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -30,8 +30,8 @@ resources.createGroup()
30
30
  * bound no pop of evaluate's can fail. A take held back by the slots logs itself starved, which is
31
31
  * how the host learns to grow the atlas.
32
32
  *
33
- * Writes the dispatch evaluate and store share, eight workgroups a brick, and where on the ring the
34
- * frame's bricks start; logs what it took and what is left queued.
33
+ * Writes the dispatch evaluate, key and store share, eight workgroups a brick, where on the ring the
34
+ * frame's bricks start, and how many resolve walks; logs what it took and what is left queued.
35
35
  *
36
36
  * @type {ComputeShader}
37
37
  */
@@ -58,6 +58,7 @@ fn main() {
58
58
  mesh_sdf_take[MESH_SDF_TAKE_DISPATCH + 1u] = 1u;
59
59
  mesh_sdf_take[MESH_SDF_TAKE_DISPATCH + 2u] = 1u;
60
60
  mesh_sdf_take[MESH_SDF_TAKE_START] = head;
61
+ mesh_sdf_take[MESH_SDF_TAKE_COUNT] = taken;
61
62
 
62
63
  let log = settings.log_offset;
63
64
 
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Words of an uploaded brick's record in `mesh_sdf_upload_bricks`: its content key, its slot, 1 when
3
+ * the slot is fresh, and its texels whose bytes differ from the slot's it found.
4
+ * @type {number}
5
+ */
6
+ export const MESH_SDF_UPLOAD_BRICK_WORDS: number;
7
+ /**
8
+ * Words of an uploaded brick's bytes in `mesh_sdf_upload_bytes`, four bytes a word, texel t in byte
9
+ * `t % 4` of word `t / 4`.
10
+ * @type {number}
11
+ */
12
+ export const MESH_SDF_UPLOAD_BYTE_WORDS: number;
13
+ /**
14
+ * @type {WebGPUStruct}
15
+ */
16
+ export const MESH_SDF_UPLOAD_SETTINGS: WebGPUStruct;
17
+ /**
18
+ * Upload, first pass, key, when deduplicating: a thread a texel of the bricks uploaded, its term of
19
+ * its brick's content key added into the brick's record (`MESH_SDF_BRICK_KEY.js`), as the bake's key
20
+ * pass does.
21
+ *
22
+ * @type {ComputeShader}
23
+ */
24
+ export const shader_mesh_sdf_upload_key: ComputeShader;
25
+ /**
26
+ * Upload, second pass, find, when deduplicating: a thread a brick uploaded, which finds a slot listed
27
+ * under its key (`chunk_mesh_sdf_contents`), or none.
28
+ *
29
+ * @type {ComputeShader}
30
+ */
31
+ export const shader_mesh_sdf_upload_find: ComputeShader;
32
+ /**
33
+ * Upload, third pass, compare, when deduplicating: a thread a texel of the bricks uploaded. A brick
34
+ * that found a slot holds each of its bytes against the byte the slot holds there, and a texel that
35
+ * differs marks the brick's record.
36
+ *
37
+ * @type {ComputeShader}
38
+ */
39
+ export const shader_mesh_sdf_upload_compare: ComputeShader;
40
+ /**
41
+ * Upload, fourth pass, fresh: a thread a brick uploaded. A brick that found a slot holding its bytes
42
+ * takes it; the rest pop a fresh slot, which store fills. Deduplicating, a brick that found no slot
43
+ * lists its own under its key, so later bricks of the same bytes share it, and one whose bytes differ
44
+ * from the slot's it found keeps its own listed nowhere: its key is another bytes' too. Two bricks of
45
+ * one key that found nothing are both listed, and a find takes the first. The host grew the atlas for
46
+ * every brick uploaded, so no pop here is refused.
47
+ *
48
+ * @type {ComputeShader}
49
+ */
50
+ export const shader_mesh_sdf_upload_fresh: ComputeShader;
51
+ /**
52
+ * Upload, fifth pass, store: a thread a texel of the bricks uploaded, a fresh brick's byte into its
53
+ * slot.
54
+ *
55
+ * @type {ComputeShader}
56
+ */
57
+ export const shader_mesh_sdf_upload_store: ComputeShader;
58
+ /**
59
+ * Upload, last pass, link: a thread an entry of the fields uploaded, a run each in `mesh_sdf_ranges`
60
+ * as `(first thread, first entry)`. An entry naming an uploaded brick, by its place in the upload,
61
+ * holds the brick's slot instead, one entry more (`chunk_mesh_sdf_contents`); an EMPTY one is left.
62
+ * Runs before free in its bake, so a field dropped since its upload gives back slots, never places.
63
+ *
64
+ * @type {ComputeShader}
65
+ */
66
+ export const shader_mesh_sdf_upload_link: ComputeShader;
67
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
68
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
69
+ //# sourceMappingURL=shader_mesh_sdf_upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_sdf_upload.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,0CAFU,MAAM,CAE6B;AAE7C;;;;GAIG;AACH,yCAFU,MAAM,CAEyD;AAEzE;;GAEG;AACH,uCAFU,YAAY,CAeM;AA4F5B;;;;;;GAMG;AACH,yCAFU,aAAa,CAEmC;AAE1D;;;;;GAKG;AACH,0CAFU,aAAa,CAQc;AAErC;;;;;;GAMG;AACH,6CAFU,aAAa,CAwBiG;AAExH;;;;;;;;;GASG;AACH,2CAFU,aAAa,CAsBgC;AAEvD;;;;;GAKG;AACH,2CAFU,aAAa,CAwB+C;AAEtE;;;;;;;GAOG;AACH,0CAFU,aAAa,CAmByC;6BA7RnC,sCAAsC;8BAJrC,kCAAkC"}