@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
@@ -0,0 +1,99 @@
1
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
5
+ import { chunk_mesh_sdf } from "../chunk_mesh_sdf.js";
6
+ import { MESH_SDF_BRICK_TEXEL_COUNT, MESH_SDF_BRICK_TEXELS } from "../MESH_SDF.js";
7
+ import {
8
+ MESH_SDF_ATLAS_RESOURCE,
9
+ MESH_SDF_HEADERS_RESOURCE,
10
+ MESH_SDF_INDIRECTION_RESOURCE,
11
+ MESH_SDF_SAMPLER_RESOURCE
12
+ } from "../MESH_SDF_RESOURCES.js";
13
+ import { chunk_mesh_surface_listed } from "./chunk_mesh_surface_listed.js";
14
+ import { chunk_mesh_surface_run_find } from "./chunk_mesh_surface_run_find.js";
15
+ import {
16
+ MESH_SURFACE_COUNTER_LISTED,
17
+ MESH_SURFACE_COUNTER_RESOURCE,
18
+ MESH_SURFACE_LIST_SETTINGS,
19
+ MESH_SURFACE_RUNS_RESOURCE,
20
+ MESH_SURFACE_STAGING_WORDS,
21
+ MESH_SURFACE_STAGING_WRITE_RESOURCE,
22
+ MESH_SURFACE_TEXEL_STRUCT,
23
+ MESH_SURFACE_TEXELS_WRITE_RESOURCE
24
+ } from "./MESH_SURFACE_BAKE.js";
25
+ import { MESH_SURFACE_RECORDS_RESOURCE } from "./MESH_SURFACE_RESOURCES.js";
26
+ import { MESH_SURFACE_STRUCT } from "./MESH_SURFACE_STRUCT.js";
27
+
28
+ const resources = new ShaderResourceSetDescriptor();
29
+
30
+ resources.setImmediate("settings", MESH_SURFACE_LIST_SETTINGS);
31
+
32
+ resources.createGroup()
33
+ .add(MESH_SDF_HEADERS_RESOURCE)
34
+ .add(MESH_SDF_INDIRECTION_RESOURCE)
35
+ .add(MESH_SDF_ATLAS_RESOURCE)
36
+ .add(MESH_SDF_SAMPLER_RESOURCE)
37
+ .add(MESH_SURFACE_RECORDS_RESOURCE)
38
+ .add(MESH_SURFACE_RUNS_RESOURCE)
39
+ .add(MESH_SURFACE_TEXELS_WRITE_RESOURCE)
40
+ .add(MESH_SURFACE_COUNTER_RESOURCE)
41
+ .add(MESH_SURFACE_STAGING_WRITE_RESOURCE);
42
+
43
+ /**
44
+ * Model Surface Cache bake, first pass (`MESH_SURFACE_BAKE.js`): a thread a texel of the frame's runs'
45
+ * bricks, the bricks a run's cache's field numbered from the run's first number on.
46
+ *
47
+ * Every texel's staging, the slot of its thread, is cleared to no surface. A texel that can hold surface
48
+ * (`mesh_surface_listed`) is listed for the trace, with what it resolved.
49
+ *
50
+ * @type {ComputeShader}
51
+ */
52
+ export const shader_mesh_surface_list = ComputeShader.from({
53
+ label: "Mesh Surface List",
54
+ resources,
55
+ body: CodeChunk.from(
56
+ //language=WGSL
57
+ `
58
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
59
+ fn main(
60
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
61
+ @builtin(local_invocation_index) lane: u32,
62
+ ) {
63
+ let thread = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
64
+
65
+ if (thread >= settings.thread_count) {
66
+ return;
67
+ }
68
+
69
+ let run = mesh_surface_runs[mesh_surface_run_find(settings.run_count, thread)];
70
+ let offset = thread - run.x;
71
+ let number = run.z + offset / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
72
+ let index = offset % ${MESH_SDF_BRICK_TEXEL_COUNT}u;
73
+
74
+ let record = mesh_surface_records[run.y];
75
+ let header = mesh_sdf_headers[record.geometry];
76
+ let b = mesh_sdf_indirection[mesh_sdf_numbered(header) + number];
77
+
78
+ let t = ${MESH_SDF_BRICK_TEXELS}u;
79
+ let texel = vec3<u32>(index % t, (index / t) % t, index / (t * t));
80
+
81
+ // the albedo word says whether the trace found surface
82
+ mesh_surface_staging[${MESH_SURFACE_STAGING_WORDS}u * thread] = 0u;
83
+
84
+ if (mesh_surface_listed(header, b, texel)) {
85
+ let listed = atomicAdd(&mesh_surface_counter[${MESH_SURFACE_COUNTER_LISTED}u], 1u);
86
+
87
+ if (listed < settings.capacity) {
88
+ mesh_surface_texels[listed] = ${MESH_SURFACE_TEXEL_STRUCT.wgsl_ref}(record.geometry, record.material, b, index, thread);
89
+ }
90
+ }
91
+ }
92
+ `, [
93
+ MESH_SURFACE_STRUCT.declaration_chunk,
94
+ MESH_SURFACE_TEXEL_STRUCT.declaration_chunk,
95
+ chunk_mesh_sdf,
96
+ chunk_mesh_surface_listed,
97
+ chunk_mesh_surface_run_find,
98
+ ]),
99
+ });
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Model Surface Cache survey, first pass (`MESH_SURFACE_BAKE.js`): a thread a texel of the frame's
3
+ * survey runs' bricks, a run a stretch of one field's stored bricks by number. A texel that can hold
4
+ * surface (`mesh_surface_listed`, as the bake lists it) sets its block's bit in its brick's table word,
5
+ * which the host cleared before the field's first run.
6
+ *
7
+ * @type {ComputeShader}
8
+ */
9
+ export const shader_mesh_surface_survey: ComputeShader;
10
+ /**
11
+ * Model Surface Cache survey, second pass: a thread a brick of each field whose survey the frame
12
+ * completes, a run a field's bricks, with its table's word, its result and the ticket the host asked
13
+ * for it under. Each brick takes as many block numbers as its mask has blocks, counted out of its
14
+ * field's result, and its table word becomes its first number above its mask; brick 0 writes the
15
+ * ticket beside the count, so a result no pass wrote is told apart. The numbers of a field's bricks
16
+ * follow the order they are taken in, which nothing reads into.
17
+ *
18
+ * @type {ComputeShader}
19
+ */
20
+ export const shader_mesh_surface_number: ComputeShader;
21
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
22
+ //# sourceMappingURL=shader_mesh_surface_survey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_surface_survey.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js"],"names":[],"mappings":"AAoCA;;;;;;;GAOG;AACH,yCAFU,aAAa,CAyCpB;AAWH;;;;;;;;;GASG;AACH,yCAFU,aAAa,CAqCpB;8BA1I2B,kCAAkC"}
@@ -0,0 +1,140 @@
1
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
2
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
3
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
4
+ import { MESH_SDF_BAKE_WORKGROUP_SIZE } from "../bake/MESH_SDF_BAKE.js";
5
+ import { chunk_mesh_sdf } from "../chunk_mesh_sdf.js";
6
+ import { MESH_SDF_BRICK_TEXEL_COUNT, MESH_SDF_BRICK_TEXELS } from "../MESH_SDF.js";
7
+ import {
8
+ MESH_SDF_ATLAS_RESOURCE,
9
+ MESH_SDF_HEADERS_RESOURCE,
10
+ MESH_SDF_INDIRECTION_RESOURCE,
11
+ MESH_SDF_SAMPLER_RESOURCE
12
+ } from "../MESH_SDF_RESOURCES.js";
13
+ import { chunk_mesh_surface_block_index } from "./chunk_mesh_surface_block.js";
14
+ import { chunk_mesh_surface_listed } from "./chunk_mesh_surface_listed.js";
15
+ import { chunk_mesh_surface_run_find } from "./chunk_mesh_surface_run_find.js";
16
+ import {
17
+ MESH_SURFACE_DATA_ATOMIC_RESOURCE,
18
+ MESH_SURFACE_RUNS_RESOURCE,
19
+ MESH_SURFACE_SURVEY_RESULT_WORDS,
20
+ MESH_SURFACE_SURVEY_RESULTS_RESOURCE,
21
+ MESH_SURFACE_SURVEY_SETTINGS
22
+ } from "./MESH_SURFACE_BAKE.js";
23
+ import { MESH_SURFACE_TABLE_MASK_BITS } from "./MESH_SURFACE_BLOCK.js";
24
+
25
+ const survey_resources = new ShaderResourceSetDescriptor();
26
+
27
+ survey_resources.setImmediate("settings", MESH_SURFACE_SURVEY_SETTINGS);
28
+
29
+ survey_resources.createGroup()
30
+ .add(MESH_SDF_HEADERS_RESOURCE)
31
+ .add(MESH_SDF_INDIRECTION_RESOURCE)
32
+ .add(MESH_SDF_ATLAS_RESOURCE)
33
+ .add(MESH_SDF_SAMPLER_RESOURCE)
34
+ .add(MESH_SURFACE_RUNS_RESOURCE)
35
+ .add(MESH_SURFACE_DATA_ATOMIC_RESOURCE);
36
+
37
+ /**
38
+ * Model Surface Cache survey, first pass (`MESH_SURFACE_BAKE.js`): a thread a texel of the frame's
39
+ * survey runs' bricks, a run a stretch of one field's stored bricks by number. A texel that can hold
40
+ * surface (`mesh_surface_listed`, as the bake lists it) sets its block's bit in its brick's table word,
41
+ * which the host cleared before the field's first run.
42
+ *
43
+ * @type {ComputeShader}
44
+ */
45
+ export const shader_mesh_surface_survey = ComputeShader.from({
46
+ label: "Mesh Surface Survey",
47
+ resources: survey_resources,
48
+ body: CodeChunk.from(
49
+ //language=WGSL
50
+ `
51
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
52
+ fn main(
53
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
54
+ @builtin(local_invocation_index) lane: u32,
55
+ ) {
56
+ let thread = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
57
+
58
+ if (thread >= settings.thread_count) {
59
+ return;
60
+ }
61
+
62
+ // its first thread, the geometry, its first brick number, its table's word
63
+ let run = mesh_surface_runs[mesh_surface_run_find(settings.run_count, thread)];
64
+ let offset = thread - run.x;
65
+ let number = run.z + offset / ${MESH_SDF_BRICK_TEXEL_COUNT}u;
66
+ let index = offset % ${MESH_SDF_BRICK_TEXEL_COUNT}u;
67
+
68
+ let header = mesh_sdf_headers[run.y];
69
+ let b = mesh_sdf_indirection[mesh_sdf_numbered(header) + number];
70
+
71
+ let t = ${MESH_SDF_BRICK_TEXELS}u;
72
+ let texel = vec3<u32>(index % t, (index / t) % t, index / (t * t));
73
+
74
+ if (mesh_surface_listed(header, b, texel)) {
75
+ atomicOr(&mesh_surface_data[run.w + number], 1u << mesh_surface_block_of(texel));
76
+ }
77
+ }
78
+ `, [
79
+ chunk_mesh_sdf,
80
+ chunk_mesh_surface_listed,
81
+ chunk_mesh_surface_block_index,
82
+ chunk_mesh_surface_run_find,
83
+ ]),
84
+ });
85
+
86
+ const number_resources = new ShaderResourceSetDescriptor();
87
+
88
+ number_resources.setImmediate("settings", MESH_SURFACE_SURVEY_SETTINGS);
89
+
90
+ number_resources.createGroup()
91
+ .add(MESH_SURFACE_RUNS_RESOURCE)
92
+ .add(MESH_SURFACE_DATA_ATOMIC_RESOURCE)
93
+ .add(MESH_SURFACE_SURVEY_RESULTS_RESOURCE);
94
+
95
+ /**
96
+ * Model Surface Cache survey, second pass: a thread a brick of each field whose survey the frame
97
+ * completes, a run a field's bricks, with its table's word, its result and the ticket the host asked
98
+ * for it under. Each brick takes as many block numbers as its mask has blocks, counted out of its
99
+ * field's result, and its table word becomes its first number above its mask; brick 0 writes the
100
+ * ticket beside the count, so a result no pass wrote is told apart. The numbers of a field's bricks
101
+ * follow the order they are taken in, which nothing reads into.
102
+ *
103
+ * @type {ComputeShader}
104
+ */
105
+ export const shader_mesh_surface_number = ComputeShader.from({
106
+ label: "Mesh Surface Number",
107
+ resources: number_resources,
108
+ body: CodeChunk.from(
109
+ //language=WGSL
110
+ `
111
+ @compute @workgroup_size(${MESH_SDF_BAKE_WORKGROUP_SIZE})
112
+ fn main(
113
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
114
+ @builtin(local_invocation_index) lane: u32,
115
+ ) {
116
+ let thread = (workgroup_id.y * settings.groups_x + workgroup_id.x) * ${MESH_SDF_BAKE_WORKGROUP_SIZE}u + lane;
117
+
118
+ if (thread >= settings.thread_count) {
119
+ return;
120
+ }
121
+
122
+ // its first thread, its table's word, its result, its ticket
123
+ let run = mesh_surface_runs[mesh_surface_run_find(settings.run_count, thread)];
124
+ let number = thread - run.x;
125
+ let word = run.y + number;
126
+ let result = ${MESH_SURFACE_SURVEY_RESULT_WORDS}u * run.z;
127
+
128
+ let mask = atomicLoad(&mesh_surface_data[word]) & ${(1 << MESH_SURFACE_TABLE_MASK_BITS) - 1}u;
129
+ let first = atomicAdd(&mesh_surface_survey_results[result + 1u], countOneBits(mask));
130
+
131
+ atomicStore(&mesh_surface_data[word], (first << ${MESH_SURFACE_TABLE_MASK_BITS}u) | mask);
132
+
133
+ if (number == 0u) {
134
+ atomicStore(&mesh_surface_survey_results[result], run.w);
135
+ }
136
+ }
137
+ `, [
138
+ chunk_mesh_surface_run_find,
139
+ ]),
140
+ });
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Model Surface Cache bake, third pass (`MESH_SURFACE_BAKE.js`): a workgroup a texel the list pass
3
+ * listed, a thread a ray, dispatched through the command pass's command. All of it in the geometry's
4
+ * local space, against its own triangles: nothing else of the scene is there to be seen.
5
+ *
6
+ * - **The rays** look at the texel's nearest surface point, which the field puts d against n from the
7
+ * texel, from {@link MESH_SURFACE_LIFT_VOXELS} out from it along n. They leave along the texel's own
8
+ * Fibonacci set of {@link MESH_SURFACE_TEXEL_RAYS} directions over the hemisphere facing the surface
9
+ * (`mesh_surface_texel_ray`: turned about n and shifted through its bands by the texel's seed), into
10
+ * the geometry's BLAS (`ray_query_blas_nearest`), as far as the texel's tent reaches. A texel so holds the surface as a ray of the GI meets it, from outside the
11
+ * field: one in a gap the field closes sees the face the field puts there.
12
+ * - **A hit** is opaque with probability its opacity (`sample_material_alpha`), as the path tracer
13
+ * takes alpha; a transparent one is stepped past, {@link MESH_SURFACE_ALPHA_CONTINUATIONS} times at most.
14
+ * - **The sample** is the first opaque hit under the tent, weighted by the tent there, and the material
15
+ * there (`sample_material_data`): its diffuse albedo, albedo × (1 − metalness), its metalness and
16
+ * roughness, and its emissive. A hit the field says the ray met from behind gives no sample: the
17
+ * field's normal half a voxel back along the ray says so. The material's textures are read at a
18
+ * footprint a voxel of the level across on the triangle (`beam_texture_level`), filtered exactly
19
+ * ({@link IndirectTextureFilter.Exact}), since the sample is stored rather than averaged over frames.
20
+ * - **The fit**: the first thread adds the workgroup's samples into the texel's fit
21
+ * (`chunk_surface_material_fit`) and writes its codes into the texel's staging, which the encode
22
+ * takes into the cache's blocks. A texel no ray found surface under keeps the list pass's clear: no
23
+ * material.
24
+ *
25
+ * The draws are seeded by the geometry, the brick and the texel alone: a cache baked again over an
26
+ * unchanged geometry and material bakes the same codes.
27
+ *
28
+ * @type {ComputeShader}
29
+ */
30
+ export const shader_mesh_surface_trace: ComputeShader;
31
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
32
+ //# sourceMappingURL=shader_mesh_surface_trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_mesh_surface_trace.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js"],"names":[],"mappings":"AA8DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wCAFU,aAAa,CA2KsE;8BApP/D,kCAAkC"}
@@ -0,0 +1,261 @@
1
+ import { INDIRECT_MATERIAL_ARRAY_TYPE } from "../../../material/resident/INDIRECT_MATERIAL_ARRAY_TYPE.js";
2
+ import { chunk_beam_texture_level } from "../../../path_tracer/shader/chunk_beam_texture_level.js";
3
+ import { chunk_sample_material_alpha, chunk_sample_material_data } from "../../../path_tracer/shader/chunk_sample_material_data.js";
4
+ import { INDIRECT_TEXTURE_FILTER } from "../../../path_tracer/shader/INDIRECT_TEXTURE_FILTER.js";
5
+ import { IndirectTextureFilter } from "../../../path_tracer/shader/IndirectTextureFilter.js";
6
+ import { BVH_TRAVERSAL_STACK_SIZE } from "../../../shader/chunk/bvh/BVH_TRAVERSAL_STACK_SIZE.js";
7
+ import { chunk_geometry_read_triangle_vertices } from "../../../shader/chunk/geometry/format/chunk_geometry_read_triangle_vertices.js";
8
+ import { MAT4_IDENTITY_DEFINITION } from "../../../shader/chunk/geometry/mat4/MAT4_IDENTITY_DEFINITION.js";
9
+ import { chunk_build_orthonormal_matrix_n } from "../../../shader/chunk/geometry/normal/chunk_build_orthonormal_matrix_n.js";
10
+ import { chunk_ray_query_blas_nearest } from "../../../shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js";
11
+ import { RAY_STRUCT } from "../../../shader/chunk/geometry/ray/RAY_STRUCT.js";
12
+ import { chunk_folded_workgroup_index } from "../../../shader/chunk/grid/chunk_folded_workgroup_index.js";
13
+ import { chunk_random } from "../../../shader/chunk/random/chunk_random.js";
14
+ import { chunk_random_initialize } from "../../../shader/chunk/random/chunk_random_initialize.js";
15
+ import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
16
+ import { ShaderSwitchSet } from "../../../shader/compiler/ShaderSwitchSet.js";
17
+ import { ComputeShader } from "../../../shader/ComputeShader.js";
18
+ import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
19
+ import { mesh_sdf_add_blas_resources } from "../bake/shader_mesh_sdf_classify.js";
20
+ import { chunk_mesh_sdf } from "../chunk_mesh_sdf.js";
21
+ import { chunk_mesh_sdf_normal } from "../chunk_mesh_sdf_normal.js";
22
+ import { chunk_mesh_surface_texel_ray } from "./chunk_mesh_surface_texel_ray.js";
23
+ import { MESH_SDF_BRICK_TEXELS } from "../MESH_SDF.js";
24
+ import {
25
+ MESH_SDF_ATLAS_RESOURCE,
26
+ MESH_SDF_HEADERS_RESOURCE,
27
+ MESH_SDF_INDIRECTION_RESOURCE,
28
+ MESH_SDF_SAMPLER_RESOURCE
29
+ } from "../MESH_SDF_RESOURCES.js";
30
+ import { chunk_rgbe9995_encode } from "../../../shader/chunk/color/rgbe9995/chunk_rgbe9995_encode.js";
31
+ import { chunk_albedo_compress } from "../../../shader/chunk/material/chunk_albedo_compress.js";
32
+ import { chunk_metal_rough_compress } from "../../../shader/chunk/material/chunk_metal_rough_compress.js";
33
+ import { chunk_surface_material_fit } from "./chunk_surface_material_fit.js";
34
+ import {
35
+ MESH_SURFACE_ALPHA_CONTINUATIONS,
36
+ MESH_SURFACE_COUNTER_READ_RESOURCE,
37
+ MESH_SURFACE_COUNTER_TRACED,
38
+ MESH_SURFACE_LIFT_VOXELS,
39
+ MESH_SURFACE_STAGING_WORDS,
40
+ MESH_SURFACE_STAGING_WRITE_RESOURCE,
41
+ MESH_SURFACE_TEXEL_RAYS,
42
+ MESH_SURFACE_TEXEL_STRUCT,
43
+ MESH_SURFACE_TEXELS_READ_RESOURCE
44
+ } from "./MESH_SURFACE_BAKE.js";
45
+
46
+ const resources = new ShaderResourceSetDescriptor();
47
+
48
+ resources.createGroup()
49
+ .add(MESH_SDF_HEADERS_RESOURCE)
50
+ .add(MESH_SDF_INDIRECTION_RESOURCE)
51
+ .add(MESH_SDF_ATLAS_RESOURCE)
52
+ .add(MESH_SDF_SAMPLER_RESOURCE)
53
+ .add(MESH_SURFACE_TEXELS_READ_RESOURCE)
54
+ .add(MESH_SURFACE_COUNTER_READ_RESOURCE)
55
+ .add(MESH_SURFACE_STAGING_WRITE_RESOURCE);
56
+
57
+ resources.createGroup({ label: "materials" })
58
+ .addUniform("materials", INDIRECT_MATERIAL_ARRAY_TYPE)
59
+ .addTexture("textures", "unfilterable-float", "2d-array", false);
60
+
61
+ mesh_sdf_add_blas_resources(resources.createGroup());
62
+
63
+ /**
64
+ * Model Surface Cache bake, third pass (`MESH_SURFACE_BAKE.js`): a workgroup a texel the list pass
65
+ * listed, a thread a ray, dispatched through the command pass's command. All of it in the geometry's
66
+ * local space, against its own triangles: nothing else of the scene is there to be seen.
67
+ *
68
+ * - **The rays** look at the texel's nearest surface point, which the field puts d against n from the
69
+ * texel, from {@link MESH_SURFACE_LIFT_VOXELS} out from it along n. They leave along the texel's own
70
+ * Fibonacci set of {@link MESH_SURFACE_TEXEL_RAYS} directions over the hemisphere facing the surface
71
+ * (`mesh_surface_texel_ray`: turned about n and shifted through its bands by the texel's seed), into
72
+ * the geometry's BLAS (`ray_query_blas_nearest`), as far as the texel's tent reaches. A texel so holds the surface as a ray of the GI meets it, from outside the
73
+ * field: one in a gap the field closes sees the face the field puts there.
74
+ * - **A hit** is opaque with probability its opacity (`sample_material_alpha`), as the path tracer
75
+ * takes alpha; a transparent one is stepped past, {@link MESH_SURFACE_ALPHA_CONTINUATIONS} times at most.
76
+ * - **The sample** is the first opaque hit under the tent, weighted by the tent there, and the material
77
+ * there (`sample_material_data`): its diffuse albedo, albedo × (1 − metalness), its metalness and
78
+ * roughness, and its emissive. A hit the field says the ray met from behind gives no sample: the
79
+ * field's normal half a voxel back along the ray says so. The material's textures are read at a
80
+ * footprint a voxel of the level across on the triangle (`beam_texture_level`), filtered exactly
81
+ * ({@link IndirectTextureFilter.Exact}), since the sample is stored rather than averaged over frames.
82
+ * - **The fit**: the first thread adds the workgroup's samples into the texel's fit
83
+ * (`chunk_surface_material_fit`) and writes its codes into the texel's staging, which the encode
84
+ * takes into the cache's blocks. A texel no ray found surface under keeps the list pass's clear: no
85
+ * material.
86
+ *
87
+ * The draws are seeded by the geometry, the brick and the texel alone: a cache baked again over an
88
+ * unchanged geometry and material bakes the same codes.
89
+ *
90
+ * @type {ComputeShader}
91
+ */
92
+ export const shader_mesh_surface_trace = ComputeShader.from({
93
+ label: "Mesh Surface Trace",
94
+ resources,
95
+ body: CodeChunk.from(
96
+ //language=WGSL
97
+ `
98
+ var<workgroup> traced_count: u32;
99
+
100
+ /** a ray's sample's weight, 0 for no sample */
101
+ var<workgroup> sample_weight: array<f32, ${MESH_SURFACE_TEXEL_RAYS}>;
102
+ /** diffuse albedo and metalness */
103
+ var<workgroup> sample_albedo: array<vec4<f32>, ${MESH_SURFACE_TEXEL_RAYS}>;
104
+ /** emissive and roughness */
105
+ var<workgroup> sample_emissive: array<vec4<f32>, ${MESH_SURFACE_TEXEL_RAYS}>;
106
+
107
+ fn mesh_surface_tent(d: vec3<f32>) -> f32 {
108
+ let w = max(vec3<f32>(0.0), vec3<f32>(1.0) - abs(d));
109
+
110
+ return w.x * w.y * w.z;
111
+ }
112
+
113
+ @compute @workgroup_size(${MESH_SURFACE_TEXEL_RAYS})
114
+ fn main(
115
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
116
+ @builtin(local_invocation_index) ray_index: u32,
117
+ ) {
118
+ let listed = folded_workgroup_index(workgroup_id);
119
+
120
+ if (ray_index == 0u) {
121
+ traced_count = mesh_surface_counter[${MESH_SURFACE_COUNTER_TRACED}u];
122
+ }
123
+
124
+ if (listed >= workgroupUniformLoad(&traced_count)) {
125
+ return;
126
+ }
127
+
128
+ let entry = mesh_surface_texels[listed];
129
+ let header = mesh_sdf_headers[entry.geometry];
130
+ let brick = mesh_sdf_brick_of(header, entry.brick);
131
+ let voxel = mesh_sdf_level_voxel(header, brick.x);
132
+
133
+ let s = ${MESH_SDF_BRICK_TEXELS}u;
134
+ let t = vec3<u32>(entry.texel % s, (entry.texel / s) % s, entry.texel / (s * s));
135
+ let texel = mesh_sdf_brick_corner(header, brick) + vec3<f32>(t) * voxel;
136
+
137
+ // the texel's nearest surface point, d against n, and how far out from it the rays leave
138
+ let d = mesh_sdf_sample(header, brick.x, texel);
139
+ let n = mesh_sdf_normal(header, brick.x, texel);
140
+ let lift = ${MESH_SURFACE_LIFT_VOXELS} * voxel - d;
141
+
142
+ // the texel's own set of directions, then each ray's own draws
143
+ let seed = vec3<u32>(entry.geometry, entry.brick, entry.texel);
144
+ let direction = mesh_surface_texel_ray(seed, ray_index, n);
145
+
146
+ random_initialize(seed, vec3<u32>(ray_index + 1u, 1u, 0u));
147
+
148
+ var ray: ${RAY_STRUCT.wgsl_ref};
149
+
150
+ ray.origin = texel + lift * n;
151
+ ray.direction = direction;
152
+ ray.tmax = abs(lift) + ${Math.sqrt(3).toFixed(6)} * voxel;
153
+
154
+ let material = materials[entry.material];
155
+
156
+ var stack: array<u32, ${BVH_TRAVERSAL_STACK_SIZE}>;
157
+
158
+ var weight = 0.0;
159
+ var albedo = vec4<f32>(0.0);
160
+ var emissive = vec4<f32>(0.0);
161
+
162
+ for (var step = 0u; step <= ${MESH_SURFACE_ALPHA_CONTINUATIONS}u; step++) {
163
+ let hit = ray_query_blas_nearest(ray, entry.geometry, &stack, 0u);
164
+
165
+ if (hit.t < 0.0) {
166
+ break;
167
+ }
168
+
169
+ let triangle = geometry_read_triangle_vertices(geometries[entry.geometry], hit.triangle);
170
+ let lambda = vec3<f32>(1.0 - hit.barycentrics.x - hit.barycentrics.y, hit.barycentrics.x, hit.barycentrics.y);
171
+
172
+ // a footprint a voxel of the level across on the triangle, whatever angle the ray came in at
173
+ let facing = normalize(cross(triangle.b.position - triangle.a.position, triangle.c.position - triangle.a.position));
174
+ let in_plane = build_orthonormal_matrix_n(facing);
175
+ let level = beam_texture_level(triangle, facing, in_plane[0] * voxel, in_plane[1] * voxel);
176
+
177
+ if (random() < sample_material_alpha(material, triangle, lambda, MAT4_IDENTITY, ray.direction, level).opacity) {
178
+ let local = ray.origin + hit.t * ray.direction;
179
+ let w = mesh_surface_tent((local - texel) / voxel);
180
+
181
+ if (w > 0.0) {
182
+ // the field's normal on the ray's side, where a ray of the GI on this path would stand
183
+ let field = mesh_sdf_normal(header, brick.x, local - ${MESH_SURFACE_LIFT_VOXELS} * voxel * ray.direction);
184
+
185
+ // a surface met from behind, from inside a solid, is one the GI never shades
186
+ if (dot(field, ray.direction) < 0.0) {
187
+ let data = sample_material_data(ray, material, triangle, lambda, MAT4_IDENTITY, level);
188
+
189
+ weight = w;
190
+ albedo = vec4<f32>(data.albedo * (1.0 - data.metalness), data.metalness);
191
+ emissive = vec4<f32>(data.emissive, data.roughness);
192
+ }
193
+ }
194
+
195
+ break;
196
+ }
197
+
198
+ // past the transparent hit, by a sliver of a voxel
199
+ let skip = hit.t + 1e-3 * voxel;
200
+
201
+ ray.origin += ray.direction * skip;
202
+ ray.tmax -= skip;
203
+
204
+ if (ray.tmax <= 0.0) {
205
+ break;
206
+ }
207
+ }
208
+
209
+ sample_weight[ray_index] = weight;
210
+ sample_albedo[ray_index] = albedo;
211
+ sample_emissive[ray_index] = emissive;
212
+
213
+ workgroupBarrier();
214
+
215
+ if (ray_index == 0u) {
216
+ var fit: SurfaceMaterialFit;
217
+
218
+ for (var i = 0u; i < ${MESH_SURFACE_TEXEL_RAYS}u; i++) {
219
+ let w = sample_weight[i];
220
+
221
+ if (w > 0.0) {
222
+ let a = sample_albedo[i];
223
+ let e = sample_emissive[i];
224
+
225
+ surface_material_fit_add(&fit, w, a.rgb, vec2<f32>(a.a, e.a), e.rgb);
226
+ }
227
+ }
228
+
229
+ let fitted = surface_material_fit_solve(fit);
230
+
231
+ if (fitted.covered) {
232
+ let at = ${MESH_SURFACE_STAGING_WORDS}u * entry.slot;
233
+
234
+ mesh_surface_staging[at] = albedo_compress(fitted.albedo);
235
+ mesh_surface_staging[at + 1u] = metal_rough_compress(fitted.metal_rough);
236
+ mesh_surface_staging[at + 2u] = rgbe9995_encode(fitted.emissive);
237
+ }
238
+ }
239
+ }
240
+ `, [
241
+ RAY_STRUCT.declaration_chunk,
242
+ MESH_SURFACE_TEXEL_STRUCT.declaration_chunk,
243
+ MAT4_IDENTITY_DEFINITION,
244
+ chunk_folded_workgroup_index,
245
+ chunk_mesh_sdf,
246
+ chunk_mesh_sdf_normal,
247
+ chunk_surface_material_fit,
248
+ chunk_albedo_compress,
249
+ chunk_metal_rough_compress,
250
+ chunk_rgbe9995_encode,
251
+ chunk_random,
252
+ chunk_random_initialize,
253
+ chunk_mesh_surface_texel_ray,
254
+ chunk_ray_query_blas_nearest,
255
+ chunk_geometry_read_triangle_vertices,
256
+ chunk_build_orthonormal_matrix_n,
257
+ chunk_beam_texture_level,
258
+ chunk_sample_material_alpha,
259
+ chunk_sample_material_data,
260
+ ]),
261
+ }).variant(ShaderSwitchSet.EMPTY.with(INDIRECT_TEXTURE_FILTER, IndirectTextureFilter.Exact));
@@ -37,8 +37,8 @@ export class VirtualGeometry extends MeshletGeometry {
37
37
  */
38
38
  vg_row: number;
39
39
  /**
40
- * An ordinary geometry standing in for this one where a plain mesh is needed: what its geometry cache is baked
41
- * from and its cards are drawn from. A cut of the container ({@link vgeo_to_proxy_mesh}) at
40
+ * An ordinary geometry standing in for this one where a plain mesh is needed: what its geometry cache and
41
+ * surface caches are baked from. A cut of the container ({@link vgeo_to_proxy_mesh}) at
42
42
  * {@link vgeo_proxy_triangle_limit} of the source's triangles, in the geometry's own space, with its attributes;
43
43
  * asked for once, and the same proxy every time after.
44
44
  *
@@ -74,8 +74,8 @@ export class VirtualGeometry extends MeshletGeometry {
74
74
  }
75
75
 
76
76
  /**
77
- * An ordinary geometry standing in for this one where a plain mesh is needed: what its geometry cache is baked
78
- * from and its cards are drawn from. A cut of the container ({@link vgeo_to_proxy_mesh}) at
77
+ * An ordinary geometry standing in for this one where a plain mesh is needed: what its geometry cache and
78
+ * surface caches are baked from. A cut of the container ({@link vgeo_to_proxy_mesh}) at
79
79
  * {@link vgeo_proxy_triangle_limit} of the source's triangles, in the geometry's own space, with its attributes;
80
80
  * asked for once, and the same proxy every time after.
81
81
  *
@@ -3,15 +3,21 @@
3
3
  *
4
4
  * ```wgsl
5
5
  * fn vg_instance_stretch(global: mat4x4<f32>) -> vec2<f32>
6
+ * fn vg_instance_eye(global: mat4x4<f32>, position: vec3<f32>) -> vec4<f32>
6
7
  * fn vg_instance_record(mesh_index: u32, geometry_row: u32, capacity: u32) -> u32
7
8
  * fn vg_store(base: u32, field: u32, value: f32)
8
9
  * ```
9
10
  *
10
- * `vg_instance_stretch` is the largest and smallest stretch the transform applies to any direction,
11
- * or zero for a transform that flattens the instance. `vg_instance_record` reserves a record under
11
+ * `vg_instance_stretch` is the longest and shortest column of the transform's linear part, or zero
12
+ * for a column of zeros. That is the largest and smallest stretch it applies to any direction when
13
+ * the columns are orthogonal, a rotation times any scale; a shear stretches beyond its columns and
14
+ * is not accounted for, as in Nanite. (`mat3_singular_values` accounts for it, at many times the
15
+ * cost.) `vg_instance_eye` is `position` in the
16
+ * instance's object space, scaled by w: xyz / w is the eye, and w is the |det| that division takes,
17
+ * not positive for a transform without an inverse. `vg_instance_record` reserves a record under
12
18
  * `capacity`, writes the instance's mesh row and its geometry's root page, lookup and claim width,
13
19
  * and returns the record's first word, or {@link VG_INSTANCE_RECORD_NONE} when the records are full.
14
- * What the instance is cut against (its eye, projection and volume) is the collect's own.
20
+ * What the instance is cut against (its projection and volume) is the collect's own.
15
21
  *
16
22
  * Requires the importing shader to declare `instances`, `claim_widths` and `vg_geometries`.
17
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_vgeo_cut_instance.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,sCAFU,SAAS,CAoFc;0BA7GP,0CAA0C"}
1
+ {"version":3,"file":"chunk_vgeo_cut_instance.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/geometry/virtual/runtime/cut/chunk_vgeo_cut_instance.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,sCAFU,SAAS,CAqFiD;0BApH1C,0CAA0C"}