@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
@@ -3,6 +3,7 @@ import { graph_build_hzb } from "../../hiz/graph_build_hzb.js";
3
3
  import { HierarchicalZBuffer } from "../../hiz/HierarchicalZBuffer.js";
4
4
  import { ShadeDrawSide } from "../../material/ShadeDrawSide.js";
5
5
  import { graph_import_buffer } from "../../shader/graph/graph_import_buffer.js";
6
+ import { graph_create_buffer } from "../../shader/graph/graph_create_buffer.js";
6
7
  import { graph_import_texture } from "../../shader/graph/graph_import_texture.js";
7
8
  import { graph_record_stat } from "../../util/graph_record_stat.js";
8
9
  import { enquire_mesh_frustum_cull_pipelines, graph_mesh_frustum_cull } from "../compute/graph_mesh_frustum_cull.js";
@@ -12,6 +13,7 @@ import {
12
13
  graph_meshes_classify_buckets
13
14
  } from "../expand/bucket/mesh/graph_meshes_classify_buckets.js";
14
15
  import { RasterizationCollectionType } from "../expand/RasterizationCollectionType.js";
16
+ import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
15
17
  import { graph_rasterize_meshes_alpha_tested } from "../native/graph_rasterize_meshes_alpha_tested.js";
16
18
  import { enquire_rasterize_partial_opaque_pipelines, graph_rasterize_partial_opaque } from "./graph_rasterize_partial_opaque.js";
17
19
  import {
@@ -51,8 +53,10 @@ export function enquire_rasterize_scene_pipelines(enquiry, opaque_pass, cull_pol
51
53
  * @param {FrameGraph} options.graph
52
54
  * @param {RasterizationJob} options.job
53
55
  * @param {GPUCollectionLimits} options.limits
54
- * @returns {{buckets: number, depth: number, color_targets: number[]}} the render buckets buffer,
55
- * and the depth and colour targets as this pipeline left them
56
+ * @returns {{buckets: number, depth: number, color_targets: number[], visible_meshlets: number}} the render
57
+ * buckets buffer, the depth and colour targets as this pipeline left them, and — when the job's passes write
58
+ * visible-meshlet slots, as the visibility raster's do — the frame's visible-meshlet table, which resolves
59
+ * them (-1 otherwise)
56
60
  */
57
61
  export function graph_rasterize_scene({
58
62
  graph,
@@ -101,6 +105,28 @@ export function graph_rasterize_scene({
101
105
  raster_color_targets[i] = graph_import_texture(graph, texture, `out_color/${i}`);
102
106
  }
103
107
 
108
+ /*
109
+ Every draw of a pass that writes visible-meshlet slots appends its meshlets to one table for the frame
110
+ and draws them from there, so the slot a pixel holds names its meshlet for every later reader. Sized as
111
+ the collections are, by what the frames before asked for, and never smaller than a meshlet collection:
112
+ any one list drawn into it can be that long. The table's own stat is the limits' last column, whose
113
+ growth is set back whenever an earlier column grows, while the collection's tracks the lists'.
114
+ */
115
+ assert.equal(job.alpha_tested_pass === undefined || job.alpha_tested_pass.visible_meshlet_slots === job.opaque_pass.visible_meshlet_slots, true, 'both passes of a job write visible-meshlet slots, or neither does');
116
+
117
+ let gr_visible_meshlets = -1;
118
+
119
+ if (job.opaque_pass.visible_meshlet_slots) {
120
+ gr_visible_meshlets = graph_create_buffer(graph, "visible meshlets", BufferResourceDescriptor.from(
121
+ Math.max(
122
+ limits.compute_buffer_size(RasterizationCollectionType.VisibleMeshlets),
123
+ limits.compute_buffer_size(RasterizationCollectionType.Meshlets),
124
+ ),
125
+ GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
126
+ 0, 16 // clear count
127
+ ));
128
+ }
129
+
104
130
  const gr_culled_meshes = graph_mesh_frustum_cull({
105
131
  graph,
106
132
  camera: gr_camera_current,
@@ -124,6 +150,7 @@ export function graph_rasterize_scene({
124
150
  meshlets_maybe: gr_meshlet_maybe,
125
151
  depth: gr_depth_opaque_partial,
126
152
  color_targets: gr_color_opaque_partial,
153
+ visible_meshlets: gr_visible_meshlets_partial,
127
154
  } = graph_rasterize_partial_opaque({
128
155
  graph,
129
156
  buckets: gr_render_buckets,
@@ -137,11 +164,13 @@ export function graph_rasterize_scene({
137
164
  viewport,
138
165
  active_buckets,
139
166
  cull_policy: job.cull_policy,
167
+ visible_meshlets: gr_visible_meshlets,
140
168
  });
141
169
 
142
170
 
143
171
  gr_texture_depth = gr_depth_opaque_partial;
144
172
  raster_color_targets = gr_color_opaque_partial;
173
+ gr_visible_meshlets = gr_visible_meshlets_partial;
145
174
 
146
175
  // build HZB of "likely visible" meshlets
147
176
  gr_texture_hzb = graph_build_hzb({
@@ -155,6 +184,7 @@ export function graph_rasterize_scene({
155
184
  const {
156
185
  depth: gr_depth_opaque_full,
157
186
  color_targets: gr_color_opaque_full,
187
+ visible_meshlets: gr_visible_meshlets_full,
158
188
  } = graph_rasterize_remaining_opaque({
159
189
  graph,
160
190
  limits,
@@ -169,10 +199,12 @@ export function graph_rasterize_scene({
169
199
  render_pass_descriptor: job.opaque_pass,
170
200
  viewport,
171
201
  cull_policy: job.cull_policy,
202
+ visible_meshlets: gr_visible_meshlets,
172
203
  });
173
204
 
174
205
  gr_texture_depth = gr_depth_opaque_full;
175
206
  raster_color_targets = gr_color_opaque_full;
207
+ gr_visible_meshlets = gr_visible_meshlets_full;
176
208
 
177
209
  // HZB of full opaque
178
210
  gr_texture_hzb = graph_build_hzb({
@@ -209,10 +241,12 @@ export function graph_rasterize_scene({
209
241
  raster_color_targets,
210
242
  depth: gr_texture_depth,
211
243
  hzb: gr_texture_hzb,
244
+ visible_meshlets: gr_visible_meshlets,
212
245
  });
213
246
 
214
247
  gr_texture_depth = alpha_tested_front.depth;
215
248
  raster_color_targets = alpha_tested_front.color_targets;
249
+ gr_visible_meshlets = alpha_tested_front.visible_meshlets;
216
250
 
217
251
  const alpha_tested_double = graph_rasterize_meshes_alpha_tested({
218
252
  graph,
@@ -228,10 +262,12 @@ export function graph_rasterize_scene({
228
262
  raster_color_targets,
229
263
  depth: gr_texture_depth,
230
264
  hzb: gr_texture_hzb,
265
+ visible_meshlets: gr_visible_meshlets,
231
266
  });
232
267
 
233
268
  gr_texture_depth = alpha_tested_double.depth;
234
269
  raster_color_targets = alpha_tested_double.color_targets;
270
+ gr_visible_meshlets = alpha_tested_double.visible_meshlets;
235
271
 
236
272
  if (alpha_tested_front.executed || alpha_tested_double.executed) {
237
273
 
@@ -246,6 +282,10 @@ export function graph_rasterize_scene({
246
282
  }
247
283
  }
248
284
 
285
+ if (gr_visible_meshlets !== -1) {
286
+ graph_record_stat(graph, limits.stats, RasterizationCollectionType.VisibleMeshlets, gr_visible_meshlets);
287
+ }
288
+
249
289
  graph.pop_scope();
250
290
 
251
291
  /*
@@ -261,5 +301,6 @@ export function graph_rasterize_scene({
261
301
  buckets: gr_render_buckets,
262
302
  depth: gr_texture_depth,
263
303
  color_targets: raster_color_targets,
304
+ visible_meshlets: gr_visible_meshlets,
264
305
  };
265
306
  }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The visibility buffer's format: one `u32` a pixel, `slot << VISIBILITY_TRIANGLE_BITS | triangle`. `slot` is
3
+ * the pixel's meshlet's place in the frame's visible-meshlet table, which says the meshlet and the mesh row
4
+ * it was drawn for (`chunk_visibility_decode`); `triangle` is the triangle within that meshlet.
5
+ *
6
+ * @type {GPUTextureFormat}
7
+ */
8
+ export const VISIBILITY_FORMAT: GPUTextureFormat;
9
+ /**
10
+ * Bits of a visibility word that hold the triangle within its meshlet, below the slot.
11
+ *
12
+ * @type {number}
13
+ */
14
+ export const VISIBILITY_TRIANGLE_BITS: number;
15
+ /**
16
+ * How many slots the visible-meshlet table can hold: every value the bits above the triangle reach, less
17
+ * the last, which {@link VISIBILITY_NONE} takes.
18
+ *
19
+ * @type {number}
20
+ */
21
+ export const VISIBLE_MESHLET_SLOT_LIMIT: number;
22
+ /**
23
+ * What a pixel no surface covers holds, and what the visibility buffer is cleared to: the first word of the
24
+ * slot past every slot the table can hold. A 32-bit float holds it exactly, as a clear value has to be —
25
+ * `RenderPassColorAttachmentDescriptor` keeps one in a `Float32Array`, where every bit set would round up
26
+ * to 2^32.
27
+ *
28
+ * @type {number}
29
+ */
30
+ export const VISIBILITY_NONE: number;
31
+ /**
32
+ * Where the table's elements start, counted in meshlet definitions from the start of its buffer. The table
33
+ * is a meshlet collection, a count before the elements; a pass that binds the whole buffer as a bare array
34
+ * of definitions — as the alpha-tested raster binds its lists — finds slot `s` at `s` plus this.
35
+ *
36
+ * @type {number}
37
+ */
38
+ export const VISIBLE_MESHLETS_ARRAY_OFFSET: number;
39
+ //# sourceMappingURL=VISIBILITY_BUFFER.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VISIBILITY_BUFFER.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/VISIBILITY_BUFFER.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,iDAA2C;AAE3C;;;;GAIG;AACH,uCAFU,MAAM,CAE0B;AAE1C;;;;;GAKG;AACH,yCAFU,MAAM,CAEmE;AAEnF;;;;;;;GAOG;AACH,8BAFU,MAAM,CAE0E;AAE1F;;;;;;GAMG;AACH,4CAFU,MAAM,CAE+G"}
@@ -0,0 +1,45 @@
1
+ import { MESHLET_DEFINITION_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_DEFINITION_STRUCT.js";
2
+ import { MESHLET_COLLECTION_STRUCT } from "../MESHLET_COLLECTION_STRUCT.js";
3
+
4
+ /**
5
+ * The visibility buffer's format: one `u32` a pixel, `slot << VISIBILITY_TRIANGLE_BITS | triangle`. `slot` is
6
+ * the pixel's meshlet's place in the frame's visible-meshlet table, which says the meshlet and the mesh row
7
+ * it was drawn for (`chunk_visibility_decode`); `triangle` is the triangle within that meshlet.
8
+ *
9
+ * @type {GPUTextureFormat}
10
+ */
11
+ export const VISIBILITY_FORMAT = 'r32uint';
12
+
13
+ /**
14
+ * Bits of a visibility word that hold the triangle within its meshlet, below the slot.
15
+ *
16
+ * @type {number}
17
+ */
18
+ export const VISIBILITY_TRIANGLE_BITS = 8;
19
+
20
+ /**
21
+ * How many slots the visible-meshlet table can hold: every value the bits above the triangle reach, less
22
+ * the last, which {@link VISIBILITY_NONE} takes.
23
+ *
24
+ * @type {number}
25
+ */
26
+ export const VISIBLE_MESHLET_SLOT_LIMIT = 2 ** (32 - VISIBILITY_TRIANGLE_BITS) - 1;
27
+
28
+ /**
29
+ * What a pixel no surface covers holds, and what the visibility buffer is cleared to: the first word of the
30
+ * slot past every slot the table can hold. A 32-bit float holds it exactly, as a clear value has to be —
31
+ * `RenderPassColorAttachmentDescriptor` keeps one in a `Float32Array`, where every bit set would round up
32
+ * to 2^32.
33
+ *
34
+ * @type {number}
35
+ */
36
+ export const VISIBILITY_NONE = VISIBLE_MESHLET_SLOT_LIMIT * 2 ** VISIBILITY_TRIANGLE_BITS;
37
+
38
+ /**
39
+ * Where the table's elements start, counted in meshlet definitions from the start of its buffer. The table
40
+ * is a meshlet collection, a count before the elements; a pass that binds the whole buffer as a bare array
41
+ * of definitions — as the alpha-tested raster binds its lists — finds slot `s` at `s` plus this.
42
+ *
43
+ * @type {number}
44
+ */
45
+ export const VISIBLE_MESHLETS_ARRAY_OFFSET = MESHLET_COLLECTION_STRUCT.get('elements').offset / MESHLET_DEFINITION_STRUCT.size;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The frame's visible-meshlet table: every meshlet the view's raster drew into the visibility buffer, at
3
+ * the slot its pixels name. A meshlet collection, read-only to the passes that resolve pixels through it.
4
+ *
5
+ * @type {ShaderResourceDescriptor}
6
+ */
7
+ export const VISIBLE_MESHLETS_RESOURCE: ShaderResourceDescriptor;
8
+ /**
9
+ * What a visibility word says of its pixel ({@link VISIBILITY_FORMAT}): the scene row of the mesh, the
10
+ * meshlet (a global meshlet index) and the triangle within it, through the frame's visible-meshlet table,
11
+ * bound as `visible_meshlets`.
12
+ *
13
+ * ```wgsl
14
+ * const VISIBILITY_NONE: u32
15
+ * struct VisibilityTexel { mesh: u32, meshlet: u32, triangle: u32 }
16
+ * fn visibility_decode(encoded: u32) -> VisibilityTexel
17
+ * ```
18
+ *
19
+ * Only for a word that is not `VISIBILITY_NONE`, which no surface covers.
20
+ *
21
+ * @type {CodeChunk}
22
+ */
23
+ export const chunk_visibility_decode: CodeChunk;
24
+ import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
25
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
26
+ //# sourceMappingURL=chunk_visibility_decode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_visibility_decode.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/chunk_visibility_decode.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wCAFU,wBAAwB,CAE6F;AAE/H;;;;;;;;;;;;;;GAcG;AACH,sCAFU,SAAS,CAmBjB;yCA5CuC,mDAAmD;0BADlE,oCAAoC"}
@@ -0,0 +1,48 @@
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+ import { ShaderResourceDescriptor } from "../../shader/resource/ShaderResourceDescriptor.js";
3
+ import { MESHLET_COLLECTION_STRUCT } from "../MESHLET_COLLECTION_STRUCT.js";
4
+ import { VISIBILITY_NONE, VISIBILITY_TRIANGLE_BITS } from "./VISIBILITY_BUFFER.js";
5
+
6
+ /**
7
+ * The frame's visible-meshlet table: every meshlet the view's raster drew into the visibility buffer, at
8
+ * the slot its pixels name. A meshlet collection, read-only to the passes that resolve pixels through it.
9
+ *
10
+ * @type {ShaderResourceDescriptor}
11
+ */
12
+ export const VISIBLE_MESHLETS_RESOURCE = ShaderResourceDescriptor.storageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT);
13
+
14
+ /**
15
+ * What a visibility word says of its pixel ({@link VISIBILITY_FORMAT}): the scene row of the mesh, the
16
+ * meshlet (a global meshlet index) and the triangle within it, through the frame's visible-meshlet table,
17
+ * bound as `visible_meshlets`.
18
+ *
19
+ * ```wgsl
20
+ * const VISIBILITY_NONE: u32
21
+ * struct VisibilityTexel { mesh: u32, meshlet: u32, triangle: u32 }
22
+ * fn visibility_decode(encoded: u32) -> VisibilityTexel
23
+ * ```
24
+ *
25
+ * Only for a word that is not `VISIBILITY_NONE`, which no surface covers.
26
+ *
27
+ * @type {CodeChunk}
28
+ */
29
+ export const chunk_visibility_decode = CodeChunk.from(
30
+ //language=WGSL
31
+ `
32
+ const VISIBILITY_NONE: u32 = ${VISIBILITY_NONE}u;
33
+
34
+ struct VisibilityTexel {
35
+ mesh: u32,
36
+ meshlet: u32,
37
+ triangle: u32,
38
+ }
39
+
40
+ fn visibility_decode(encoded: u32) -> VisibilityTexel {
41
+ let meshlet = visible_meshlets.elements[encoded >> ${VISIBILITY_TRIANGLE_BITS}u];
42
+
43
+ return VisibilityTexel(meshlet.mesh, meshlet.index, encoded & ${2 ** VISIBILITY_TRIANGLE_BITS - 1}u);
44
+ }
45
+ `
46
+ );
47
+
48
+ chunk_visibility_decode.requireResource(VISIBLE_MESHLETS_RESOURCE);
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Reserve the slots of one list in the visible-meshlet table and write the commands that use them: `draw`
3
+ * draws the list's meshlets from the table, `instanceCount` of them from `firstInstance`, its first slot;
4
+ * `copy` dispatches {@link shader_visible_meshlets_copy} over them, one invocation a meshlet.
5
+ *
6
+ * The table's count is every slot asked for, as a meshlet collection's count is: a list past the table's
7
+ * end draws only what fits, and the count tells the collection limits how far to grow it.
8
+ *
9
+ * One invocation.
10
+ *
11
+ * @type {ComputeShader}
12
+ */
13
+ export const shader_visible_meshlets_reserve: ComputeShader;
14
+ /**
15
+ * Copy a list's reserved meshlets into the visible-meshlet table, at the slots `draw` holds
16
+ * ({@link shader_visible_meshlets_reserve}). Dispatched indirectly by its `copy` command.
17
+ *
18
+ * @type {ComputeShader}
19
+ */
20
+ export const shader_visible_meshlets_copy: ComputeShader;
21
+ /**
22
+ * {@link shader_visible_meshlets_copy} for a list kept as a bare array whose count is held elsewhere — the
23
+ * alpha-tested raster's, sorted by material, whose collection the reserve counts.
24
+ *
25
+ * @type {ComputeShader}
26
+ */
27
+ export const shader_visible_meshlets_copy_array: ComputeShader;
28
+ /**
29
+ * Move per-material draw commands over a sorted list onto the list's copy in the visible-meshlet table:
30
+ * each command's range of the list becomes the same range of the slots `draw` holds, cut to the slots the
31
+ * copy filled. The draws bind the table's whole buffer as a bare array of definitions, which puts slot `s`
32
+ * at `s + ${VISIBLE_MESHLETS_ARRAY_OFFSET}` ({@link VISIBLE_MESHLETS_ARRAY_OFFSET}).
33
+ *
34
+ * One invocation a command.
35
+ *
36
+ * @type {ComputeShader}
37
+ */
38
+ export const shader_visible_meshlets_offset_commands: ComputeShader;
39
+ import { ComputeShader } from "../../shader/ComputeShader.js";
40
+ //# sourceMappingURL=shader_visible_meshlets_append.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_visible_meshlets_append.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/rasterize/visibility/shader_visible_meshlets_append.js"],"names":[],"mappings":"AA4BA;;;;;;;;;;;GAWG;AACH,8CAFU,aAAa,CA8BpB;AAmCH;;;;;GAKG;AACH,2CAFU,aAAa,CAMpB;AASH;;;;;GAKG;AACH,iDAFU,aAAa,CAMpB;AAQH;;;;;;;;;GASG;AACH,sDAFU,aAAa,CAuBpB;8BAnK2B,+BAA+B"}
@@ -0,0 +1,172 @@
1
+ import { GEOMETRY_MESHLET_TRIANGLE_LIMIT } from "../../geometry/meshlet/GEOMETRY_MESHLET_TRIANGLE_LIMIT.js";
2
+ import { MESHLET_DEFINITION_STRUCT } from "../../geometry/meshlet/encoding/MESHLET_DEFINITION_STRUCT.js";
3
+ import { chunk_folded_dispatch } from "../../gpu_primitive/indirect/chunk_folded_dispatch.js";
4
+ import { STRUCT_DISPATCH_COMPUTE_COMMAND } from "../../gpu_primitive/indirect/STRUCT_DISPATCH_COMPUTE_COMMAND.js";
5
+ import { STRUCT_UNINDEXED_DRAW_COMMAND } from "../../gpu_primitive/indirect/STRUCT_UNINDEXED_DRAW_COMMAND.js";
6
+ import { chunk_folded_workgroup_index } from "../../shader/chunk/grid/chunk_folded_workgroup_index.js";
7
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
8
+ import { COMPUTE_SHADER_DEFAULT_GROUP_SIZE } from "../../shader/COMPUTE_SHADER_DEFAULT_GROUP_SIZE.js";
9
+ import { ComputeShader } from "../../shader/ComputeShader.js";
10
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
11
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
12
+ import { MESHLET_COLLECTION_STRUCT } from "../MESHLET_COLLECTION_STRUCT.js";
13
+ import { VISIBLE_MESHLET_SLOT_LIMIT, VISIBLE_MESHLETS_ARRAY_OFFSET } from "./VISIBILITY_BUFFER.js";
14
+
15
+ /*
16
+ A draw into the visibility buffer takes its meshlets from the frame's visible-meshlet table, so that the
17
+ slot its pixels write names the meshlet for every later reader. Before each such draw its list is
18
+ appended to the table: one invocation reserves the slots, then the copy runs over the list.
19
+ */
20
+
21
+ const reserve_resources = new ShaderResourceSetDescriptor();
22
+
23
+ reserve_resources.createGroup()
24
+ .addStorageBuffer("input", MESHLET_COLLECTION_STRUCT)
25
+ .addStorageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT, true)
26
+ .addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND, true)
27
+ .addStorageBuffer("copy", STRUCT_DISPATCH_COMPUTE_COMMAND, true);
28
+
29
+ /**
30
+ * Reserve the slots of one list in the visible-meshlet table and write the commands that use them: `draw`
31
+ * draws the list's meshlets from the table, `instanceCount` of them from `firstInstance`, its first slot;
32
+ * `copy` dispatches {@link shader_visible_meshlets_copy} over them, one invocation a meshlet.
33
+ *
34
+ * The table's count is every slot asked for, as a meshlet collection's count is: a list past the table's
35
+ * end draws only what fits, and the count tells the collection limits how far to grow it.
36
+ *
37
+ * One invocation.
38
+ *
39
+ * @type {ComputeShader}
40
+ */
41
+ export const shader_visible_meshlets_reserve = ComputeShader.from({
42
+ label: "Visible meshlets / reserve",
43
+ resources: reserve_resources,
44
+ body: CodeChunk.from(
45
+ //language=WGSL
46
+ `
47
+ @compute @workgroup_size(1)
48
+ fn main() {
49
+ let count = min(input.count, arrayLength(&input.elements));
50
+
51
+ let base = visible_meshlets.count;
52
+ let capacity = min(arrayLength(&visible_meshlets.elements), ${VISIBLE_MESHLET_SLOT_LIMIT}u);
53
+ let stored = select(0u, min(count, capacity - base), base < capacity);
54
+
55
+ visible_meshlets.count = base + count;
56
+
57
+ draw.vertexCount = ${GEOMETRY_MESHLET_TRIANGLE_LIMIT * 3}u;
58
+ draw.instanceCount = stored;
59
+ draw.firstVertex = 0u;
60
+ draw.firstInstance = base;
61
+
62
+ let groups = folded_dispatch((stored + ${COMPUTE_SHADER_DEFAULT_GROUP_SIZE - 1}u) / ${COMPUTE_SHADER_DEFAULT_GROUP_SIZE}u);
63
+
64
+ copy.workgroupCountX = groups.x;
65
+ copy.workgroupCountY = groups.y;
66
+ copy.workgroupCountZ = groups.z;
67
+ }
68
+ `, [chunk_folded_dispatch])
69
+ });
70
+
71
+ /**
72
+ * The copy kernels' body: `source(i)` is the list's `i`-th meshlet.
73
+ *
74
+ * @param {string} source
75
+ * @returns {CodeChunk}
76
+ */
77
+ function copy_body(source) {
78
+ return CodeChunk.from(
79
+ //language=WGSL
80
+ `
81
+ @compute @workgroup_size(${COMPUTE_SHADER_DEFAULT_GROUP_SIZE})
82
+ fn main(
83
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
84
+ @builtin(local_invocation_index) local_index: u32,
85
+ ) {
86
+ let i = folded_workgroup_index(workgroup_id) * ${COMPUTE_SHADER_DEFAULT_GROUP_SIZE}u + local_index;
87
+
88
+ if (i >= draw.instanceCount) {
89
+ return;
90
+ }
91
+
92
+ visible_meshlets.elements[draw.firstInstance + i] = ${source};
93
+ }
94
+ `, [chunk_folded_workgroup_index]);
95
+ }
96
+
97
+ const copy_resources = new ShaderResourceSetDescriptor();
98
+
99
+ copy_resources.createGroup()
100
+ .addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND)
101
+ .addStorageBuffer("input", MESHLET_COLLECTION_STRUCT)
102
+ .addStorageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT, true);
103
+
104
+ /**
105
+ * Copy a list's reserved meshlets into the visible-meshlet table, at the slots `draw` holds
106
+ * ({@link shader_visible_meshlets_reserve}). Dispatched indirectly by its `copy` command.
107
+ *
108
+ * @type {ComputeShader}
109
+ */
110
+ export const shader_visible_meshlets_copy = ComputeShader.from({
111
+ label: "Visible meshlets / copy",
112
+ resources: copy_resources,
113
+ body: copy_body("input.elements[i]"),
114
+ });
115
+
116
+ const copy_array_resources = new ShaderResourceSetDescriptor();
117
+
118
+ copy_array_resources.createGroup()
119
+ .addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND)
120
+ .addStorageBuffer("input", WebGPUArray.from(MESHLET_DEFINITION_STRUCT))
121
+ .addStorageBuffer("visible_meshlets", MESHLET_COLLECTION_STRUCT, true);
122
+
123
+ /**
124
+ * {@link shader_visible_meshlets_copy} for a list kept as a bare array whose count is held elsewhere — the
125
+ * alpha-tested raster's, sorted by material, whose collection the reserve counts.
126
+ *
127
+ * @type {ComputeShader}
128
+ */
129
+ export const shader_visible_meshlets_copy_array = ComputeShader.from({
130
+ label: "Visible meshlets / copy",
131
+ resources: copy_array_resources,
132
+ body: copy_body("input[i]"),
133
+ });
134
+
135
+ const offset_resources = new ShaderResourceSetDescriptor();
136
+
137
+ offset_resources.createGroup()
138
+ .addStorageBuffer("draw", STRUCT_UNINDEXED_DRAW_COMMAND)
139
+ .addStorageBuffer("commands", WebGPUArray.from(STRUCT_UNINDEXED_DRAW_COMMAND), true);
140
+
141
+ /**
142
+ * Move per-material draw commands over a sorted list onto the list's copy in the visible-meshlet table:
143
+ * each command's range of the list becomes the same range of the slots `draw` holds, cut to the slots the
144
+ * copy filled. The draws bind the table's whole buffer as a bare array of definitions, which puts slot `s`
145
+ * at `s + ${VISIBLE_MESHLETS_ARRAY_OFFSET}` ({@link VISIBLE_MESHLETS_ARRAY_OFFSET}).
146
+ *
147
+ * One invocation a command.
148
+ *
149
+ * @type {ComputeShader}
150
+ */
151
+ export const shader_visible_meshlets_offset_commands = ComputeShader.from({
152
+ label: "Visible meshlets / offset draw commands",
153
+ resources: offset_resources,
154
+ body: CodeChunk.from(
155
+ //language=WGSL
156
+ `
157
+ @compute @workgroup_size(${COMPUTE_SHADER_DEFAULT_GROUP_SIZE})
158
+ fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
159
+ let k = global_id.x;
160
+
161
+ if (k >= arrayLength(&commands)) {
162
+ return;
163
+ }
164
+
165
+ let start = commands[k].firstInstance;
166
+ let end = min(start + commands[k].instanceCount, draw.instanceCount);
167
+
168
+ commands[k].instanceCount = select(0u, end - start, start < end);
169
+ commands[k].firstInstance = draw.firstInstance + start + ${VISIBLE_MESHLETS_ARRAY_OFFSET}u;
170
+ }
171
+ `)
172
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_restir_reconstruct_surface.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js"],"names":[],"mappings":"AAWA;;;;;;;;;;GAUG;AACH,+CAFU,SAAS,CAqDjB;0BAhEwB,oCAAoC"}
1
+ {"version":3,"file":"chunk_restir_reconstruct_surface.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/restir/di/chunk_restir_reconstruct_surface.js"],"names":[],"mappings":"AAcA;;;;;;;;;;GAUG;AACH,+CAFU,SAAS,CAoDjB;0BA/DwB,oCAAoC"}
@@ -4,6 +4,9 @@ import { chunk_project_position_from_depth } from "../../shader/chunk/camera/chu
4
4
  import { chunk_get_view_space_depth } from "../../shader/chunk/depth/chunk_get_view_space_depth.js";
5
5
  import { chunk_mat4_extract_position } from "../../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
6
6
  import { chunk_decode_g_buffer_normal } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
7
+ import {
8
+ chunk_decode_g_buffer_face_normal
9
+ } from "../../shader/chunk/geometry/normal/chunk_decode_g_buffer_face_normal.js";
7
10
  import { GEOMETRIC_SHADING_INFO_STRUCT } from "../../shader/chunk/material/GEOMETRIC_SHADING_INFO_STRUCT.js";
8
11
  import { MATERIAL_SHADING_INFO_STRUCT } from "../../shader/chunk/material/MATERIAL_SHADING_INFO_STRUCT.js";
9
12
  import { chunk_texel_coordinate_to_uv } from "../../shader/chunk/texture/chunk_texel_coordinate_to_uv.js";
@@ -47,11 +50,9 @@ fn restir_reconstruct_surface(i_coord: vec2<u32>, texture_size: vec2<u32>) -> Re
47
50
  let camera_position_ws = mat4_extract_position(camera.transform);
48
51
  let view_direction = normalize(camera_position_ws - position_ws);
49
52
 
50
- let g_buffer_sample_normal = textureLoad(gBufferNormal, i_coord, 0);
51
-
52
53
  surface.geometry = ${GEOMETRIC_SHADING_INFO_STRUCT.wgsl_ref}(
53
- decode_g_buffer_normal(g_buffer_sample_normal.xy),
54
- decode_g_buffer_normal(g_buffer_sample_normal.zw),
54
+ decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).x),
55
+ decode_g_buffer_face_normal(textureLoad(gBufferPBR, i_coord, 0)),
55
56
  position_ws,
56
57
  view_direction,
57
58
  );
@@ -69,6 +70,7 @@ fn restir_reconstruct_surface(i_coord: vec2<u32>, texture_size: vec2<u32>) -> Re
69
70
  chunk_project_position_from_depth,
70
71
  chunk_mat4_extract_position,
71
72
  chunk_decode_g_buffer_normal,
73
+ chunk_decode_g_buffer_face_normal,
72
74
  chunk_read_gBuffer_material,
73
75
  ]
74
76
  );
@@ -81,7 +81,7 @@ fn restir_spatial_reuse(
81
81
  if (abs(neighbour_view_depth - self_view_depth) > RESTIR_SPATIAL_DEPTH_TOLERANCE * self_view_depth) {
82
82
  continue;
83
83
  }
84
- let neighbour_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, neighbour_u, 0).xy);
84
+ let neighbour_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, neighbour_u, 0).x);
85
85
  if (dot(neighbour_normal, geometry.shading_normal) < RESTIR_SPATIAL_NORMAL_TOLERANCE) {
86
86
  continue;
87
87
  }
@@ -76,7 +76,7 @@ fn main(
76
76
  }
77
77
 
78
78
  let center_depth = get_view_space_depth(center_device_depth, camera);
79
- let center_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).xy);
79
+ let center_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, i_coord, 0).x);
80
80
  let center_luma = rgb_to_luminance(center_radiance);
81
81
 
82
82
  let step = i32(step_size);
@@ -107,7 +107,7 @@ fn main(
107
107
 
108
108
  let sample_radiance = textureLoad(tInput, p, 0).rgb;
109
109
  let sample_depth = get_view_space_depth(sample_device_depth, camera);
110
- let sample_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, p, 0).xy);
110
+ let sample_normal = decode_g_buffer_normal(textureLoad(gBufferNormal, p, 0).x);
111
111
  let sample_luma = rgb_to_luminance(sample_radiance);
112
112
 
113
113
  let w_normal = normal_edge_stopping_weight(center_normal, sample_normal, PHI_NORMAL);
@@ -105,7 +105,7 @@ export class GPUSceneContext {
105
105
  * (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
106
106
  * page after the root arrives because a cut asked for it. The renderer opens and closes each
107
107
  * frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
108
- * of it. With them, the source of its geometries' caches and cards ({@link VGeoSDFProxies}): a virtual
108
+ * of it. With them, the source of its geometries' caches and surface caches ({@link VGeoSDFProxies}): a virtual
109
109
  * geometry whose cache is asked for stands in through its proxy.
110
110
  *
111
111
  * @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
@@ -400,7 +400,7 @@ export class GPUSceneContext {
400
400
  * (REVIEW_LEDGER U1): `register` a container with {@link virtual_geometry_residency}, and every
401
401
  * page after the root arrives because a cut asked for it. The renderer opens and closes each
402
402
  * frame and schedules each reading, and {@link destroy} releases all of it; a host touches none
403
- * of it. With them, the source of its geometries' caches and cards ({@link VGeoSDFProxies}): a virtual
403
+ * of it. With them, the source of its geometries' caches and surface caches ({@link VGeoSDFProxies}): a virtual
404
404
  * geometry whose cache is asked for stands in through its proxy.
405
405
  *
406
406
  * @param {Object} [options] passed to {@link GPUVirtualGeometryPool} and
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Electro-optical transfer function (EOTF), the inverse of {@link chunk_sRGBTransferOETF}
3
+ *
4
+ * sRGB to sRGB-linear, the IEC 61966-2-1 curve an `-srgb` texture format decodes with.
5
+ * @see convert_channel_sRGB_to_linear the JS twin, which carries the same constants
6
+ */
7
+ export const chunk_sRGBTransferEOTF: CodeChunk;
8
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
9
+ //# sourceMappingURL=chunk_sRGBTransferEOTF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_sRGBTransferEOTF.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/color/sRGB/chunk_sRGBTransferEOTF.js"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,+CASG;0BAjBuB,gCAAgC"}
@@ -0,0 +1,18 @@
1
+ import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
+
3
+ /**
4
+ * Electro-optical transfer function (EOTF), the inverse of {@link chunk_sRGBTransferOETF}
5
+ *
6
+ * sRGB to sRGB-linear, the IEC 61966-2-1 curve an `-srgb` texture format decodes with.
7
+ * @see convert_channel_sRGB_to_linear the JS twin, which carries the same constants
8
+ */
9
+ export const chunk_sRGBTransferEOTF = CodeChunk.from(
10
+ //language=WGSL
11
+ `
12
+ fn sRGBTransferEOTF( value: vec3<f32> ) -> vec3<f32> {
13
+ let low = value * 0.0773993808;
14
+ let high = pow( value * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) );
15
+
16
+ return select( low, high, value >= vec3( 0.04045 ) );
17
+ }
18
+ `);