@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,67 @@
1
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
+
3
+ /**
4
+ * A surface material texel fitted from weighted surface samples (`SURFACE_MATERIAL.js`):
5
+ *
6
+ * ```wgsl
7
+ * fn surface_material_fit_add(fit: ptr<function, SurfaceMaterialFit>, weight: f32, albedo: vec3<f32>, metal_rough: vec2<f32>, emissive: vec3<f32>)
8
+ * fn surface_material_fit_solve(fit: SurfaceMaterialFit) -> SurfaceMaterialFitted
9
+ * ```
10
+ *
11
+ * A sample is a point of the surface under the texel's tent and the material there. Every property is
12
+ * fitted as a constant, the least-squares one: the samples' weighted mean. The sums add in any order,
13
+ * so a fit can be split and joined.
14
+ *
15
+ * `covered` is false for a fit of no weight: no surface was sampled under the tent.
16
+ *
17
+ * @type {CodeChunk}
18
+ */
19
+ export const chunk_surface_material_fit = CodeChunk.from(
20
+ //language=WGSL
21
+ `
22
+ struct SurfaceMaterialFit {
23
+ weight: f32,
24
+ /** the weighted sums of the samples' albedos, metalness and roughness, and emissives */
25
+ albedo: vec3<f32>,
26
+ metal_rough: vec2<f32>,
27
+ emissive: vec3<f32>,
28
+ }
29
+
30
+ struct SurfaceMaterialFitted {
31
+ covered: bool,
32
+ albedo: vec3<f32>,
33
+ /** (metalness, roughness) */
34
+ metal_rough: vec2<f32>,
35
+ emissive: vec3<f32>,
36
+ }
37
+
38
+ fn surface_material_fit_add(
39
+ fit: ptr<function, SurfaceMaterialFit>,
40
+ weight: f32,
41
+ albedo: vec3<f32>,
42
+ metal_rough: vec2<f32>,
43
+ emissive: vec3<f32>,
44
+ ) {
45
+ (*fit).weight += weight;
46
+ (*fit).albedo += weight * albedo;
47
+ (*fit).metal_rough += weight * metal_rough;
48
+ (*fit).emissive += weight * emissive;
49
+ }
50
+
51
+ fn surface_material_fit_solve(fit: SurfaceMaterialFit) -> SurfaceMaterialFitted {
52
+ var out: SurfaceMaterialFitted;
53
+
54
+ if (!(fit.weight > 0.0)) {
55
+ return out;
56
+ }
57
+
58
+ let inverse_weight = 1.0 / fit.weight;
59
+
60
+ out.covered = true;
61
+ out.albedo = fit.albedo * inverse_weight;
62
+ out.metal_rough = fit.metal_rough * inverse_weight;
63
+ out.emissive = fit.emissive * inverse_weight;
64
+
65
+ return out;
66
+ }
67
+ `);
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Where a reader stands among a brick's surface material texels (`SURFACE_MATERIAL.js`), and which of
3
+ * them hold the surface it is on:
4
+ *
5
+ * ```wgsl
6
+ * fn surface_material_point(local: vec3<f32>, distance: f32, normal: vec3<f32>) -> vec3<f32>
7
+ * fn surface_material_base(point: vec3<f32>) -> vec3<u32>
8
+ * fn surface_material_corners(distances: texture_3d<f32>, field: vec3<u32>, point: vec3<f32>, present: u32, normal: vec3<f32>, tolerance: f32) -> SurfaceMaterialCorners
9
+ * fn surface_material_corner_weight(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32
10
+ * ```
11
+ *
12
+ * `local` is a point by the surface in voxels from the brick's corner, a hit's position, `distance` the
13
+ * field there in voxels and `normal` its normal. `surface_material_point` moves the point onto the
14
+ * surface by the distance along the normal and holds it to the brick's [0, 7]; the 8 texels around it,
15
+ * the corners of the voxel from `surface_material_base`, are the ones read. The brick's distances are
16
+ * the tile of `distances` from texel `field`, the field's encoding over ±{@link MESH_SDF_BAND_VOXELS}
17
+ * voxels. `present` has bit `c` for each corner `(c & 1, (c >> 1) & 1, c >> 2)` that holds a material,
18
+ * as the reader's storage says.
19
+ *
20
+ * A texel holds the surface its own distance d puts against the normal from it, as a bake looks at
21
+ * it. The field joins surfaces closer than a voxel, as a banner hanging off a wall, into one; its
22
+ * texels keep them apart. Of the corners that hold a material and weigh anything, the one whose surface
23
+ * lies nearest the surface point names the surface the reader is on, and a corner's weight is its
24
+ * trilinear one where it holds a material and its own surface lies within `tolerance` voxels of that
25
+ * one, 0 elsewhere: the reader's caller says how near two surfaces may be and still be one to it. The
26
+ * normal stands in for each corner's own, so a corner whose surface lies off to its side, as just past
27
+ * a banner's edge, counts it as lying along the normal.
28
+ *
29
+ * @type {CodeChunk}
30
+ */
31
+ export const chunk_surface_material_corners: CodeChunk;
32
+ /**
33
+ * What a reader's surface takes from a brick's surface material texels kept in all three planes, a
34
+ * tile of each at the same texel, the albedo plane saying which hold a material (a written code is never
35
+ * 0): its diffuse albedo and its emissive, and apart its metalness and roughness:
36
+ *
37
+ * ```wgsl
38
+ * fn surface_material_present(albedo_codes: texture_3d<u32>, texel: vec3<u32>) -> u32
39
+ * fn surface_material_surface(distances: texture_3d<f32>, albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialSurface
40
+ * fn surface_material_metal_rough(distances: texture_3d<f32>, metal_rough_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialMetalRough
41
+ * ```
42
+ *
43
+ * `surface_material_present` is the `present` of the voxel whose least corner is plane texel `texel`, a
44
+ * tile's origin plus `surface_material_base`. `material` is the tile's origin in the planes. The voxel's
45
+ * 8 texels (`surface_material_corners`) are blended by their weights: trilinear over those holding the
46
+ * surface the reader is on, as the field itself is read. `found` is false where none of the 8 holds a
47
+ * material: no surface sample was near.
48
+ *
49
+ * @type {CodeChunk}
50
+ */
51
+ export const chunk_surface_material_read: CodeChunk;
52
+ /**
53
+ * What `surface_material_pick` draws when no texel of the voxel weighs anything.
54
+ * @type {number}
55
+ */
56
+ export const SURFACE_MATERIAL_NO_CORNER: number;
57
+ /**
58
+ * One of the voxel's 8 texels (`surface_material_corners`) drawn in proportion to its weight, and its
59
+ * material: on average what {@link chunk_surface_material_read} blends, from one texel, for a reader
60
+ * that averages its reads, as a probe averages its rays (Fajardo et al., "Stochastic Texture
61
+ * Filtering", 2023):
62
+ *
63
+ * ```wgsl
64
+ * fn surface_material_pick(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, u: f32) -> u32
65
+ * fn surface_material_surface_at(albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners, corner: u32) -> SurfaceMaterialSurface
66
+ * ```
67
+ *
68
+ * `surface_material_pick` draws corner `c`, `(c & 1, (c >> 1) & 1, c >> 2)`, with the chance of its
69
+ * weight (`surface_material_corner_weight`) over the voxel's (`sample_discrete_wrs_mat2x4`), `u`
70
+ * uniform in [0, 1); a corner of weight 0 is never drawn, and where none weighs anything the draw is
71
+ * {@link SURFACE_MATERIAL_NO_CORNER}. `surface_material_surface_at` is that corner's diffuse albedo and
72
+ * emissive, `found` false for none.
73
+ *
74
+ * @type {CodeChunk}
75
+ */
76
+ export const chunk_surface_material_pick: CodeChunk;
77
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
78
+ //# sourceMappingURL=chunk_surface_material_read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_surface_material_read.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,6CAFU,SAAS,CAiGZ;AAEP;;;;;;;;;;;;;;;;;;GAkBG;AACH,0CAFU,SAAS,CA0FZ;AAEP;;;GAGG;AACH,yCAFU,MAAM,CAE4B;AAE5C;;;;;;;;;;;;;;;;;;GAkBG;AACH,0CAFU,SAAS,CAoDZ;0BA1TmB,uCAAuC"}
@@ -0,0 +1,320 @@
1
+ import { chunk_rgbe9995_decode } from "../../../shader/chunk/color/rgbe9995/chunk_rgbe9995_decode.js";
2
+ import { F32_MAX_DEFINITION } from "../../../shader/chunk/math/F32_MAX_DEFINITION.js";
3
+ import { chunk_albedo_uncompress } from "../../../shader/chunk/material/chunk_albedo_uncompress.js";
4
+ import { chunk_metal_rough_uncompress } from "../../../shader/chunk/material/chunk_metal_rough_uncompress.js";
5
+ import { chunk_sample_discrete_wrs_mat2x4 } from "../../../shader/chunk/random/reservoir/chunk_sample_discrete_wrs_mat2x4.js";
6
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
7
+ import { MESH_SDF_BAND_VOXELS, MESH_SDF_BRICK_VOXELS } from "../MESH_SDF.js";
8
+
9
+ /**
10
+ * Where a reader stands among a brick's surface material texels (`SURFACE_MATERIAL.js`), and which of
11
+ * them hold the surface it is on:
12
+ *
13
+ * ```wgsl
14
+ * fn surface_material_point(local: vec3<f32>, distance: f32, normal: vec3<f32>) -> vec3<f32>
15
+ * fn surface_material_base(point: vec3<f32>) -> vec3<u32>
16
+ * fn surface_material_corners(distances: texture_3d<f32>, field: vec3<u32>, point: vec3<f32>, present: u32, normal: vec3<f32>, tolerance: f32) -> SurfaceMaterialCorners
17
+ * fn surface_material_corner_weight(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32
18
+ * ```
19
+ *
20
+ * `local` is a point by the surface in voxels from the brick's corner, a hit's position, `distance` the
21
+ * field there in voxels and `normal` its normal. `surface_material_point` moves the point onto the
22
+ * surface by the distance along the normal and holds it to the brick's [0, 7]; the 8 texels around it,
23
+ * the corners of the voxel from `surface_material_base`, are the ones read. The brick's distances are
24
+ * the tile of `distances` from texel `field`, the field's encoding over ±{@link MESH_SDF_BAND_VOXELS}
25
+ * voxels. `present` has bit `c` for each corner `(c & 1, (c >> 1) & 1, c >> 2)` that holds a material,
26
+ * as the reader's storage says.
27
+ *
28
+ * A texel holds the surface its own distance d puts against the normal from it, as a bake looks at
29
+ * it. The field joins surfaces closer than a voxel, as a banner hanging off a wall, into one; its
30
+ * texels keep them apart. Of the corners that hold a material and weigh anything, the one whose surface
31
+ * lies nearest the surface point names the surface the reader is on, and a corner's weight is its
32
+ * trilinear one where it holds a material and its own surface lies within `tolerance` voxels of that
33
+ * one, 0 elsewhere: the reader's caller says how near two surfaces may be and still be one to it. The
34
+ * normal stands in for each corner's own, so a corner whose surface lies off to its side, as just past
35
+ * a banner's edge, counts it as lying along the normal.
36
+ *
37
+ * @type {CodeChunk}
38
+ */
39
+ export const chunk_surface_material_corners = CodeChunk.from(
40
+ //language=WGSL
41
+ `
42
+ struct SurfaceMaterialCorners {
43
+ /** the voxel's least corner, a texel of the brick */
44
+ base: vec3<u32>,
45
+ /** the voxel's least corner, a texel of the distances */
46
+ field: vec3<u32>,
47
+ /** the surface point within the voxel: the trilinear weights' fraction */
48
+ fraction: vec3<f32>,
49
+ normal: vec3<f32>,
50
+ /** bit c for each corner (c & 1, (c >> 1) & 1, c >> 2) that holds a material */
51
+ present: u32,
52
+ /** the surface the reader is on, along the normal from the surface point, voxels */
53
+ layer: f32,
54
+ /** how far from it a corner's surface may lie and be the same surface, voxels */
55
+ tolerance: f32,
56
+ }
57
+
58
+ fn surface_material_point(local: vec3<f32>, distance: f32, normal: vec3<f32>) -> vec3<f32> {
59
+ return clamp(local - distance * normal, vec3<f32>(0.0), vec3<f32>(${MESH_SDF_BRICK_VOXELS}.0));
60
+ }
61
+
62
+ fn surface_material_base(point: vec3<f32>) -> vec3<u32> {
63
+ return vec3<u32>(min(floor(point), vec3<f32>(${MESH_SDF_BRICK_VOXELS - 1}.0)));
64
+ }
65
+
66
+ fn surface_material_corner_trilinear(corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32 {
67
+ let w = select(1.0 - corners.fraction, corners.fraction, corner == vec3<u32>(1u));
68
+
69
+ return w.x * w.y * w.z;
70
+ }
71
+
72
+ fn surface_material_corner_present(corners: SurfaceMaterialCorners, corner: vec3<u32>) -> bool {
73
+ return (corners.present & (1u << (corner.x | (corner.y << 1u) | (corner.z << 2u)))) != 0u;
74
+ }
75
+
76
+ /** the corner's own surface, along the normal from the surface point, voxels */
77
+ fn surface_material_corner_surface(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32 {
78
+ const band = ${MESH_SDF_BAND_VOXELS}.0;
79
+
80
+ let d = fma(textureLoad(distances, corners.field + corner, 0).r, 2.0 * band, -band);
81
+
82
+ return -d - dot(corners.normal, corners.fraction - vec3<f32>(corner));
83
+ }
84
+
85
+ fn surface_material_corners(
86
+ distances: texture_3d<f32>,
87
+ field: vec3<u32>,
88
+ point: vec3<f32>,
89
+ present: u32,
90
+ normal: vec3<f32>,
91
+ tolerance: f32,
92
+ ) -> SurfaceMaterialCorners {
93
+ let base = surface_material_base(point);
94
+
95
+ var out: SurfaceMaterialCorners;
96
+
97
+ out.base = base;
98
+ out.field = field + base;
99
+ out.fraction = point - vec3<f32>(base);
100
+ out.normal = normal;
101
+ out.present = present;
102
+ out.tolerance = tolerance;
103
+
104
+ var layer = F32_MAX;
105
+
106
+ for (var c = 0u; c < 8u; c++) {
107
+ let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
108
+
109
+ if (surface_material_corner_trilinear(out, corner) > 0.0 && surface_material_corner_present(out, corner)) {
110
+ let held = surface_material_corner_surface(distances, out, corner);
111
+
112
+ if (abs(held) < abs(layer)) {
113
+ layer = held;
114
+ }
115
+ }
116
+ }
117
+
118
+ out.layer = layer;
119
+
120
+ return out;
121
+ }
122
+
123
+ fn surface_material_corner_weight(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, corner: vec3<u32>) -> f32 {
124
+ if (!surface_material_corner_present(corners, corner)) {
125
+ return 0.0;
126
+ }
127
+
128
+ let on_layer = abs(surface_material_corner_surface(distances, corners, corner) - corners.layer) <= corners.tolerance;
129
+
130
+ return select(0.0, surface_material_corner_trilinear(corners, corner), on_layer);
131
+ }
132
+ `, [
133
+ F32_MAX_DEFINITION,
134
+ ]);
135
+
136
+ /**
137
+ * What a reader's surface takes from a brick's surface material texels kept in all three planes, a
138
+ * tile of each at the same texel, the albedo plane saying which hold a material (a written code is never
139
+ * 0): its diffuse albedo and its emissive, and apart its metalness and roughness:
140
+ *
141
+ * ```wgsl
142
+ * fn surface_material_present(albedo_codes: texture_3d<u32>, texel: vec3<u32>) -> u32
143
+ * fn surface_material_surface(distances: texture_3d<f32>, albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialSurface
144
+ * fn surface_material_metal_rough(distances: texture_3d<f32>, metal_rough_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialMetalRough
145
+ * ```
146
+ *
147
+ * `surface_material_present` is the `present` of the voxel whose least corner is plane texel `texel`, a
148
+ * tile's origin plus `surface_material_base`. `material` is the tile's origin in the planes. The voxel's
149
+ * 8 texels (`surface_material_corners`) are blended by their weights: trilinear over those holding the
150
+ * surface the reader is on, as the field itself is read. `found` is false where none of the 8 holds a
151
+ * material: no surface sample was near.
152
+ *
153
+ * @type {CodeChunk}
154
+ */
155
+ export const chunk_surface_material_read = CodeChunk.from(
156
+ //language=WGSL
157
+ `
158
+ struct SurfaceMaterialSurface {
159
+ found: bool,
160
+ albedo: vec3<f32>,
161
+ emissive: vec3<f32>,
162
+ }
163
+
164
+ struct SurfaceMaterialMetalRough {
165
+ found: bool,
166
+ /** (metalness, roughness) */
167
+ metal_rough: vec2<f32>,
168
+ }
169
+
170
+ fn surface_material_present(albedo_codes: texture_3d<u32>, texel: vec3<u32>) -> u32 {
171
+ var present = 0u;
172
+
173
+ for (var c = 0u; c < 8u; c++) {
174
+ let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
175
+
176
+ if (textureLoad(albedo_codes, texel + corner, 0).x != 0u) {
177
+ present |= 1u << c;
178
+ }
179
+ }
180
+
181
+ return present;
182
+ }
183
+
184
+ fn surface_material_surface(distances: texture_3d<f32>, albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialSurface {
185
+ var albedo = vec3<f32>(0.0);
186
+ var emissive = vec3<f32>(0.0);
187
+ var weight = 0.0;
188
+
189
+ for (var c = 0u; c < 8u; c++) {
190
+ let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
191
+ let w = surface_material_corner_weight(distances, corners, corner);
192
+
193
+ if (w > 0.0) {
194
+ let texel = material + corners.base + corner;
195
+
196
+ albedo += w * albedo_uncompress(textureLoad(albedo_codes, texel, 0).x);
197
+ emissive += w * rgbe9995_decode(textureLoad(emissive_codes, texel, 0).x);
198
+ weight += w;
199
+ }
200
+ }
201
+
202
+ var out: SurfaceMaterialSurface;
203
+
204
+ out.found = weight > 0.0;
205
+
206
+ if (out.found) {
207
+ out.albedo = albedo / weight;
208
+ out.emissive = emissive / weight;
209
+ }
210
+
211
+ return out;
212
+ }
213
+
214
+ fn surface_material_metal_rough(distances: texture_3d<f32>, metal_rough_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners) -> SurfaceMaterialMetalRough {
215
+ var sum = vec2<f32>(0.0);
216
+ var weight = 0.0;
217
+
218
+ for (var c = 0u; c < 8u; c++) {
219
+ let corner = vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u);
220
+ let w = surface_material_corner_weight(distances, corners, corner);
221
+
222
+ if (w > 0.0) {
223
+ sum += w * metal_rough_uncompress(textureLoad(metal_rough_codes, material + corners.base + corner, 0).x);
224
+ weight += w;
225
+ }
226
+ }
227
+
228
+ var out: SurfaceMaterialMetalRough;
229
+
230
+ out.found = weight > 0.0;
231
+
232
+ if (out.found) {
233
+ out.metal_rough = sum / weight;
234
+ }
235
+
236
+ return out;
237
+ }
238
+ `, [
239
+ chunk_surface_material_corners,
240
+ chunk_albedo_uncompress,
241
+ chunk_rgbe9995_decode,
242
+ chunk_metal_rough_uncompress,
243
+ ]);
244
+
245
+ /**
246
+ * What `surface_material_pick` draws when no texel of the voxel weighs anything.
247
+ * @type {number}
248
+ */
249
+ export const SURFACE_MATERIAL_NO_CORNER = 8;
250
+
251
+ /**
252
+ * One of the voxel's 8 texels (`surface_material_corners`) drawn in proportion to its weight, and its
253
+ * material: on average what {@link chunk_surface_material_read} blends, from one texel, for a reader
254
+ * that averages its reads, as a probe averages its rays (Fajardo et al., "Stochastic Texture
255
+ * Filtering", 2023):
256
+ *
257
+ * ```wgsl
258
+ * fn surface_material_pick(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, u: f32) -> u32
259
+ * fn surface_material_surface_at(albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners, corner: u32) -> SurfaceMaterialSurface
260
+ * ```
261
+ *
262
+ * `surface_material_pick` draws corner `c`, `(c & 1, (c >> 1) & 1, c >> 2)`, with the chance of its
263
+ * weight (`surface_material_corner_weight`) over the voxel's (`sample_discrete_wrs_mat2x4`), `u`
264
+ * uniform in [0, 1); a corner of weight 0 is never drawn, and where none weighs anything the draw is
265
+ * {@link SURFACE_MATERIAL_NO_CORNER}. `surface_material_surface_at` is that corner's diffuse albedo and
266
+ * emissive, `found` false for none.
267
+ *
268
+ * @type {CodeChunk}
269
+ */
270
+ export const chunk_surface_material_pick = CodeChunk.from(
271
+ //language=WGSL
272
+ `
273
+ fn surface_material_weight_of(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, c: u32) -> f32 {
274
+ return surface_material_corner_weight(distances, corners, vec3<u32>(c & 1u, (c >> 1u) & 1u, c >> 2u));
275
+ }
276
+
277
+ fn surface_material_pick(distances: texture_3d<f32>, corners: SurfaceMaterialCorners, u: f32) -> u32 {
278
+ // corner c at column c >> 2, row c & 3
279
+ let weights = mat2x4<f32>(
280
+ vec4<f32>(
281
+ surface_material_weight_of(distances, corners, 0u),
282
+ surface_material_weight_of(distances, corners, 1u),
283
+ surface_material_weight_of(distances, corners, 2u),
284
+ surface_material_weight_of(distances, corners, 3u),
285
+ ),
286
+ vec4<f32>(
287
+ surface_material_weight_of(distances, corners, 4u),
288
+ surface_material_weight_of(distances, corners, 5u),
289
+ surface_material_weight_of(distances, corners, 6u),
290
+ surface_material_weight_of(distances, corners, 7u),
291
+ ),
292
+ );
293
+
294
+ if (all(weights[0] == vec4<f32>(0.0)) && all(weights[1] == vec4<f32>(0.0))) {
295
+ return ${SURFACE_MATERIAL_NO_CORNER}u;
296
+ }
297
+
298
+ var draw = u;
299
+
300
+ return u32(sample_discrete_wrs_mat2x4(weights, &draw));
301
+ }
302
+
303
+ fn surface_material_surface_at(albedo_codes: texture_3d<u32>, emissive_codes: texture_3d<u32>, material: vec3<u32>, corners: SurfaceMaterialCorners, corner: u32) -> SurfaceMaterialSurface {
304
+ var out: SurfaceMaterialSurface;
305
+
306
+ out.found = corner < ${SURFACE_MATERIAL_NO_CORNER}u;
307
+
308
+ if (out.found) {
309
+ let texel = material + corners.base + vec3<u32>(corner & 1u, (corner >> 1u) & 1u, corner >> 2u);
310
+
311
+ out.albedo = albedo_uncompress(textureLoad(albedo_codes, texel, 0).x);
312
+ out.emissive = rgbe9995_decode(textureLoad(emissive_codes, texel, 0).x);
313
+ }
314
+
315
+ return out;
316
+ }
317
+ `, [
318
+ chunk_surface_material_read,
319
+ chunk_sample_discrete_wrs_mat2x4,
320
+ ]);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A surface material texel written into its planes (`SURFACE_MATERIAL.js`), each through its own codec:
3
+ *
4
+ * ```wgsl
5
+ * fn surface_material_store(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>, fitted: SurfaceMaterialFitted)
6
+ * fn surface_material_clear(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>)
7
+ * ```
8
+ *
9
+ * `at` is the texel in the planes' atlas. A fit that covered nothing clears: 0 in every plane, no material.
10
+ *
11
+ * @type {CodeChunk}
12
+ */
13
+ export const chunk_surface_material_store: CodeChunk;
14
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
15
+ //# sourceMappingURL=chunk_surface_material_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_surface_material_store.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;GAWG;AACH,2CAFU,SAAS,CA0BZ;0BA5CmB,uCAAuC"}
@@ -0,0 +1,48 @@
1
+ import { chunk_rgbe9995_encode } from "../../../shader/chunk/color/rgbe9995/chunk_rgbe9995_encode.js";
2
+ import { chunk_albedo_compress } from "../../../shader/chunk/material/chunk_albedo_compress.js";
3
+ import { chunk_metal_rough_compress } from "../../../shader/chunk/material/chunk_metal_rough_compress.js";
4
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
5
+ import { chunk_surface_material_fit } from "./chunk_surface_material_fit.js";
6
+ import { SURFACE_MATERIAL_ALBEDO_PLANE, SURFACE_MATERIAL_EMISSIVE_PLANE, SURFACE_MATERIAL_FORMATS, SURFACE_MATERIAL_METAL_ROUGH_PLANE } from "./SURFACE_MATERIAL.js";
7
+
8
+ const ALBEDO = `texture_storage_3d<${SURFACE_MATERIAL_FORMATS[SURFACE_MATERIAL_ALBEDO_PLANE]}, write>`;
9
+ const METAL_ROUGH = `texture_storage_3d<${SURFACE_MATERIAL_FORMATS[SURFACE_MATERIAL_METAL_ROUGH_PLANE]}, write>`;
10
+ const EMISSIVE = `texture_storage_3d<${SURFACE_MATERIAL_FORMATS[SURFACE_MATERIAL_EMISSIVE_PLANE]}, write>`;
11
+
12
+ /**
13
+ * A surface material texel written into its planes (`SURFACE_MATERIAL.js`), each through its own codec:
14
+ *
15
+ * ```wgsl
16
+ * fn surface_material_store(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>, fitted: SurfaceMaterialFitted)
17
+ * fn surface_material_clear(albedo: texture_storage_3d<r32uint, write>, metal_rough: texture_storage_3d<r8uint, write>, emissive: texture_storage_3d<r32uint, write>, at: vec3<u32>)
18
+ * ```
19
+ *
20
+ * `at` is the texel in the planes' atlas. A fit that covered nothing clears: 0 in every plane, no material.
21
+ *
22
+ * @type {CodeChunk}
23
+ */
24
+ export const chunk_surface_material_store = CodeChunk.from(
25
+ //language=WGSL
26
+ `
27
+ fn surface_material_clear(albedo: ${ALBEDO}, metal_rough: ${METAL_ROUGH}, emissive: ${EMISSIVE}, at: vec3<u32>) {
28
+ textureStore(albedo, at, vec4<u32>(0u));
29
+ textureStore(metal_rough, at, vec4<u32>(0u));
30
+ textureStore(emissive, at, vec4<u32>(0u));
31
+ }
32
+
33
+ fn surface_material_store(albedo: ${ALBEDO}, metal_rough: ${METAL_ROUGH}, emissive: ${EMISSIVE}, at: vec3<u32>, fitted: SurfaceMaterialFitted) {
34
+ if (!fitted.covered) {
35
+ surface_material_clear(albedo, metal_rough, emissive, at);
36
+ return;
37
+ }
38
+
39
+ textureStore(albedo, at, vec4<u32>(albedo_compress(fitted.albedo), 0u, 0u, 0u));
40
+ textureStore(metal_rough, at, vec4<u32>(metal_rough_compress(fitted.metal_rough), 0u, 0u, 0u));
41
+ textureStore(emissive, at, vec4<u32>(rgbe9995_encode(fitted.emissive), 0u, 0u, 0u));
42
+ }
43
+ `, [
44
+ chunk_surface_material_fit,
45
+ chunk_albedo_compress,
46
+ chunk_metal_rough_compress,
47
+ chunk_rgbe9995_encode,
48
+ ]);
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Which planes of a pair's surface material vary, and the codes of every plane at the material's own
3
+ * values, as the bake's material sample makes them (`sample_material_data`, `shader_mesh_surface_trace`):
4
+ *
5
+ * - the diffuse albedo, base × (1 − metalness), the base the albedo texture × the diffuse color × the
6
+ * vertex color;
7
+ * - the metalness and the roughness, the ORM texture's blue and green × their factors;
8
+ * - the emissive, the emissive texture × its factor.
9
+ *
10
+ * A material's missing texture is a white texel, its missing ORM texture too, as its resident row reads
11
+ * it; a material that is not standard is {@link NEUTRAL_SURFACE} over its textures. A product varies
12
+ * where one of its terms does and none of them is 0 throughout: a metalness of 1 throughout leaves no
13
+ * diffuse albedo to vary. The codes are taken without the bake's dither.
14
+ *
15
+ * @param {ShadeMaterial} material
16
+ * @param {boolean} vertex_colored whether the geometry's vertices carry a color other than white
17
+ * @param {MeshSurfaceChannels} out
18
+ * @returns {MeshSurfaceChannels} out
19
+ */
20
+ export function mesh_surface_channels(material: ShadeMaterial, vertex_colored: boolean, out: MeshSurfaceChannels): MeshSurfaceChannels;
21
+ /**
22
+ * @typedef {import("../../../material/ShadeMaterial.js").ShadeMaterial} ShadeMaterial
23
+ */
24
+ /**
25
+ * What a (geometry, material) pair's surface material is made of: which planes vary over its surface,
26
+ * and the code each plane takes everywhere when it does not.
27
+ */
28
+ export class MeshSurfaceChannels {
29
+ /**
30
+ * Bit `1 << plane` for each plane (`SURFACE_MATERIAL.js`) that varies over the surface.
31
+ * @type {number}
32
+ */
33
+ texels: number;
34
+ /**
35
+ * The diffuse albedo's code (`albedo_compress`).
36
+ * @type {number}
37
+ */
38
+ albedo: number;
39
+ /**
40
+ * The metalness and roughness's code (`metal_rough_compress`).
41
+ * @type {number}
42
+ */
43
+ metal_rough: number;
44
+ /**
45
+ * The emissive's code (`rgbe9995_encode`).
46
+ * @type {number}
47
+ */
48
+ emissive: number;
49
+ }
50
+ export type ShadeMaterial = import("../../../material/ShadeMaterial.js").ShadeMaterial;
51
+ //# sourceMappingURL=mesh_surface_channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh_surface_channels.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js"],"names":[],"mappings":"AAiDA;;;;;;;;;;;;;;;;;;GAkBG;AACH,gDALW,aAAa,kBACb,OAAO,OACP,mBAAmB,GACjB,mBAAmB,CA0C/B;AAlGD;;GAEG;AAEH;;;GAGG;AACH;IACI;;;OAGG;IACH,QAFU,MAAM,CAEL;IACX;;;OAGG;IACH,QAFU,MAAM,CAEL;IACX;;;OAGG;IACH,aAFU,MAAM,CAEA;IAChB;;;OAGG;IACH,UAFU,MAAM,CAEH;CAChB;4BA5BY,OAAO,oCAAoC,EAAE,aAAa"}