@woosh/meep-engine 3.61.1 → 3.61.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/package.json +1 -1
  3. package/src/engine/network/sim/SimActionExecutor.d.ts +4 -0
  4. package/src/engine/network/sim/SimActionExecutor.d.ts.map +1 -1
  5. package/src/engine/network/sim/SimActionExecutor.js +4 -0
  6. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  7. package/src/generation/foliage/material/foliage_atlas_cutout.d.ts.map +1 -1
  8. package/src/generation/foliage/material/foliage_atlas_cutout.js +21 -5
  9. package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts +8 -0
  10. package/src/generation/foliage/mesh/tree_cluster_representatives.d.ts.map +1 -1
  11. package/src/generation/foliage/mesh/tree_cluster_representatives.js +178 -78
  12. package/src/generation/foliage/mesh/tree_mesh_build_bark.d.ts.map +1 -1
  13. package/src/generation/foliage/mesh/tree_mesh_build_bark.js +178 -97
  14. package/src/generation/foliage/skeleton/ShootLightField.d.ts +1 -0
  15. package/src/generation/foliage/skeleton/ShootLightField.d.ts.map +1 -1
  16. package/src/generation/foliage/skeleton/ShootLightField.js +88 -17
  17. package/src/generation/foliage/skeleton/ShootWoodHash.d.ts +5 -2
  18. package/src/generation/foliage/skeleton/ShootWoodHash.d.ts.map +1 -1
  19. package/src/generation/foliage/skeleton/ShootWoodHash.js +191 -25
  20. package/src/shade/playground/probe_clipmap/README.md +3 -4
  21. package/src/shade/playground/probe_clipmap/index.html +5 -13
  22. package/src/shade/playground/probe_clipmap/main.d.ts.map +1 -1
  23. package/src/shade/playground/probe_clipmap/main.js +4 -5
  24. package/src/shade/playground/probe_clipmap_box/README.md +55 -0
  25. package/src/shade/playground/probe_clipmap_box/index.html +185 -0
  26. package/src/shade/playground/probe_clipmap_box/main.d.ts +8 -0
  27. package/src/shade/playground/probe_clipmap_box/main.d.ts.map +1 -0
  28. package/src/shade/playground/probe_clipmap_box/main.js +323 -0
  29. package/src/shade/playground/probe_clipmap_box/scene.d.ts +93 -0
  30. package/src/shade/playground/probe_clipmap_box/scene.d.ts.map +1 -0
  31. package/src/shade/playground/probe_clipmap_box/scene.js +256 -0
  32. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  33. package/src/shade/renderer/Renderer.js +56 -12
  34. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +3 -3
  35. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +1 -1
  36. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +6 -6
  37. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +1 -1
  38. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +1 -1
  39. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts +10 -0
  40. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.d.ts.map +1 -0
  41. package/src/shade/renderer/geometry/meshlet/meshlet_batch_colored.js +54 -0
  42. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +85 -36
  43. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  44. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +813 -412
  45. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts +7 -0
  46. package/src/shade/renderer/geometry/sdf/MESH_SDF.d.ts.map +1 -1
  47. package/src/shade/renderer/geometry/sdf/MESH_SDF.js +8 -0
  48. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts +14 -0
  49. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.d.ts.map +1 -0
  50. package/src/shade/renderer/geometry/sdf/MESH_SDF_BRICK_KEY.js +35 -0
  51. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.d.ts.map +1 -1
  52. package/src/shade/renderer/geometry/sdf/MESH_SDF_STRUCT.js +0 -4
  53. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts +55 -10
  54. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.d.ts.map +1 -1
  55. package/src/shade/renderer/geometry/sdf/bake/MESH_SDF_BAKE.js +86 -16
  56. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts +2 -2
  57. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.d.ts.map +1 -1
  58. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_bake.js +28 -2
  59. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts +54 -0
  60. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.d.ts.map +1 -0
  61. package/src/shade/renderer/geometry/sdf/bake/chunk_mesh_sdf_contents.js +146 -0
  62. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts +1 -1
  63. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  64. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +2 -1
  65. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts +18 -0
  66. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.d.ts.map +1 -0
  67. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_content_rehash.js +66 -0
  68. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts +17 -0
  69. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.d.ts.map +1 -0
  70. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_count.js +66 -0
  71. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts +5 -3
  72. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  73. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +15 -14
  74. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts +2 -1
  75. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.d.ts.map +1 -1
  76. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_free.js +12 -3
  77. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts +21 -0
  78. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.d.ts.map +1 -0
  79. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_key.js +84 -0
  80. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts +53 -0
  81. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.d.ts.map +1 -0
  82. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_resolve.js +343 -0
  83. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts +3 -3
  84. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.d.ts.map +1 -1
  85. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_store.js +9 -5
  86. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts +2 -2
  87. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.d.ts.map +1 -1
  88. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_take.js +3 -2
  89. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts +69 -0
  90. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.d.ts.map +1 -0
  91. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_upload.js +294 -0
  92. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts +16 -0
  93. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.d.ts.map +1 -0
  94. package/src/shade/renderer/geometry/sdf/bundle/MODEL_CACHE_BUNDLE.js +36 -0
  95. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts +126 -0
  96. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.d.ts.map +1 -0
  97. package/src/shade/renderer/geometry/sdf/bundle/ModelCacheBundle.js +148 -0
  98. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts +10 -0
  99. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.d.ts.map +1 -0
  100. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_read.js +140 -0
  101. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts +8 -0
  102. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.d.ts.map +1 -0
  103. package/src/shade/renderer/geometry/sdf/bundle/model_cache_bundle_write.js +76 -0
  104. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts +9 -0
  105. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.d.ts.map +1 -1
  106. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf.js +23 -0
  107. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts +13 -0
  108. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.d.ts.map +1 -0
  109. package/src/shade/renderer/geometry/sdf/chunk_mesh_sdf_brick_key.js +23 -0
  110. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts +262 -0
  111. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.d.ts.map +1 -0
  112. package/src/shade/renderer/geometry/sdf/surface/GPUMeshSurfaceCaches.js +1819 -0
  113. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts +118 -0
  114. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.d.ts.map +1 -0
  115. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BAKE.js +204 -0
  116. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts +66 -0
  117. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.d.ts.map +1 -0
  118. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_BLOCK.js +103 -0
  119. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts +19 -0
  120. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.d.ts.map +1 -0
  121. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_RESOURCES.js +23 -0
  122. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts +15 -0
  123. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.d.ts.map +1 -0
  124. package/src/shade/renderer/geometry/sdf/surface/MESH_SURFACE_STRUCT.js +70 -0
  125. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts +13 -0
  126. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.d.ts.map +1 -0
  127. package/src/shade/renderer/geometry/sdf/surface/SURFACE_MATERIAL.js +35 -0
  128. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts +32 -0
  129. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.d.ts.map +1 -0
  130. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_block.js +111 -0
  131. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts +17 -0
  132. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.d.ts.map +1 -0
  133. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_listed.js +49 -0
  134. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts +13 -0
  135. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.d.ts.map +1 -0
  136. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_run_find.js +35 -0
  137. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts +24 -0
  138. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.d.ts.map +1 -0
  139. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_sample.js +169 -0
  140. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts +19 -0
  141. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.d.ts.map +1 -0
  142. package/src/shade/renderer/geometry/sdf/surface/chunk_mesh_surface_texel_ray.js +49 -0
  143. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts +19 -0
  144. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.d.ts.map +1 -0
  145. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_fit.js +67 -0
  146. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts +78 -0
  147. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.d.ts.map +1 -0
  148. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_read.js +320 -0
  149. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts +15 -0
  150. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.d.ts.map +1 -0
  151. package/src/shade/renderer/geometry/sdf/surface/chunk_surface_material_store.js +48 -0
  152. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts +51 -0
  153. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.d.ts.map +1 -0
  154. package/src/shade/renderer/geometry/sdf/surface/mesh_surface_channels.js +109 -0
  155. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts +11 -0
  156. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.d.ts.map +1 -0
  157. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_command.js +51 -0
  158. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts +26 -0
  159. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.d.ts.map +1 -0
  160. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_encode.js +453 -0
  161. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts +12 -0
  162. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.d.ts.map +1 -0
  163. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_list.js +99 -0
  164. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts +22 -0
  165. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_survey.js +140 -0
  167. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts +32 -0
  168. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +261 -0
  170. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.d.ts +2 -2
  171. package/src/shade/renderer/geometry/virtual/runtime/VirtualGeometry.js +2 -2
  172. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.d.ts +6 -6
  173. package/src/shade/renderer/geometry/virtual/sdf/VGeoSDFProxies.js +7 -7
  174. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts +12 -0
  175. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.d.ts.map +1 -1
  176. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_decode.js +49 -24
  177. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts +12 -0
  178. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.d.ts.map +1 -1
  179. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_brick4_sh3_color_encode.js +50 -19
  180. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.d.ts.map +1 -1
  181. package/src/shade/renderer/global_illumination/brick4/gpu/encoding/v2/chunk_sh3_compress.js +6 -2
  182. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts +20 -8
  183. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.d.ts.map +1 -1
  184. package/src/shade/renderer/global_illumination/probe_clipmap/GPUProbeClipmapGI.js +89 -20
  185. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts +26 -19
  186. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.d.ts.map +1 -1
  187. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSceneHolds.js +226 -148
  188. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts +25 -52
  189. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.d.ts.map +1 -1
  190. package/src/shade/renderer/global_illumination/probe_clipmap/ProbeClipmapSettings.js +29 -69
  191. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts +19 -16
  192. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.d.ts.map +1 -1
  193. package/src/shade/renderer/global_illumination/probe_clipmap/brick/BRICK_CLIPMAP.js +24 -21
  194. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts +46 -22
  195. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.d.ts.map +1 -1
  196. package/src/shade/renderer/global_illumination/probe_clipmap/brick/GPUBrickClipmap.js +49 -36
  197. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts +3 -2
  198. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.d.ts.map +1 -1
  199. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap.js +7 -6
  200. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts +8 -22
  201. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.d.ts.map +1 -1
  202. package/src/shade/renderer/global_illumination/probe_clipmap/brick/chunk_brick_clipmap_trace.js +15 -51
  203. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +1 -6
  204. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  205. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +6 -13
  206. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts.map +1 -1
  207. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +0 -2
  208. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts +4 -4
  209. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.d.ts.map +1 -1
  210. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_batch.js +9 -34
  211. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts +4 -6
  212. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.d.ts.map +1 -1
  213. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_resolve.js +15 -39
  214. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.d.ts +1 -1
  215. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_clear.js +1 -1
  216. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts +1 -2
  217. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.d.ts.map +1 -1
  218. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_store.js +2 -6
  219. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts +2 -2
  220. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.d.ts.map +1 -1
  221. package/src/shade/renderer/global_illumination/probe_clipmap/brick/shader_brick_clipmap_take.js +5 -2
  222. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.d.ts +5 -1
  223. package/src/shade/renderer/global_illumination/probe_clipmap/debug/ProbeClipmapDebugView.js +16 -2
  224. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts +45 -0
  225. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.d.ts.map +1 -0
  226. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_brick_material.js +208 -0
  227. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts +24 -0
  228. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.d.ts.map +1 -0
  229. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_indirect.js +40 -0
  230. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts +34 -0
  231. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.d.ts.map +1 -0
  232. 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
  233. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts +61 -0
  234. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.d.ts.map +1 -0
  235. package/src/shade/renderer/global_illumination/probe_clipmap/material/GPUBrickMaterial.js +193 -0
  236. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts +67 -0
  237. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.d.ts.map +1 -0
  238. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material.js +142 -0
  239. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts +32 -0
  240. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.d.ts.map +1 -0
  241. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_cell.js +70 -0
  242. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts +30 -0
  243. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.d.ts.map +1 -0
  244. package/src/shade/renderer/global_illumination/probe_clipmap/material/chunk_brick_material_store.js +71 -0
  245. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts +26 -0
  246. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.d.ts.map +1 -0
  247. package/src/shade/renderer/global_illumination/probe_clipmap/material/shader_brick_material_gather.js +176 -0
  248. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts +23 -12
  249. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.d.ts.map +1 -1
  250. package/src/shade/renderer/global_illumination/probe_clipmap/probe/GPUProbeClipmap.js +72 -52
  251. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts +32 -0
  252. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.d.ts.map +1 -1
  253. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP.js +37 -0
  254. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts +10 -0
  255. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.d.ts.map +1 -0
  256. package/src/shade/renderer/global_illumination/probe_clipmap/probe/PROBE_CLIPMAP_INDIRECT_LOBE.js +11 -0
  257. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts +11 -0
  258. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.d.ts.map +1 -0
  259. package/src/shade/renderer/global_illumination/probe_clipmap/probe/ProbeClipmapIndirectLobe.js +15 -0
  260. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts +55 -23
  261. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.d.ts.map +1 -1
  262. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap.js +134 -69
  263. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts +43 -0
  264. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.d.ts.map +1 -0
  265. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_material.js +138 -0
  266. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts +21 -0
  267. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.d.ts.map +1 -0
  268. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_indirect_lobe.js +49 -0
  269. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts +4 -3
  270. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.d.ts.map +1 -1
  271. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_pick.js +19 -24
  272. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts +2 -2
  273. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.d.ts.map +1 -1
  274. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_sample_radiance.js +14 -19
  275. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts +22 -0
  276. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.d.ts.map +1 -0
  277. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_select.js +50 -0
  278. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts +4 -4
  279. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.d.ts.map +1 -1
  280. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_want.js +8 -8
  281. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts +1 -1
  282. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.d.ts.map +1 -1
  283. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js +8 -4
  284. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_admit.js +1 -1
  285. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts +5 -4
  286. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.d.ts.map +1 -1
  287. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js +18 -23
  288. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts +1 -1
  289. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.d.ts.map +1 -1
  290. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js +4 -2
  291. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.d.ts.map +1 -1
  292. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js +4 -6
  293. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts +2 -0
  294. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.d.ts.map +1 -1
  295. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js +9 -8
  296. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.d.ts +1 -1
  297. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_light.js +2 -2
  298. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts +4 -3
  299. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.d.ts.map +1 -1
  300. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js +14 -13
  301. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts +7 -4
  302. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.d.ts.map +1 -1
  303. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js +30 -26
  304. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts +6 -6
  305. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.d.ts.map +1 -1
  306. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_trace.js +19 -21
  307. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.d.ts.map +1 -1
  308. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want.js +6 -2
  309. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.d.ts +2 -2
  310. package/src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_want_hits.js +6 -6
  311. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts +14 -0
  312. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.d.ts.map +1 -0
  313. package/src/shade/renderer/gpu_primitive/hash_table/chunk_generate_next_linear_congruential_index.js +22 -0
  314. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts +37 -0
  315. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.d.ts.map +1 -0
  316. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_atomic.js +122 -0
  317. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.d.ts.map +1 -1
  318. package/src/shade/renderer/gpu_primitive/hash_table/chunk_hash_table_get.js +1 -11
  319. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts +8 -0
  320. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.d.ts.map +1 -1
  321. package/src/shade/renderer/gpu_primitive/hash_table/cpu_build_hash_table.js +6 -4
  322. package/src/shade/renderer/light/environment/shader_downsample_environment_map.d.ts.map +1 -1
  323. package/src/shade/renderer/light/environment/shader_downsample_environment_map.js +5 -1
  324. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  325. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +1 -1
  326. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  327. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +2 -18
  328. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts +17 -0
  329. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.d.ts.map +1 -0
  330. package/src/shade/renderer/material/resident/NEUTRAL_SURFACE.js +16 -0
  331. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.d.ts +1 -1
  332. package/src/shade/renderer/path_tracer/shader/INDIRECT_TEXTURE_FILTER.js +1 -1
  333. package/src/shade/renderer/path_tracer/shader/IndirectTextureFilter.js +1 -1
  334. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts +20 -0
  335. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.d.ts.map +1 -0
  336. package/src/shade/renderer/path_tracer/shader/chunk_beam_texture_level.js +65 -0
  337. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts +26 -8
  338. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.d.ts.map +1 -1
  339. package/src/shade/renderer/postprocess/eye/GPUCameraExposureManager.js +170 -142
  340. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  341. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts +1 -1
  342. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.d.ts.map +1 -1
  343. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_probe_clipmap.js +5 -8
  344. package/src/shade/renderer/scene/GPUSceneContext.d.ts +1 -1
  345. package/src/shade/renderer/scene/GPUSceneContext.js +1 -1
  346. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts +15 -4
  347. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.d.ts.map +1 -1
  348. package/src/shade/renderer/shader/chunk/filter/chunk_multiscale_mean.js +33 -7
  349. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts +12 -0
  350. package/src/shade/renderer/shader/chunk/material/albedo_compress.d.ts.map +1 -0
  351. package/src/shade/renderer/shader/chunk/material/albedo_compress.js +26 -0
  352. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts +16 -0
  353. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.d.ts.map +1 -0
  354. package/src/shade/renderer/shader/chunk/material/chunk_albedo_compress.js +22 -0
  355. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts +15 -0
  356. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.d.ts.map +1 -0
  357. package/src/shade/renderer/shader/chunk/material/chunk_albedo_uncompress.js +23 -0
  358. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts +16 -0
  359. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.d.ts.map +1 -0
  360. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_compress.js +25 -0
  361. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts +25 -0
  362. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.d.ts.map +1 -0
  363. package/src/shade/renderer/shader/chunk/material/chunk_metal_rough_uncompress.js +36 -0
  364. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts +11 -0
  365. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.d.ts.map +1 -0
  366. package/src/shade/renderer/shader/chunk/material/metal_rough_compress.js +38 -0
  367. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts +40 -0
  368. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.d.ts.map +1 -0
  369. package/src/shade/renderer/shader/chunk/noise/chunk_sobol_sample_vec2.js +75 -0
  370. package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.d.ts.map +1 -1
  371. package/src/shade/renderer/shader/chunk/noise/chunk_vdc_radical_inverse.js +3 -1
  372. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts +28 -0
  373. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.d.ts.map +1 -0
  374. package/src/shade/renderer/shader/chunk/random/chunk_hash_lk.js +41 -0
  375. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts +12 -0
  376. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.d.ts.map +1 -0
  377. package/src/shade/renderer/shader/chunk/spherical_harmonics/chunk_sh3_color_add_scaled.js +24 -0
  378. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts +20 -0
  379. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.d.ts.map +1 -0
  380. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot.js +35 -0
  381. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts +28 -0
  382. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.d.ts.map +1 -0
  383. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_compress.js +79 -0
  384. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts +25 -0
  385. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.d.ts.map +1 -0
  386. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_fit.js +89 -0
  387. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts +31 -0
  388. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.d.ts.map +1 -0
  389. package/src/shade/renderer/shader/chunk/spherical_harmonics/pivot/chunk_sh2_color_pivot_uncompress.js +66 -0
  390. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -1
  391. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +2 -0
  392. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts +17 -0
  393. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.d.ts.map +1 -0
  394. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_load.js +34 -0
  395. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts +18 -0
  396. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.d.ts.map +1 -1
  397. package/src/shade/renderer/volumetrics/chunk_frustum_unit_box_coverage_multisample.js +31 -23
  398. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts +3 -2
  399. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.d.ts.map +1 -1
  400. package/src/shade/renderer/volumetrics/irradiance_clipmap/GPUIrradianceClipmap.js +4 -0
  401. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts +2 -5
  402. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.d.ts.map +1 -1
  403. package/src/shade/renderer/volumetrics/irradiance_clipmap/chunk_irradiance_clipmap_gi_sample.js +3 -20
  404. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  405. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +5 -6
  406. package/src/shade/renderer/water/chunk_water_gi.d.ts +1 -1
  407. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
  408. package/src/shade/renderer/water/chunk_water_gi.js +6 -8
  409. package/src/shade/renderer/water/query/GPUWaterQueries.d.ts +1 -1
  410. package/src/shade/renderer/wind/GPUSceneWind.d.ts +1 -1
  411. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  412. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +76 -32
  413. package/src/core/math/hash/squirrel3.d.ts +0 -17
  414. package/src/core/math/hash/squirrel3.d.ts.map +0 -1
  415. package/src/core/math/hash/squirrel3.js +0 -30
  416. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts +0 -213
  417. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.d.ts.map +0 -1
  418. package/src/shade/renderer/geometry/sdf/cards/GPUMeshCardSets.js +0 -1468
  419. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts +0 -82
  420. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.d.ts.map +0 -1
  421. package/src/shade/renderer/geometry/sdf/cards/MESH_CARDS.js +0 -127
  422. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts +0 -24
  423. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.d.ts.map +0 -1
  424. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_RESOURCES.js +0 -29
  425. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts +0 -12
  426. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.d.ts.map +0 -1
  427. package/src/shade/renderer/geometry/sdf/cards/MESH_CARD_SET_STRUCT.js +0 -31
  428. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts +0 -11
  429. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.d.ts.map +0 -1
  430. package/src/shade/renderer/geometry/sdf/cards/MeshCardCaptureMode.js +0 -21
  431. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts +0 -29
  432. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.d.ts.map +0 -1
  433. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_card_surface.js +0 -179
  434. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts +0 -17
  435. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.d.ts.map +0 -1
  436. package/src/shade/renderer/geometry/sdf/cards/chunk_mesh_cards.js +0 -107
  437. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts +0 -65
  438. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.d.ts.map +0 -1
  439. package/src/shade/renderer/geometry/sdf/cards/mesh_cards_raster_pass_descriptor.js +0 -376
  440. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts +0 -40
  441. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.d.ts.map +0 -1
  442. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_capture.js +0 -301
  443. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts +0 -19
  444. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.d.ts.map +0 -1
  445. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_compact.js +0 -61
  446. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts +0 -18
  447. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.d.ts.map +0 -1
  448. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_histogram.js +0 -102
  449. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts +0 -15
  450. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.d.ts.map +0 -1
  451. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_log.js +0 -65
  452. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts +0 -22
  453. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.d.ts.map +0 -1
  454. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_merge.js +0 -136
  455. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts +0 -20
  456. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.d.ts.map +0 -1
  457. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_pages.js +0 -104
  458. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts +0 -20
  459. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.d.ts.map +0 -1
  460. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_args.js +0 -80
  461. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts +0 -18
  462. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.d.ts.map +0 -1
  463. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_raster_scatter.js +0 -113
  464. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts +0 -30
  465. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.d.ts.map +0 -1
  466. package/src/shade/renderer/geometry/sdf/cards/shader_mesh_cards_split.js +0 -146
  467. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts +0 -34
  468. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_cards.d.ts.map +0 -1
  469. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts +0 -31
  470. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.d.ts.map +0 -1
  471. package/src/shade/renderer/global_illumination/probe_clipmap/probe/chunk_probe_clipmap_hit_surface.js +0 -82
  472. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts +0 -12
  473. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.d.ts.map +0 -1
  474. package/src/shade/renderer/shader/chunk/random/chunk_hash_squirrel3.js +0 -30
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_accumulate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js"],"names":[],"mappings":"AA8CA;;GAEG;AACH,wCAFU,YAAY,CAmBQ;AAoB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,8CAFU,aAAa,CA0TpB;6BApb0B,sCAAsC;8BAHrC,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_accumulate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_accumulate.js"],"names":[],"mappings":"AA+CA;;GAEG;AACH,wCAFU,YAAY,CAmBQ;AAsB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,8CAFU,aAAa,CA2TpB;6BAvb0B,sCAAsC;8BAJrC,kCAAkC"}
@@ -11,6 +11,7 @@ import { chunk_pcg3d } from "../../../shader/chunk/random/pcg/chunk_pcg3d.js";
11
11
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
12
12
  import { ComputeShader } from "../../../shader/ComputeShader.js";
13
13
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
14
+ import { F32_CONTAINER_STRUCT } from "../../../shader/type/F32_CONTAINER_STRUCT.js";
14
15
  import { u32 } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
15
16
  import { WebGPUStruct } from "../../../shader/type/WebGPUStruct.js";
16
17
  import { BRICK_TRACE_MISS, BRICK_TRACE_UNRESOLVED } from "../brick/BRICK_CLIPMAP.js";
@@ -82,7 +83,9 @@ resources.createGroup()
82
83
  .add(PROBE_DEPTH_HISTORY_RESOURCE)
83
84
  .add(PROBE_ESTIMATORS_RESOURCE)
84
85
  // read only where the frame re-samples (chunk_probe_clipmap_resampled)
85
- .add(PROBE_RESAMPLES_READ_RESOURCE);
86
+ .add(PROBE_RESAMPLES_READ_RESOURCE)
87
+ // the factor the display multiplies radiance by ahead of its tone curve, as the last frame was shown
88
+ .addUniform("probe_exposure", F32_CONTAINER_STRUCT);
86
89
 
87
90
  /**
88
91
  * Accumulate (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.8): a thread a texel of each listed probe's maps,
@@ -101,7 +104,7 @@ resources.createGroup()
101
104
  * so their mean needs no weight for the guide's choice.
102
105
  * - **Radiance**: the mean of the texel's resolved rays, a back face's being zero, is a sample of the
103
106
  * texel's multi-scale mean (`chunk_multiscale_mean`), its estimator in `probe_estimators` and its mean
104
- * in the atlas.
107
+ * in the atlas, at the exposure in `probe_exposure`: the display's, which the estimator's thresholds are in.
105
108
  * - The short mean blends by β = max(1/(a+1), `PROBE_SHORT_BLEND`), its variance by max(1/(a+1),
106
109
  * `PROBE_VARIANCE_BLEND`), a the texel's own count of the updates that reached it, held in its alpha.
107
110
  * A sample's blend is a sample's however long since the last one: a probe nobody wanted, or a texel the
@@ -282,8 +285,8 @@ fn main(
282
285
  if (history.a > 0.0) {
283
286
  let ramp = 1.0 / (history.a + 1.0);
284
287
  let before = probe_accumulate_estimator(history.rgb, probe_estimators[estimator]);
285
- // the estimator's own floor on the variance
286
- let deviation = rgb_to_luminance(sqrt(max(vec3<f32>(1e-5), before.variance)));
288
+ // the estimator's own floor on the deviation, at the display's exposure
289
+ let deviation = rgb_to_luminance(max(multiscale_mean_deviation_floor(before.short_mean, probe_exposure.value), sqrt(max(vec3<f32>(0.0), before.variance))));
287
290
 
288
291
  change = vec2<f32>(clamp(rgb_to_luminance(sample - history.rgb) / deviation, -${PROBE_CHANGE_SIGNIFICANCE}.0, ${PROBE_CHANGE_SIGNIFICANCE}.0), 1.0);
289
292
 
@@ -294,6 +297,7 @@ fn main(
294
297
  max(ramp, ${PROBE_VARIANCE_BLEND}),
295
298
  select(0.0, ramp, history.a < ${PROBE_RADIANCE_SAMPLES_LIMIT}.0),
296
299
  ramp <= ${PROBE_VARIANCE_BLEND},
300
+ probe_exposure.value,
297
301
  );
298
302
  }
299
303
 
@@ -156,7 +156,7 @@ fn main(
156
156
  probe_records[slot].flags = probe_record_flags(0.0, cascade);
157
157
  probe_records[slot].wanted_frame = settings.frame;
158
158
  probe_records[slot].traced_frame = settings.frame;
159
- probe_records[slot].sh = vec3<u32>(0u);
159
+ probe_records[slot].sh = probe_record_sh_encode(array<vec3<f32>, 9>());
160
160
 
161
161
  // at its lattice point until its first update relocates it
162
162
  probe_states[slot] = vec2<u32>(probe_state(PROBE_STATE_NEW, 0u), 0u);
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * The next bounce a front-face hit takes, E_ind (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7;
3
3
  * WORLD_PROBE_CACHE_SCOPE_2026_11_01.md §1.4): a thread a ray, after the light pass through the same launch,
4
- * `PROBE_DISPATCH_RAYS`. It adds ρ_d·E_ind/π to the ray's light, ρ_d the albedo shade left in its `row`.
4
+ * `PROBE_DISPATCH_RAYS`. It adds ρ_d·E_ind/π to the ray's light, ρ_d the albedo shade left in its `albedo`.
5
5
  *
6
6
  * - **The first clipmap**: the frustum's probes, picked at the hit along its normal, the view back along
7
- * the ray, with the ray's own jitter as the noise (`probe_clipmap_pick_in`).
8
- * - **Where it has probes**, their SH is the bounce, and the ray's `row` is cleared: a hit the first clipmap
7
+ * the ray, with the ray's own pick noise (`probe_clipmap_ray_noise`, `PROBE_RAY_NOISE_PICK`), drawn
8
+ * apart from the jitter that placed the hit (`probe_clipmap_pick_in`).
9
+ * - **Where it has probes**, their SH is the bounce, and the ray's `albedo` is cleared: a hit the first clipmap
9
10
  * serves wants nothing of the fallback (`shader_probe_clipmap_want_hits`).
10
11
  * - **Where it has none**, the fallback's, the world cache's: the same pick there, at its own spacing.
11
12
  * - **Where neither has**, the bounce is **zero**, not the environment: a hit behind the camera in a cave
@@ -16,7 +17,7 @@
16
17
  * none. The records hold the SH their projection last wrote, at most a frame old, so each frame takes one more
17
18
  * bounce. LPV's 0.97 a bounce is dropped: an albedo under one bounds the series already.
18
19
  *
19
- * Every probe ray takes it, of either clipmap; only the frustum's rays' rows are read after, by the world
20
+ * Every probe ray takes it, of either clipmap; only the frustum's rays' albedos are read after, by the world
20
21
  * cache's wants.
21
22
  *
22
23
  * @type {ComputeShader}
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_bounce.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,0CAFU,aAAa,CAgFpB;8BAjK2B,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_bounce.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_bounce.js"],"names":[],"mappings":"AAqEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,0CAFU,aAAa,CA4EpB;8BA3J2B,kCAAkC"}
@@ -5,23 +5,22 @@ import {
5
5
  chunk_uv_octahedral_unit_decode
6
6
  } from "../../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js";
7
7
  import { chunk_folded_workgroup_index } from "../../../shader/chunk/grid/chunk_folded_workgroup_index.js";
8
+ import { RECIPROCAL_PI_DECLARATION } from "../../../shader/chunk/math/RECIPROCAL_PI_DECLARATION.js";
8
9
  import {
9
- chunk_resolve_irradiance_sh_to_diffuse
10
- } from "../../../shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_diffuse.js";
10
+ chunk_sh3_color_get_irradiance_at
11
+ } from "../../../shader/chunk/spherical_harmonics/chunk_sh3_color_get_irradiance_at.js";
11
12
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
12
13
  import { ComputeShader } from "../../../shader/ComputeShader.js";
13
14
  import { ShaderResourceDescriptor } from "../../../shader/resource/ShaderResourceDescriptor.js";
14
15
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
15
16
  import { vec2u } from "../../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
16
17
  import { WebGPUArray } from "../../../shader/type/WebGPUArray.js";
17
- import { STBN_VEC2_RESOURCE } from "../../../STATIC_GRAPHICS_ENGINE_ASSET_RESOURCES.js";
18
18
  import { BRICK_TRACE_HIT } from "../brick/BRICK_CLIPMAP.js";
19
19
  import {
20
20
  chunk_probe_clipmap,
21
- chunk_probe_clipmap_ray_jitter,
22
21
  chunk_probe_clipmap_ray_layout,
22
+ chunk_probe_clipmap_ray_noise,
23
23
  chunk_probe_clipmap_ray_origin,
24
- chunk_probe_clipmap_ray_texel,
25
24
  PROBE_ORIGINS_READ_RESOURCE,
26
25
  PROBE_RAY_SUMS_READ_RESOURCE,
27
26
  PROBE_RAYS_WRITE_RESOURCE,
@@ -48,7 +47,6 @@ resources.createGroup()
48
47
  .add(PROBE_RAYS_WRITE_RESOURCE)
49
48
  .add(PROBE_RAY_SUMS_READ_RESOURCE)
50
49
  .add(PROBE_STATES_READ_RESOURCE)
51
- .add(STBN_VEC2_RESOURCE)
52
50
  .add(PROBE_DEPTH_SAMPLER_RESOURCE);
53
51
 
54
52
  // the clipmap a hit takes its bounce from first: the frustum's probes
@@ -72,11 +70,12 @@ resources.createGroup()
72
70
  /**
73
71
  * The next bounce a front-face hit takes, E_ind (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7;
74
72
  * WORLD_PROBE_CACHE_SCOPE_2026_11_01.md §1.4): a thread a ray, after the light pass through the same launch,
75
- * `PROBE_DISPATCH_RAYS`. It adds ρ_d·E_ind/π to the ray's light, ρ_d the albedo shade left in its `row`.
73
+ * `PROBE_DISPATCH_RAYS`. It adds ρ_d·E_ind/π to the ray's light, ρ_d the albedo shade left in its `albedo`.
76
74
  *
77
75
  * - **The first clipmap**: the frustum's probes, picked at the hit along its normal, the view back along
78
- * the ray, with the ray's own jitter as the noise (`probe_clipmap_pick_in`).
79
- * - **Where it has probes**, their SH is the bounce, and the ray's `row` is cleared: a hit the first clipmap
76
+ * the ray, with the ray's own pick noise (`probe_clipmap_ray_noise`, `PROBE_RAY_NOISE_PICK`), drawn
77
+ * apart from the jitter that placed the hit (`probe_clipmap_pick_in`).
78
+ * - **Where it has probes**, their SH is the bounce, and the ray's `albedo` is cleared: a hit the first clipmap
80
79
  * serves wants nothing of the fallback (`shader_probe_clipmap_want_hits`).
81
80
  * - **Where it has none**, the fallback's, the world cache's: the same pick there, at its own spacing.
82
81
  * - **Where neither has**, the bounce is **zero**, not the environment: a hit behind the camera in a cave
@@ -87,7 +86,7 @@ resources.createGroup()
87
86
  * none. The records hold the SH their projection last wrote, at most a frame old, so each frame takes one more
88
87
  * bounce. LPV's 0.97 a bounce is dropped: an albedo under one bounds the series already.
89
88
  *
90
- * Every probe ray takes it, of either clipmap; only the frustum's rays' rows are read after, by the world
89
+ * Every probe ray takes it, of either clipmap; only the frustum's rays' albedos are read after, by the world
91
90
  * cache's wants.
92
91
  *
93
92
  * @type {ComputeShader}
@@ -105,7 +104,7 @@ fn main(
105
104
  ) {
106
105
  let ray = folded_workgroup_index(workgroup_id) * PROBE_THREAD_WORKGROUP_SIZE + lane;
107
106
  let record = probe_rays[ray];
108
- let albedo = unpack4x8unorm(record.row).rgb;
107
+ let albedo = unpack4x8unorm(record.albedo).rgb;
109
108
  let front_hit = (record.flags & PROBE_RAY_KIND_MASK) == ${BRICK_TRACE_HIT}u && (record.flags & PROBE_RAY_BACK_FACE) == 0u;
110
109
 
111
110
  // only a front-face hit that bounces anything takes more light
@@ -115,19 +114,15 @@ fn main(
115
114
 
116
115
  // the probe's update's rays, and this one's place among them
117
116
  let k = record.flags >> PROBE_RAY_PROBE_SHIFT;
118
- let span = probe_clipmap_probe_rays(k);
119
- let rays = span.y;
120
- let i = ray - span.x;
117
+ let i = ray - probe_clipmap_probe_rays(k).x;
121
118
 
122
119
  let slot = probe_trace.elements[k];
123
- let n = settings.radiance_resolution;
124
120
  let updates = probe_state_updates(probe_states[slot].x);
125
- let texel = probe_clipmap_ray_texel(i, updates, rays, n * n);
126
121
 
127
122
  let direction = uv_octahedral_unit_decode(unpack2x16unorm(record.direction));
128
123
  let position = probe_clipmap_ray_origin(probe_origins[k], slot, record.direction) + record.t * direction;
129
124
  let normal = uv_octahedral_unit_decode(unpack2x16unorm(record.normal));
130
- let noise = probe_clipmap_ray_jitter(slot, texel, i, updates, rays, n);
125
+ let noise = probe_clipmap_ray_noise(slot, updates, i, PROBE_RAY_NOISE_PICK);
131
126
 
132
127
  var probes = probe_clipmap_sh_in(
133
128
  &bounce_first_records,
@@ -136,7 +131,7 @@ fn main(
136
131
 
137
132
  if (probes.found) {
138
133
  // served: nothing of the fallback is wanted here
139
- probe_rays[ray].row = 0u;
134
+ probe_rays[ray].albedo = 0u;
140
135
  } else {
141
136
  probes = probe_clipmap_sh_in(
142
137
  &bounce_fallback_records,
@@ -148,8 +143,8 @@ fn main(
148
143
  return;
149
144
  }
150
145
 
151
- // E/π, as the resolve gives it
152
- let e = resolve_irradiance_sh_to_diffuse(probes.sh.Y, probes.sh.CoCg, normal);
146
+ // E/π
147
+ let e = sh3_color_get_irradiance_at(normal, probes.sh) * RECIPROCAL_PI;
153
148
 
154
149
  if (all(e == vec3<f32>(0.0))) {
155
150
  return;
@@ -160,13 +155,13 @@ fn main(
160
155
  `, [
161
156
  chunk_probe_clipmap,
162
157
  chunk_probe_clipmap_ray_layout,
163
- chunk_probe_clipmap_ray_texel,
164
- chunk_probe_clipmap_ray_jitter,
158
+ chunk_probe_clipmap_ray_noise,
165
159
  chunk_probe_clipmap_ray_origin,
166
160
  chunk_folded_workgroup_index,
167
161
  chunk_uv_octahedral_unit_decode,
168
162
  chunk_probe_clipmap_pick_in,
169
- chunk_resolve_irradiance_sh_to_diffuse,
163
+ chunk_sh3_color_get_irradiance_at,
164
+ RECIPROCAL_PI_DECLARATION,
170
165
  chunk_rgbe9995_decode,
171
166
  chunk_rgbe9995_encode,
172
167
  ]),
@@ -11,7 +11,7 @@ export const PROBE_CANDIDATE_SETTINGS: WebGPUStruct;
11
11
  * - **The neighbours**: the 26 around B's lattice point in its cascade. One is a candidate if it is ALIVE, its
12
12
  * record holds that point (the storage wraps), and it is listed this frame (`probe_clipmap_listed`), so that its
13
13
  * rays are in `probe_rays`. A NEW one is not. M counts them.
14
- * - **The importance**: the neighbour's radiance, its irradiance's L0 luma, times B's visibility of it: Chebyshev
14
+ * - **The importance**: the neighbour's radiance, the luminance of its mean radiance, times B's visibility of it: Chebyshev
15
15
  * over B's depth moments toward it (`probe_visibility_chebyshev`), its distance in B's spacings held to the depth
16
16
  * limit, as the moments are. A dark neighbour, or one behind a wall, weighs about nothing.
17
17
  * - **The draw**: one by its importance, a reservoir of one through the 26 with a hash of the slot, the update count
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_candidate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js"],"names":[],"mappings":"AA6BA;;GAEG;AACH,uCAFU,YAAY,CAKO;AAqB7B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,6CAFU,aAAa,CAuFpB;6BA9J0B,sCAAsC;8BAHrC,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_candidate.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_candidate.js"],"names":[],"mappings":"AA8BA;;GAEG;AACH,uCAFU,YAAY,CAKO;AAqB7B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,6CAFU,aAAa,CAwFpB;6BA/J0B,sCAAsC;8BAHrC,kCAAkC"}
@@ -1,3 +1,4 @@
1
+ import { chunk_rgb_to_luminance } from "../../../shader/chunk/color/chunk_rgb_to_luminance.js";
1
2
  import { chunk_folded_workgroup_index } from "../../../shader/chunk/grid/chunk_folded_workgroup_index.js";
2
3
  import { chunk_hash_to_float01 } from "../../../shader/chunk/random/chunk_hash_to_float01.js";
3
4
  import { chunk_pcg3d } from "../../../shader/chunk/random/pcg/chunk_pcg3d.js";
@@ -63,7 +64,7 @@ resources.createGroup()
63
64
  * - **The neighbours**: the 26 around B's lattice point in its cascade. One is a candidate if it is ALIVE, its
64
65
  * record holds that point (the storage wraps), and it is listed this frame (`probe_clipmap_listed`), so that its
65
66
  * rays are in `probe_rays`. A NEW one is not. M counts them.
66
- * - **The importance**: the neighbour's radiance, its irradiance's L0 luma, times B's visibility of it: Chebyshev
67
+ * - **The importance**: the neighbour's radiance, the luminance of its mean radiance, times B's visibility of it: Chebyshev
67
68
  * over B's depth moments toward it (`probe_visibility_chebyshev`), its distance in B's spacings held to the depth
68
69
  * limit, as the moments are. A dark neighbour, or one behind a wall, weighs about nothing.
69
70
  * - **The draw**: one by its importance, a reservoir of one through the 26 with a hash of the slot, the update count
@@ -135,7 +136,7 @@ fn main(
135
136
  let distance = length(to_neighbour);
136
137
  let toward = to_neighbour / max(distance, 1e-6);
137
138
  let visibility = probe_visibility_chebyshev(probe_clipmap_depth_moments(slot, toward), min(distance / spacing, ${PROBE_DEPTH_LIMIT}));
138
- let radiance = max(probe_record_sh_decode(probe_records[neighbour].sh).Y.w, 0.0);
139
+ let radiance = rgb_to_luminance(probe_record_mean_radiance(probe_records[neighbour].sh));
139
140
  let importance = radiance * visibility;
140
141
 
141
142
  if (importance <= 0.0) {
@@ -160,6 +161,7 @@ fn main(
160
161
  chunk_probe_clipmap_pick,
161
162
  chunk_probe_clipmap_resample,
162
163
  chunk_folded_workgroup_index,
164
+ chunk_rgb_to_luminance,
163
165
  chunk_hash_to_float01,
164
166
  chunk_pcg3d,
165
167
  ]),
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_diffuse.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js"],"names":[],"mappings":"AAgFA;;;;;;;;GAQG;AACH,2CAFU,WAAW,CAalB;4BAtFyB,gCAAgC"}
1
+ {"version":3,"file":"shader_probe_clipmap_diffuse.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_diffuse.js"],"names":[],"mappings":"AA8EA;;;;;;;;GAQG;AACH,2CAFU,WAAW,CAalB;4BArFyB,gCAAgC"}
@@ -6,11 +6,10 @@ import { ENVIRONMENT_MAP_SAMPLER_RESOURCE } from "../../../light/environment/ENV
6
6
  import { chunk_project_position_from_depth } from "../../../shader/chunk/camera/chunk_project_position_from_depth.js";
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
- import { PI_DECLARATION } from "../../../shader/chunk/math/PI_DECLARATION.js";
10
9
  import { chunk_stbn_sample_vec2 } from "../../../shader/chunk/noise/chunk_stbn_sample_vec2.js";
11
10
  import {
12
- chunk_resolve_irradiance_sh_to_diffuse
13
- } from "../../../shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_diffuse.js";
11
+ chunk_sh3_color_get_irradiance_at
12
+ } from "../../../shader/chunk/spherical_harmonics/chunk_sh3_color_get_irradiance_at.js";
14
13
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
15
14
  import { ImageShader } from "../../../shader/ImageShader.js";
16
15
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
@@ -59,7 +58,7 @@ fn main(
59
58
  var irradiance = get_ibl_irradiance(bent_normal);
60
59
 
61
60
  if (probes.found) {
62
- irradiance = PI * resolve_irradiance_sh_to_diffuse(probes.sh.Y, probes.sh.CoCg, bent_normal);
61
+ irradiance = sh3_color_get_irradiance_at(bent_normal, probes.sh);
63
62
  }
64
63
 
65
64
  // AO baked in at the source, as the IBL pass does, so the resolve need not know which path ran
@@ -73,9 +72,8 @@ fn main(
73
72
  chunk_decode_g_buffer_normal,
74
73
  chunk_stbn_sample_vec2,
75
74
  chunk_probe_clipmap_pick,
76
- chunk_resolve_irradiance_sh_to_diffuse,
75
+ chunk_sh3_color_get_irradiance_at,
77
76
  chunk_get_ibl_irradiance,
78
- PI_DECLARATION,
79
77
  ]);
80
78
 
81
79
  /**
@@ -7,6 +7,8 @@
7
7
  * - A pixel no probe weighs anything for takes the environment's for both.
8
8
  * - The two are resolved as `shader_resolve_indirect_lighting` resolves the IBL pair: AO multiplies the
9
9
  * diffuse, the specular is occluded along its lobe, and the result is added to the scene's colour.
10
+ * - `PROBE_CLIPMAP_INDIRECT_LOBE` decides what is added: both lobes by default; for the mode's indirect debug
11
+ * views, one lobe's light alone, as sampled, before the surface's material and occlusion.
10
12
  *
11
13
  * @type {ImageShader}
12
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_indirect_lighting.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js"],"names":[],"mappings":"AA0IA;;;;;;;;;;;GAWG;AACH,qDAFU,WAAW,CA0BlB;4BAxJyB,gCAAgC"}
1
+ {"version":3,"file":"shader_probe_clipmap_indirect_lighting.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_indirect_lighting.js"],"names":[],"mappings":"AAyIA;;;;;;;;;;;;;GAaG;AACH,qDAFU,WAAW,CA0BlB;4BA1JyB,gCAAgC"}
@@ -14,11 +14,10 @@ import { chunk_compute_indirect_specular } from "../../../shader/chunk/material/
14
14
  import { chunk_decode_g_buffer_metalness } from "../../../shader/chunk/material/chunk_decode_g_buffer_metalness.js";
15
15
  import { chunk_decode_g_buffer_roughness } from "../../../shader/chunk/material/chunk_decode_g_buffer_roughness.js";
16
16
  import { chunk_metalness_to_specular_color } from "../../../shader/chunk/material/chunk_metalness_to_specular_color.js";
17
- import { PI_DECLARATION } from "../../../shader/chunk/math/PI_DECLARATION.js";
18
17
  import { chunk_stbn_sample_vec2 } from "../../../shader/chunk/noise/chunk_stbn_sample_vec2.js";
19
18
  import {
20
- chunk_resolve_irradiance_sh_to_diffuse
21
- } from "../../../shader/chunk/spherical_harmonics/l1i/chunk_resolve_irradiance_sh_to_diffuse.js";
19
+ chunk_sh3_color_get_irradiance_at
20
+ } from "../../../shader/chunk/spherical_harmonics/chunk_sh3_color_get_irradiance_at.js";
22
21
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
23
22
  import { ImageShader } from "../../../shader/ImageShader.js";
24
23
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
@@ -26,6 +25,7 @@ import { ShaderDescriptor } from "../../../shader/ShaderDescriptor.js";
26
25
  import { STBN_VEC2_RESOURCE } from "../../../STATIC_GRAPHICS_ENGINE_ASSET_RESOURCES.js";
27
26
  import { SAMPLER_LINEAR_UPSCALE } from "../../../texture/SAMPLER_LINEAR_UPSCALE.js";
28
27
  import { VIEW_UNIFORM_STRUCT } from "../../../view/VIEW_UNIFORM_STRUCT.js";
28
+ import { chunk_probe_clipmap_indirect_lobe } from "./chunk_probe_clipmap_indirect_lobe.js";
29
29
  import { chunk_probe_clipmap_pick, PROBE_CLIPMAP_SAMPLING_GROUP } from "./chunk_probe_clipmap_pick.js";
30
30
  import { chunk_probe_clipmap_sample_radiance } from "./chunk_probe_clipmap_sample_radiance.js";
31
31
 
@@ -88,8 +88,7 @@ fn main(
88
88
  var radiance: vec3<f32>;
89
89
 
90
90
  if (probes.found) {
91
- // the resolve gives E/π
92
- irradiance = PI * resolve_irradiance_sh_to_diffuse(probes.sh.Y, probes.sh.CoCg, bent_normal);
91
+ irradiance = sh3_color_get_irradiance_at(bent_normal, probes.sh);
93
92
  radiance = probe_clipmap_radiance_of(pick, position, normal, view_direction, surface_roughness).radiance;
94
93
  } else {
95
94
  // a pixel no probe weighs anything for takes the environment's, as the IBL passes give it
@@ -115,7 +114,7 @@ fn main(
115
114
  let spec_direction = normalize(mix(reflect(-view_direction, normal), normal, alpha));
116
115
  let specular_occlusion = compute_specular_occlusion_bn(spec_direction, bent_normal, occlusion, roughness);
117
116
 
118
- return vec4(indirect[0] * specular_occlusion + indirect[1], 1.0);
117
+ return vec4(probe_clipmap_indirect_lobe(indirect[0] * specular_occlusion, indirect[1], radiance, irradiance), 1.0);
119
118
  }
120
119
  `, [
121
120
  chunk_project_position_from_depth,
@@ -128,12 +127,12 @@ fn main(
128
127
  chunk_stbn_sample_vec2,
129
128
  chunk_probe_clipmap_pick,
130
129
  chunk_probe_clipmap_sample_radiance,
131
- chunk_resolve_irradiance_sh_to_diffuse,
130
+ chunk_sh3_color_get_irradiance_at,
132
131
  chunk_get_ibl_irradiance,
133
132
  chunk_get_ibl_radiance,
134
133
  chunk_compute_indirect_specular,
135
134
  chunk_compute_specular_occlusion_bn,
136
- PI_DECLARATION,
135
+ chunk_probe_clipmap_indirect_lobe,
137
136
  ]);
138
137
 
139
138
  /**
@@ -145,6 +144,8 @@ fn main(
145
144
  * - A pixel no probe weighs anything for takes the environment's for both.
146
145
  * - The two are resolved as `shader_resolve_indirect_lighting` resolves the IBL pair: AO multiplies the
147
146
  * diffuse, the specular is occluded along its lobe, and the result is added to the scene's colour.
147
+ * - `PROBE_CLIPMAP_INDIRECT_LOBE` decides what is added: both lobes by default; for the mode's indirect debug
148
+ * views, one lobe's light alone, as sampled, before the surface's material and occlusion.
148
149
  *
149
150
  * @type {ImageShader}
150
151
  */
@@ -2,7 +2,7 @@
2
2
  * The light a front-face hit takes from the local lights (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7): a
3
3
  * thread a ray, after shade through the same launch, `PROBE_DISPATCH_RAYS`, its probe the one trace wrote
4
4
  * into its flags. It adds ρ_d·E_loc/π to the radiance shade left, ρ_d being the albedo shade left in the
5
- * ray's \`row\`; the next bounce, E_ind, is the bounce pass's, after it (`shader_probe_clipmap_bounce`).
5
+ * ray's \`albedo\`; the next bounce, E_ind, is the bounce pass's, after it (`shader_probe_clipmap_bounce`).
6
6
  *
7
7
  * - **E_loc, the local lights**: one of the point and spot lights of the hit's cell of the world light
8
8
  * clusters, built over the bricks' cascades so that every hit has one, at most
@@ -71,7 +71,7 @@ resources.createGroup()
71
71
  * The light a front-face hit takes from the local lights (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.7): a
72
72
  * thread a ray, after shade through the same launch, `PROBE_DISPATCH_RAYS`, its probe the one trace wrote
73
73
  * into its flags. It adds ρ_d·E_loc/π to the radiance shade left, ρ_d being the albedo shade left in the
74
- * ray's \`row\`; the next bounce, E_ind, is the bounce pass's, after it (`shader_probe_clipmap_bounce`).
74
+ * ray's \`albedo\`; the next bounce, E_ind, is the bounce pass's, after it (`shader_probe_clipmap_bounce`).
75
75
  *
76
76
  * - **E_loc, the local lights**: one of the point and spot lights of the hit's cell of the world light
77
77
  * clusters, built over the bricks' cascades so that every hit has one, at most
@@ -216,7 +216,7 @@ fn main(
216
216
  ) {
217
217
  let ray = folded_workgroup_index(workgroup_id) * PROBE_THREAD_WORKGROUP_SIZE + lane;
218
218
  let record = probe_rays[ray];
219
- let albedo = unpack4x8unorm(record.row).rgb;
219
+ let albedo = unpack4x8unorm(record.albedo).rgb;
220
220
  let front_hit = (record.flags & PROBE_RAY_KIND_MASK) == ${BRICK_TRACE_HIT}u && (record.flags & PROBE_RAY_BACK_FACE) == 0u;
221
221
 
222
222
  // only a front-face hit that bounces anything takes more light
@@ -5,8 +5,8 @@ export const PROBE_PROJECT_SETTINGS: WebGPUStruct;
5
5
  /**
6
6
  * Projection, rows (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.8): a thread a row of each listed probe's
7
7
  * radiance map, dispatched through `PROBE_DISPATCH_ROWS`. It sums the row's texels, new and kept, as
8
- * irradiance SH, `convert_to_irradiance_sh(L, ω)·dω/(2π)` over each texel's solid angle, so that the
9
- * resolve gives E/π; the row's rays this update, resolved and back faces; and how far the update's
8
+ * RGB radiance SH3, `L·Y(ω)·dω` over each texel's solid angle, so that `sh3_color_get_irradiance_at` gives
9
+ * E; the row's rays this update, resolved and back faces; and how far the update's
10
10
  * samples fell from their means, with that sum's variance. One row of the probe's projection each, which
11
11
  * the probe's pass sums.
12
12
  *
@@ -15,7 +15,8 @@ export const PROBE_PROJECT_SETTINGS: WebGPUStruct;
15
15
  export const shader_probe_clipmap_project_rows: ComputeShader;
16
16
  /**
17
17
  * Projection, probes (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.4, §8.8): a thread a listed probe,
18
- * dispatched through `PROBE_DISPATCH_TRACED`. It sums its rows into its record's SH, and classifies it
18
+ * dispatched through `PROBE_DISPATCH_TRACED`. It sums its rows into its record's SH (`probe_record_sh_encode`),
19
+ * and classifies it
19
20
  * by the update's resolved rays: dead when every one hit a back face, else alive, its update counted and
20
21
  * its time the frame's. An update with no resolved ray keeps the probe's kind.
21
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_project.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js"],"names":[],"mappings":"AAoCA;;GAEG;AACH,qCAFU,YAAY,CAmBK;AAW3B;;;;;;;;;GASG;AACH,gDAFU,aAAa,CAuDpB;AAcH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,2CAFU,aAAa,CA4FpB;6BAzP0B,sCAAsC;8BAHrC,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_project.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_project.js"],"names":[],"mappings":"AAmCA;;GAEG;AACH,qCAFU,YAAY,CAmBK;AAW3B;;;;;;;;;GASG;AACH,gDAFU,aAAa,CAsDpB;AAcH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,2CAFU,aAAa,CA8FpB;6BA3P0B,sCAAsC;8BAHrC,kCAAkC"}
@@ -5,9 +5,8 @@ import {
5
5
  chunk_uv_octahedral_unit_decode
6
6
  } from "../../../shader/chunk/geometry/octahedron/chunk_uv_octahedral_unit_decode.js";
7
7
  import { chunk_folded_workgroup_index } from "../../../shader/chunk/grid/chunk_folded_workgroup_index.js";
8
- import {
9
- chunk_convert_to_irradiance_sh
10
- } from "../../../shader/chunk/spherical_harmonics/l1i/chunk_convert_to_irradiance_sh.js";
8
+ import { chunk_sh3_basis_at } from "../../../shader/chunk/spherical_harmonics/chunk_sh3_basis_at.js";
9
+ import { chunk_sh3_color_accumulate } from "../../../shader/chunk/spherical_harmonics/chunk_sh3_color_accumulate.js";
11
10
  import { CodeChunk } from "../../../shader/compiler/CodeChunk.js";
12
11
  import { ComputeShader } from "../../../shader/ComputeShader.js";
13
12
  import { ShaderResourceSetDescriptor } from "../../../shader/resource/ShaderResourceSetDescriptor.js";
@@ -68,8 +67,8 @@ row_resources.createGroup()
68
67
  /**
69
68
  * Projection, rows (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.8): a thread a row of each listed probe's
70
69
  * radiance map, dispatched through `PROBE_DISPATCH_ROWS`. It sums the row's texels, new and kept, as
71
- * irradiance SH, `convert_to_irradiance_sh(L, ω)·dω/(2π)` over each texel's solid angle, so that the
72
- * resolve gives E/π; the row's rays this update, resolved and back faces; and how far the update's
70
+ * RGB radiance SH3, `L·Y(ω)·dω` over each texel's solid angle, so that `sh3_color_get_irradiance_at` gives
71
+ * E; the row's rays this update, resolved and back faces; and how far the update's
73
72
  * samples fell from their means, with that sum's variance. One row of the probe's projection each, which
74
73
  * the probe's pass sums.
75
74
  *
@@ -105,13 +104,11 @@ fn main(
105
104
  let i = row * n + x;
106
105
  let light = vec3<f32>(unpack2x16float(probe_maps[maps + 2u * i]), unpack2x16float(probe_maps[maps + 2u * i + 1u]).x);
107
106
  let uv = (vec2<f32>(f32(x), f32(row)) + 0.5) * inverse;
108
- let weight = octahedral_solid_angle(uv, inverse) * ${(0.5 / Math.PI).toPrecision(17)};
109
- let sh = convert_to_irradiance_sh(light, uv_octahedral_unit_decode(uv));
107
+ let solid_angle = octahedral_solid_angle(uv, inverse);
110
108
  let rays = probe_maps[maps + 2u * texels + i];
111
109
  let change = unpack2x16float(probe_maps[maps + 3u * texels + settings.depth_resolution * settings.depth_resolution + i]);
112
110
 
113
- row_sum.sh.CoCg += sh.CoCg * weight;
114
- row_sum.sh.Y += sh.Y * weight;
111
+ sh3_color_accumulate(&row_sum.sh, light * solid_angle, sh3_basis_at(uv_octahedral_unit_decode(uv)));
115
112
  row_sum.resolved += rays & 0xFFFFu;
116
113
  row_sum.back_faces += rays >> 16u;
117
114
  row_sum.change += change.x;
@@ -125,7 +122,8 @@ fn main(
125
122
  chunk_folded_workgroup_index,
126
123
  chunk_octahedral_solid_angle,
127
124
  chunk_uv_octahedral_unit_decode,
128
- chunk_convert_to_irradiance_sh,
125
+ chunk_sh3_basis_at,
126
+ chunk_sh3_color_accumulate,
129
127
  PROBE_PROJECTION_ROW_STRUCT.declaration_chunk,
130
128
  ]),
131
129
  });
@@ -144,7 +142,8 @@ probe_resources.createGroup()
144
142
 
145
143
  /**
146
144
  * Projection, probes (PROBE_CLIPMAP_PROPOSAL_2026_10_27.md §8.4, §8.8): a thread a listed probe,
147
- * dispatched through `PROBE_DISPATCH_TRACED`. It sums its rows into its record's SH, and classifies it
145
+ * dispatched through `PROBE_DISPATCH_TRACED`. It sums its rows into its record's SH (`probe_record_sh_encode`),
146
+ * and classifies it
148
147
  * by the update's resolved rays: dead when every one hit a back face, else alive, its update counted and
149
148
  * its time the frame's. An update with no resolved ray keeps the probe's kind.
150
149
  *
@@ -196,8 +195,10 @@ fn main(
196
195
  for (var row = 0u; row < n; row++) {
197
196
  let part = probe_projection[k * n + row];
198
197
 
199
- sum.sh.CoCg += part.sh.CoCg;
200
- sum.sh.Y += part.sh.Y;
198
+ for (var c = 0u; c < 9u; c++) {
199
+ sum.sh[c] += part.sh[c];
200
+ }
201
+
201
202
  sum.resolved += part.resolved;
202
203
  sum.back_faces += part.back_faces;
203
204
  sum.change += part.change;
@@ -10,13 +10,16 @@
10
10
  * 4πm²·(1 − (1 − e^(−k))/k), k = 2/m²: m = 1/n_r to 0.2% at n_r = 16, so the roughness is 1/√n_r. A sun
11
11
  * a few texels wide at level 0 is then a lobe a texel wide, which a texel's jittered rays all see,
12
12
  * rather than a point that only some probes' jitter ever lands on;
13
- * - a **front-face hit** is `emissive + ρ_d·E_dir/π` (D7), its surface from `probe_clipmap_hit_surface`
14
- * at the hit's position, the probe's origin plus t along the ray, with the hit's normal, at its
15
- * cascade's voxel; E_dir is what trace left in the light;
13
+ * - a **front-face hit** is `emissive + ρ_d·E_dir/π` (D7), its surface from
14
+ * `probe_clipmap_hit_material_pick` at the hit's position, the probe's origin plus t along the ray,
15
+ * with the hit's normal, in its cascade: one texel of the brick material there, drawn from the ray's
16
+ * slot and direction, fresh every update and apart from the light pass's draws, in proportion to its
17
+ * weight in the texels' blend, which the probe's blend of its rays so takes on average; E_dir is what
18
+ * trace left in the light;
16
19
  * - an **unresolved** ray and a **back face** bring nothing back: accumulation discards the one and
17
20
  * counts the other (§8.4, §8.8).
18
21
  *
19
- * A front-face hit's diffuse albedo goes over its `row`, `pack4x8unorm`, and every other ray's row to
22
+ * A front-face hit's diffuse albedo goes into its `albedo`, `pack4x8unorm`, and every other ray's to
20
23
  * zero: the light pass adds ρ_d·(E_loc + E_ind)/π after it (S5).
21
24
  *
22
25
  * @type {ComputeShader}
@@ -1 +1 @@
1
- {"version":3,"file":"shader_probe_clipmap_shade.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js"],"names":[],"mappings":"AAuDA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,yCAFU,aAAa,CAyDpB;8BAlH2B,kCAAkC"}
1
+ {"version":3,"file":"shader_probe_clipmap_shade.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/global_illumination/probe_clipmap/probe/shader_probe_clipmap_shade.js"],"names":[],"mappings":"AAqDA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,yCAFU,aAAa,CA4DpB;8BA7H2B,kCAAkC"}