@woosh/meep-engine 3.61.2 → 3.61.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +1 -1
  3. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  4. package/src/shade/playground/probe_clipmap/README.md +3 -4
  5. package/src/shade/playground/probe_clipmap/index.html +5 -13
  6. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  7. package/src/shade/playground/probe_clipmap/main.js +0 -5
  8. package/src/shade/playground/probe_clipmap_box/README.md +1 -1
  9. package/src/shade/playground/probe_clipmap_box/index.html +1 -1
  10. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  11. package/src/shade/renderer/Renderer.js +50 -11
  12. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  13. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  14. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  15. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  16. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  17. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
  18. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
  19. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
  20. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
  21. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  22. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
  23. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
  24. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
  25. package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
  26. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
  27. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
  28. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
  29. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
  30. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
  31. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
  32. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
  33. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
  34. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
  35. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
  36. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
  37. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
  38. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
  39. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
  40. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
  41. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  42. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
  43. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
  44. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
  45. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
  46. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
  47. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
  48. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
  49. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
  50. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  51. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
  52. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
  53. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
  54. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
  55. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
  56. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
  57. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
  58. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
  59. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
  60. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
  61. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
  62. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
  63. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
  64. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
  65. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
  66. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
  67. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
  68. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
  69. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
  70. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
  71. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
  72. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
  73. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
  74. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
  75. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
  76. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
  77. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
  78. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
  79. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
  80. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
  81. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
  82. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
  83. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
  84. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
  85. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
  86. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
  87. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
  88. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
  89. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
  90. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
  91. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
  92. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
  93. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
  94. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
  95. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
  96. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
  97. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
  98. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
  99. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
  100. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
  101. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
  102. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
  103. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
  104. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
  105. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
  106. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
  107. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
  108. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
  109. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
  110. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
  111. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
  112. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
  113. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
  114. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
  115. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
  116. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
  117. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
  118. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
  119. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
  120. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
  121. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
  122. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
  123. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
  124. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
  125. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
  126. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
  127. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
  128. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
  129. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
  130. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
  131. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
  132. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
  133. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
  134. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
  135. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
  136. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
  137. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
  138. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
  139. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
  140. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
  141. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
  142. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
  143. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
  144. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
  145. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
  146. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
  147. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
  148. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
  149. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
  150. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
  151. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
  152. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -7
  153. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  154. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +82 -17
  155. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
  156. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  157. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
  158. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
  159. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  160. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
  161. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
  162. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
  163. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
  164. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
  165. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  166. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +49 -36
  167. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
  168. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  169. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
  170. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
  171. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  172. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
  173. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
  174. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  175. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
  176. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  177. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
  178. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
  179. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
  180. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
  181. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
  182. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
  183. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
  184. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
  185. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
  186. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
  187. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  188. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
  189. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
  190. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  191. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
  192. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
  193. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
  194. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
  195. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
  196. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
  197. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
  198. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
  199. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
  200. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
  201. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
  202. package/src/shade/renderer/global_illumination/probe_clipmap/debug/{graph_probe_clipmap_debug_mesh_cards.js → graph_probe_clipmap_debug_mesh_surfaces.js} +38 -57
  203. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
  204. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
  205. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
  206. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
  207. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
  208. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
  209. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
  210. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
  211. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
  212. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
  213. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
  214. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
  215. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
  216. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
  217. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
  218. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +18 -9
  219. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  220. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +63 -44
  221. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +21 -1
  222. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  223. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +24 -1
  224. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
  225. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
  226. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
  227. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
  228. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
  229. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
  230. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +44 -7
  231. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  232. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +88 -11
  233. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
  234. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
  235. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
  236. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
  237. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
  238. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
  239. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +2 -0
  240. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  241. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +10 -4
  242. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
  243. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
  244. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
  245. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
  246. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
  247. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
  248. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +3 -3
  249. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +5 -5
  250. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
  251. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  252. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +5 -1
  253. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
  254. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
  255. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
  256. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  257. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
  258. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -5
  259. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  260. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +22 -16
  261. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  262. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +6 -2
  263. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
  264. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
  265. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
  266. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
  267. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
  268. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
  269. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
  270. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
  271. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
  272. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
  273. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
  274. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  275. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
  276. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  277. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
  278. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  279. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
  280. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
  281. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
  282. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
  283. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
  284. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
  285. package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
  286. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
  287. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
  288. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
  289. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  290. package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
  291. package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
  292. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
  293. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
  294. package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
  295. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
  296. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
  297. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
  298. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
  299. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
  300. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
  301. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
  302. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
  303. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
  304. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
  305. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
  306. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
  307. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
  308. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
  309. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
  310. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
  311. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
  312. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
  313. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
  314. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
  315. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
  316. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
  317. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
  318. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
  319. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
  320. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
  321. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
  322. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
  323. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
  324. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
  325. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
  326. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
  327. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
  328. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
  329. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
  330. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  331. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
  332. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  333. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  334. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
  335. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
  336. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
  337. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
  338. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
  339. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
  340. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
  341. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
  342. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
  343. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
  344. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
  345. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
  346. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
  347. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
  348. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
  349. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
  350. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
  351. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
  352. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
  353. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
  354. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
  355. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
  356. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
  357. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
  358. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
  359. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
  360. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
  361. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
  362. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
  363. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
  364. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
  365. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
  366. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
  367. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
  368. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
  369. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
  370. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
  371. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
  372. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
  373. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
  374. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
  375. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
  376. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
  377. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
  378. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
  379. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
  380. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
  381. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
  382. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
  383. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
  384. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
  385. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
  386. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
  387. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
  388. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
  389. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
@@ -1,107 +0,0 @@
1
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
- import { chunk_mesh_sdf } from "../chunk_mesh_sdf.js";
3
- import { MESH_SDF_STRUCT } from "../MESH_SDF_STRUCT.js";
4
- import {
5
- MESH_CARD_DIRECTIONS,
6
- MESH_CARD_LAYOUT_CARD_COUNT,
7
- MESH_CARD_LAYOUT_COLUMN_COUNT,
8
- MESH_CARD_LAYOUT_DIRECTION_FIRST,
9
- MESH_CARD_LAYOUT_PAGE_COUNT,
10
- MESH_CARD_LAYOUT_RECORDS,
11
- MESH_CARD_LAYOUT_TABLES,
12
- MESH_CARD_MAX,
13
- MESH_CARD_NO_PAGE,
14
- MESH_CARD_PAGE_TEXELS,
15
- MESH_CARD_RECORD_DIRECTION,
16
- MESH_CARD_RECORD_FAR,
17
- MESH_CARD_RECORD_NEAR,
18
- MESH_CARD_RECORD_TABLE,
19
- MESH_CARD_RECORD_WORDS,
20
- MESH_CARD_SPLITS_MAX
21
- } from "./MESH_CARDS.js";
22
-
23
- /**
24
- * A geometry's cards on the device (`MESH_CARDS.js`): the layout's constants, the placement's
25
- * scratch by the level-0 grid, a direction's axes and extent, and the brick a direction's column
26
- * holds at a layer. Pure: nothing here reads a binding.
27
- *
28
- * ```wgsl
29
- * fn mesh_card_placement_of(bricks: vec3<u32>) -> MeshCardPlacement // offsets from the range's start
30
- * fn mesh_card_axes(direction: u32) -> vec3<u32> // the axis looked along, then u, v
31
- * fn mesh_card_extent(bricks: vec3<u32>, direction: u32) -> vec3<u32>
32
- * fn mesh_card_brick(bricks: vec3<u32>, direction: u32, column: vec2<u32>, layer: u32) -> vec3<u32>
33
- * ```
34
- *
35
- * @type {CodeChunk}
36
- */
37
- export const chunk_mesh_cards = CodeChunk.from(
38
- //language=WGSL
39
- `
40
- const MESH_CARD_MAX = ${MESH_CARD_MAX}u;
41
- const MESH_CARD_DIRECTIONS = ${MESH_CARD_DIRECTIONS}u;
42
- const MESH_CARD_SPLITS_MAX = ${MESH_CARD_SPLITS_MAX}u;
43
- const MESH_CARD_PAGE_TEXELS = ${MESH_CARD_PAGE_TEXELS}u;
44
- const MESH_CARD_NO_PAGE = ${MESH_CARD_NO_PAGE}u;
45
-
46
- const MESH_CARD_LAYOUT_CARD_COUNT = ${MESH_CARD_LAYOUT_CARD_COUNT}u;
47
- const MESH_CARD_LAYOUT_PAGE_COUNT = ${MESH_CARD_LAYOUT_PAGE_COUNT}u;
48
- const MESH_CARD_LAYOUT_COLUMN_COUNT = ${MESH_CARD_LAYOUT_COLUMN_COUNT}u;
49
- const MESH_CARD_LAYOUT_DIRECTION_FIRST = ${MESH_CARD_LAYOUT_DIRECTION_FIRST}u;
50
- const MESH_CARD_LAYOUT_RECORDS = ${MESH_CARD_LAYOUT_RECORDS}u;
51
- const MESH_CARD_LAYOUT_TABLES = ${MESH_CARD_LAYOUT_TABLES}u;
52
-
53
- const MESH_CARD_RECORD_DIRECTION = ${MESH_CARD_RECORD_DIRECTION}u;
54
- const MESH_CARD_RECORD_NEAR = ${MESH_CARD_RECORD_NEAR}u;
55
- const MESH_CARD_RECORD_FAR = ${MESH_CARD_RECORD_FAR}u;
56
- const MESH_CARD_RECORD_TABLE = ${MESH_CARD_RECORD_TABLE}u;
57
- const MESH_CARD_RECORD_WORDS = ${MESH_CARD_RECORD_WORDS}u;
58
-
59
- struct MeshCardPlacement {
60
- histograms: u32,
61
- splits: u32,
62
- layers: u32,
63
- }
64
-
65
- fn mesh_card_placement_of(bricks: vec3<u32>) -> MeshCardPlacement {
66
- let layers = max(bricks.x, max(bricks.y, bricks.z));
67
- let columns_max = max(bricks.x * bricks.y, max(bricks.y * bricks.z, bricks.x * bricks.z));
68
-
69
- var parts: MeshCardPlacement;
70
-
71
- parts.histograms = MESH_CARD_LAYOUT_TABLES + 2u * MESH_CARD_MAX * columns_max;
72
- parts.splits = parts.histograms + MESH_CARD_DIRECTIONS * layers * layers;
73
- parts.layers = layers;
74
-
75
- return parts;
76
- }
77
-
78
- fn mesh_card_axes(direction: u32) -> vec3<u32> {
79
- let axis = direction >> 1u;
80
-
81
- return vec3<u32>(axis, (axis + 1u) % 3u, (axis + 2u) % 3u);
82
- }
83
-
84
- fn mesh_card_extent(bricks: vec3<u32>, direction: u32) -> vec3<u32> {
85
- let axes = mesh_card_axes(direction);
86
-
87
- return vec3<u32>(bricks[axes.x], bricks[axes.y], bricks[axes.z]);
88
- }
89
-
90
- fn mesh_card_brick(bricks: vec3<u32>, direction: u32, column: vec2<u32>, layer: u32) -> vec3<u32> {
91
- let axes = mesh_card_axes(direction);
92
-
93
- // an even direction looks toward +axis, so its layer 0 is the grid's first brick along it
94
- let along = select(bricks[axes.x] - 1u - layer, layer, (direction & 1u) == 0u);
95
-
96
- var brick = vec3<u32>(0u);
97
-
98
- brick[axes.x] = along;
99
- brick[axes.y] = column.x;
100
- brick[axes.z] = column.y;
101
-
102
- return brick;
103
- }
104
- `, [
105
- chunk_mesh_sdf,
106
- MESH_SDF_STRUCT.declaration_chunk,
107
- ]);
@@ -1,65 +0,0 @@
1
- /**
2
- * @typedef {import("../../../../descriptor/binding/BindGroupLayoutDescriptor.js").BindGroupLayoutDescriptor} BindGroupLayoutDescriptor
3
- * @typedef {import("../../../material/template/ShadeMaterialTemplate.js").ShadeMaterialTemplate} ShadeMaterialTemplate
4
- */
5
- /**
6
- * Cells across a raster run's region: the region is MESH_CARD_MAX cells, this many a row.
7
- * @type {number}
8
- */
9
- export const MESH_CARD_RASTER_CELLS_X: number;
10
- /**
11
- * Rows of cells in a raster run's region.
12
- * @type {number}
13
- */
14
- export const MESH_CARD_RASTER_CELLS_Y: number;
15
- /**
16
- * The scratch the cards are drawn into, before the scatter moves their pages into the atlas.
17
- * @type {GPUTextureFormat[]}
18
- */
19
- export const MESH_CARD_RASTER_TARGET_FORMATS: GPUTextureFormat[];
20
- /**
21
- * @type {GPUTextureFormat}
22
- */
23
- export const MESH_CARD_RASTER_DEPTH_FORMAT: GPUTextureFormat;
24
- /**
25
- * @type {WebGPUStruct}
26
- */
27
- export const MESH_CARDS_RASTER_SETTINGS: WebGPUStruct;
28
- /**
29
- * Group 1: where the vertex stage pulls the geometry and its cards from. Vertex-only.
30
- *
31
- * `mesh_card_raster_runs` is a `vec4<u32>` a run: (first scatter thread, card set, the region's
32
- * corner in the scratch as x | y << 16, the side of its cells in texels).
33
- *
34
- * @type {ShaderResourceGroupDescriptor}
35
- */
36
- export const MESH_CARDS_RASTER_GROUP: ShaderResourceGroupDescriptor;
37
- /**
38
- * @type {BindGroupLayoutDescriptor}
39
- */
40
- export const MESH_CARDS_RASTER_LAYOUT: BindGroupLayoutDescriptor;
41
- /**
42
- * Card capture by raster ({@link MeshCardCaptureMode.Raster}): one pipeline per material template,
43
- * the template's group 0 — the material's one bind group, which the G-buffer pass binds — then
44
- * {@link MESH_CARDS_RASTER_GROUP}, and {@link MESH_CARDS_RASTER_SETTINGS} as immediate data.
45
- *
46
- * A run's draw covers every card of its card set, each into its cell of the run's region of the
47
- * scratch: `rgba8unorm` √(diffuse albedo) and depth, `rgba8unorm` emissive / s_e, and a
48
- * `depth32float` depth through the slab. Draw it with culling off: a card sees either side.
49
- *
50
- * Only a template with a surface function can be drawn.
51
- *
52
- * @type {TemplatePassDescriptor}
53
- */
54
- export const mesh_cards_raster_pass_descriptor: TemplatePassDescriptor;
55
- /**
56
- * Bytes of {@link MESH_CARDS_RASTER_SETTINGS} the draws hand `setImmediates`.
57
- * @type {number}
58
- */
59
- export const MESH_CARDS_RASTER_IMMEDIATE_SIZE: number;
60
- export type BindGroupLayoutDescriptor = import("../../../../descriptor/binding/BindGroupLayoutDescriptor.js").BindGroupLayoutDescriptor;
61
- export type ShadeMaterialTemplate = import("../../../material/template/ShadeMaterialTemplate.js").ShadeMaterialTemplate;
62
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
63
- import { ShaderResourceGroupDescriptor } from "../../../shader/resource/ShaderResourceGroupDescriptor.js";
64
- import { TemplatePassDescriptor } from "../../../rasterize/TemplatePassDescriptor.js";
65
- //# sourceMappingURL=mesh_cards_raster_pass_descriptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mesh_cards_raster_pass_descriptor.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js"],"names":[],"mappings":"AAkCA;;;GAGG;AAEH;;;GAGG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;GAGG;AACH,uCAFU,MAAM,CAE4E;AAE5F;;;GAGG;AACH,8CAFU,kBAAkB,CAEgD;AAE5E;;GAEG;AACH,6DAA4D;AAE5D;;GAEG;AACH,yCAFU,YAAY,CASQ;AAE9B;;;;;;;GAOG;AACH,sCAFU,6BAA6B,CAEoC;AAe3E;;GAEG;AACH,uCAFU,yBAAyB,CAEiE;AAiOpG;;;;;;;;;;;;GAYG;AACH,gDAFU,sBAAsB,CAiC7B;AAEH;;;GAGG;AACH,+CAFU,MAAM,CAE+D;wCApVlE,OAAO,6DAA6D,EAAE,yBAAyB;oCAC/F,OAAO,qDAAqD,EAAE,qBAAqB;6BAVnE,sCAAsC;8CALrB,2DAA2D;uCARlE,8CAA8C"}
@@ -1,376 +0,0 @@
1
- import { GPUShaderStage } from "../../../../descriptor/GPUShaderStage.js";
2
- import { PipelineLayoutDescriptor } from "../../../../descriptor/pipeline/PipelineLayoutDescriptor.js";
3
- import { DepthStencilState } from "../../../../descriptor/pipeline/render/DepthStencilState.js";
4
- import { RenderPipelineDescriptor } from "../../../../descriptor/pipeline/render/RenderPipelineDescriptor.js";
5
- import { GEOMETRY_ATTRIBUTE_DATA_RESOURCE } from "../../GEOMETRY_ATTRIBUTE_DATA_RESOURCE.js";
6
- import { GEOMETRY_METADATA_STRUCT } from "../../GEOMETRY_METADATA_STRUCT.js";
7
- import { MESHLET_METADATA_RESOURCE } from "../../meshlet/MESHLET_METADATA_RESOURCE.js";
8
- import {
9
- chunk_material_opacity_contract,
10
- chunk_material_opacity_opaque,
11
- chunk_material_surface_contract
12
- } from "../../../material/template/chunk_material_surface.js";
13
- import { rasterization_primitive_state } from "../../../rasterize/native/rasterization_primitive_state.js";
14
- import { TemplatePassDescriptor } from "../../../rasterize/TemplatePassDescriptor.js";
15
- import {
16
- chunk_read_meshlet_vertex_by_draw_index
17
- } from "../../../shader/chunk/geometry/meshlet/chunk_read_meshlet_vertex_by_draw_index.js";
18
- import { chunk_random } from "../../../shader/chunk/random/chunk_random.js";
19
- import { chunk_random_initialize } from "../../../shader/chunk/random/chunk_random_initialize.js";
20
- import { GRADIENT_SAMPLING_INFO_STRUCT } from "../../../shader/chunk/texture/GRADIENT_SAMPLING_INFO_STRUCT.js";
21
- import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
22
- import { ShaderResourceGroupDescriptor } from "../../../shader/resource/ShaderResourceGroupDescriptor.js";
23
- import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
24
- import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
25
- import { f32, u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
26
- import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
27
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
28
- import { MESH_SDF_HEADERS_RESOURCE, MESH_SDF_INDIRECTION_RESOURCE } from "../MESH_SDF_RESOURCES.js";
29
- import { MESH_SDF_STRUCT } from "../MESH_SDF_STRUCT.js";
30
- import { chunk_mesh_cards } from "./chunk_mesh_cards.js";
31
- import { MESH_CARD_SETS_RESOURCE } from "./MESH_CARD_RESOURCES.js";
32
- import { MESH_CARD_SET_STRUCT } from "./MESH_CARD_SET_STRUCT.js";
33
- import { MESH_CARD_MAX } from "./MESH_CARDS.js";
34
-
35
- /**
36
- * @typedef {import("../../../../descriptor/binding/BindGroupLayoutDescriptor.js").BindGroupLayoutDescriptor} BindGroupLayoutDescriptor
37
- * @typedef {import("../../../material/template/ShadeMaterialTemplate.js").ShadeMaterialTemplate} ShadeMaterialTemplate
38
- */
39
-
40
- /**
41
- * Cells across a raster run's region: the region is MESH_CARD_MAX cells, this many a row.
42
- * @type {number}
43
- */
44
- export const MESH_CARD_RASTER_CELLS_X = 8;
45
-
46
- /**
47
- * Rows of cells in a raster run's region.
48
- * @type {number}
49
- */
50
- export const MESH_CARD_RASTER_CELLS_Y = Math.ceil(MESH_CARD_MAX / MESH_CARD_RASTER_CELLS_X);
51
-
52
- /**
53
- * The scratch the cards are drawn into, before the scatter moves their pages into the atlas.
54
- * @type {GPUTextureFormat[]}
55
- */
56
- export const MESH_CARD_RASTER_TARGET_FORMATS = ["rgba8unorm", "rgba8unorm"];
57
-
58
- /**
59
- * @type {GPUTextureFormat}
60
- */
61
- export const MESH_CARD_RASTER_DEPTH_FORMAT = "depth32float";
62
-
63
- /**
64
- * @type {WebGPUStruct}
65
- */
66
- export const MESH_CARDS_RASTER_SETTINGS = WebGPUStruct.from({
67
- /** the run drawn, its entry in `mesh_card_raster_runs` */
68
- run: u32,
69
- /** the scratch's texels across */
70
- width: f32,
71
- /** the scratch's texels down */
72
- height: f32,
73
- }, "MeshCardsRasterSettings");
74
-
75
- /**
76
- * Group 1: where the vertex stage pulls the geometry and its cards from. Vertex-only.
77
- *
78
- * `mesh_card_raster_runs` is a `vec4<u32>` a run: (first scatter thread, card set, the region's
79
- * corner in the scratch as x | y << 16, the side of its cells in texels).
80
- *
81
- * @type {ShaderResourceGroupDescriptor}
82
- */
83
- export const MESH_CARDS_RASTER_GROUP = new ShaderResourceGroupDescriptor();
84
-
85
- MESH_CARDS_RASTER_GROUP.label = "mesh cards raster";
86
-
87
- MESH_CARDS_RASTER_GROUP
88
- .add(MESH_SDF_HEADERS_RESOURCE)
89
- .add(MESH_SDF_INDIRECTION_RESOURCE)
90
- .add(MESH_CARD_SETS_RESOURCE)
91
- .addStorageBuffer("mesh_card_raster_runs", WebGPUArray.from(vec4u))
92
- .addStorageBuffer("geometries", WebGPUArray.from(GEOMETRY_METADATA_STRUCT))
93
- .add(MESHLET_METADATA_RESOURCE)
94
- .add(GEOMETRY_ATTRIBUTE_DATA_RESOURCE);
95
-
96
- MESH_CARDS_RASTER_GROUP.addVisibility(GPUShaderStage.VERTEX);
97
-
98
- /**
99
- * @type {BindGroupLayoutDescriptor}
100
- */
101
- export const MESH_CARDS_RASTER_LAYOUT = MESH_CARDS_RASTER_GROUP.generateBindGroupLayoutDescriptor();
102
-
103
- const vertex_resources = new ShaderResourceSetDescriptor();
104
-
105
- vertex_resources.setImmediate("settings", MESH_CARDS_RASTER_SETTINGS);
106
- vertex_resources.createGroup({ index: 0, label: "material (fragment only)" });
107
- vertex_resources.addGroup(MESH_CARDS_RASTER_GROUP);
108
-
109
- const VARYINGS = `
110
- struct MeshCardRasterVertex {
111
- @builtin(position) position: vec4<f32>,
112
- @location(0) uv: vec2<f32>,
113
- @location(1) uv1: vec2<f32>,
114
- @location(2) position_os: vec3<f32>,
115
- @location(3) normal: vec3<f32>,
116
- @location(4) color: vec3<f32>,
117
- @location(5) @interpolate(flat) card_set: u32,
118
- @location(6) @interpolate(flat) card: u32,
119
- @location(7) @interpolate(flat) emissive_scale: f32,
120
- @location(8) @interpolate(flat) along: vec3<f32>,
121
- }
122
- `;
123
-
124
- /*
125
- Instance i of run r's draw is card i / m's meshlet i mod m, m the geometry's meshlets; vertex v is
126
- its triangle v / 3's corner, as the alpha-tested raster reads a meshlet. A card maps the geometry's
127
- local space onto its cell: lattice (u, v) across the card to texel (u, v) of the cell, its centre on
128
- the lattice point, which is where the trace starts its ray; depth from the near face over the slab's
129
- depth to [0, 1], so the hardware clips to the slab as the trace's t ≤ depth does. The geometry lies
130
- inside its grid, so nothing it draws falls outside the card's face, and the cells need no clip.
131
- */
132
- const vertex_body = CodeChunk.from(
133
- //language=WGSL
134
- `
135
- ${VARYINGS}
136
-
137
- @vertex
138
- fn main(
139
- @builtin(vertex_index) vertex_draw_index: u32,
140
- @builtin(instance_index) instance: u32,
141
- ) -> MeshCardRasterVertex {
142
- var out: MeshCardRasterVertex;
143
-
144
- let run = mesh_card_raster_runs[settings.run];
145
- let card_set = mesh_card_sets[run.y];
146
- let geometry = geometries[card_set.geometry];
147
- let header = mesh_sdf_headers[card_set.geometry];
148
-
149
- // the args draw no instance of a geometry without meshlets
150
- let meshlets = max(geometry.meshlets_count, 1u);
151
- let card = instance / meshlets;
152
- let meshlet_header = meshlet_metadata[geometry.meshlets_address + instance % meshlets];
153
-
154
- if (vertex_draw_index >= meshlet_header.primitive_count * 3u) {
155
- // past the meshlet's triangles: a degenerate one, which draws nothing
156
- return out;
157
- }
158
-
159
- let attributes = read_meshlet_vertex_by_draw_index(meshlet_header, vertex_draw_index);
160
-
161
- let record = header.cards + MESH_CARD_LAYOUT_RECORDS + card * MESH_CARD_RECORD_WORDS;
162
- let direction = mesh_sdf_indirection[record + MESH_CARD_RECORD_DIRECTION];
163
- let near = mesh_sdf_indirection[record + MESH_CARD_RECORD_NEAR];
164
- let far = mesh_sdf_indirection[record + MESH_CARD_RECORD_FAR];
165
-
166
- let axes = mesh_card_axes(direction);
167
- let toward_plus = (direction & 1u) == 0u;
168
-
169
- // voxels from the grid's corner
170
- let p = (attributes.position - header.origin) / header.voxel;
171
-
172
- let face = f32(select(header.bricks[axes.x] - near, near, toward_plus) * MESH_SDF_BRICK_VOXELS);
173
- let depth = select(face - p[axes.x], p[axes.x] - face, toward_plus);
174
- let slab = f32((far - near) * MESH_SDF_BRICK_VOXELS);
175
-
176
- let corner = vec2<f32>(f32(run.z & 0xffffu), f32(run.z >> 16u))
177
- + vec2<f32>(f32(card % ${MESH_CARD_RASTER_CELLS_X}u), f32(card / ${MESH_CARD_RASTER_CELLS_X}u)) * f32(run.w);
178
- let texel = corner + vec2<f32>(p[axes.y], p[axes.z]) + 0.5;
179
-
180
- out.position = vec4<f32>(
181
- texel.x / settings.width * 2.0 - 1.0,
182
- 1.0 - texel.y / settings.height * 2.0,
183
- depth / slab,
184
- 1.0
185
- );
186
-
187
- var along = vec3<f32>(0.0);
188
-
189
- along[axes.x] = select(-1.0, 1.0, toward_plus);
190
-
191
- out.uv = attributes.uv;
192
- out.uv1 = attributes.uv1;
193
- out.position_os = attributes.position;
194
- out.normal = attributes.normal;
195
- out.color = attributes.color;
196
- out.card_set = run.y;
197
- out.card = card;
198
- out.emissive_scale = card_set.emissive_scale;
199
- out.along = along;
200
-
201
- return out;
202
- }
203
- `, [
204
- MESH_SDF_STRUCT.declaration_chunk,
205
- MESH_CARD_SET_STRUCT.declaration_chunk,
206
- GEOMETRY_METADATA_STRUCT.declaration_chunk,
207
- chunk_mesh_cards,
208
- chunk_read_meshlet_vertex_by_draw_index,
209
- ]);
210
-
211
- const vertex_code = ShaderDescriptor.from({
212
- label: "Mesh Cards Raster / vertex",
213
- resources: vertex_resources,
214
- body: vertex_body,
215
- }).source;
216
-
217
- /*
218
- The template is handed what the G-buffer pass hands it, in the geometry's local space, the card
219
- being there: real derivatives, as this is a raster with neighbours of its own triangle, unbiased (mip
220
- bias at 0). Both functions run first, in uniform control
221
- flow, so a template may sample with implicit derivatives.
222
-
223
- Coverage is drawn as the trace draws it, a texel's surface opaque with probability its opacity, from
224
- a seed fixed by the card set, the card and the texel; the depth test keeps the nearest opaque draw.
225
- The planes are the trace's: √(albedo × (1 − metalness)) and depth through the slab on [1/255, 1];
226
- emissive over s_e.
227
- */
228
- const fragment_body = CodeChunk.from(
229
- //language=WGSL
230
- `
231
- ${VARYINGS}
232
-
233
- struct MeshCardRasterTargets {
234
- @location(0) albedo: vec4<f32>,
235
- @location(1) emissive: vec4<f32>,
236
- }
237
-
238
- @fragment
239
- fn main(in: MeshCardRasterVertex) -> MeshCardRasterTargets {
240
- let uv = ${GRADIENT_SAMPLING_INFO_STRUCT.wgsl_ref}(in.uv, dpdx(in.uv), dpdy(in.uv));
241
- let uv1 = ${GRADIENT_SAMPLING_INFO_STRUCT.wgsl_ref}(in.uv1, dpdx(in.uv1), dpdy(in.uv1));
242
- let position_ddx = dpdx(in.position_os);
243
- let position_ddy = dpdy(in.position_os);
244
-
245
- var opacity_input: MaterialOpacityInput;
246
-
247
- opacity_input.uv = uv;
248
- opacity_input.mip_bias = 0.0;
249
- opacity_input.position_ws = in.position_os;
250
-
251
- let opacity = material_opacity(opacity_input);
252
-
253
- var surface_input: MaterialSurfaceInput;
254
-
255
- surface_input.uv = uv;
256
- surface_input.uv1 = uv1;
257
- surface_input.gradient_bias = vec2<f32>(1.0);
258
- surface_input.position_os = in.position_os;
259
- surface_input.position_os_ddx = position_ddx;
260
- surface_input.position_os_ddy = position_ddy;
261
- surface_input.position_ws = in.position_os;
262
- surface_input.normal_ws = normalize(in.normal);
263
- surface_input.face_normal_ws = normalize(cross(position_ddx, position_ddy));
264
- surface_input.view_direction_ws = -in.along;
265
- surface_input.vertex_color = in.color;
266
- surface_input.pixel = in.position.xy;
267
-
268
- let surface = material_surface(surface_input);
269
-
270
- random_initialize(vec3<u32>(vec2<u32>(in.position.xy), in.card), vec3<u32>(in.card_set, 0u, 0u));
271
-
272
- if (random() >= opacity) {
273
- discard;
274
- }
275
-
276
- let diffuse = surface.albedo * (1.0 - surface.metalness);
277
-
278
- var out: MeshCardRasterTargets;
279
-
280
- out.albedo = vec4<f32>(sqrt(max(diffuse, vec3<f32>(0.0))), (1.0 + 254.0 * saturate(in.position.z)) / 255.0);
281
-
282
- if (in.emissive_scale > 0.0) {
283
- out.emissive = vec4<f32>(surface.emissive / in.emissive_scale, 0.0);
284
- }
285
-
286
- return out;
287
- }
288
- `, [
289
- GRADIENT_SAMPLING_INFO_STRUCT.declaration_chunk,
290
- chunk_material_surface_contract,
291
- chunk_material_opacity_contract,
292
- chunk_random,
293
- chunk_random_initialize,
294
- ]);
295
-
296
- /**
297
- * @type {WeakMap<ShadeMaterialTemplate, ShaderResourceSetDescriptor>}
298
- */
299
- const fragment_resources = new WeakMap();
300
-
301
- /**
302
- * @param {ShadeMaterialTemplate} template
303
- * @returns {ShaderResourceSetDescriptor}
304
- */
305
- function fragment_resources_of(template) {
306
- let resources = fragment_resources.get(template);
307
-
308
- if (resources === undefined) {
309
- resources = new ShaderResourceSetDescriptor();
310
-
311
- resources.addGroup(template.resources);
312
-
313
- fragment_resources.set(template, resources);
314
- }
315
-
316
- return resources;
317
- }
318
-
319
- const depth_state = DepthStencilState.from({
320
- depthWriteEnabled: true,
321
- // depth through the slab from its near face: the nearest is the least
322
- depthCompare: 'less',
323
- format: MESH_CARD_RASTER_DEPTH_FORMAT,
324
- });
325
-
326
- /**
327
- * Card capture by raster ({@link MeshCardCaptureMode.Raster}): one pipeline per material template,
328
- * the template's group 0 — the material's one bind group, which the G-buffer pass binds — then
329
- * {@link MESH_CARDS_RASTER_GROUP}, and {@link MESH_CARDS_RASTER_SETTINGS} as immediate data.
330
- *
331
- * A run's draw covers every card of its card set, each into its cell of the run's region of the
332
- * scratch: `rgba8unorm` √(diffuse albedo) and depth, `rgba8unorm` emissive / s_e, and a
333
- * `depth32float` depth through the slab. Draw it with culling off: a card sees either side.
334
- *
335
- * Only a template with a surface function can be drawn.
336
- *
337
- * @type {TemplatePassDescriptor}
338
- */
339
- export const mesh_cards_raster_pass_descriptor = new TemplatePassDescriptor("Mesh Card Capture / Raster", template => {
340
- const fragment_code = ShaderDescriptor.from({
341
- label: `Mesh Cards Raster / ${template.name}`,
342
- resources: fragment_resources_of(template),
343
- body: CodeChunk.from('', [
344
- template.surface,
345
- template.opacity ?? chunk_material_opacity_opaque,
346
- fragment_body,
347
- ]),
348
- }).source;
349
-
350
- return RenderPipelineDescriptor.from({
351
- label: `Mesh Card Capture / Raster / ${template.name}`,
352
- layout: PipelineLayoutDescriptor.from([
353
- template.resources.generateBindGroupLayoutDescriptor(),
354
- MESH_CARDS_RASTER_LAYOUT,
355
- ], vertex_resources.immediateSize),
356
- vertex: {
357
- module: {
358
- code: vertex_code
359
- }
360
- },
361
- fragment: {
362
- module: {
363
- code: fragment_code
364
- },
365
- targets: MESH_CARD_RASTER_TARGET_FORMATS.map(format => ({ format })),
366
- },
367
- depthStencil: depth_state,
368
- primitive: rasterization_primitive_state,
369
- });
370
- });
371
-
372
- /**
373
- * Bytes of {@link MESH_CARDS_RASTER_SETTINGS} the draws hand `setImmediates`.
374
- * @type {number}
375
- */
376
- export const MESH_CARDS_RASTER_IMMEDIATE_SIZE = vertex_resources.immediateSize;
@@ -1,40 +0,0 @@
1
- /**
2
- * Transparent hits a capture ray steps past, at most, before the texel is empty.
3
- * @type {number}
4
- */
5
- export const MESH_CARD_ALPHA_CONTINUATIONS: number;
6
- /**
7
- * @type {WebGPUStruct}
8
- */
9
- export const MESH_CARDS_CAPTURE_SETTINGS: WebGPUStruct;
10
- /**
11
- * Card capture (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §6.5): a thread a texel of each page captured
12
- * this frame, the frame's pages being stretches of card sets, a run each in `mesh_card_runs`.
13
- *
14
- * 1. A ray in the geometry's local space starts on the card's near face, at the texel — the corner
15
- * lattice of the bricks' faces, as a brick's texels sit on its voxels — and runs along the card's
16
- * direction through its slab, t ≤ the slab's depth, by `ray_query_blas_nearest`.
17
- * 2. A hit is opaque with probability its opacity (`sample_material_alpha`), as the path tracer takes
18
- * alpha. A transparent draw steps the ray past the hit, MESH_CARD_ALPHA_CONTINUATIONS times at
19
- * most; past that the texel is empty.
20
- * 3. At the opaque hit, `sample_material_data` with the material's resident row and an identity
21
- * transform, the card being in local space.
22
- *
23
- * Both read the material's textures at the texel's footprint (`mesh_card_texture_level`), filtered
24
- * exactly ({@link IndirectTextureFilter.Exact}): nothing averages a card texel after it is stored, so a
25
- * single tap would be kept as the texel, and a tap landing on a thin feature of the texture would put
26
- * it in one row of texels and not the next.
27
- *
28
- * The random state is seeded from the card set and the texel, which fixes every draw: the alpha's and
29
- * the material's dither. A recapture of an unchanged material therefore writes the same bytes.
30
- *
31
- * The albedo plane holds √(albedo × (1 − metalness)), Lumen's diffuse colour as UE stores it, and
32
- * the hit's depth through the slab mapped onto [1/255, 1]. The emissive plane holds emissive / s_e.
33
- * A texel whose ray found nothing stores 0 throughout.
34
- *
35
- * @type {ComputeShader}
36
- */
37
- export const shader_mesh_cards_capture: ComputeShader;
38
- import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
39
- import { ComputeShader } from "../../../shader/ComputeShader.js";
40
- //# sourceMappingURL=shader_mesh_cards_capture.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader_mesh_cards_capture.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js"],"names":[],"mappings":"AA8BA;;;GAGG;AACH,4CAFU,MAAM,CAE+B;AAE/C;;GAEG;AACH,0CAFU,YAAY,CASS;AAqB/B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wCAFU,aAAa,CAgNsE;6BArRhE,sCAAsC;8BAJrC,kCAAkC"}