@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,109 @@
1
+ import { rgb_to_rgbe9995 } from "../../../../../core/color/rgb_to_rgbe9995.js";
2
+ import { NEUTRAL_SURFACE } from "../../../material/resident/NEUTRAL_SURFACE.js";
3
+ import { albedo_compress } from "../../../shader/chunk/material/albedo_compress.js";
4
+ import { metal_rough_compress } from "../../../shader/chunk/material/metal_rough_compress.js";
5
+ import {
6
+ SURFACE_MATERIAL_ALBEDO_PLANE,
7
+ SURFACE_MATERIAL_EMISSIVE_PLANE,
8
+ SURFACE_MATERIAL_METAL_ROUGH_PLANE
9
+ } from "./SURFACE_MATERIAL.js";
10
+
11
+ /**
12
+ * @typedef {import("../../../material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
13
+ */
14
+
15
+ /**
16
+ * What a (geometry, material) pair's surface material is made of: which planes vary over its surface,
17
+ * and the code each plane takes everywhere when it does not.
18
+ */
19
+ export class MeshSurfaceChannels {
20
+ /**
21
+ * Bit `1 << plane` for each plane (`SURFACE_MATERIAL.js`) that varies over the surface.
22
+ * @type {number}
23
+ */
24
+ texels = 0;
25
+ /**
26
+ * The diffuse albedo's code (`albedo_compress`).
27
+ * @type {number}
28
+ */
29
+ albedo = 0;
30
+ /**
31
+ * The metalness and roughness's code (`metal_rough_compress`).
32
+ * @type {number}
33
+ */
34
+ metal_rough = 0;
35
+ /**
36
+ * The emissive's code (`rgbe9995_encode`).
37
+ * @type {number}
38
+ */
39
+ emissive = 0;
40
+ }
41
+
42
+ /**
43
+ * @param {*} texture
44
+ * @returns {boolean}
45
+ */
46
+ function is_set(texture) {
47
+ return texture !== undefined && texture !== null;
48
+ }
49
+
50
+ /**
51
+ * Which planes of a pair's surface material vary, and the codes of every plane at the material's own
52
+ * values, as the bake's material sample makes them (`sample_material_data`, `shader_mesh_surface_trace`):
53
+ *
54
+ * - the diffuse albedo, base × (1 − metalness), the base the albedo texture × the diffuse color × the
55
+ * vertex color;
56
+ * - the metalness and the roughness, the ORM texture's blue and green × their factors;
57
+ * - the emissive, the emissive texture × its factor.
58
+ *
59
+ * A material's missing texture is a white texel, its missing ORM texture too, as its resident row reads
60
+ * it; a material that is not standard is {@link NEUTRAL_SURFACE} over its textures. A product varies
61
+ * where one of its terms does and none of them is 0 throughout: a metalness of 1 throughout leaves no
62
+ * diffuse albedo to vary. The codes are taken without the bake's dither.
63
+ *
64
+ * @param {ShadeMaterial} material
65
+ * @param {boolean} vertex_colored whether the geometry's vertices carry a color other than white
66
+ * @param {MeshSurfaceChannels} out
67
+ * @returns {MeshSurfaceChannels} out
68
+ */
69
+ export function mesh_surface_channels(material, vertex_colored, out) {
70
+ const surface = material.isStandardShadeMaterial === true ? material : NEUTRAL_SURFACE;
71
+
72
+ const color = surface.diffuse_color;
73
+ const metallic = surface.metallic_factor;
74
+ const roughness = surface.roughness_factor;
75
+ const emissive = surface.emissive_factor;
76
+
77
+ const orm = is_set(material.texture_orm);
78
+ const metal_varies = orm && metallic !== 0;
79
+ const rough_varies = orm && roughness !== 0;
80
+
81
+ const diffuse_none = (color[0] === 0 && color[1] === 0 && color[2] === 0) || (!metal_varies && metallic >= 1);
82
+ const albedo_varies = !diffuse_none && (is_set(material.texture_albedo) || vertex_colored || metal_varies);
83
+
84
+ const emissive_varies = is_set(material.texture_emissive) && (emissive[0] !== 0 || emissive[1] !== 0 || emissive[2] !== 0);
85
+
86
+ let texels = 0;
87
+
88
+ if (albedo_varies) {
89
+ texels |= 1 << SURFACE_MATERIAL_ALBEDO_PLANE;
90
+ }
91
+
92
+ if (metal_varies || rough_varies) {
93
+ texels |= 1 << SURFACE_MATERIAL_METAL_ROUGH_PLANE;
94
+ }
95
+
96
+ if (emissive_varies) {
97
+ texels |= 1 << SURFACE_MATERIAL_EMISSIVE_PLANE;
98
+ }
99
+
100
+ // a constant diffuse albedo has a constant metalness under it, or none at all
101
+ const kept = diffuse_none ? 0 : 1 - metallic;
102
+
103
+ out.texels = texels;
104
+ out.albedo = albedo_compress(color[0] * kept, color[1] * kept, color[2] * kept);
105
+ out.metal_rough = metal_rough_compress(metallic, roughness);
106
+ out.emissive = rgb_to_rgbe9995(emissive[0], emissive[1], emissive[2]);
107
+
108
+ return out;
109
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Model Surface Cache bake, second pass (`MESH_SURFACE_BAKE.js`): one thread, between the list pass and
3
+ * the trace, which runs a workgroup a listed texel. It writes how many the list holds where the trace
4
+ * reads its count, and the trace's folded dispatch (`folded_dispatch`). A pass never writes the command
5
+ * it is dispatched through.
6
+ *
7
+ * @type {ComputeShader}
8
+ */
9
+ export const shader_mesh_surface_command: ComputeShader;
10
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
11
+ //# sourceMappingURL=shader_mesh_surface_command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_surface_command.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js"],"names":[],"mappings":"AAoBA;;;;;;;GAOG;AACH,0CAFU,aAAa,CAwBpB;8BAhD2B,kCAAkC"}
@@ -0,0 +1,51 @@
1
+ import { chunk_folded_dispatch } from "../../../gpu_primitive/indirect/chunk_folded_dispatch.js";
2
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
3
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
4
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
5
+ import {
6
+ MESH_SURFACE_COMMAND_RESOURCE,
7
+ MESH_SURFACE_COMMAND_SETTINGS,
8
+ MESH_SURFACE_COUNTER_LISTED,
9
+ MESH_SURFACE_COUNTER_RESOURCE,
10
+ MESH_SURFACE_COUNTER_TRACED
11
+ } from "./MESH_SURFACE_BAKE.js";
12
+
13
+ const resources = new ShaderResourceSetDescriptor();
14
+
15
+ resources.setImmediate("settings", MESH_SURFACE_COMMAND_SETTINGS);
16
+
17
+ resources.createGroup()
18
+ .add(MESH_SURFACE_COUNTER_RESOURCE)
19
+ .add(MESH_SURFACE_COMMAND_RESOURCE);
20
+
21
+ /**
22
+ * Model Surface Cache bake, second pass (`MESH_SURFACE_BAKE.js`): one thread, between the list pass and
23
+ * the trace, which runs a workgroup a listed texel. It writes how many the list holds where the trace
24
+ * reads its count, and the trace's folded dispatch (`folded_dispatch`). A pass never writes the command
25
+ * it is dispatched through.
26
+ *
27
+ * @type {ComputeShader}
28
+ */
29
+ export const shader_mesh_surface_command = ComputeShader.from({
30
+ label: "Mesh Surface Command",
31
+ resources,
32
+ body: CodeChunk.from(
33
+ //language=WGSL
34
+ `
35
+ @compute @workgroup_size(1)
36
+ fn main() {
37
+ let traced = min(atomicLoad(&mesh_surface_counter[${MESH_SURFACE_COUNTER_LISTED}u]), settings.capacity);
38
+
39
+ atomicStore(&mesh_surface_counter[${MESH_SURFACE_COUNTER_TRACED}u], traced);
40
+
41
+ let folded = folded_dispatch(traced);
42
+
43
+ // word by word: the emulator drops a whole-value store into a storage variable
44
+ mesh_surface_command[0] = folded.x;
45
+ mesh_surface_command[1] = folded.y;
46
+ mesh_surface_command[2] = folded.z;
47
+ }
48
+ `, [
49
+ chunk_folded_dispatch,
50
+ ]),
51
+ });
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Model Surface Cache bake, fourth pass (`MESH_SURFACE_BAKE.js`): a workgroup a block of the frame's
3
+ * runs' bricks, 8 a brick, a thread a texel of it, the texel's staging that of its list pass thread. A
4
+ * block the brick does not keep does nothing.
5
+ *
6
+ * A texel holds surface where its staging's albedo code is not 0, and the block's presence takes a bit
7
+ * for each. Then each plane the cache keeps is coded over those texels (`MESH_SURFACE_BLOCK.js`):
8
+ *
9
+ * - **albedo**: two subsets of the texels, each a line through the square roots of its albedos, as
10
+ * their codes hold them. The subsets start as the texels at or below the block's mean of r + g + b
11
+ * and those above it; then each texel moves to the subset whose line, through the subset's mean
12
+ * along its principal axis, is nearer, until none moves or {@link ALBEDO_PARTITION_PASSES} passes.
13
+ * Each subset's line runs from its least projection to its greatest, the endpoints rounded to unorm8,
14
+ * each texel the nearest of its 8 levels; then the endpoints are fitted again to the levels taken, at
15
+ * most {@link ALBEDO_REFITS} times while the subset's error falls.
16
+ * - **metalness and roughness**: the same line through the (metalness, roughness) pairs, its endpoints
17
+ * rounded to 4 bits, each texel the nearest of its 4 levels.
18
+ * - **emissive**: each texel's code as the trace wrote it, 0 where no surface was found.
19
+ *
20
+ * A block of no surface keeps its presence, all clear, and nothing else.
21
+ *
22
+ * @type {ComputeShader}
23
+ */
24
+ export const shader_mesh_surface_encode: ComputeShader;
25
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
26
+ //# sourceMappingURL=shader_mesh_surface_encode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_surface_encode.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,yCAFU,aAAa,CAwWpB;8BAnc2B,kCAAkC"}
@@ -0,0 +1,453 @@
1
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { MESH_SDF_BRICK_TEXEL_COUNT, MESH_SDF_BRICK_TEXELS } from "../MESH_SDF.js";
5
+ import { chunk_mesh_surface_block_index } from "./chunk_mesh_surface_block.js";
6
+ import { chunk_mesh_surface_run_find } from "./chunk_mesh_surface_run_find.js";
7
+ import {
8
+ MESH_SURFACE_ENCODE_SETTINGS,
9
+ MESH_SURFACE_RUNS_RESOURCE,
10
+ MESH_SURFACE_STAGING_READ_RESOURCE,
11
+ MESH_SURFACE_STAGING_WORDS,
12
+ MESH_SURFACE_DATA_WRITE_RESOURCE
13
+ } from "./MESH_SURFACE_BAKE.js";
14
+ import {
15
+ MESH_SURFACE_ALBEDO_BLOCK_WORDS,
16
+ MESH_SURFACE_ALBEDO_ENDPOINT_WORDS,
17
+ MESH_SURFACE_ALBEDO_LEVELS,
18
+ MESH_SURFACE_BLOCK_TEXEL_COUNT,
19
+ MESH_SURFACE_BRICK_BLOCKS,
20
+ MESH_SURFACE_EMISSIVE_BLOCK_WORDS,
21
+ MESH_SURFACE_METAL_ROUGH_BLOCK_WORDS,
22
+ MESH_SURFACE_METAL_ROUGH_LEVELS,
23
+ MESH_SURFACE_NO_BLOCK,
24
+ MESH_SURFACE_PRESENCE_BLOCK_WORDS
25
+ } from "./MESH_SURFACE_BLOCK.js";
26
+ import { MESH_SURFACE_RECORDS_RESOURCE } from "./MESH_SURFACE_RESOURCES.js";
27
+ import { MESH_SURFACE_STRUCT } from "./MESH_SURFACE_STRUCT.js";
28
+ import {
29
+ SURFACE_MATERIAL_ALBEDO_PLANE,
30
+ SURFACE_MATERIAL_EMISSIVE_PLANE,
31
+ SURFACE_MATERIAL_METAL_ROUGH_PLANE
32
+ } from "./SURFACE_MATERIAL.js";
33
+
34
+ /**
35
+ * Times an albedo subset's endpoints are fitted again to the indices they gave, at most: each fit the
36
+ * least squares of the square roots over the subset's texels, kept while it lowers the error. The
37
+ * error stops falling after three on Sponza's caches.
38
+ * @type {number}
39
+ */
40
+ const ALBEDO_REFITS = 3;
41
+
42
+ /**
43
+ * Passes of the albedo's partition into its two subsets, at most: each moves every texel to the subset
44
+ * whose line is nearer, and the partition is done when no texel moves. The bound stops a block whose
45
+ * texels keep trading places between the two lines.
46
+ * @type {number}
47
+ */
48
+ const ALBEDO_PARTITION_PASSES = 16;
49
+
50
+ const resources = new ShaderResourceSetDescriptor();
51
+
52
+ resources.setImmediate("settings", MESH_SURFACE_ENCODE_SETTINGS);
53
+
54
+ resources.createGroup()
55
+ .add(MESH_SURFACE_RECORDS_RESOURCE)
56
+ .add(MESH_SURFACE_RUNS_RESOURCE)
57
+ .add(MESH_SURFACE_STAGING_READ_RESOURCE)
58
+ .add(MESH_SURFACE_DATA_WRITE_RESOURCE);
59
+
60
+ const T = MESH_SDF_BRICK_TEXELS;
61
+ const N = MESH_SURFACE_BLOCK_TEXEL_COUNT;
62
+ const A = MESH_SURFACE_ALBEDO_LEVELS;
63
+ const M = MESH_SURFACE_METAL_ROUGH_LEVELS;
64
+
65
+ // the workgroup's words: presence, then the albedo's fields, then the metalness and roughness's indices
66
+ const ALBEDO_FIELD_WORDS = MESH_SURFACE_ALBEDO_BLOCK_WORDS - MESH_SURFACE_ALBEDO_ENDPOINT_WORDS;
67
+ const BITS_PRESENCE = 0;
68
+ const BITS_ALBEDO = MESH_SURFACE_PRESENCE_BLOCK_WORDS;
69
+ const BITS_METAL_ROUGH = BITS_ALBEDO + ALBEDO_FIELD_WORDS;
70
+ const BITS = BITS_METAL_ROUGH + MESH_SURFACE_METAL_ROUGH_BLOCK_WORDS - 1;
71
+
72
+ /**
73
+ * Model Surface Cache bake, fourth pass (`MESH_SURFACE_BAKE.js`): a workgroup a block of the frame's
74
+ * runs' bricks, 8 a brick, a thread a texel of it, the texel's staging that of its list pass thread. A
75
+ * block the brick does not keep does nothing.
76
+ *
77
+ * A texel holds surface where its staging's albedo code is not 0, and the block's presence takes a bit
78
+ * for each. Then each plane the cache keeps is coded over those texels (`MESH_SURFACE_BLOCK.js`):
79
+ *
80
+ * - **albedo**: two subsets of the texels, each a line through the square roots of its albedos, as
81
+ * their codes hold them. The subsets start as the texels at or below the block's mean of r + g + b
82
+ * and those above it; then each texel moves to the subset whose line, through the subset's mean
83
+ * along its principal axis, is nearer, until none moves or {@link ALBEDO_PARTITION_PASSES} passes.
84
+ * Each subset's line runs from its least projection to its greatest, the endpoints rounded to unorm8,
85
+ * each texel the nearest of its 8 levels; then the endpoints are fitted again to the levels taken, at
86
+ * most {@link ALBEDO_REFITS} times while the subset's error falls.
87
+ * - **metalness and roughness**: the same line through the (metalness, roughness) pairs, its endpoints
88
+ * rounded to 4 bits, each texel the nearest of its 4 levels.
89
+ * - **emissive**: each texel's code as the trace wrote it, 0 where no surface was found.
90
+ *
91
+ * A block of no surface keeps its presence, all clear, and nothing else.
92
+ *
93
+ * @type {ComputeShader}
94
+ */
95
+ export const shader_mesh_surface_encode = ComputeShader.from({
96
+ label: "Mesh Surface Encode",
97
+ resources,
98
+ body: CodeChunk.from(
99
+ //language=WGSL
100
+ `
101
+ /** (block number, the cache's texels, the cache, 0) */
102
+ var<workgroup> encode_job: vec4<u32>;
103
+ var<workgroup> encode_sum: array<vec4<f32>, ${N}>;
104
+ var<workgroup> encode_bits: array<atomic<u32>, ${BITS}>;
105
+
106
+ fn encode_reduce_sum(local: u32, v: vec4<f32>) -> vec4<f32> {
107
+ workgroupBarrier();
108
+ encode_sum[local] = v;
109
+
110
+ for (var s = ${N / 2}u; s > 0u; s >>= 1u) {
111
+ workgroupBarrier();
112
+
113
+ if (local < s) {
114
+ encode_sum[local] += encode_sum[local + s];
115
+ }
116
+ }
117
+
118
+ return workgroupUniformLoad(&encode_sum[0]);
119
+ }
120
+
121
+ fn encode_reduce_max(local: u32, v: vec4<f32>) -> vec4<f32> {
122
+ workgroupBarrier();
123
+ encode_sum[local] = v;
124
+
125
+ for (var s = ${N / 2}u; s > 0u; s >>= 1u) {
126
+ workgroupBarrier();
127
+
128
+ if (local < s) {
129
+ encode_sum[local] = max(encode_sum[local], encode_sum[local + s]);
130
+ }
131
+ }
132
+
133
+ return workgroupUniformLoad(&encode_sum[0]);
134
+ }
135
+
136
+ /** the principal axis of a covariance (xx, xy, xz, yy), (yz, zz) */
137
+ fn encode_axis3(c0: vec4<f32>, c1: vec4<f32>) -> vec3<f32> {
138
+ var axis = vec3<f32>(0.57735027);
139
+
140
+ for (var i = 0u; i < 16u; i++) {
141
+ let next = vec3<f32>(
142
+ c0.x * axis.x + c0.y * axis.y + c0.z * axis.z,
143
+ c0.y * axis.x + c0.w * axis.y + c1.x * axis.z,
144
+ c0.z * axis.x + c1.x * axis.y + c1.y * axis.z,
145
+ );
146
+ let l = length(next);
147
+
148
+ if (!(l > 1e-30)) {
149
+ break;
150
+ }
151
+
152
+ axis = next / l;
153
+ }
154
+
155
+ return axis;
156
+ }
157
+
158
+ /** the principal axis of a covariance (xx, xy, yy) */
159
+ fn encode_axis2(c: vec4<f32>) -> vec2<f32> {
160
+ var axis = vec2<f32>(0.70710678);
161
+
162
+ for (var i = 0u; i < 16u; i++) {
163
+ let next = vec2<f32>(c.x * axis.x + c.y * axis.y, c.y * axis.x + c.z * axis.y);
164
+ let l = length(next);
165
+
166
+ if (!(l > 1e-30)) {
167
+ break;
168
+ }
169
+
170
+ axis = next / l;
171
+ }
172
+
173
+ return axis;
174
+ }
175
+
176
+ fn encode_unorm8(e: vec3<f32>) -> vec3<f32> {
177
+ return round(saturate(e) * 255.0) / 255.0;
178
+ }
179
+
180
+ /** the nearest of the line's levels to a square root */
181
+ fn encode_albedo_level(q: vec3<f32>, e0: vec3<f32>, e1: vec3<f32>) -> u32 {
182
+ var best = 1e30;
183
+ var level = 0u;
184
+
185
+ for (var k = 0u; k < ${A}u; k++) {
186
+ let p = mix(e0, e1, f32(k) / ${A - 1}.0);
187
+ let d = dot(p - q, p - q);
188
+
189
+ if (d < best) {
190
+ best = d;
191
+ level = k;
192
+ }
193
+ }
194
+
195
+ return level;
196
+ }
197
+
198
+ /** a level's error against the texel's albedo, linear, the mean over its channels */
199
+ fn encode_albedo_error(albedo: vec3<f32>, e0: vec3<f32>, e1: vec3<f32>, level: u32) -> f32 {
200
+ let p = mix(e0, e1, f32(level) / ${A - 1}.0);
201
+
202
+ return dot(abs(p * p - albedo), vec3<f32>(1.0 / 3.0));
203
+ }
204
+
205
+ /** the principal axis of the square roots q of the texels of weight w, 0 or 1, about their mean */
206
+ fn encode_albedo_axis(local: u32, q: vec3<f32>, mean: vec3<f32>, w: f32) -> vec3<f32> {
207
+ let d = (q - mean) * w;
208
+ let c0 = encode_reduce_sum(local, vec4<f32>(d.x * d.x, d.x * d.y, d.x * d.z, d.y * d.y));
209
+ let c1 = encode_reduce_sum(local, vec4<f32>(d.y * d.z, d.z * d.z, 0.0, 0.0));
210
+
211
+ return encode_axis3(c0, c1);
212
+ }
213
+
214
+ struct EncodeAlbedoLine {
215
+ e0: vec3<f32>,
216
+ e1: vec3<f32>,
217
+ /** the texel's level on the line */
218
+ level: u32,
219
+ }
220
+
221
+ /** the line of the texels of weight w, 0 or 1, of which there are count, more than 0 */
222
+ fn encode_albedo_line(local: u32, q: vec3<f32>, albedo: vec3<f32>, w: f32, count: f32) -> EncodeAlbedoLine {
223
+ let mean = encode_reduce_sum(local, vec4<f32>(q * w, 0.0)).xyz / count;
224
+ let axis = encode_albedo_axis(local, q, mean, w);
225
+
226
+ // the least projection as the greatest of its negation
227
+ let p = dot(q - mean, axis);
228
+ let ends = encode_reduce_max(local, vec4<f32>(select(-1e30, p, w > 0.0), select(-1e30, -p, w > 0.0), 0.0, 0.0));
229
+
230
+ var e0 = encode_unorm8(mean - ends.y * axis);
231
+ var e1 = encode_unorm8(mean + ends.x * axis);
232
+ var level = encode_albedo_level(q, e0, e1);
233
+ var error = encode_reduce_sum(local, vec4<f32>(w * encode_albedo_error(albedo, e0, e1, level), 0.0, 0.0, 0.0)).x;
234
+
235
+ for (var refit = 0u; refit < ${ALBEDO_REFITS}u; refit++) {
236
+ let t = f32(level) / ${A - 1}.0;
237
+ let s = 1.0 - t;
238
+ let m = encode_reduce_sum(local, vec4<f32>(w * s * s, w * s * t, w * t * t, 0.0));
239
+ let x0 = encode_reduce_sum(local, vec4<f32>(w * s * q, 0.0)).xyz;
240
+ let x1 = encode_reduce_sum(local, vec4<f32>(w * t * q, 0.0)).xyz;
241
+ let det = m.x * m.z - m.y * m.y;
242
+
243
+ if (!(abs(det) > 1e-12)) {
244
+ break;
245
+ }
246
+
247
+ let f0 = encode_unorm8((m.z * x0 - m.y * x1) / det);
248
+ let f1 = encode_unorm8((m.x * x1 - m.y * x0) / det);
249
+ let next = encode_albedo_level(q, f0, f1);
250
+ let next_error = encode_reduce_sum(local, vec4<f32>(w * encode_albedo_error(albedo, f0, f1, next), 0.0, 0.0, 0.0)).x;
251
+
252
+ if (!(next_error < error)) {
253
+ break;
254
+ }
255
+
256
+ e0 = f0;
257
+ e1 = f1;
258
+ level = next;
259
+ error = next_error;
260
+ }
261
+
262
+ return EncodeAlbedoLine(e0, e1, level);
263
+ }
264
+
265
+ @compute @workgroup_size(${N})
266
+ fn main(
267
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
268
+ @builtin(local_invocation_index) local: u32,
269
+ ) {
270
+ let job = workgroup_id.y * settings.groups_x + workgroup_id.x;
271
+ let frame_brick = job / ${MESH_SURFACE_BRICK_BLOCKS}u;
272
+ let b = job % ${MESH_SURFACE_BRICK_BLOCKS}u;
273
+
274
+ if (frame_brick >= settings.brick_count) {
275
+ return;
276
+ }
277
+
278
+ // the brick's first texel's thread of the list pass
279
+ let first = frame_brick * ${MESH_SDF_BRICK_TEXEL_COUNT}u;
280
+
281
+ if (local == 0u) {
282
+ let run = mesh_surface_runs[mesh_surface_run_find(settings.run_count, first)];
283
+ let record = mesh_surface_records[run.y];
284
+ let number = run.z + (first - run.x) / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
285
+
286
+ encode_job = vec4<u32>(mesh_surface_block_number(mesh_surface_data[record.table + number], b), record.texels, run.y, 0u);
287
+ }
288
+
289
+ let taken = workgroupUniformLoad(&encode_job);
290
+ let block = taken.x;
291
+
292
+ if (block == ${MESH_SURFACE_NO_BLOCK}u) {
293
+ return;
294
+ }
295
+
296
+ let record = mesh_surface_records[taken.z];
297
+
298
+ // the texel: local = l.x + 4 (l.y + 4 l.z) of the block, its block's corner in the brick
299
+ let l = vec3<u32>(local & 3u, (local >> 2u) & 3u, local >> 4u);
300
+ let t = vec3<u32>(b & 1u, (b >> 1u) & 1u, b >> 2u) * 4u + l;
301
+ let staged = ${MESH_SURFACE_STAGING_WORDS}u * (first + t.x + ${T}u * (t.y + ${T}u * t.z));
302
+
303
+ let albedo_code = mesh_surface_staging[staged];
304
+ let present = albedo_code != 0u;
305
+ let pw = select(0.0, 1.0, present);
306
+
307
+ if (present) {
308
+ atomicOr(&encode_bits[${BITS_PRESENCE}u + (local >> 5u)], 1u << (local & 31u));
309
+ }
310
+
311
+ let count = encode_reduce_sum(local, vec4<f32>(pw, 0.0, 0.0, 0.0)).x;
312
+
313
+ if (local < ${MESH_SURFACE_PRESENCE_BLOCK_WORDS}u) {
314
+ mesh_surface_data[record.presence_blocks + block * ${MESH_SURFACE_PRESENCE_BLOCK_WORDS}u + local] = atomicLoad(&encode_bits[${BITS_PRESENCE}u + local]);
315
+ }
316
+
317
+ if (count == 0.0) {
318
+ return;
319
+ }
320
+
321
+ if ((taken.y & ${1 << SURFACE_MATERIAL_ALBEDO_PLANE}u) != 0u) {
322
+ let q = unpack4x8unorm(albedo_code).rgb;
323
+ let albedo = q * q;
324
+
325
+ // the subsets: those above the block's mean of r + g + b in 1, then each texel to the nearer line
326
+ let luma = q.r + q.g + q.b;
327
+ let luma_mean = encode_reduce_sum(local, vec4<f32>(pw * luma, 0.0, 0.0, 0.0)).x / count;
328
+ var subset = select(0u, 1u, luma > luma_mean);
329
+
330
+ for (var sweep = 0u; sweep < ${ALBEDO_PARTITION_PASSES}u; sweep++) {
331
+ let in1 = select(0.0, pw, subset == 1u);
332
+ let in0 = pw - in1;
333
+ let s0 = encode_reduce_sum(local, vec4<f32>(q * in0, in0));
334
+ let s1 = encode_reduce_sum(local, vec4<f32>(q * in1, in1));
335
+
336
+ if (!(s0.w > 0.0 && s1.w > 0.0)) {
337
+ break;
338
+ }
339
+
340
+ let m0 = s0.xyz / s0.w;
341
+ let m1 = s1.xyz / s1.w;
342
+ let a0 = encode_albedo_axis(local, q, m0, in0);
343
+ let a1 = encode_albedo_axis(local, q, m1, in1);
344
+
345
+ // the squared distance to each line, a tie to subset 0
346
+ let d0 = q - m0;
347
+ let d1 = q - m1;
348
+ let t0 = dot(d0, a0);
349
+ let t1 = dot(d1, a1);
350
+ let nearer = select(0u, 1u, dot(d1, d1) - t1 * t1 < dot(d0, d0) - t0 * t0);
351
+ let moved = encode_reduce_sum(local, vec4<f32>(select(0.0, pw, nearer != subset), 0.0, 0.0, 0.0)).x;
352
+
353
+ subset = nearer;
354
+
355
+ if (moved == 0.0) {
356
+ break;
357
+ }
358
+ }
359
+
360
+ let in1 = select(0.0, pw, subset == 1u);
361
+ let in0 = pw - in1;
362
+ let counts = encode_reduce_sum(local, vec4<f32>(in0, in1, 0.0, 0.0));
363
+ var line0 = EncodeAlbedoLine(vec3<f32>(0.0), vec3<f32>(0.0), 0u);
364
+ var line1 = EncodeAlbedoLine(vec3<f32>(0.0), vec3<f32>(0.0), 0u);
365
+
366
+ if (counts.x > 0.0) {
367
+ line0 = encode_albedo_line(local, q, albedo, in0, counts.x);
368
+ }
369
+
370
+ if (counts.y > 0.0) {
371
+ line1 = encode_albedo_line(local, q, albedo, in1, counts.y);
372
+ }
373
+
374
+ // 4 bits a texel after the endpoints, its subset above its level
375
+ if (present) {
376
+ let field = select(line0.level, 8u | line1.level, subset == 1u);
377
+
378
+ atomicOr(&encode_bits[${BITS_ALBEDO}u + (local >> 3u)], field << (4u * (local & 7u)));
379
+ }
380
+
381
+ workgroupBarrier();
382
+
383
+ let at = record.albedo_blocks + block * ${MESH_SURFACE_ALBEDO_BLOCK_WORDS}u;
384
+
385
+ if (local == 0u) {
386
+ mesh_surface_data[at] = pack4x8unorm(vec4<f32>(line0.e0, 0.0));
387
+ mesh_surface_data[at + 1u] = pack4x8unorm(vec4<f32>(line0.e1, 0.0));
388
+ mesh_surface_data[at + 2u] = pack4x8unorm(vec4<f32>(line1.e0, 0.0));
389
+ mesh_surface_data[at + 3u] = pack4x8unorm(vec4<f32>(line1.e1, 0.0));
390
+ }
391
+
392
+ if (local < ${ALBEDO_FIELD_WORDS}u) {
393
+ mesh_surface_data[at + ${MESH_SURFACE_ALBEDO_ENDPOINT_WORDS}u + local] = atomicLoad(&encode_bits[${BITS_ALBEDO}u + local]);
394
+ }
395
+ }
396
+
397
+ if ((taken.y & ${1 << SURFACE_MATERIAL_METAL_ROUGH_PLANE}u) != 0u) {
398
+ let code = mesh_surface_staging[staged + 1u];
399
+ let mr = vec2<f32>(f32(code & 15u), f32((code >> 4u) & 15u)) / 15.0;
400
+
401
+ let mean = encode_reduce_sum(local, vec4<f32>(mr * pw, 0.0, 0.0)).xy / count;
402
+ let d = (mr - mean) * pw;
403
+ let axis = encode_axis2(encode_reduce_sum(local, vec4<f32>(d.x * d.x, d.x * d.y, d.y * d.y, 0.0)));
404
+
405
+ let p = dot(mr - mean, axis);
406
+ let ends = encode_reduce_max(local, vec4<f32>(select(-1e30, p, present), select(-1e30, -p, present), 0.0, 0.0));
407
+
408
+ // 4 bits each
409
+ let n0 = round(saturate(mean - ends.y * axis) * 15.0);
410
+ let n1 = round(saturate(mean + ends.x * axis) * 15.0);
411
+
412
+ var best = 1e30;
413
+ var level = 0u;
414
+
415
+ for (var k = 0u; k < ${M}u; k++) {
416
+ let q = mix(n0, n1, f32(k) / ${M - 1}.0) / 15.0;
417
+ let e = dot(q - mr, q - mr);
418
+
419
+ if (e < best) {
420
+ best = e;
421
+ level = k;
422
+ }
423
+ }
424
+
425
+ if (present) {
426
+ let bit = 2u * local;
427
+
428
+ atomicOr(&encode_bits[${BITS_METAL_ROUGH}u + (bit >> 5u)], level << (bit & 31u));
429
+ }
430
+
431
+ workgroupBarrier();
432
+
433
+ let at = record.metal_rough_blocks + block * ${MESH_SURFACE_METAL_ROUGH_BLOCK_WORDS}u;
434
+
435
+ if (local == 0u) {
436
+ mesh_surface_data[at] = u32(n0.x) | (u32(n0.y) << 4u) | (u32(n1.x) << 8u) | (u32(n1.y) << 12u);
437
+ }
438
+
439
+ if (local < ${MESH_SURFACE_METAL_ROUGH_BLOCK_WORDS - 1}u) {
440
+ mesh_surface_data[at + 1u + local] = atomicLoad(&encode_bits[${BITS_METAL_ROUGH}u + local]);
441
+ }
442
+ }
443
+
444
+ if ((taken.y & ${1 << SURFACE_MATERIAL_EMISSIVE_PLANE}u) != 0u) {
445
+ mesh_surface_data[record.emissive_blocks + block * ${MESH_SURFACE_EMISSIVE_BLOCK_WORDS}u + local] = select(0u, mesh_surface_staging[staged + 2u], present);
446
+ }
447
+ }
448
+ `, [
449
+ MESH_SURFACE_STRUCT.declaration_chunk,
450
+ chunk_mesh_surface_block_index,
451
+ chunk_mesh_surface_run_find,
452
+ ]),
453
+ });
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Model Surface Cache bake, first pass (`MESH_SURFACE_BAKE.js`): a thread a texel of the frame's runs'
3
+ * bricks, the bricks a run's cache's field numbered from the run's first number on.
4
+ *
5
+ * Every texel's staging, the slot of its thread, is cleared to no surface. A texel that can hold surface
6
+ * (`mesh_surface_listed`) is listed for the trace, with what it resolved.
7
+ *
8
+ * @type {ComputeShader}
9
+ */
10
+ export const shader_mesh_surface_list: ComputeShader;
11
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
12
+ //# sourceMappingURL=shader_mesh_surface_list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_surface_list.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js"],"names":[],"mappings":"AA0CA;;;;;;;;GAQG;AACH,uCAFU,aAAa,CAiDpB;8BAjG2B,kCAAkC"}