@woosh/meep-engine 3.61.2 → 3.62.0

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 (645) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +1 -1
  3. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
  4. package/src/engine/graphics3/PickingSystem.js +415 -413
  5. package/src/engine/graphics3/decal/GPUDecalRenderer.d.ts.map +1 -1
  6. package/src/engine/graphics3/decal/GPUDecalRenderer.js +2 -1
  7. package/src/engine/graphics3/decal/shader_decal_composite.d.ts.map +1 -1
  8. package/src/engine/graphics3/decal/shader_decal_composite.js +26 -16
  9. package/src/engine/graphics3/decal/shader_decal_tile_copy.d.ts.map +1 -1
  10. package/src/engine/graphics3/decal/shader_decal_tile_copy.js +6 -11
  11. package/src/engine/graphics3/highlight/GPUHighlightRenderer.d.ts.map +1 -1
  12. package/src/engine/graphics3/highlight/GPUHighlightRenderer.js +6 -2
  13. package/src/engine/graphics3/highlight/shader_highlight_outline.d.ts.map +1 -1
  14. package/src/engine/graphics3/highlight/shader_highlight_outline.js +167 -150
  15. package/src/engine/graphics3/shader_picking_gather.d.ts.map +1 -1
  16. package/src/engine/graphics3/shader_picking_gather.js +133 -120
  17. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  18. package/src/shade/device/mock/SoftwareGPUTexture.d.ts.map +1 -1
  19. package/src/shade/device/mock/SoftwareGPUTexture.js +11 -0
  20. package/src/shade/device/pipeline/rp_validate_and_rewrite_for_color_attachments.js +1 -1
  21. package/src/shade/playground/contact_shadows/ContactShadowLab.js +6 -6
  22. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.d.ts.map +1 -1
  23. package/src/shade/playground/contact_shadows/shader_contact_lab_composite.js +6 -4
  24. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.d.ts.map +1 -1
  25. package/src/shade/playground/contact_shadows/shader_contact_lab_reference.js +6 -4
  26. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.d.ts.map +1 -1
  27. package/src/shade/playground/contact_shadows/shader_contact_shadow_march.js +6 -4
  28. package/src/shade/playground/probe_clipmap/README.md +3 -4
  29. package/src/shade/playground/probe_clipmap/index.html +5 -13
  30. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  31. package/src/shade/playground/probe_clipmap/main.js +0 -5
  32. package/src/shade/playground/probe_clipmap_box/README.md +1 -1
  33. package/src/shade/playground/probe_clipmap_box/index.html +1 -1
  34. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +1 -1
  35. package/src/shade/playground/ssr_variance/capture.js +1 -1
  36. package/src/shade/renderer/Renderer.d.ts +2 -2
  37. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  38. package/src/shade/renderer/Renderer.js +90 -64
  39. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
  40. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +3 -1
  41. package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.d.ts.map +1 -1
  42. package/src/shade/renderer/deferred/chunk_ss_trace_contact_shadow_soft.js +5 -4
  43. package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
  44. package/src/shade/renderer/deferred/shader_deferred_main.js +6 -4
  45. package/src/shade/renderer/extension/GBufferTextures.d.ts +5 -1
  46. package/src/shade/renderer/extension/GBufferTextures.d.ts.map +1 -1
  47. package/src/shade/renderer/extension/GBufferTextures.js +5 -1
  48. package/src/shade/renderer/extension/ViewTextures.d.ts +11 -7
  49. package/src/shade/renderer/extension/ViewTextures.d.ts.map +1 -1
  50. package/src/shade/renderer/extension/ViewTextures.js +17 -13
  51. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  52. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  53. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  54. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  55. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  56. package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts +2 -0
  57. package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.d.ts.map +1 -1
  58. package/src/shade/renderer/gbuffer/G_BUFFER_ALBEDO_FORMAT.js +2 -0
  59. package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.d.ts.map +1 -1
  60. package/src/shade/renderer/gbuffer/G_BUFFER_COLOR_TARGETS.js +8 -5
  61. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
  62. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
  63. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
  64. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
  65. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  66. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
  67. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
  68. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
  69. package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
  70. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
  71. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
  72. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
  73. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
  74. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
  75. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
  76. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
  77. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
  78. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
  79. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
  80. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
  81. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
  82. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
  83. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
  84. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
  85. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  86. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
  87. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
  88. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
  89. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
  90. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
  91. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
  92. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
  93. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
  94. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  95. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
  96. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
  97. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
  98. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
  99. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
  100. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
  101. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
  102. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
  103. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
  104. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
  105. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
  106. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
  107. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
  108. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
  109. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
  110. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
  111. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
  112. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
  113. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
  114. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
  115. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
  116. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
  117. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
  118. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
  119. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
  120. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
  121. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
  122. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
  123. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
  124. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
  125. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
  126. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
  127. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
  128. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
  129. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
  130. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
  131. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
  132. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts +7 -5
  133. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  134. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +29 -16
  135. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
  136. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
  137. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
  138. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
  139. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
  140. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
  141. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
  142. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
  143. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
  144. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
  145. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
  146. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
  147. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
  148. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
  149. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
  150. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
  151. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
  152. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
  153. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
  154. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
  155. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
  156. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
  157. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
  158. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
  159. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
  160. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
  161. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
  162. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
  163. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
  164. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
  165. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
  166. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
  167. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
  168. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
  169. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
  170. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
  171. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
  172. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
  173. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
  174. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
  175. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
  176. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
  177. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
  178. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
  179. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
  180. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
  181. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
  182. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
  183. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
  184. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
  185. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
  186. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
  187. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
  188. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
  189. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
  190. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
  191. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
  192. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
  193. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
  194. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
  195. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
  196. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
  197. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts +9 -3
  198. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.d.ts.map +1 -1
  199. package/src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js +40 -32
  200. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.d.ts.map +1 -1
  201. package/src/shade/renderer/geometry/virtual/runtime/cut/shader_vgeo_cut_collect.js +14 -15
  202. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
  203. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
  204. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.d.ts.map +1 -1
  205. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_debug_draw.js +7 -3
  206. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_diffuse.js +1 -1
  207. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.d.ts.map +1 -1
  208. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_indirect_lighting.js +5 -3
  209. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.d.ts.map +1 -1
  210. package/src/shade/renderer/global_illumination/brick4/gpu/draw/shader_brick4_specular.js +1 -3
  211. package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +1 -1
  212. package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +2 -2
  213. package/src/shade/renderer/global_illumination/lpv/shader_diffuse_LPV.js +1 -1
  214. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +15 -7
  215. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  216. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +82 -17
  217. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
  218. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  219. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
  220. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
  221. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  222. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
  223. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
  224. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
  225. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
  226. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
  227. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  228. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +63 -37
  229. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
  230. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  231. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
  232. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
  233. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  234. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
  235. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
  236. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  237. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
  238. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  239. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
  240. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
  241. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
  242. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
  243. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
  244. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
  245. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
  246. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
  247. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
  248. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
  249. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  250. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
  251. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
  252. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  253. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
  254. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
  255. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
  256. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
  257. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
  258. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
  259. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
  260. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
  261. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
  262. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
  263. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
  264. 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
  265. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
  266. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
  267. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
  268. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
  269. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
  270. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
  271. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
  272. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
  273. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
  274. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
  275. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
  276. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
  277. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
  278. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
  279. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
  280. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +18 -9
  281. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  282. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +73 -45
  283. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +21 -1
  284. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  285. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +24 -1
  286. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
  287. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
  288. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
  289. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
  290. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
  291. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
  292. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +44 -7
  293. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  294. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +88 -11
  295. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
  296. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
  297. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
  298. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
  299. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
  300. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
  301. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +2 -0
  302. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  303. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +10 -4
  304. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
  305. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
  306. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
  307. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
  308. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
  309. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
  310. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +3 -3
  311. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +5 -5
  312. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +2 -2
  313. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
  314. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  315. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +10 -4
  316. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
  317. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
  318. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
  319. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  320. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
  321. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -5
  322. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  323. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +22 -16
  324. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  325. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +7 -3
  326. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
  327. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
  328. package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.d.ts.map +1 -1
  329. package/src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js +5 -3
  330. package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_colored_hash.js +1 -1
  331. package/src/shade/renderer/global_illumination/sharc/shader/debug/shader_sharc_debug_radiance.js +1 -1
  332. package/src/shade/renderer/global_illumination/sharc/shader/shader_sharc_update.js +1 -1
  333. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
  334. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
  335. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
  336. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
  337. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
  338. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
  339. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
  340. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
  341. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
  342. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  343. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
  344. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  345. package/src/shade/renderer/material/GPUMaterialManager.d.ts +22 -9
  346. package/src/shade/renderer/material/GPUMaterialManager.d.ts.map +1 -1
  347. package/src/shade/renderer/material/GPUMaterialManager.js +159 -65
  348. package/src/shade/renderer/material/MATERIAL_MASK.d.ts +19 -0
  349. package/src/shade/renderer/material/MATERIAL_MASK.d.ts.map +1 -0
  350. package/src/shade/renderer/material/MATERIAL_MASK.js +19 -0
  351. package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts +8 -8
  352. package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.d.ts.map +1 -1
  353. package/src/shade/renderer/material/dispatch/GPUMaterialComputeDispatch.js +11 -92
  354. package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.d.ts.map +1 -1
  355. package/src/shade/renderer/material/dispatch/chunk_material_quad_keys.js +10 -2
  356. package/src/shade/renderer/material/dispatch/gbuffer_compute.js +2 -2
  357. package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts +7 -7
  358. package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.d.ts.map +1 -1
  359. package/src/shade/renderer/material/dispatch/graph_material_dispatch_compute.js +20 -16
  360. package/src/shade/renderer/material/dispatch/shader_material_pixel_count.d.ts.map +1 -1
  361. package/src/shade/renderer/material/dispatch/shader_material_pixel_count.js +3 -1
  362. package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.d.ts.map +1 -1
  363. package/src/shade/renderer/material/dispatch/shader_material_pixel_scatter.js +3 -1
  364. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
  365. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  366. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
  367. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
  368. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
  369. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
  370. package/src/shade/renderer/material/standard/fragment_gbuffer.d.ts.map +1 -1
  371. package/src/shade/renderer/material/standard/fragment_gbuffer.js +26 -25
  372. package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts +10 -8
  373. package/src/shade/renderer/material/standard/material_gbuffer_vertex.d.ts.map +1 -1
  374. package/src/shade/renderer/material/standard/material_gbuffer_vertex.js +16 -13
  375. package/src/shade/renderer/material/template/ShadeMaterialTemplate.d.ts +1 -1
  376. package/src/shade/renderer/material/template/ShadeMaterialTemplate.js +1 -1
  377. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
  378. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
  379. package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
  380. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
  381. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
  382. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
  383. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts +5 -2
  384. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.d.ts.map +1 -1
  385. package/src/shade/renderer/postprocess/denoise/LigmaDenoiser.js +7 -4
  386. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts +3 -3
  387. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.d.ts.map +1 -1
  388. package/src/shade/renderer/postprocess/denoise/debug/graph_pass_debug_reprojection.js +12 -10
  389. package/src/shade/renderer/postprocess/denoise/fragment_shader_denoise_ao.js +2 -2
  390. package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.d.ts.map +1 -1
  391. package/src/shade/renderer/postprocess/denoise/shader_temporal_reprojection_luma.js +6 -4
  392. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts +9 -7
  393. package/src/shade/renderer/postprocess/gtao/GTAO.d.ts.map +1 -1
  394. package/src/shade/renderer/postprocess/gtao/GTAO.js +11 -8
  395. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts +3 -3
  396. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.d.ts.map +1 -1
  397. package/src/shade/renderer/postprocess/gtao/ao_reproject_shader.js +17 -12
  398. package/src/shade/renderer/postprocess/gtao/chunk_integrate_lighting_sample.js +1 -1
  399. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao.js +1 -1
  400. package/src/shade/renderer/postprocess/gtao/fragment_shader_gtao_with_irradiance.js +4 -4
  401. package/src/shade/renderer/postprocess/gtao/shader_gtao_spatial_denoise.js +2 -2
  402. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  403. package/src/shade/renderer/postprocess/ssr/chunk_ssr_spatial_variance.js +41 -41
  404. package/src/shade/renderer/postprocess/ssr/prefilter/chunk_load_neighbourhood_sample.js +1 -1
  405. package/src/shade/renderer/postprocess/ssr/reproject/chunk_ssr_temporal_accumulate.js +3 -3
  406. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -1
  407. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +5 -2
  408. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.js +4 -4
  409. package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.d.ts.map +1 -1
  410. package/src/shade/renderer/postprocess/ssr/ssr_combine_shader.js +4 -2
  411. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts +2 -1
  412. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.d.ts.map +1 -1
  413. package/src/shade/renderer/postprocess/ssr/ssr_graph_prefilter_color.js +10 -2
  414. package/src/shade/renderer/postprocess/ssr/ssr_reproject_shader.js +1 -1
  415. package/src/shade/renderer/postprocess/ssr/ssr_spatial_denoise_shader.js +4 -4
  416. package/src/shade/renderer/postprocess/taa/shader_reprojection_map.d.ts.map +1 -1
  417. package/src/shade/renderer/postprocess/taa/shader_reprojection_map.js +6 -4
  418. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts +6 -8
  419. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.d.ts.map +1 -1
  420. package/src/shade/renderer/postprocess/velocity/graph_add_per_object_velocity.js +29 -33
  421. package/src/shade/renderer/rasterize/TemplatePassDescriptor.d.ts.map +1 -1
  422. package/src/shade/renderer/rasterize/TemplatePassDescriptor.js +1 -0
  423. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts +6 -3
  424. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.d.ts.map +1 -1
  425. package/src/shade/renderer/rasterize/bucket/graph_meshlets_rasterize_by_bucket.js +8 -3
  426. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  427. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +3 -0
  428. package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.d.ts +1 -0
  429. package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.js +5 -0
  430. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts +8 -3
  431. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.d.ts.map +1 -1
  432. package/src/shade/renderer/rasterize/expand/graph_meshlets_rasterize.js +54 -5
  433. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +1 -0
  434. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  435. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +1 -1
  436. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +1 -1
  437. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  438. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +2 -1
  439. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts +7 -2
  440. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.d.ts.map +1 -1
  441. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +73 -9
  442. package/src/shade/renderer/rasterize/native/viz/shader_vertex.js +4 -4
  443. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.d.ts.map +1 -1
  444. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_alpha_tested_pass_descriptor.js +23 -40
  445. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.d.ts.map +1 -1
  446. package/src/shade/renderer/rasterize/native/viz/viz_rasterization_opaque_pass_descriptor.js +55 -76
  447. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts +4 -2
  448. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.d.ts.map +1 -1
  449. package/src/shade/renderer/rasterize/standard/graph_rasterize_partial_opaque.js +6 -2
  450. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts +4 -2
  451. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.d.ts.map +1 -1
  452. package/src/shade/renderer/rasterize/standard/graph_rasterize_remaining_opaque.js +6 -2
  453. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts +5 -2
  454. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.d.ts.map +1 -1
  455. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +43 -2
  456. package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts +39 -0
  457. package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.d.ts.map +1 -0
  458. package/src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js +45 -0
  459. package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts +26 -0
  460. package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.d.ts.map +1 -0
  461. package/src/shade/renderer/rasterize/visibility/chunk_visibility_decode.js +48 -0
  462. package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts +40 -0
  463. package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.d.ts.map +1 -0
  464. package/src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.js +172 -0
  465. package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.d.ts.map +1 -1
  466. package/src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js +6 -4
  467. package/src/shade/renderer/restir/di/chunk_restir_spatial_reuse.js +1 -1
  468. package/src/shade/renderer/restir/di/shader_restir_di_denoise.js +2 -2
  469. package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
  470. package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
  471. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts +9 -0
  472. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.d.ts.map +1 -0
  473. package/src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.js +18 -0
  474. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts +20 -0
  475. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.d.ts.map +1 -0
  476. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_determinant.js +26 -0
  477. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts +60 -18
  478. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.d.ts.map +1 -1
  479. package/src/shade/renderer/shader/chunk/geometry/mat3/chunk_mat3_singular_values.js +163 -45
  480. package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.d.ts.map +1 -1
  481. package/src/shade/renderer/shader/chunk/geometry/mat4/chunk_mat4_linear_determinant.js +19 -18
  482. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts +13 -0
  483. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.d.ts.map +1 -0
  484. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js +22 -0
  485. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts +8 -1
  486. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.d.ts.map +1 -1
  487. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js +10 -8
  488. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts +22 -0
  489. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.d.ts.map +1 -0
  490. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_face_normal.js +32 -0
  491. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts +11 -1
  492. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.d.ts.map +1 -1
  493. package/src/shade/renderer/shader/chunk/geometry/normal/chunk_encode_g_buffer_normal.js +14 -6
  494. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
  495. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
  496. package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
  497. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
  498. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
  499. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
  500. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
  501. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
  502. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
  503. package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts +14 -0
  504. package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.d.ts.map +1 -0
  505. package/src/shade/renderer/shader/chunk/material/chunk_decode_g_buffer_albedo.js +24 -0
  506. package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts +17 -0
  507. package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.d.ts.map +1 -0
  508. package/src/shade/renderer/shader/chunk/material/chunk_encode_g_buffer_albedo.js +27 -0
  509. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
  510. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
  511. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
  512. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
  513. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
  514. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
  515. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
  516. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
  517. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
  518. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts +7 -1
  519. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts.map +1 -1
  520. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js +8 -1
  521. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_world_space_normal.js +1 -1
  522. package/src/shade/renderer/shader/chunk/screen_space/chunk_screen_space_newton_ray.js +10 -10
  523. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
  524. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
  525. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
  526. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
  527. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
  528. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
  529. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
  530. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
  531. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
  532. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
  533. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
  534. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
  535. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
  536. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
  537. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
  538. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
  539. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
  540. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts +8 -0
  541. package/src/shade/renderer/shader/pass/RenderPassDescriptor.d.ts.map +1 -1
  542. package/src/shade/renderer/shader/pass/RenderPassDescriptor.js +9 -0
  543. package/src/shade/renderer/shader/util/shader_decode_octahedral_normal.js +1 -1
  544. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts +3 -3
  545. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.d.ts.map +1 -1
  546. package/src/shade/renderer/shadow/contact/graph_contact_shadow_linear.js +3 -3
  547. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.d.ts.map +1 -1
  548. package/src/shade/renderer/shadow/contact/shader_contact_shadow_linear.js +6 -4
  549. package/src/shade/renderer/shadow/ray/RTXShadows.d.ts +6 -4
  550. package/src/shade/renderer/shadow/ray/RTXShadows.d.ts.map +1 -1
  551. package/src/shade/renderer/shadow/ray/RTXShadows.js +16 -5
  552. package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.d.ts.map +1 -1
  553. package/src/shade/renderer/shadow/ray/shader_ray_shadow_code.js +7 -7
  554. package/src/shade/renderer/shadow/ray/shader_shadow_upscale.js +2 -2
  555. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts +4 -2
  556. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.d.ts.map +1 -1
  557. package/src/shade/renderer/shadow/ray/staged/gen/graph_gen_rays.js +79 -74
  558. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.d.ts.map +1 -1
  559. package/src/shade/renderer/shadow/ray/staged/gen/shader_generate_rays.js +7 -7
  560. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.d.ts.map +1 -1
  561. package/src/shade/renderer/shadow/sdf/cascade/shader_scene_sdf_soft_shadows.js +7 -3
  562. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts +7 -5
  563. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  564. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +29 -16
  565. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts +5 -5
  566. package/src/shade/renderer/texture/virtual/VirtualTextureManager.d.ts.map +1 -1
  567. package/src/shade/renderer/texture/virtual/VirtualTextureManager.js +8 -8
  568. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.d.ts.map +1 -1
  569. package/src/shade/renderer/texture/virtual/build_shader_vt_feedback.js +13 -14
  570. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
  571. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
  572. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
  573. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  574. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
  575. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +2 -1
  576. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  577. package/src/shade/renderer/water/GPUWaterRenderer.js +6 -4
  578. package/src/shade/renderer/water/chunk_water_transport.d.ts.map +1 -1
  579. package/src/shade/renderer/water/chunk_water_transport.js +11 -9
  580. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  581. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  582. package/src/shade/renderer/water/shader_water.js +13 -11
  583. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  584. package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts +0 -7
  585. package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.d.ts.map +0 -1
  586. package/src/shade/renderer/gbuffer/G_BUFFER_MIP_LEVELS.js +0 -6
  587. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
  588. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
  589. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
  590. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
  591. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
  592. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
  593. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
  594. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
  595. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
  596. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
  597. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
  598. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
  599. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
  600. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
  601. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
  602. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
  603. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
  604. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
  605. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
  606. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
  607. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
  608. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
  609. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
  610. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
  611. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
  612. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
  613. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
  614. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
  615. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
  616. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
  617. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
  618. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
  619. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
  620. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
  621. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
  622. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
  623. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
  624. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
  625. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
  626. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
  627. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
  628. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
  629. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
  630. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
  631. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
  632. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
  633. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
  634. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
  635. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
  636. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
  637. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
  638. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
  639. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
  640. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
  641. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
  642. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
  643. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts +0 -3
  644. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.d.ts.map +0 -1
  645. package/src/shade/renderer/postprocess/ssr/shader_downsample_encoded_normal.js +0 -104
@@ -1 +1 @@
1
- {"version":3,"file":"shader_mesh_sdf_classify.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js"],"names":[],"mappings":"AAyCA;;;;;GAKG;AACH,mDAFW,OAAO,2DAA2D,EAAE,6BAA6B,QAS3G;AA/BD;;GAEG;AACH,yCAFU,YAAY,CAeQ;AA6B9B;;;;;;;;;;;;;;;GAeG;AACH,uCAFU,aAAa,CAqDpB;6BA9H0B,sCAAsC;8BAJrC,kCAAkC"}
1
+ {"version":3,"file":"shader_mesh_sdf_classify.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js"],"names":[],"mappings":"AAyCA;;;;;GAKG;AACH,mDAFW,OAAO,2DAA2D,EAAE,6BAA6B,QAS3G;AA/BD;;GAEG;AACH,yCAFU,YAAY,CAeQ;AA6B9B;;;;;;;;;;;;;;;GAeG;AACH,uCAFU,aAAa,CAsDpB;6BA/H0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -75,7 +75,7 @@ mesh_sdf_add_blas_resources(resources.createGroup());
75
75
  * whichever side of the surface it is on, since the vote casts no ray where the surface is not within
76
76
  * the band (UE 5.4's). Otherwise the brick goes onto the ring as `(geometry, generation, brick, 0)`,
77
77
  * for evaluate to settle. Either way its entry starts EMPTY, which is what a freed range must find in
78
- * an entry never stored.
78
+ * an entry never stored, and its number `MESH_SDF_UNNUMBERED`, until evaluate gives it a slot.
79
79
  *
80
80
  * A dropped brick is settled here: it counts its geometry's pending word down, and the last brick of
81
81
  * a geometry to settle logs it complete.
@@ -108,6 +108,7 @@ fn main(
108
108
  let voxel = mesh_sdf_level_voxel(header, brick.x);
109
109
 
110
110
  atomicStore(&mesh_sdf_indirection[header.indirection + index], MESH_SDF_EMPTY);
111
+ atomicStore(&mesh_sdf_indirection[mesh_sdf_numbers(header) + index], MESH_SDF_UNNUMBERED);
111
112
 
112
113
  let centre = mesh_sdf_brick_corner(header, brick) + vec3<f32>(0.5 * f32(MESH_SDF_BRICK_VOXELS) * voxel);
113
114
  let reach = (MESH_SDF_BAND_VOXELS + MESH_SDF_BRICK_HALF_DIAGONAL) * voxel;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @type {WebGPUStruct}
3
+ */
4
+ export const MESH_SDF_CONTENT_REHASH_SETTINGS: WebGPUStruct;
5
+ /**
6
+ * The content table of a grown atlas, empty and twice its slots, given the records of the table it
7
+ * replaces (`mesh_sdf_content_table_before`): a thread a record of that table, each live one inserted
8
+ * as it is, its key and its slot, so the grown table lists what the old one did. A record the grown
9
+ * table refuses leaves its slot held but never found (`chunk_mesh_sdf_contents`).
10
+ *
11
+ * Runs first in the bake that follows the growth, before anything reads or changes the grown table.
12
+ *
13
+ * @type {ComputeShader}
14
+ */
15
+ export const shader_mesh_sdf_content_rehash: ComputeShader;
16
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
17
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
18
+ //# sourceMappingURL=shader_mesh_sdf_content_rehash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_sdf_content_rehash.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js"],"names":[],"mappings":"AAUA;;GAEG;AACH,+CAFU,YAAY,CAKa;AAUnC;;;;;;;;;GASG;AACH,6CAFU,aAAa,CA+BpB;6BA3D0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -0,0 +1,66 @@
1
+ import { chunk_hash_table_atomic } from "../../../gpu_primitive/hash_table/chunk_hash_table_atomic.js";
2
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
3
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
4
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
5
+ import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
6
+ import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
7
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
8
+ import { MESH_SDF_CONTENT_TABLE_RESOURCE } from "./chunk_mesh_sdf_contents.js";
9
+ import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
10
+
11
+ /**
12
+ * @type {WebGPUStruct}
13
+ */
14
+ export const MESH_SDF_CONTENT_REHASH_SETTINGS = WebGPUStruct.from({
15
+ /** workgroups along x, the rest folded into y */
16
+ groups_x: u32,
17
+ }, "MeshSDFContentRehashSettings");
18
+
19
+ const resources = new ShaderResourceSetDescriptor();
20
+
21
+ resources.setImmediate("settings", MESH_SDF_CONTENT_REHASH_SETTINGS);
22
+
23
+ resources.createGroup()
24
+ .addStorageBuffer("mesh_sdf_content_table_before", WebGPUArray.u32)
25
+ .add(MESH_SDF_CONTENT_TABLE_RESOURCE);
26
+
27
+ /**
28
+ * The content table of a grown atlas, empty and twice its slots, given the records of the table it
29
+ * replaces (`mesh_sdf_content_table_before`): a thread a record of that table, each live one inserted
30
+ * as it is, its key and its slot, so the grown table lists what the old one did. A record the grown
31
+ * table refuses leaves its slot held but never found (`chunk_mesh_sdf_contents`).
32
+ *
33
+ * Runs first in the bake that follows the growth, before anything reads or changes the grown table.
34
+ *
35
+ * @type {ComputeShader}
36
+ */
37
+ export const shader_mesh_sdf_content_rehash = ComputeShader.from({
38
+ label: "Mesh SDF Content Rehash",
39
+ resources,
40
+ body: CodeChunk.from(
41
+ //language=WGSL
42
+ `
43
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
44
+ fn main(
45
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
46
+ @builtin(local_invocation_index) lane: u32,
47
+ ) {
48
+ let record = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
49
+
50
+ // the table's header: its records held, then its size
51
+ if (record >= mesh_sdf_content_table_before[1u]) {
52
+ return;
53
+ }
54
+
55
+ let stored = mesh_sdf_content_table_before[2u + 2u * record];
56
+
57
+ if (stored == 0u || stored == HASH_TABLE_REMOVED) {
58
+ return;
59
+ }
60
+
61
+ hash_table_atomic_insert(&mesh_sdf_content_table, 0u, stored - 1u, mesh_sdf_content_table_before[3u + 2u * record]);
62
+ }
63
+ `, [
64
+ chunk_hash_table_atomic,
65
+ ]),
66
+ });
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @type {WebGPUStruct}
3
+ */
4
+ export const MESH_SDF_COUNT_SETTINGS: WebGPUStruct;
5
+ /**
6
+ * Bake step 5, count: a thread a record of the frame's log, dispatched over its capacity after store.
7
+ * A completion record gets its geometry's stored bricks, the
8
+ * count of numbers evaluate gave out (`MESH_SDF_LOG_STORED`). It is read here rather than when the
9
+ * last brick settles: the numbers and the pending word are different words, and only a pass boundary
10
+ * orders one brick's taking a number before another's reading the count.
11
+ *
12
+ * @type {ComputeShader}
13
+ */
14
+ export const shader_mesh_sdf_count: ComputeShader;
15
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
16
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
17
+ //# sourceMappingURL=shader_mesh_sdf_count.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_sdf_count.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js"],"names":[],"mappings":"AASA;;GAEG;AACH,sCAFU,YAAY,CAOK;AAU3B;;;;;;;;GAQG;AACH,oCAFU,aAAa,CA+BpB;6BA7D0B,sCAAsC;8BAHrC,kCAAkC"}
@@ -0,0 +1,66 @@
1
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
5
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
6
+ import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
7
+ import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "./chunk_mesh_sdf_bake.js";
8
+ import { MESH_SDF_BAKE_WORKGROUP_SIZE, MESH_SDF_LOG_STORED } from "./MESH_SDF_BAKE.js";
9
+
10
+ /**
11
+ * @type {WebGPUStruct}
12
+ */
13
+ export const MESH_SDF_COUNT_SETTINGS = WebGPUStruct.from({
14
+ /** where the frame's log starts in the arena */
15
+ log_offset: u32,
16
+ /** records the log holds */
17
+ log_capacity: u32,
18
+ }, "MeshSDFCountSettings");
19
+
20
+ const resources = new ShaderResourceSetDescriptor();
21
+
22
+ resources.setImmediate("settings", MESH_SDF_COUNT_SETTINGS);
23
+
24
+ resources.createGroup()
25
+ .add(MESH_SDF_HEADERS_RESOURCE)
26
+ .add(MESH_SDF_ARENA_RESOURCE);
27
+
28
+ /**
29
+ * Bake step 5, count: a thread a record of the frame's log, dispatched over its capacity after store.
30
+ * A completion record gets its geometry's stored bricks, the
31
+ * count of numbers evaluate gave out (`MESH_SDF_LOG_STORED`). It is read here rather than when the
32
+ * last brick settles: the numbers and the pending word are different words, and only a pass boundary
33
+ * orders one brick's taking a number before another's reading the count.
34
+ *
35
+ * @type {ComputeShader}
36
+ */
37
+ export const shader_mesh_sdf_count = ComputeShader.from({
38
+ label: "Mesh SDF Count",
39
+ resources,
40
+ body: CodeChunk.from(
41
+ //language=WGSL
42
+ `
43
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
44
+ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
45
+ let record = id.x;
46
+ let count = min(atomicLoad(&mesh_sdf_indirection[settings.log_offset + MESH_SDF_LOG_COMPLETIONS]), settings.log_capacity);
47
+
48
+ if (record >= count) {
49
+ return;
50
+ }
51
+
52
+ let word = settings.log_offset + MESH_SDF_LOG_HEADER_WORDS + record * MESH_SDF_LOG_RECORD_WORDS;
53
+ let geometry = atomicLoad(&mesh_sdf_indirection[word]);
54
+ let header = mesh_sdf_headers[geometry];
55
+
56
+ // a record of a bake dropped since: the host passes it over, and its range may be gone
57
+ if (header.state != MESH_SDF_STATE_BAKING || header.generation != atomicLoad(&mesh_sdf_indirection[word + 1u])) {
58
+ return;
59
+ }
60
+
61
+ atomicStore(&mesh_sdf_indirection[word + ${MESH_SDF_LOG_STORED}u], atomicLoad(&mesh_sdf_indirection[header.indirection - 2u]));
62
+ }
63
+ `, [
64
+ chunk_mesh_sdf_bake,
65
+ ]),
66
+ });
@@ -11,9 +11,11 @@ export const MESH_SDF_EVALUATE_SETTINGS: WebGPUStruct;
11
11
  * millisecond. Its byte goes to staging, a word a texel, for store.
12
12
  *
13
13
  * The brick's last thread to finish settles it, so that nothing waits on a barrier: a brick with a
14
- * texel within the band pops a slot, one with none is EMPTY after all, and either way its entry is
15
- * written and its geometry's pending word counted down — to the geometry's completion when it is the
16
- * last. A texel with no surface within the band cast no ray and reads +R, so such a brick is outside.
14
+ * texel within the band is PENDING, which slot holds its bytes being resolve's to say once key has
15
+ * read them, and takes the next number of its geometry's stored bricks; one with none is EMPTY after
16
+ * all; either way its entry is written and its geometry's pending word counted down — to the
17
+ * geometry's completion when it is the last. A texel with no surface within the band cast no ray and
18
+ * reads +R, so such a brick is outside.
17
19
  * A workgroup's lanes count into a word of their own, lanes finished and lanes within the band; the
18
20
  * workgroup's last lane adds the workgroup to the brick's tally in the arena, and the brick's last
19
21
  * workgroup reads all eight there.
@@ -1 +1 @@
1
- {"version":3,"file":"shader_mesh_sdf_evaluate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js"],"names":[],"mappings":"AAeA;;GAEG;AACH,yCAFU,YAAY,CAaQ;AAgB9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,uCAFU,aAAa,CAiFpB;6BA1I0B,sCAAsC;8BAJrC,kCAAkC"}
1
+ {"version":3,"file":"shader_mesh_sdf_evaluate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js"],"names":[],"mappings":"AAcA;;GAEG;AACH,yCAFU,YAAY,CAWQ;AAe9B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,uCAFU,aAAa,CAoFpB;6BA3I0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -6,7 +6,6 @@ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderReso
6
6
  import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
7
7
  import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
8
8
  import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
9
- import { chunk_slot_stack } from "../../../gpu_primitive/slot_stack/chunk_slot_stack.js";
10
9
  import { chunk_blas_query_band_sdf } from "../chunk_blas_query_band_sdf.js";
11
10
  import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
12
11
  import { chunk_mesh_sdf_bake, chunk_mesh_sdf_bake_settle, MESH_SDF_ARENA_RESOURCE } from "./chunk_mesh_sdf_bake.js";
@@ -19,13 +18,11 @@ import { mesh_sdf_add_blas_resources } from "./shader_mesh_sdf_classify.js";
19
18
  export const MESH_SDF_EVALUATE_SETTINGS = WebGPUStruct.from({
20
19
  /** entries of `mesh_sdf_ring`, a power of two; the staging starts here */
21
20
  ring_capacity: u32,
22
- /** slots the stack holds */
23
- slot_capacity: u32,
24
21
  /** where the frame's log starts in the arena */
25
22
  log_offset: u32,
26
23
  /** records the log holds */
27
24
  log_capacity: u32,
28
- /** where the frame's tallies start in the arena, a word a brick taken */
25
+ /** where the records of the frame's bricks taken start in the arena, MESH_SDF_TAKEN_WORDS each */
29
26
  tally_offset: u32,
30
27
  }, "MeshSDFEvaluateSettings");
31
28
 
@@ -33,13 +30,12 @@ const resources = new ShaderResourceSetDescriptor();
33
30
 
34
31
  resources.setImmediate("settings", MESH_SDF_EVALUATE_SETTINGS);
35
32
 
36
- // headers, ring and staging, take, the arena, the slots: five, and the BLAS query's five
33
+ // headers, ring and staging, take, the arena: four, and the BLAS query's five
37
34
  resources.createGroup()
38
35
  .add(MESH_SDF_HEADERS_RESOURCE)
39
36
  .addStorageBuffer("mesh_sdf_ring", WebGPUArray.from(vec4u), true)
40
37
  .addStorageBuffer("mesh_sdf_take", WebGPUArray.u32)
41
- .add(MESH_SDF_ARENA_RESOURCE)
42
- .addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true);
38
+ .add(MESH_SDF_ARENA_RESOURCE);
43
39
 
44
40
  mesh_sdf_add_blas_resources(resources.createGroup());
45
41
 
@@ -52,9 +48,11 @@ mesh_sdf_add_blas_resources(resources.createGroup());
52
48
  * millisecond. Its byte goes to staging, a word a texel, for store.
53
49
  *
54
50
  * The brick's last thread to finish settles it, so that nothing waits on a barrier: a brick with a
55
- * texel within the band pops a slot, one with none is EMPTY after all, and either way its entry is
56
- * written and its geometry's pending word counted down — to the geometry's completion when it is the
57
- * last. A texel with no surface within the band cast no ray and reads +R, so such a brick is outside.
51
+ * texel within the band is PENDING, which slot holds its bytes being resolve's to say once key has
52
+ * read them, and takes the next number of its geometry's stored bricks; one with none is EMPTY after
53
+ * all; either way its entry is written and its geometry's pending word counted down — to the
54
+ * geometry's completion when it is the last. A texel with no surface within the band cast no ray and
55
+ * reads +R, so such a brick is outside.
58
56
  * A workgroup's lanes count into a word of their own, lanes finished and lanes within the band; the
59
57
  * workgroup's last lane adds the workgroup to the brick's tally in the arena, and the brick's last
60
58
  * workgroup reads all eight there.
@@ -114,7 +112,7 @@ fn main(
114
112
  let workgroup_within_band = (lanes_before >> 16u) + select(0u, 1u, within_band) > 0u;
115
113
 
116
114
  let groups_before = atomicAdd(
117
- &mesh_sdf_indirection[settings.tally_offset + taken],
115
+ &mesh_sdf_indirection[settings.tally_offset + taken * MESH_SDF_TAKEN_WORDS + MESH_SDF_TAKEN_TALLY],
118
116
  1u + select(0u, MESH_SDF_TALLY_BAND_UNIT, workgroup_within_band)
119
117
  );
120
118
 
@@ -128,8 +126,12 @@ fn main(
128
126
  var entry = MESH_SDF_EMPTY;
129
127
 
130
128
  if (brick_within_band) {
131
- // take held the bricks of the frame to the free slots, so this pop is never refused
132
- entry = slot_stack_pop(&mesh_sdf_indirection[MESH_SDF_COUNTER_SLOTS], &mesh_sdf_slots, settings.slot_capacity);
129
+ entry = MESH_SDF_PENDING;
130
+
131
+ let number = atomicAdd(&mesh_sdf_indirection[header.indirection - 2u], 1u);
132
+
133
+ atomicStore(&mesh_sdf_indirection[mesh_sdf_numbers(header) + item.z], number);
134
+ atomicStore(&mesh_sdf_indirection[mesh_sdf_numbered(header) + number], item.z);
133
135
  }
134
136
 
135
137
  atomicStore(&mesh_sdf_indirection[header.indirection + item.z], entry);
@@ -140,7 +142,6 @@ fn main(
140
142
  SURFACE_POINT_3D.declaration_chunk,
141
143
  chunk_mesh_sdf_bake,
142
144
  chunk_mesh_sdf_bake_settle,
143
- chunk_slot_stack,
144
145
  chunk_blas_query_band_sdf,
145
146
  ]),
146
147
  });
@@ -5,7 +5,8 @@ export const MESH_SDF_FREE_SETTINGS: WebGPUStruct;
5
5
  /**
6
6
  * Gives the slots of freed geometries back: one thread an entry of every run of entries freed since
7
7
  * the last bake, a run each in `mesh_sdf_ranges` as `(first thread, first entry)`. An entry holding a
8
- * slot pushes it onto the stack.
8
+ * slot holds it one entry fewer (`chunk_mesh_sdf_contents`), and the entry that was the last pushes it
9
+ * onto the stack, its content no longer listed.
9
10
  *
10
11
  * Runs first in the bake, before classify can hand a freed range to another geometry and overwrite
11
12
  * it. A range freed mid-bake holds EMPTY where its bricks were not yet stored, since classify writes
@@ -1 +1 @@
1
- {"version":3,"file":"shader_mesh_sdf_free.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js"],"names":[],"mappings":"AAeA;;GAEG;AACH,qCAFU,YAAY,CASI;AAW1B;;;;;;;;;;GAUG;AACH,mCAFU,aAAa,CA+BpB;6BAvE0B,sCAAsC;8BAJrC,kCAAkC"}
1
+ {"version":3,"file":"shader_mesh_sdf_free.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js"],"names":[],"mappings":"AAoBA;;GAEG;AACH,qCAFU,YAAY,CASI;AAa1B;;;;;;;;;;;GAWG;AACH,mCAFU,aAAa,CAgCpB;6BAhF0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -11,6 +11,11 @@ import {
11
11
  MESH_SDF_ARENA_RESOURCE,
12
12
  MESH_SDF_RANGES_RESOURCE
13
13
  } from "./chunk_mesh_sdf_bake.js";
14
+ import {
15
+ chunk_mesh_sdf_contents,
16
+ MESH_SDF_CONTENT_TABLE_RESOURCE,
17
+ MESH_SDF_CONTENTS_RESOURCE
18
+ } from "./chunk_mesh_sdf_contents.js";
14
19
  import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
15
20
 
16
21
  /**
@@ -32,12 +37,15 @@ resources.setImmediate("settings", MESH_SDF_FREE_SETTINGS);
32
37
  resources.createGroup()
33
38
  .add(MESH_SDF_RANGES_RESOURCE)
34
39
  .add(MESH_SDF_ARENA_RESOURCE)
35
- .addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true);
40
+ .addStorageBuffer("mesh_sdf_slots", WebGPUArray.u32, true)
41
+ .add(MESH_SDF_CONTENTS_RESOURCE)
42
+ .add(MESH_SDF_CONTENT_TABLE_RESOURCE);
36
43
 
37
44
  /**
38
45
  * Gives the slots of freed geometries back: one thread an entry of every run of entries freed since
39
46
  * the last bake, a run each in `mesh_sdf_ranges` as `(first thread, first entry)`. An entry holding a
40
- * slot pushes it onto the stack.
47
+ * slot holds it one entry fewer (`chunk_mesh_sdf_contents`), and the entry that was the last pushes it
48
+ * onto the stack, its content no longer listed.
41
49
  *
42
50
  * Runs first in the bake, before classify can hand a freed range to another geometry and overwrite
43
51
  * it. A range freed mid-bake holds EMPTY where its bricks were not yet stored, since classify writes
@@ -65,13 +73,14 @@ fn main(
65
73
  let range = mesh_sdf_range_find(settings.range_count, thread);
66
74
  let entry = atomicLoad(&mesh_sdf_indirection[mesh_sdf_ranges[range].y + thread - mesh_sdf_ranges[range].x]);
67
75
 
68
- if (mesh_sdf_entry_holds_slot(entry)) {
76
+ if (mesh_sdf_entry_holds_slot(entry) && mesh_sdf_content_release(entry)) {
69
77
  slot_stack_push(&mesh_sdf_indirection[MESH_SDF_COUNTER_SLOTS], &mesh_sdf_slots, entry);
70
78
  }
71
79
  }
72
80
  `, [
73
81
  chunk_mesh_sdf_bake,
74
82
  chunk_mesh_sdf_range_find,
83
+ chunk_mesh_sdf_contents,
75
84
  chunk_slot_stack,
76
85
  ]),
77
86
  });
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @type {WebGPUStruct}
3
+ */
4
+ export const MESH_SDF_KEY_SETTINGS: WebGPUStruct;
5
+ /**
6
+ * Bake step 4, key: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
7
+ * take as evaluate is. A PENDING brick's texel adds its term of the brick's content key
8
+ * (`MESH_SDF_BRICK_KEY.js`) into the brick's record, a subgroup's terms in one atomic: a sum, so the
9
+ * order they land in is no matter, and resolve reads it after the dispatch. A brick EMPTY, or stale,
10
+ * adds nothing. A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the words of a
11
+ * brick are loaded once a subgroup (`chunk_subgroup_atomic_load`).
12
+ *
13
+ * A pass of its own: evaluate's eight workgroups write a brick's staging in one dispatch, and nothing
14
+ * there orders their writes before another of them reads them.
15
+ *
16
+ * @type {ComputeShader}
17
+ */
18
+ export const shader_mesh_sdf_key: ComputeShader;
19
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
20
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
21
+ //# sourceMappingURL=shader_mesh_sdf_key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_sdf_key.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js"],"names":[],"mappings":"AAaA;;GAEG;AACH,oCAFU,YAAY,CAOG;AA6CzB;;;;;;;;;;;;GAYG;AACH,kCAFU,aAAa,CAMpB;6BA5E0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -0,0 +1,84 @@
1
+ import { chunk_subgroup_atomic_add } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_add.js";
2
+ import { chunk_subgroup_atomic_load } from "../../../shader/chunk/subgroup/chunk_subgroup_atomic_load.js";
3
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
4
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
5
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
6
+ import { u32, vec4u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
7
+ import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
8
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
9
+ import { chunk_mesh_sdf_brick_key } from "../chunk_mesh_sdf_brick_key.js";
10
+ import { MESH_SDF_HEADERS_RESOURCE } from "../MESH_SDF_RESOURCES.js";
11
+ import { chunk_mesh_sdf_bake, MESH_SDF_ARENA_RESOURCE } from "./chunk_mesh_sdf_bake.js";
12
+ import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "./MESH_SDF_BAKE.js";
13
+
14
+ /**
15
+ * @type {WebGPUStruct}
16
+ */
17
+ export const MESH_SDF_KEY_SETTINGS = WebGPUStruct.from({
18
+ /** entries of `mesh_sdf_ring`, a power of two; the staging starts here */
19
+ ring_capacity: u32,
20
+ /** where the records of the frame's bricks taken start in the arena, MESH_SDF_TAKEN_WORDS each */
21
+ tally_offset: u32,
22
+ }, "MeshSDFKeySettings");
23
+
24
+ const resources = new ShaderResourceSetDescriptor();
25
+
26
+ resources.setImmediate("settings", MESH_SDF_KEY_SETTINGS);
27
+
28
+ resources.createGroup()
29
+ .add(MESH_SDF_HEADERS_RESOURCE)
30
+ .addStorageBuffer("mesh_sdf_ring", WebGPUArray.from(vec4u))
31
+ .addStorageBuffer("mesh_sdf_take", WebGPUArray.u32)
32
+ .add(MESH_SDF_ARENA_RESOURCE);
33
+
34
+ const body = CodeChunk.from(
35
+ //language=WGSL
36
+ `
37
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
38
+ fn main(
39
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
40
+ @builtin(local_invocation_index) lane: u32,
41
+ ) {
42
+ let taken = workgroup_id.x / MESH_SDF_GROUPS_PER_BRICK;
43
+ let item = mesh_sdf_ring[(mesh_sdf_take[MESH_SDF_TAKE_START] + taken) & (settings.ring_capacity - 1u)];
44
+ let header = mesh_sdf_headers[item.x];
45
+
46
+ // the same for every lane of the workgroup, and of each of its subgroups: one brick
47
+ if (header.state != MESH_SDF_STATE_BAKING || header.generation != item.y) {
48
+ return;
49
+ }
50
+
51
+ if (subgroup_atomic_load_u32(&mesh_sdf_indirection[header.indirection + item.z]) != MESH_SDF_PENDING) {
52
+ return;
53
+ }
54
+
55
+ let texel = (workgroup_id.x % MESH_SDF_GROUPS_PER_BRICK) * MESH_SDF_BAKE_WORKGROUP_SIZE + lane;
56
+ let byte = mesh_sdf_ring[settings.ring_capacity + taken * MESH_SDF_STAGING_VEC4S + texel / 4u][texel % 4u];
57
+
58
+ subgroup_atomic_add_u32(&mesh_sdf_indirection[settings.tally_offset + taken * MESH_SDF_TAKEN_WORDS + MESH_SDF_TAKEN_KEY], mesh_sdf_brick_key_term(texel, byte));
59
+ }
60
+ `, [
61
+ chunk_mesh_sdf_bake,
62
+ chunk_mesh_sdf_brick_key,
63
+ chunk_subgroup_atomic_add,
64
+ chunk_subgroup_atomic_load,
65
+ ]);
66
+
67
+ /**
68
+ * Bake step 4, key: a thread a texel of each brick taken, eight workgroups a brick, dispatched by
69
+ * take as evaluate is. A PENDING brick's texel adds its term of the brick's content key
70
+ * (`MESH_SDF_BRICK_KEY.js`) into the brick's record, a subgroup's terms in one atomic: a sum, so the
71
+ * order they land in is no matter, and resolve reads it after the dispatch. A brick EMPTY, or stale,
72
+ * adds nothing. A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the words of a
73
+ * brick are loaded once a subgroup (`chunk_subgroup_atomic_load`).
74
+ *
75
+ * A pass of its own: evaluate's eight workgroups write a brick's staging in one dispatch, and nothing
76
+ * there orders their writes before another of them reads them.
77
+ *
78
+ * @type {ComputeShader}
79
+ */
80
+ export const shader_mesh_sdf_key = ComputeShader.from({
81
+ label: "Mesh SDF Key",
82
+ resources,
83
+ body,
84
+ });
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @type {WebGPUStruct}
3
+ */
4
+ export const MESH_SDF_RESOLVE_SETTINGS: WebGPUStruct;
5
+ /**
6
+ * Bake step 5, resolve, first pass, find: a thread a brick taken, over the frame's budget. A PENDING
7
+ * brick finds a slot listed under its content key (`chunk_mesh_sdf_contents`), which compare holds its
8
+ * bytes against, and keeps it in its record. One that finds none claims its key in the frame's
9
+ * claims, a table of the frame's bricks by key: the first to claim a key is its representative, which
10
+ * fresh gives a slot, and every brick names its key's representative in its record, whose bytes
11
+ * compare holds its own against.
12
+ *
13
+ * The keys are key's, read after its dispatch. No list shares this dispatch, so every find meets the
14
+ * table as the last frame left it.
15
+ *
16
+ * @type {ComputeShader}
17
+ */
18
+ export const shader_mesh_sdf_resolve_find: ComputeShader;
19
+ /**
20
+ * Bake step 5, resolve, second pass, compare: a thread a texel of each brick taken, eight workgroups a
21
+ * brick, dispatched by take. A PENDING brick that found a slot holds each of its staged bytes against
22
+ * the byte the slot holds there, and one that names a representative other than itself against the
23
+ * representative's staged byte, and the texels that differ are counted in the brick's record. A key
24
+ * finds the bricks its bytes may be those of; this pass says whether they are.
25
+ *
26
+ * A subgroup's lanes are of one brick, a workgroup's 64 texels being, so the brick's words are loaded
27
+ * and its count added once a subgroup (`chunk_subgroup_atomic_load`, `chunk_subgroup_atomic_add`).
28
+ *
29
+ * @type {ComputeShader}
30
+ */
31
+ export const shader_mesh_sdf_resolve_compare: ComputeShader;
32
+ /**
33
+ * Bake step 5, resolve, third pass, fresh: a thread a brick taken. A representative pops a slot and
34
+ * lists it under its key, and its record says the slot is fresh, which store fills. A brick whose
35
+ * bytes differ from those it was compared with pops a fresh slot of its own, listed nowhere, so no
36
+ * brick after shares it: its key is another bytes' too, and the log counts it collided. Take held the
37
+ * frame's bricks to the free slots, and a brick pops one slot at most, so no pop here is refused.
38
+ *
39
+ * @type {ComputeShader}
40
+ */
41
+ export const shader_mesh_sdf_resolve_fresh: ComputeShader;
42
+ /**
43
+ * Bake step 5, resolve, last pass, hold: a thread a brick taken. A PENDING brick takes its slot, the
44
+ * one it found or popped, or its representative's when it has none, holds it one entry more, and its
45
+ * entry holds it. Logs the bricks that took a slot already holding their bytes, or their
46
+ * representative's.
47
+ *
48
+ * @type {ComputeShader}
49
+ */
50
+ export const shader_mesh_sdf_resolve_hold: ComputeShader;
51
+ import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
52
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
53
+ //# sourceMappingURL=shader_mesh_sdf_resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_sdf_resolve.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js"],"names":[],"mappings":"AAqBA;;GAEG;AACH,wCAFU,YAAY,CAeO;AAmG7B;;;;;;;;;;;;GAYG;AACH,2CAFU,aAAa,CAsDmD;AAE1E;;;;;;;;;;;GAWG;AACH,8CAFU,aAAa,CAuDpB;AAEH;;;;;;;;GAQG;AACH,4CAFU,aAAa,CA6BA;AAEvB;;;;;;;GAOG;AACH,2CAFU,aAAa,CA4BhB;6BA5UsB,sCAAsC;8BAJrC,kCAAkC"}