@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
@@ -25,18 +25,17 @@ import {
25
25
  BRICK_ATLAS_TEXTURE_RESOURCE,
26
26
  BRICK_LEVELS_RESOURCE,
27
27
  BRICK_MAP_TEXTURE_RESOURCE,
28
- BRICK_OBJECTS_RESOURCE,
29
28
  BRICK_OCCUPANCY_TEXTURE_RESOURCE,
30
29
  BRICK_SAMPLER_RESOURCE,
31
- chunk_brick_clipmap_object,
32
30
  chunk_brick_clipmap_trace
33
31
  } from "../brick/chunk_brick_clipmap_trace.js";
34
32
  import {
35
33
  chunk_probe_clipmap,
36
34
  chunk_probe_clipmap_guide,
37
35
  chunk_probe_clipmap_ray_layout,
38
- chunk_probe_clipmap_ray_noise,
36
+ chunk_probe_clipmap_ray_jitter,
39
37
  chunk_probe_clipmap_ray_origin,
38
+ chunk_probe_clipmap_ray_visit,
40
39
  chunk_probe_clipmap_ray_texel,
41
40
  PROBE_GUIDE_READ_RESOURCE,
42
41
  PROBE_ORIGINS_READ_RESOURCE,
@@ -85,8 +84,7 @@ resources.createGroup()
85
84
  .add(BRICK_MAP_TEXTURE_RESOURCE)
86
85
  .add(BRICK_OCCUPANCY_TEXTURE_RESOURCE)
87
86
  .add(BRICK_ATLAS_TEXTURE_RESOURCE)
88
- .add(BRICK_SAMPLER_RESOURCE)
89
- .add(BRICK_OBJECTS_RESOURCE);
87
+ .add(BRICK_SAMPLER_RESOURCE);
90
88
 
91
89
  /**
92
90
  * Trace (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.6): a thread a ray of the frame's updates, dispatched
@@ -98,9 +96,10 @@ resources.createGroup()
98
96
  * or a spread subset below R = n_r². On a guided one, the walk position whose rays the ray is among
99
97
  * in the probe's guide (`chunk_probe_clipmap_guide`), found by bisecting the first rays. A texel's rays
100
98
  * then follow one another, in the walk's order.
101
- * - **Direction**: the texel's octahedral square, jittered by white noise of the probe's slot, its update
102
- * count and the ray's place in the update (`probe_clipmap_ray_noise`, `PROBE_RAY_NOISE_JITTER`), on
103
- * uniform and guided updates alike. Nothing stratifies the jitter inside a texel.
99
+ * - **Direction**: the texel's octahedral square, jittered by a point of one of the texel's Sobol sequences
100
+ * (`probe_clipmap_ray_jitter`): the sequence of the ray's round among the texel's rays and of the kind of
101
+ * update, at the count of the probe's earlier updates of that kind (`probe_clipmap_ray_visit`). A texel's
102
+ * rays of a round and kind are stratified inside it over the updates of that kind it takes them on.
104
103
  * - **Origin**: a point of a small ball around the probe where relocation left it, `probe_origins`, one a
105
104
  * ray (`probe_clipmap_ray_origin`); t_min one voxel of the brick cascade there.
106
105
  * - **Direct light**: a hit off a front face takes E_dir = Σ colour·max(0, n·l)·visibility over the
@@ -114,8 +113,8 @@ resources.createGroup()
114
113
  * surface turned from a light traces no ray toward it, since the light gives it nothing.
115
114
  * - **Back face**: a hit whose field's gradient is along the ray, so it came from inside a solid.
116
115
  *
117
- * Writes the ray's `PROBE_RAY_STRUCT`, with the `meshes` row of the hit's surface and E_dir as its
118
- * light, which shade turns into the ray's radiance, and its probe's place in the list in its flags.
116
+ * Writes the ray's `PROBE_RAY_STRUCT`, with E_dir as its light, which shade turns into the ray's
117
+ * radiance, and its probe's place in the list in its flags.
119
118
  *
120
119
  * @type {ComputeShader}
121
120
  */
@@ -154,7 +153,7 @@ fn main(
154
153
  let k = probe_clipmap_ray_probe(ray);
155
154
 
156
155
  if (k >= probe_ray_sums.count) {
157
- probe_rays[ray].row = 0u;
156
+ probe_rays[ray].albedo = 0u;
158
157
  probe_rays[ray].flags = PROBE_RAY_NONE;
159
158
 
160
159
  return;
@@ -173,16 +172,23 @@ fn main(
173
172
  let updates = probe_state_updates(state.x);
174
173
 
175
174
  var texel: u32;
175
+ // the ray's place among its texel's rays in the update, as accumulation counts them
176
+ var round: u32;
176
177
 
177
178
  if (probe_clipmap_guided(state.x, settings.uniform_period, settings.rays_per_probe, texels)) {
178
179
  let base = k * probe_clipmap_guide_words(n);
180
+ let position = probe_trace_guided_position(base, i, texels);
179
181
 
180
- texel = probe_clipmap_guide_texel(probe_trace_guided_position(base, i, texels), updates, n);
182
+ texel = probe_clipmap_guide_texel(position, updates, n);
183
+ round = i - probe_guide[base + position];
181
184
  } else {
182
185
  texel = probe_clipmap_ray_texel(i, updates, rays, texels);
186
+ // every texel once, then again: below R = n_r² the update's rays are all its first
187
+ round = i / texels;
183
188
  }
184
189
 
185
- let jitter = probe_clipmap_ray_noise(slot, updates, i, PROBE_RAY_NOISE_JITTER);
190
+ let visit = probe_clipmap_ray_visit(state.x, round, rays, texels, settings.uniform_period, settings.rays_per_probe);
191
+ let jitter = probe_clipmap_ray_jitter(slot, texel, visit.x, visit.y);
186
192
  let direction = uv_octahedral_unit_decode((vec2<f32>(f32(texel % n), f32(texel / n)) + jitter) / f32(n));
187
193
  let packed = pack2x16unorm(uv_octahedral_unit_encode(direction));
188
194
 
@@ -238,7 +244,7 @@ fn main(
238
244
  probe_rays[ray].t = hit.t;
239
245
  probe_rays[ray].direction = packed;
240
246
  probe_rays[ray].normal = select(0u, pack2x16unorm(uv_octahedral_unit_encode(hit.normal)), is_hit);
241
- probe_rays[ray].row = brick_clipmap_object(hit);
247
+ probe_rays[ray].albedo = 0u;
242
248
  probe_rays[ray].flags = hit.kind | select(0u, PROBE_RAY_BACK_FACE, back_face) | (select(0u, hit.cascade, is_hit) << PROBE_RAY_CASCADE_SHIFT) | (k << PROBE_RAY_PROBE_SHIFT);
243
249
  probe_rays[ray].light = rgbe9995_encode(direct);
244
250
  }
@@ -246,14 +252,14 @@ fn main(
246
252
  chunk_probe_clipmap,
247
253
  chunk_probe_clipmap_ray_layout,
248
254
  chunk_probe_clipmap_ray_texel,
249
- chunk_probe_clipmap_ray_noise,
255
+ chunk_probe_clipmap_ray_jitter,
256
+ chunk_probe_clipmap_ray_visit,
250
257
  chunk_probe_clipmap_ray_origin,
251
258
  chunk_probe_clipmap_guide,
252
259
  chunk_folded_workgroup_index,
253
260
  chunk_uv_octahedral_unit_decode,
254
261
  chunk_uv_octahedral_unit_encode,
255
262
  chunk_brick_clipmap_trace,
256
- chunk_brick_clipmap_object,
257
263
  chunk_cone_sample_direction,
258
264
  chunk_pcg3d,
259
265
  chunk_hash_to_float01,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_want.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js"],"names":[],"mappings":"AAqBA;;GAEG;AACH,kCAFU,YAAY,CAUE;AAexB;;;;;;;;;;;;;GAaG;AACH,wCAFU,aAAa,CAqCpB;6BAtF0B,sCAAsC;8BAHrC,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_want.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js"],"names":[],"mappings":"AAqBA;;GAEG;AACH,kCAFU,YAAY,CAcE;AAexB;;;;;;;;;;;;;GAaG;AACH,wCAFU,aAAa,CAqCpB;6BA1F0B,sCAAsC;8BAHrC,kCAAkC"}
@@ -7,7 +7,7 @@ import { chunk_stbn_sample_vec2 } from "../../../shader/chunk/noise/chunk_stbn_s
7
7
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
8
8
  import { ComputeShader } from "../../../shader/ComputeShader.js";
9
9
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
10
- import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
10
+ import { f32, u32, vec3f } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
11
11
  import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
12
12
  import { STBN_VEC2_RESOURCE } from "../../../STATIC_GRAPHICS_ENGINE_ASSET_RESOURCES.js";
13
13
  import {
@@ -30,6 +30,10 @@ export const PROBE_WANT_SETTINGS = WebGPUStruct.from({
30
30
  frame: u32,
31
31
  /** what the wanted list holds at most: every key, or fewer where the wants cannot want more */
32
32
  wanted_capacity: u32,
33
+ /** where the windows were placed around, world metres: the selection boxes' centre, as the pick reads it */
34
+ anchor: vec3f,
35
+ /** a selection box's half side, in its cascade's cells, as the pick reads it */
36
+ select_half: f32,
33
37
  }, "ProbeWantSettings");
34
38
 
35
39
  const resources = new ShaderResourceSetDescriptor();
@@ -79,11 +83,11 @@ fn main(@builtin(global_invocation_id) id: vec3<u32>) {
79
83
 
80
84
  let uv = (vec2<f32>(pixel) + 0.5) / vec2<f32>(size);
81
85
  let position = project_position_from_depth(uv, depth, camera.view_projection_matrix_inverse);
82
- let normal = decode_g_buffer_normal(textureLoad(gBufferNormals, pixel, 0).xy);
86
+ let normal = decode_g_buffer_normal(textureLoad(gBufferNormals, pixel, 0).x);
83
87
  let view_direction = normalize(mat4_extract_position(camera.transform) - position);
84
88
  let bias_direction = mix(normal, view_direction, ${PROBE_RECEIVER_BIAS_VIEW});
85
89
 
86
- probe_clipmap_want(on_screen && !is_background(depth), position, bias_direction, settings.cascade_count, settings.resolution, settings.wanted_capacity);
90
+ probe_clipmap_want(on_screen && !is_background(depth), position, bias_direction, settings.cascade_count, settings.resolution, settings.anchor, settings.select_half, settings.wanted_capacity);
87
91
  }
88
92
  `, [
89
93
  chunk_probe_clipmap,
@@ -4,8 +4,8 @@
4
4
  * `PROBE_DISPATCH_RAYS` of that clipmap, before its frame's lifetime writes them over. The points go on this
5
5
  * clipmap's wanted list, through its levels.
6
6
  *
7
- * A front-face hit whose `row` the light passes left non-zero wants the cages its pick reads in this clipmap:
8
- * the bounce pass clears the row of a hit whose first set held probes, so a hit wants only where that set
7
+ * A front-face hit whose `albedo` the light passes left non-zero wants the cages its pick reads in this clipmap:
8
+ * the bounce pass clears the albedo of a hit whose first set held probes, so a hit wants only where that set
9
9
  * had none, and this clipmap's probes are its fallback (`shader_probe_clipmap_bounce`). So a probe a hit needs
10
10
  * is admitted where the first set has none, and kept while hits read it. Until its first update a NEW probe
11
11
  * weighs nothing and the hit takes no bounce: light is lost for a frame or two, never invented.
@@ -37,8 +37,8 @@ resources.createGroup()
37
37
  * `PROBE_DISPATCH_RAYS` of that clipmap, before its frame's lifetime writes them over. The points go on this
38
38
  * clipmap's wanted list, through its levels.
39
39
  *
40
- * A front-face hit whose `row` the light passes left non-zero wants the cages its pick reads in this clipmap:
41
- * the bounce pass clears the row of a hit whose first set held probes, so a hit wants only where that set
40
+ * A front-face hit whose `albedo` the light passes left non-zero wants the cages its pick reads in this clipmap:
41
+ * the bounce pass clears the albedo of a hit whose first set held probes, so a hit wants only where that set
42
42
  * had none, and this clipmap's probes are its fallback (`shader_probe_clipmap_bounce`). So a probe a hit needs
43
43
  * is admitted where the first set has none, and kept while hits read it. Until its first update a NEW probe
44
44
  * weighs nothing and the hit takes no bounce: light is lost for a frame or two, never invented.
@@ -75,10 +75,10 @@ fn main(
75
75
  let k = record.flags >> PROBE_RAY_PROBE_SHIFT;
76
76
  let slot = probe_trace.elements[k];
77
77
 
78
- // shade left a front-face hit's albedo in its row and zero in any other ray's, and the bounce pass
79
- // cleared the row of a hit its first set served: a ray that takes no bounce, a black hit's among them,
78
+ // shade left a front-face hit's albedo and zero in any other ray's, and the bounce pass cleared the
79
+ // albedo of a hit its first set served: a ray that takes no bounce, a black hit's among them,
80
80
  // or that had its probes, wants nothing
81
- wants = record.row != 0u;
81
+ wants = record.albedo != 0u;
82
82
 
83
83
  let direction = uv_octahedral_unit_decode(unpack2x16unorm(record.direction));
84
84
  let normal = uv_octahedral_unit_decode(unpack2x16unorm(record.normal));
@@ -88,7 +88,7 @@ fn main(
88
88
  bias_direction = mix(normal, -direction, ${PROBE_RECEIVER_BIAS_VIEW});
89
89
  }
90
90
 
91
- probe_clipmap_want(wants, position, bias_direction, settings.cascade_count, settings.resolution, settings.wanted_capacity);
91
+ probe_clipmap_want(wants, position, bias_direction, settings.cascade_count, settings.resolution, settings.anchor, settings.select_half, settings.wanted_capacity);
92
92
  }
93
93
  `, [
94
94
  chunk_probe_clipmap,
@@ -1 +1 @@
1
- {"version":3,"file":"shader_resolve_indirect_lighting.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js"],"names":[],"mappings":"AAkHA,2DAyBE;4BA9H0B,0BAA0B"}
1
+ {"version":3,"file":"shader_resolve_indirect_lighting.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/global_illumination/shader_resolve_indirect_lighting.js"],"names":[],"mappings":"AAoHA,2DAyBE;4BA/H0B,0BAA0B"}
@@ -7,6 +7,7 @@ import { chunk_project_position_from_depth } from "../shader/chunk/camera/chunk_
7
7
  import { chunk_mat4_extract_position } from "../shader/chunk/geometry/mat4/chunk_mat4_extract_position.js";
8
8
  import { chunk_decode_g_buffer_normal } from "../shader/chunk/geometry/normal/chunk_decode_g_buffer_normal.js";
9
9
  import { chunk_compute_indirect_specular } from "../shader/chunk/material/chunk_compute_indirect_specular.js";
10
+ import { chunk_decode_g_buffer_albedo } from "../shader/chunk/material/chunk_decode_g_buffer_albedo.js";
10
11
  import { chunk_decode_g_buffer_metalness } from "../shader/chunk/material/chunk_decode_g_buffer_metalness.js";
11
12
  import { chunk_decode_g_buffer_roughness } from "../shader/chunk/material/chunk_decode_g_buffer_roughness.js";
12
13
  import { chunk_metalness_to_specular_color } from "../shader/chunk/material/chunk_metalness_to_specular_color.js";
@@ -47,7 +48,7 @@ fn main(
47
48
 
48
49
  let albedo_ao_sample = textureLoad( tGBufferAlbedo, coord_i, 0 );
49
50
 
50
- let albedo = albedo_ao_sample.rgb;
51
+ let albedo = decode_g_buffer_albedo(albedo_ao_sample.rgb);
51
52
  let occlusion = albedo_ao_sample.a;
52
53
 
53
54
  let f_metalness = decode_g_buffer_metalness(texel_pbr);
@@ -68,8 +69,8 @@ fn main(
68
69
 
69
70
  let view_direction = normalize(view_position - position_ws);
70
71
 
71
- let shading_normal = decode_g_buffer_normal(textureLoad(tGBufferNormals, coord_i, 0).xy);
72
- let bent_normal = decode_g_buffer_normal(textureLoad(tBentNormals, coord_i, 0).xy);
72
+ let shading_normal = decode_g_buffer_normal(textureLoad(tGBufferNormals, coord_i, 0).x);
73
+ let bent_normal = decode_g_buffer_normal(textureLoad(tBentNormals, coord_i, 0).x);
73
74
 
74
75
  // tIndirectDiffuse contract: AO already baked in by the source pass.
75
76
  // Do not multiply the diffuse term by occlusion again here.
@@ -104,6 +105,7 @@ fn main(
104
105
  chunk_decode_g_buffer_normal,
105
106
  chunk_mat4_extract_position,
106
107
  chunk_project_position_from_depth,
108
+ chunk_decode_g_buffer_albedo,
107
109
  chunk_decode_g_buffer_metalness,
108
110
  chunk_decode_g_buffer_roughness,
109
111
  chunk_metalness_to_specular_color,
@@ -41,7 +41,7 @@ fn main(
41
41
 
42
42
  let g_buffer_sample_normal = textureLoad(gBufferNormal, i_coord, 0);
43
43
 
44
- let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.xy);
44
+ let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.x);
45
45
 
46
46
  if(texel_depth == ${DEPTH_BACKGROUND_VALUE}){
47
47
  // outside of the scene, sample sky
@@ -57,7 +57,7 @@ fn main(
57
57
 
58
58
  let g_buffer_sample_normal = textureLoad(gBufferNormals, i_coord, 0);
59
59
 
60
- let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.xy);
60
+ let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.x);
61
61
 
62
62
 
63
63
  let entryIndex = hash_map_find_entry(
@@ -84,7 +84,7 @@ fn main(@builtin(global_invocation_id) global_id : vec3<u32>){
84
84
 
85
85
  let g_buffer_sample_normal = textureLoad(gBufferNormals, i_coord, 0);
86
86
 
87
- let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.xy);
87
+ let shading_normal = decode_g_buffer_normal(g_buffer_sample_normal.x);
88
88
 
89
89
  let view_position = mat4_extract_position(camera.transform);
90
90
  let view_direction = normalize(view_position - position_ws);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The step of a hash table's probe sequence: `(5 index + 1) mod 2^K`, which visits every record of a
3
+ * table of 2^K records once before it repeats. The WGSL twin of
4
+ * `core/collection/map/generate_next_linear_congruential_index.js`.
5
+ *
6
+ * ```wgsl
7
+ * fn generate_next_linear_congruential_index(index: u32, mask: u32) -> u32 // mask: 2^K - 1
8
+ * ```
9
+ *
10
+ * @type {CodeChunk}
11
+ */
12
+ export const chunk_generate_next_linear_congruential_index: CodeChunk;
13
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
14
+ //# sourceMappingURL=chunk_generate_next_linear_congruential_index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_generate_next_linear_congruential_index.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,4DAFU,SAAS,CAUhB;0BArBuB,oCAAoC"}
@@ -0,0 +1,22 @@
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+
3
+ /**
4
+ * The step of a hash table's probe sequence: `(5 index + 1) mod 2^K`, which visits every record of a
5
+ * table of 2^K records once before it repeats. The WGSL twin of
6
+ * `core/collection/map/generate_next_linear_congruential_index.js`.
7
+ *
8
+ * ```wgsl
9
+ * fn generate_next_linear_congruential_index(index: u32, mask: u32) -> u32 // mask: 2^K - 1
10
+ * ```
11
+ *
12
+ * @type {CodeChunk}
13
+ */
14
+ export const chunk_generate_next_linear_congruential_index = CodeChunk.from(
15
+ //language=WGSL
16
+ `
17
+ fn generate_next_linear_congruential_index(index: u32, mask: u32) -> u32 {
18
+ let index5 = index * 5u;
19
+
20
+ return (index5 + 1u) & mask;
21
+ }
22
+ `);
@@ -0,0 +1,37 @@
1
+ /**
2
+ * The encoded key of a record removed from a table the device keeps ({@link chunk_hash_table_atomic}):
3
+ * a probe passes over it as over another key's record, and an insert may take its place. No key
4
+ * encodes to it, keys staying below `0xFFFFFFFE`.
5
+ * @type {number}
6
+ */
7
+ export const HASH_TABLE_REMOVED: number;
8
+ /**
9
+ * The table `cpu_build_hash_table` lays out (`[element_count, table_size]`, then `table_size` records
10
+ * of `(key + 1, value)`, an empty record 0) kept on the device: inserted into and removed from by
11
+ * atomics, on `hash_table_get`'s probe sequence and limit. A key may hold several records, which find
12
+ * visits in turn; the caller tells them apart by what their values name. `element_count` counts the
13
+ * records held.
14
+ *
15
+ * ```wgsl
16
+ * fn hash_table_atomic_start(table, offset: u32, key: u32) -> vec2<u32> // a cursor at the key's first record
17
+ * fn hash_table_atomic_find(table, offset: u32, key: u32, cursor: ptr<function, vec2<u32>>) -> u32 // the key's next record, or HASH_TABLE_MISS
18
+ * fn hash_table_atomic_value(table, record: u32) -> u32
19
+ * fn hash_table_atomic_insert(table, offset: u32, key: u32, value: u32) -> bool // false: no record free within the probe limit
20
+ * fn hash_table_atomic_remove(table, offset: u32, record: u32)
21
+ * ```
22
+ *
23
+ * `table` is a `ptr<storage, array<atomic<u32>>, read_write>`, and a record is named by the word it
24
+ * starts at. Insert claims the first empty or removed record of the key's sequence by
25
+ * compare-exchange on its key and stores the value after it, so a find racing that insert in one
26
+ * dispatch may read the value before it lands: a caller whose inserts share a dispatch with its finds
27
+ * checks what a value names before trusting it. Inserts and removes of different records may share a
28
+ * dispatch. A find ends at the sequence's first empty record or at the probe limit.
29
+ *
30
+ * A table holds at least `HASH_TABLE_PROBE_LIMIT` records, a power of two, so that the probes of a
31
+ * key's sequence meet no record twice.
32
+ *
33
+ * @type {CodeChunk}
34
+ */
35
+ export const chunk_hash_table_atomic: CodeChunk;
36
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
37
+ //# sourceMappingURL=chunk_hash_table_atomic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_hash_table_atomic.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,iCAFU,MAAM,CAE6B;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,sCAFU,SAAS,CAmFZ;0BAxHmB,oCAAoC"}
@@ -0,0 +1,122 @@
1
+ import { chunk_hash_lowbias32 } from "../../shader/chunk/random/chunk_hash_lowbias32.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+ import { chunk_generate_next_linear_congruential_index } from "./chunk_generate_next_linear_congruential_index.js";
4
+ import { HASH_TABLE_MISS, HASH_TABLE_PROBE_LIMIT } from "./cpu_build_hash_table.js";
5
+
6
+ /**
7
+ * The encoded key of a record removed from a table the device keeps ({@link chunk_hash_table_atomic}):
8
+ * a probe passes over it as over another key's record, and an insert may take its place. No key
9
+ * encodes to it, keys staying below `0xFFFFFFFE`.
10
+ * @type {number}
11
+ */
12
+ export const HASH_TABLE_REMOVED = 0xFFFFFFFF;
13
+
14
+ /**
15
+ * The table `cpu_build_hash_table` lays out (`[element_count, table_size]`, then `table_size` records
16
+ * of `(key + 1, value)`, an empty record 0) kept on the device: inserted into and removed from by
17
+ * atomics, on `hash_table_get`'s probe sequence and limit. A key may hold several records, which find
18
+ * visits in turn; the caller tells them apart by what their values name. `element_count` counts the
19
+ * records held.
20
+ *
21
+ * ```wgsl
22
+ * fn hash_table_atomic_start(table, offset: u32, key: u32) -> vec2<u32> // a cursor at the key's first record
23
+ * fn hash_table_atomic_find(table, offset: u32, key: u32, cursor: ptr<function, vec2<u32>>) -> u32 // the key's next record, or HASH_TABLE_MISS
24
+ * fn hash_table_atomic_value(table, record: u32) -> u32
25
+ * fn hash_table_atomic_insert(table, offset: u32, key: u32, value: u32) -> bool // false: no record free within the probe limit
26
+ * fn hash_table_atomic_remove(table, offset: u32, record: u32)
27
+ * ```
28
+ *
29
+ * `table` is a `ptr<storage, array<atomic<u32>>, read_write>`, and a record is named by the word it
30
+ * starts at. Insert claims the first empty or removed record of the key's sequence by
31
+ * compare-exchange on its key and stores the value after it, so a find racing that insert in one
32
+ * dispatch may read the value before it lands: a caller whose inserts share a dispatch with its finds
33
+ * checks what a value names before trusting it. Inserts and removes of different records may share a
34
+ * dispatch. A find ends at the sequence's first empty record or at the probe limit.
35
+ *
36
+ * A table holds at least `HASH_TABLE_PROBE_LIMIT` records, a power of two, so that the probes of a
37
+ * key's sequence meet no record twice.
38
+ *
39
+ * @type {CodeChunk}
40
+ */
41
+ export const chunk_hash_table_atomic = CodeChunk.from(
42
+ //language=WGSL
43
+ `
44
+ const HASH_TABLE_MISS = ${HASH_TABLE_MISS}u;
45
+ const HASH_TABLE_REMOVED = ${HASH_TABLE_REMOVED}u;
46
+ const HASH_TABLE_PROBE_LIMIT = ${HASH_TABLE_PROBE_LIMIT}u;
47
+
48
+ fn hash_table_atomic_start(table: ptr<storage, array<atomic<u32>>, read_write>, offset: u32, key: u32) -> vec2<u32> {
49
+ let mask = atomicLoad(&(*table)[offset + 1u]) - 1u;
50
+
51
+ // the record index, then the probes taken
52
+ return vec2<u32>(hash_lowbias32(key) & mask, 0u);
53
+ }
54
+
55
+ fn hash_table_atomic_find(table: ptr<storage, array<atomic<u32>>, read_write>, offset: u32, key: u32, cursor: ptr<function, vec2<u32>>) -> u32 {
56
+ let mask = atomicLoad(&(*table)[offset + 1u]) - 1u;
57
+ let encoded = key + 1u;
58
+
59
+ while ((*cursor).y < HASH_TABLE_PROBE_LIMIT) {
60
+ let record = offset + 2u + 2u * (*cursor).x;
61
+ let stored = atomicLoad(&(*table)[record]);
62
+
63
+ *cursor = vec2<u32>(generate_next_linear_congruential_index((*cursor).x, mask), (*cursor).y + 1u);
64
+
65
+ if (stored == 0u) {
66
+ // the key's sequence ends at its first empty record
67
+ (*cursor).y = HASH_TABLE_PROBE_LIMIT;
68
+
69
+ return HASH_TABLE_MISS;
70
+ }
71
+
72
+ if (stored == encoded) {
73
+ return record;
74
+ }
75
+ }
76
+
77
+ return HASH_TABLE_MISS;
78
+ }
79
+
80
+ fn hash_table_atomic_value(table: ptr<storage, array<atomic<u32>>, read_write>, record: u32) -> u32 {
81
+ return atomicLoad(&(*table)[record + 1u]);
82
+ }
83
+
84
+ fn hash_table_atomic_insert(table: ptr<storage, array<atomic<u32>>, read_write>, offset: u32, key: u32, value: u32) -> bool {
85
+ let mask = atomicLoad(&(*table)[offset + 1u]) - 1u;
86
+
87
+ var index = hash_lowbias32(key) & mask;
88
+
89
+ for (var probe = 0u; probe < HASH_TABLE_PROBE_LIMIT; probe++) {
90
+ let record = offset + 2u + 2u * index;
91
+ let stored = atomicLoad(&(*table)[record]);
92
+
93
+ if (stored == 0u || stored == HASH_TABLE_REMOVED) {
94
+ let claim = atomicCompareExchangeWeak(&(*table)[record], stored, key + 1u);
95
+
96
+ if (claim.exchanged) {
97
+ atomicStore(&(*table)[record + 1u], value);
98
+ atomicAdd(&(*table)[offset], 1u);
99
+
100
+ return true;
101
+ }
102
+
103
+ if (claim.old_value == stored) {
104
+ // a weak exchange may fail on a record that still holds what it read: the same record again
105
+ continue;
106
+ }
107
+ }
108
+
109
+ index = generate_next_linear_congruential_index(index, mask);
110
+ }
111
+
112
+ return false;
113
+ }
114
+
115
+ fn hash_table_atomic_remove(table: ptr<storage, array<atomic<u32>>, read_write>, offset: u32, record: u32) {
116
+ atomicStore(&(*table)[record], HASH_TABLE_REMOVED);
117
+ atomicSub(&(*table)[offset], 1u);
118
+ }
119
+ `, [
120
+ chunk_generate_next_linear_congruential_index,
121
+ chunk_hash_lowbias32,
122
+ ]);
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_hash_table_get.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH,mCAFU,SAAS,CAkDlB;0BAjEyB,oCAAoC"}
1
+ {"version":3,"file":"chunk_hash_table_get.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,mCAFU,SAAS,CAkDlB;0BAvDyB,oCAAoC"}
@@ -1,16 +1,6 @@
1
1
  import { chunk_hash_lowbias32 } from "../../shader/chunk/random/chunk_hash_lowbias32.js";
2
2
  import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
-
4
- const chunk_generate_next_linear_congruential_index = CodeChunk.from(
5
- //language=WGSL
6
- `
7
- fn generate_next_linear_congruential_index(index:u32, mask: u32) -> u32{
8
- let index5 = index * 5;
9
-
10
- return (index5 + 1) & mask;
11
- }
12
- `
13
- )
3
+ import { chunk_generate_next_linear_congruential_index } from "./chunk_generate_next_linear_congruential_index.js";
14
4
 
15
5
  /**
16
6
  * @see cpu_build_hash_table
@@ -40,6 +40,14 @@ export function cpu_hash_table_word_count(input_size: number): number;
40
40
  * @see cpu_build_hash_table to build at a given size
41
41
  */
42
42
  export function cpu_hash_table_create(table: Uint32Array, inputs: number[], input_size: number): boolean;
43
+ /**
44
+ * Maximum number of slots visited per operation.
45
+ * Must match the WGSL twins ({@link chunk_hash_table_get}, `chunk_hash_table_atomic`): a lookup probes
46
+ * at most this many slots, so an insert that cannot place a record within the limit must report it —
47
+ * otherwise it would create an entry that lookups can never reach.
48
+ * @type {number}
49
+ */
50
+ export const HASH_TABLE_PROBE_LIMIT: number;
43
51
  /**
44
52
  * Sentinel returned on lookup miss.
45
53
  * Must match the WGSL twin ({@link chunk_hash_table_get}).
@@ -1 +1 @@
1
- {"version":3,"file":"cpu_build_hash_table.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js"],"names":[],"mappings":"AAoEA;;;;;;GAMG;AACH,0CALW,WAAW,UACX,MAAM,OACN,MAAM,GACJ,MAAM,CAsClB;AAED;;;;;;;;;GASG;AACH,6CARW,WAAW,iBACX,MAAM,cACN,MAAM,UACN,MAAM,EAAE,cACR,MAAM,GACJ,OAAO,CA2BnB;AAWD;;;;;GAKG;AACH,sDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;;;;;GAcG;AACH,6CARW,WAAW,UACX,MAAM,EAAE,cACR,MAAM,GACJ,OAAO,CAkBnB;AAnLD;;;;GAIG;AACH,8BAFU,MAAM,CAE0B"}
1
+ {"version":3,"file":"cpu_build_hash_table.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js"],"names":[],"mappings":"AAsEA;;;;;;GAMG;AACH,0CALW,WAAW,UACX,MAAM,OACN,MAAM,GACJ,MAAM,CAsClB;AAED;;;;;;;;;GASG;AACH,6CARW,WAAW,iBACX,MAAM,cACN,MAAM,UACN,MAAM,EAAE,cACR,MAAM,GACJ,OAAO,CA2BnB;AAWD;;;;;GAKG;AACH,sDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;;;;;;;;;;GAcG;AACH,6CARW,WAAW,UACX,MAAM,EAAE,cACR,MAAM,GACJ,OAAO,CAkBnB;AA9LD;;;;;;GAMG;AACH,qCAFU,MAAM,CAEyB;AAIzC;;;;GAIG;AACH,8BAFU,MAAM,CAE0B"}
@@ -8,12 +8,14 @@ import { isPowerOfTwo } from "../../../../core/math/isPowerOfTwo.js";
8
8
 
9
9
  /**
10
10
  * Maximum number of slots visited per operation.
11
- * Must match the WGSL twin ({@link chunk_hash_table_get}): a lookup probes at most this many slots,
12
- * so an insert that cannot place a record within the limit must report it — otherwise it would
13
- * create an entry that lookups can never reach.
11
+ * Must match the WGSL twins ({@link chunk_hash_table_get}, `chunk_hash_table_atomic`): a lookup probes
12
+ * at most this many slots, so an insert that cannot place a record within the limit must report it —
13
+ * otherwise it would create an entry that lookups can never reach.
14
14
  * @type {number}
15
15
  */
16
- const PROBE_LIMIT = 32;
16
+ export const HASH_TABLE_PROBE_LIMIT = 32;
17
+
18
+ const PROBE_LIMIT = HASH_TABLE_PROBE_LIMIT;
17
19
 
18
20
  /**
19
21
  * Sentinel returned on lookup miss.
@@ -13,7 +13,7 @@ export class TinyGltf {
13
13
  * @readonly
14
14
  * @type {TextureFormat}
15
15
  */
16
- static readonly "__#306@#UNCOMPRESSED_TARGET": TextureFormat;
16
+ static readonly "__#308@#UNCOMPRESSED_TARGET": TextureFormat;
17
17
  /**
18
18
  * @param {AssetManager} assetManager
19
19
  * @param {AssetRequestScope} [scope]
@@ -36,18 +36,19 @@ export class GPUMaterialManager {
36
36
  * @param {Object} options
37
37
  * @param {FrameGraph} options.graph
38
38
  * @param {GPUViewContext} options.view
39
- * @param {number} options.texture_viz_mesh
40
- * @param {number} options.texture_viz_triangle
41
- * @param {number} options.texture_normal the normal target to write, `rgba16uint` at the view's
42
- * resolution. The caller owns it so that it outlives the frame: reprojection reads last frame's.
39
+ * @param {number} options.texture_visibility the visibility buffer
40
+ * @param {number} options.visible_meshlets the frame's visible-meshlet table, which resolves it
41
+ * @param {number} options.texture_pbr the PBR target to write, `G_BUFFER_COLOR_TARGETS[0].format` at
42
+ * the view's resolution. The caller owns it so that it outlives the frame: reprojection reads last
43
+ * frame's face normal from it.
43
44
  * @returns {{g_pbr: number, g_normal: number, g_albedo: number, g_emissive: number}} updated g-buffer
44
45
  */
45
- graph_viz_render({ graph, view, texture_viz_mesh, texture_viz_triangle, texture_normal, }: {
46
+ graph_viz_render({ graph, view, texture_visibility, visible_meshlets, texture_pbr, }: {
46
47
  graph: FrameGraph;
47
48
  view: GPUViewContext;
48
- texture_viz_mesh: number;
49
- texture_viz_triangle: number;
50
- texture_normal: number;
49
+ texture_visibility: number;
50
+ visible_meshlets: number;
51
+ texture_pbr: number;
51
52
  }): {
52
53
  g_pbr: number;
53
54
  g_normal: number;
@@ -121,12 +122,24 @@ export class GPUMaterialManager {
121
122
  /**
122
123
  * The contexts the G-buffer pass draws for a scene's drawn materials: every one that is not
123
124
  * transparent and has a context, grouped by template, in the order {@link graph_viz_render} draws
124
- * them. The array is kept and rebuilt in place — {@link gbuffer_contexts_version} says when.
125
+ * them. A material's index here is its place in the pass. The array is replaced, never
126
+ * rewritten, when the list changes — {@link gbuffer_contexts_version} says when — so one held
127
+ * across a change still names the places it was read with.
125
128
  *
126
129
  * @param {ShadeMaterial[]} drawn a scene's {@link GPUSceneContext#drawn_materials}
127
130
  * @returns {GPUMaterialContext[]}
128
131
  */
129
132
  gbuffer_contexts(drawn: ShadeMaterial[]): GPUMaterialContext[];
133
+ /**
134
+ * Each of {@link gbuffer_contexts} at its place there, keyed by material id: a
135
+ * {@link cpu_hash_table_create} table, for a shader that starts from the material id of a mesh
136
+ * (read with `hash_table_get`, a miss for a material the pass does not draw). Replaced along with
137
+ * the list, so it always matches the array {@link gbuffer_contexts} returns at the same version.
138
+ *
139
+ * @param {ShadeMaterial[]} drawn a scene's {@link GPUSceneContext#drawn_materials}
140
+ * @returns {Uint32Array}
141
+ */
142
+ gbuffer_slot_table(drawn: ShadeMaterial[]): Uint32Array;
130
143
  /**
131
144
  * Moves whenever {@link gbuffer_contexts} may answer differently for the same drawn set.
132
145
  *
@@ -1 +1 @@
1
- {"version":3,"file":"GPUMaterialManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/GPUMaterialManager.js"],"names":[],"mappings":"AA8QA;IA4FI;;;;;;;;OAQG;IACH,yCANW,cAAc,oBACd,qBAAqB,YACrB,gBAAgB,qBAChB,qBAAqB,aACrB,iBAAiB,EAiD3B;IAlJD;;;;;OAKG;IACH,wBAAkC;IAOlC;;;OAGG;IACH,UAFU,IAAI,aAAa,EAAE,kBAAkB,CAAC,CAE3B;IAyBrB;;;OAGG;IACH,yCAEC;IAID;;;OAGG;IACH,sBAEC;IA0LD;;;;;;;;;;OAUG;IACH;QAR+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACE,gBAAgB,EAAhC,MAAM;QACU,oBAAoB,EAApC,MAAM;QACU,cAAc,EAA9B,MAAM;QAEJ;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CAmNnF;IAED;;;;OAIG;IACH,iBAHW,aAAa,GACX,kBAAkB,CAqB9B;IAED;;;;;;;;;;;;OAYG;IACH,kBAHW,aAAa,GACX,OAAO,CAyBnB;IAED;;;;OAIG;IACH,gBAaC;IAED;;;;;;;OAOG;IACH,0BAFW,eAAe,QAazB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,qBAAqB,GACnB,QAAQ,IAAI,CAAC,CAMzB;IAsBD;;;;;;OAMG;IACH,0BAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;OAMG;IACH,wBAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;;OAOG;IACH,wBAHW,aAAa,EAAE,GACb,kBAAkB,EAAE,CAIhC;IAED;;;;OAIG;IACH,uCAEC;IAED;;;;OAIG;IACH,oCAEC;IA4ED;;;OAGG;IACH,YAFW,sBAAsB,QAmChC;;CAEJ;8BA5+BY,OAAO,0CAA0C,EAAE,eAAe;6BAClE,OAAO,2BAA2B,EAAE,cAAc;yBAIlD,OAAO,2DAA2D,EAAE,UAAU;qCAC9E,OAAO,wCAAwC,EAAE,sBAAsB;oCACvE,OAAO,gDAAgD,EAAE,qBAAqB;+BAC9E,OAAO,gCAAgC,EAAE,gBAAgB;gCACzD,OAAO,yBAAyB,EAAE,iBAAiB;6BACnD,OAAO,8BAA8B,EAAE,cAAc;oCACrD,OAAO,6CAA6C,EAAE,qBAAqB;4BAC3E,OAAO,oBAAoB,EAAE,aAAa;oCAC1C,OAAO,qCAAqC,EAAE,qBAAqB;mCAtBzE,yBAAyB;mCArBG,8CAA8C;oCAwBxB,mCAAmC"}
1
+ {"version":3,"file":"GPUMaterialManager.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/material/GPUMaterialManager.js"],"names":[],"mappings":"AAiUA;IA4FI;;;;;;;;OAQG;IACH,yCANW,cAAc,oBACd,qBAAqB,YACrB,gBAAgB,qBAChB,qBAAqB,aACrB,iBAAiB,EAiD3B;IAlJD;;;;;OAKG;IACH,wBAAkC;IAOlC;;;OAGG;IACH,UAFU,IAAI,aAAa,EAAE,kBAAkB,CAAC,CAE3B;IAyBrB;;;OAGG;IACH,yCAEC;IAID;;;OAGG;IACH,sBAEC;IA+LD;;;;;;;;;;;OAWG;IACH;QAT+B,KAAK,EAAzB,UAAU;QACc,IAAI,EAA5B,cAAc;QACE,kBAAkB,EAAlC,MAAM;QACU,gBAAgB,EAAhC,MAAM;QACU,WAAW,EAA3B,MAAM;QAGJ;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,CA0OnF;IAED;;;;OAIG;IACH,iBAHW,aAAa,GACX,kBAAkB,CAqB9B;IAED;;;;;;;;;;;;OAYG;IACH,kBAHW,aAAa,GACX,OAAO,CAyBnB;IAED;;;;OAIG;IACH,gBAaC;IAED;;;;;;;OAOG;IACH,0BAFW,eAAe,QAazB;IAED;;;;;;;;;;;OAWG;IACH,kBAHW,qBAAqB,GACnB,QAAQ,IAAI,CAAC,CAMzB;IAsBD;;;;;;OAMG;IACH,0BAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;OAMG;IACH,wBAHW,aAAa,EAAE,GACb,aAAa,EAAE,CAI3B;IAED;;;;;;;;;OASG;IACH,wBAHW,aAAa,EAAE,GACb,kBAAkB,EAAE,CAIhC;IAED;;;;;;;;OAQG;IACH,0BAHW,aAAa,EAAE,GACb,WAAW,CAMvB;IAED;;;;OAIG;IACH,uCAEC;IAED;;;;OAIG;IACH,oCAEC;IAyED;;;OAGG;IACH,YAFW,sBAAsB,QAmChC;;CAEJ;8BApkCY,OAAO,0CAA0C,EAAE,eAAe;6BAClE,OAAO,2BAA2B,EAAE,cAAc;yBAIlD,OAAO,2DAA2D,EAAE,UAAU;qCAC9E,OAAO,wCAAwC,EAAE,sBAAsB;oCACvE,OAAO,gDAAgD,EAAE,qBAAqB;+BAC9E,OAAO,gCAAgC,EAAE,gBAAgB;gCACzD,OAAO,yBAAyB,EAAE,iBAAiB;6BACnD,OAAO,8BAA8B,EAAE,cAAc;oCACrD,OAAO,6CAA6C,EAAE,qBAAqB;4BAC3E,OAAO,oBAAoB,EAAE,aAAa;oCAC1C,OAAO,qCAAqC,EAAE,qBAAqB;mCAvBzE,yBAAyB;mCA1BG,8CAA8C;oCA8BxB,mCAAmC"}