@woosh/meep-engine 3.49.0 → 3.51.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 (1442) hide show
  1. package/build/bundle-worker-terrain.js +1 -1
  2. package/editor/particles/effect/ParticleReferenceSimulation.d.ts +11 -0
  3. package/editor/particles/effect/ParticleReferenceSimulation.d.ts.map +1 -1
  4. package/editor/particles/effect/ParticleReferenceSimulation.js +28 -0
  5. package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
  6. package/editor/view/particles/effect/ParticleGraphEditorView.js +2 -0
  7. package/package.json +1 -1
  8. package/src/core/color/xyz/m3_rgb_to_xyz_from_primaries.d.ts +11 -0
  9. package/src/core/color/xyz/m3_rgb_to_xyz_from_primaries.d.ts.map +1 -0
  10. package/src/core/color/xyz/m3_rgb_to_xyz_from_primaries.js +40 -0
  11. package/src/core/geom/3d/mat4/m4_decompose_rigid_array.d.ts +24 -0
  12. package/src/core/geom/3d/mat4/m4_decompose_rigid_array.d.ts.map +1 -0
  13. package/src/core/geom/3d/mat4/m4_decompose_rigid_array.js +80 -0
  14. package/src/core/geom/3d/shape/PosedShape3D.d.ts +10 -0
  15. package/src/core/geom/3d/shape/PosedShape3D.d.ts.map +1 -1
  16. package/src/core/geom/3d/shape/PosedShape3D.js +50 -11
  17. package/src/core/geom/3d/shape/TransformedShape3D.d.ts +37 -0
  18. package/src/core/geom/3d/shape/TransformedShape3D.d.ts.map +1 -1
  19. package/src/core/geom/3d/shape/TransformedShape3D.js +73 -49
  20. package/src/core/geom/3d/shape/UnionShape3D.d.ts +13 -0
  21. package/src/core/geom/3d/shape/UnionShape3D.d.ts.map +1 -1
  22. package/src/core/geom/3d/shape/UnionShape3D.js +17 -4
  23. package/src/core/geom/3d/shape/record/ShapeRecord.d.ts +65 -0
  24. package/src/core/geom/3d/shape/record/ShapeRecord.d.ts.map +1 -0
  25. package/src/core/geom/3d/shape/record/ShapeRecord.js +72 -0
  26. package/src/core/geom/3d/shape/record/ShapeRecordKind.d.ts +13 -0
  27. package/src/core/geom/3d/shape/record/ShapeRecordKind.d.ts.map +1 -0
  28. package/src/core/geom/3d/shape/record/ShapeRecordKind.js +39 -0
  29. package/src/core/geom/3d/shape/record/shape_record_local_bounds.d.ts +19 -0
  30. package/src/core/geom/3d/shape/record/shape_record_local_bounds.d.ts.map +1 -0
  31. package/src/core/geom/3d/shape/record/shape_record_local_bounds.js +61 -0
  32. package/src/core/geom/3d/shape/record/shape_record_pack.d.ts +88 -0
  33. package/src/core/geom/3d/shape/record/shape_record_pack.d.ts.map +1 -0
  34. package/src/core/geom/3d/shape/record/shape_record_pack.js +418 -0
  35. package/src/core/geom/3d/shape/record/shape_record_pack_bounding_box.d.ts +23 -0
  36. package/src/core/geom/3d/shape/record/shape_record_pack_bounding_box.d.ts.map +1 -0
  37. package/src/core/geom/3d/shape/record/shape_record_pack_bounding_box.js +69 -0
  38. package/src/core/geom/3d/shape/record/shape_record_signed_distance.d.ts +52 -0
  39. package/src/core/geom/3d/shape/record/shape_record_signed_distance.d.ts.map +1 -0
  40. package/src/core/geom/3d/shape/record/shape_record_signed_distance.js +135 -0
  41. package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts +7 -0
  42. package/src/core/geom/3d/shape/sdf/sdf3_plane.d.ts.map +1 -1
  43. package/src/core/geom/3d/shape/sdf/sdf3_plane.js +7 -0
  44. package/src/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.d.ts +3 -0
  45. package/src/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.d.ts.map +1 -1
  46. package/src/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.js +19 -13
  47. package/src/core/geom/clipmap/ClipmapWindowSet.d.ts +141 -0
  48. package/src/core/geom/clipmap/ClipmapWindowSet.d.ts.map +1 -0
  49. package/src/core/geom/clipmap/ClipmapWindowSet.js +301 -0
  50. package/src/core/geom/clipmap/clipmap_select_finest.d.ts +20 -0
  51. package/src/core/geom/clipmap/clipmap_select_finest.d.ts.map +1 -0
  52. package/src/core/geom/clipmap/clipmap_select_finest.js +53 -0
  53. package/src/core/geom/clipmap/quantize_hysteretic.d.ts +22 -0
  54. package/src/core/geom/clipmap/quantize_hysteretic.d.ts.map +1 -0
  55. package/src/core/geom/clipmap/quantize_hysteretic.js +33 -0
  56. package/src/core/geom/clipmap/window_scroll_regions.d.ts +25 -0
  57. package/src/core/geom/clipmap/window_scroll_regions.d.ts.map +1 -0
  58. package/src/core/geom/clipmap/window_scroll_regions.js +83 -0
  59. package/src/core/geom/vec3/v3_clamp_to_cone.d.ts +59 -0
  60. package/src/core/geom/vec3/v3_clamp_to_cone.d.ts.map +1 -0
  61. package/src/core/geom/vec3/v3_clamp_to_cone.js +197 -0
  62. package/src/core/math/falloff_quadratic.d.ts +13 -0
  63. package/src/core/math/falloff_quadratic.d.ts.map +1 -0
  64. package/src/core/math/falloff_quadratic.js +20 -0
  65. package/src/core/math/physics/fluid/vortex_swirl.d.ts +40 -0
  66. package/src/core/math/physics/fluid/vortex_swirl.d.ts.map +1 -0
  67. package/src/core/math/physics/fluid/vortex_swirl.js +91 -0
  68. package/src/core/math/physics/kinematics/rigid_velocity_at_point.d.ts +27 -0
  69. package/src/core/math/physics/kinematics/rigid_velocity_at_point.d.ts.map +1 -0
  70. package/src/core/math/physics/kinematics/rigid_velocity_at_point.js +40 -0
  71. package/src/engine/EngineHarness.d.ts.map +1 -1
  72. package/src/engine/EngineHarness.js +6 -0
  73. package/src/engine/ecs/EntityComponentDataset.d.ts +48 -4
  74. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  75. package/src/engine/ecs/EntityComponentDataset.js +120 -11
  76. package/src/engine/ecs/fow/FogOfWarVisibilityPredicate.d.ts.map +1 -1
  77. package/src/engine/ecs/fow/FogOfWarVisibilityPredicate.js +1 -3
  78. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  79. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +2 -0
  80. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  81. package/src/engine/ecs/terrain/util/obtainTerrain.js +5 -0
  82. package/src/engine/graphics/ecs/water/WaterWaves.d.ts +8 -21
  83. package/src/engine/graphics/ecs/water/WaterWaves.d.ts.map +1 -1
  84. package/src/engine/graphics/ecs/water/WaterWaves.js +8 -31
  85. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts +4 -0
  86. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.d.ts.map +1 -1
  87. package/src/engine/graphics/ecs/water/WaterWavesSerializationAdapter.js +5 -5
  88. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_1_2.d.ts +9 -0
  89. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_1_2.d.ts.map +1 -0
  90. package/src/engine/graphics/ecs/water/WaterWavesSerializationUpgrader_1_2.js +19 -0
  91. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts +21 -0
  92. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.d.ts.map +1 -1
  93. package/src/engine/graphics/texture/3d/scs3d_sample_linear3.js +78 -0
  94. package/src/engine/graphics3/GPUFluidSystem.d.ts +266 -0
  95. package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -0
  96. package/src/engine/graphics3/GPUFluidSystem.js +1613 -0
  97. package/src/engine/graphics3/ParticipatingMedia.d.ts +6 -0
  98. package/src/engine/graphics3/ParticipatingMedia.d.ts.map +1 -1
  99. package/src/engine/graphics3/ParticipatingMedia.js +6 -0
  100. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts +32 -22
  101. package/src/engine/graphics3/ParticipatingMediaSystem.d.ts.map +1 -1
  102. package/src/engine/graphics3/ParticipatingMediaSystem.js +218 -70
  103. package/src/engine/graphics3/WaterSystem.d.ts +9 -2
  104. package/src/engine/graphics3/WaterSystem.d.ts.map +1 -1
  105. package/src/engine/graphics3/WaterSystem.js +53 -15
  106. package/src/engine/graphics3/make_default_environment.d.ts.map +1 -1
  107. package/src/engine/graphics3/make_default_environment.js +11 -5
  108. package/src/engine/physics/cloth/MEASUREMENTS.md +39 -0
  109. package/src/engine/physics/cloth/PLAN.md +21 -2
  110. package/src/engine/physics/cloth/collider/ClothColliderKind.d.ts.map +1 -1
  111. package/src/engine/physics/cloth/collider/ClothColliderKind.js +14 -7
  112. package/src/engine/physics/cloth/collider/ClothColliderRecord.d.ts +19 -5
  113. package/src/engine/physics/cloth/collider/ClothColliderRecord.d.ts.map +1 -1
  114. package/src/engine/physics/cloth/collider/ClothColliderRecord.js +28 -5
  115. package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts +3 -2
  116. package/src/engine/physics/cloth/collider/cloth_collider_pack.d.ts.map +1 -1
  117. package/src/engine/physics/cloth/collider/cloth_collider_pack.js +26 -108
  118. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts +6 -5
  119. package/src/engine/physics/cloth/collider/cloth_collider_sdf.d.ts.map +1 -1
  120. package/src/engine/physics/cloth/collider/cloth_collider_sdf.js +18 -28
  121. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +6 -9
  122. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
  123. package/src/engine/physics/cloth/ecs/ClothInstance.js +6 -9
  124. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +3 -2
  125. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
  126. package/src/engine/physics/cloth/ecs/ClothSystem.js +3 -2
  127. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts +38 -28
  128. package/src/engine/physics/cloth/ecs/ClothWorld.d.ts.map +1 -1
  129. package/src/engine/physics/cloth/ecs/ClothWorld.js +136 -28
  130. package/src/engine/physics/cloth/playground/README.md +8 -4
  131. package/src/engine/physics/cloth/playground/wind.html +4 -4
  132. package/src/engine/physics/cloth/playground/wind_build.d.ts +3 -2
  133. package/src/engine/physics/cloth/playground/wind_build.d.ts.map +1 -1
  134. package/src/engine/physics/cloth/playground/wind_build.js +4 -3
  135. package/src/engine/physics/cloth/playground/wind_main.js +58 -19
  136. package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts +36 -35
  137. package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts.map +1 -1
  138. package/src/engine/physics/cloth/wind/AbstractClothWind.js +36 -35
  139. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +46 -25
  140. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
  141. package/src/engine/physics/cloth/wind/ClothFluidWind.js +70 -30
  142. package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts +96 -0
  143. package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts.map +1 -0
  144. package/src/engine/physics/cloth/wind/ClothGPUFluidWind.js +441 -0
  145. package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts +9 -7
  146. package/src/engine/physics/cloth/wind/cloth_sample_air.d.ts.map +1 -1
  147. package/src/engine/physics/cloth/wind/cloth_sample_air.js +9 -7
  148. package/src/engine/physics/ecs/ColliderObserverSystem.d.ts +1 -1
  149. package/src/engine/physics/ecs/PhysicsSystem.d.ts +1 -1
  150. package/src/engine/physics/fluid/FluidAtmosphere.d.ts +80 -0
  151. package/src/engine/physics/fluid/FluidAtmosphere.d.ts.map +1 -0
  152. package/src/engine/physics/fluid/FluidAtmosphere.js +78 -0
  153. package/src/engine/physics/fluid/FluidField.d.ts +14 -2
  154. package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
  155. package/src/engine/physics/fluid/FluidField.js +26 -6
  156. package/src/engine/physics/fluid/FluidSimulator.d.ts +5 -1
  157. package/src/engine/physics/fluid/FluidSimulator.d.ts.map +1 -1
  158. package/src/engine/physics/fluid/FluidSimulator.js +13 -2
  159. package/src/engine/physics/fluid/GPU_FLUID_CASCADES_PROPOSAL_2026_10_16.md +1382 -0
  160. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts +10 -4
  161. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.d.ts.map +1 -1
  162. package/src/engine/physics/fluid/ecs/FluidEffectorsComponent.js +13 -4
  163. package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts +47 -0
  164. package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts.map +1 -0
  165. package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.js +72 -0
  166. package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts +67 -0
  167. package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts.map +1 -0
  168. package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.js +307 -0
  169. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +6 -6
  170. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  171. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +24 -13
  172. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  173. package/src/engine/physics/fluid/ecs/FluidSystem.js +79 -15
  174. package/src/engine/physics/fluid/ecs/FluidWorkerCore.d.ts.map +1 -1
  175. package/src/engine/physics/fluid/ecs/FluidWorkerCore.js +17 -5
  176. package/src/engine/physics/fluid/ecs/GPUFluidComponent.d.ts +82 -0
  177. package/src/engine/physics/fluid/ecs/GPUFluidComponent.d.ts.map +1 -0
  178. package/src/engine/physics/fluid/ecs/GPUFluidComponent.js +124 -0
  179. package/src/engine/physics/fluid/ecs/GPUFluidComponentSerializationAdapter.d.ts +30 -0
  180. package/src/engine/physics/fluid/ecs/GPUFluidComponentSerializationAdapter.d.ts.map +1 -0
  181. package/src/engine/physics/fluid/ecs/GPUFluidComponentSerializationAdapter.js +51 -0
  182. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts +19 -10
  183. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.d.ts.map +1 -1
  184. package/src/engine/physics/fluid/ecs/WorkerFluidSystem.js +64 -14
  185. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.d.ts +4 -1
  186. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.d.ts.map +1 -1
  187. package/src/engine/physics/fluid/ecs/fluid_gather_visible_effectors.js +9 -1
  188. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts +1 -0
  189. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.d.ts.map +1 -1
  190. package/src/engine/physics/fluid/ecs/fluid_reanchor_field.js +9 -7
  191. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts +5 -3
  192. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.d.ts.map +1 -1
  193. package/src/engine/physics/fluid/ecs/fluid_sync_effectors_from_transform.js +5 -3
  194. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.d.ts +20 -2
  195. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.d.ts.map +1 -1
  196. package/src/engine/physics/fluid/ecs/fluid_worker_protocol.js +34 -6
  197. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +46 -3
  198. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts.map +1 -1
  199. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +53 -3
  200. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +73 -13
  201. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  202. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +207 -88
  203. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts +35 -0
  204. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts.map +1 -0
  205. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.js +72 -0
  206. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts +34 -10
  207. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
  208. package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +139 -150
  209. package/src/engine/physics/fluid/effector/ImpulseFluidEffectorSerializationAdapter.d.ts +26 -0
  210. package/src/engine/physics/fluid/effector/ImpulseFluidEffectorSerializationAdapter.d.ts.map +1 -0
  211. package/src/engine/physics/fluid/effector/ImpulseFluidEffectorSerializationAdapter.js +51 -0
  212. package/src/engine/physics/fluid/effector/VortexFluidEffector.d.ts +55 -0
  213. package/src/engine/physics/fluid/effector/VortexFluidEffector.d.ts.map +1 -0
  214. package/src/engine/physics/fluid/effector/VortexFluidEffector.js +255 -0
  215. package/src/engine/physics/fluid/effector/VortexFluidEffectorSerializationAdapter.d.ts +25 -0
  216. package/src/engine/physics/fluid/effector/VortexFluidEffectorSerializationAdapter.d.ts.map +1 -0
  217. package/src/engine/physics/fluid/effector/VortexFluidEffectorSerializationAdapter.js +52 -0
  218. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts +22 -20
  219. package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
  220. package/src/engine/physics/fluid/effector/WakeFluidEffector.js +181 -185
  221. package/src/engine/physics/fluid/effector/WakeFluidEffectorSerializationAdapter.d.ts +31 -0
  222. package/src/engine/physics/fluid/effector/WakeFluidEffectorSerializationAdapter.d.ts.map +1 -0
  223. package/src/engine/physics/fluid/effector/WakeFluidEffectorSerializationAdapter.js +56 -0
  224. package/src/engine/physics/fluid/effector/record/FLUID_EFFECTOR_RECORD_STRUCT.d.ts +52 -0
  225. package/src/engine/physics/fluid/effector/record/FLUID_EFFECTOR_RECORD_STRUCT.d.ts.map +1 -0
  226. package/src/engine/physics/fluid/effector/record/FLUID_EFFECTOR_RECORD_STRUCT.js +68 -0
  227. package/src/engine/physics/fluid/effector/record/FluidEffectorRecordKind.d.ts +10 -0
  228. package/src/engine/physics/fluid/effector/record/FluidEffectorRecordKind.d.ts.map +1 -0
  229. package/src/engine/physics/fluid/effector/record/FluidEffectorRecordKind.js +31 -0
  230. package/src/engine/physics/fluid/effector/record/chunk_fluid_effector_record_deposit.d.ts +25 -0
  231. package/src/engine/physics/fluid/effector/record/chunk_fluid_effector_record_deposit.d.ts.map +1 -0
  232. package/src/engine/physics/fluid/effector/record/chunk_fluid_effector_record_deposit.js +105 -0
  233. package/src/engine/physics/fluid/effector/record/chunk_fluid_effector_record_resolve.d.ts +17 -0
  234. package/src/engine/physics/fluid/effector/record/chunk_fluid_effector_record_resolve.d.ts.map +1 -0
  235. package/src/engine/physics/fluid/effector/record/chunk_fluid_effector_record_resolve.js +47 -0
  236. package/src/engine/physics/fluid/effector/record/fluid_effector_record_create.d.ts +54 -0
  237. package/src/engine/physics/fluid/effector/record/fluid_effector_record_create.d.ts.map +1 -0
  238. package/src/engine/physics/fluid/effector/record/fluid_effector_record_create.js +34 -0
  239. package/src/engine/physics/fluid/effector/record/fluid_effector_record_deposit.d.ts +98 -0
  240. package/src/engine/physics/fluid/effector/record/fluid_effector_record_deposit.d.ts.map +1 -0
  241. package/src/engine/physics/fluid/effector/record/fluid_effector_record_deposit.js +409 -0
  242. package/src/engine/physics/fluid/effector/record/fluid_effector_record_resolve.d.ts +25 -0
  243. package/src/engine/physics/fluid/effector/record/fluid_effector_record_resolve.d.ts.map +1 -0
  244. package/src/engine/physics/fluid/effector/record/fluid_effector_record_resolve.js +78 -0
  245. package/src/engine/physics/fluid/effector/record/fluid_record_apply.d.ts +27 -0
  246. package/src/engine/physics/fluid/effector/record/fluid_record_apply.d.ts.map +1 -0
  247. package/src/engine/physics/fluid/effector/record/fluid_record_apply.js +151 -0
  248. package/src/engine/physics/fluid/fluid_apply_atmosphere.d.ts +42 -0
  249. package/src/engine/physics/fluid/fluid_apply_atmosphere.d.ts.map +1 -0
  250. package/src/engine/physics/fluid/fluid_apply_atmosphere.js +148 -0
  251. package/src/engine/physics/fluid/fluid_atmosphere_to_grid.d.ts +16 -0
  252. package/src/engine/physics/fluid/fluid_atmosphere_to_grid.d.ts.map +1 -0
  253. package/src/engine/physics/fluid/fluid_atmosphere_to_grid.js +47 -0
  254. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts +32 -0
  255. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts.map +1 -0
  256. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js +50 -0
  257. package/src/engine/physics/fluid/obstacle/chunk_fluid_obstacle_record.d.ts +24 -0
  258. package/src/engine/physics/fluid/obstacle/chunk_fluid_obstacle_record.d.ts.map +1 -0
  259. package/src/engine/physics/fluid/obstacle/chunk_fluid_obstacle_record.js +61 -0
  260. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts +58 -0
  261. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts.map +1 -0
  262. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js +35 -0
  263. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_evaluate.d.ts +34 -0
  264. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_evaluate.d.ts.map +1 -0
  265. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_evaluate.js +90 -0
  266. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_extent.d.ts +17 -0
  267. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_extent.d.ts.map +1 -0
  268. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_extent.js +44 -0
  269. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts +98 -0
  270. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts.map +1 -0
  271. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js +281 -0
  272. package/src/engine/physics/fluid/prototype.js +2 -0
  273. package/src/engine/physics/narrowphase/rigid_subject_pose.d.ts.map +1 -1
  274. package/src/engine/physics/narrowphase/rigid_subject_pose.js +3 -43
  275. package/src/generation/markers/actions/terrain/MarkerNodeActionPaintTerrain.js +4 -4
  276. package/src/shade/assets/textures/split_sum.bin +0 -0
  277. package/src/shade/device/ShadeGPUCommandContext.d.ts +20 -0
  278. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  279. package/src/shade/device/ShadeGPUCommandContext.js +25 -8
  280. package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts +6 -2
  281. package/src/shade/device/mock/SoftwareGPUComputePassEncoder.d.ts.map +1 -1
  282. package/src/shade/device/mock/SoftwareGPUComputePassEncoder.js +7 -3
  283. package/src/shade/playground/avboit/main.d.ts.map +1 -1
  284. package/src/shade/playground/avboit/main.js +9 -6
  285. package/src/shade/playground/particle_ecs/README.md +20 -0
  286. package/src/shade/playground/particle_ecs/bonfire_effects.d.ts +10 -0
  287. package/src/shade/playground/particle_ecs/bonfire_effects.d.ts.map +1 -1
  288. package/src/shade/playground/particle_ecs/bonfire_effects.js +10 -0
  289. package/src/shade/playground/particle_ecs/bonfire_wind.d.ts +48 -0
  290. package/src/shade/playground/particle_ecs/bonfire_wind.d.ts.map +1 -0
  291. package/src/shade/playground/particle_ecs/bonfire_wind.js +83 -0
  292. package/src/shade/playground/particle_ecs/effects/embers.json +1695 -1633
  293. package/src/shade/playground/particle_ecs/effects/flame.json +63 -1
  294. package/src/shade/playground/particle_ecs/effects/smoke.json +14 -14
  295. package/src/shade/playground/particle_ecs/effects/soot.json +63 -1
  296. package/src/shade/playground/particle_ecs/index.html +21 -0
  297. package/src/shade/playground/particle_ecs/main.js +35 -1
  298. package/src/shade/playground/particle_ecs/moonlit_environment.d.ts.map +1 -1
  299. package/src/shade/playground/particle_ecs/moonlit_environment.js +11 -5
  300. package/src/shade/playground/path_traced_media/main.js +12 -10
  301. package/src/shade/playground/render_submitted_frames.d.ts +20 -0
  302. package/src/shade/playground/render_submitted_frames.d.ts.map +1 -0
  303. package/src/shade/playground/render_submitted_frames.js +29 -0
  304. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.d.ts.map +1 -1
  305. package/src/shade/playground/sh_exponential/sh_exp_playground_shaders.js +3 -1
  306. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
  307. package/src/shade/playground/skinned_blas_refit/main.js +4 -6
  308. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
  309. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +267 -270
  310. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  311. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +3 -6
  312. package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
  313. package/src/shade/playground/skinned_mesh_soup/main.js +4 -5
  314. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +438 -438
  315. package/src/shade/playground/ssr_motion/README.md +24 -22
  316. package/src/shade/playground/ssr_motion/main.js +150 -149
  317. package/src/shade/playground/ssr_reprojection/SpatialFilterProbe.js +1 -1
  318. package/src/shade/playground/ssr_reprojection/main.js +5 -3
  319. package/src/shade/playground/ssr_variance/capture.js +1 -1
  320. package/src/shade/playground/ssr_variance/main.js +247 -246
  321. package/src/shade/playground/submit_frame.d.ts +25 -0
  322. package/src/shade/playground/submit_frame.d.ts.map +1 -0
  323. package/src/shade/playground/submit_frame.js +36 -0
  324. package/src/shade/playground/tonemap_sdr/README.md +1 -1
  325. package/src/shade/playground/tonemap_sdr/ToneMapCompare.d.ts.map +1 -1
  326. package/src/shade/playground/tonemap_sdr/ToneMapCompare.js +13 -4
  327. package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
  328. package/src/shade/playground/volumetrics_froxel/main.js +7 -1
  329. package/src/shade/playground/water_refraction/README.md +4 -2
  330. package/src/shade/playground/water_refraction/main.js +19 -3
  331. package/src/shade/playground/water_refraction/world.d.ts.map +1 -1
  332. package/src/shade/playground/water_refraction/world.js +2 -1
  333. package/src/shade/playground/water_surface/README.md +15 -7
  334. package/src/shade/playground/water_surface/index.html +2 -1
  335. package/src/shade/playground/water_surface/main.js +39 -7
  336. package/src/shade/playground/water_surface/world.d.ts +2 -5
  337. package/src/shade/playground/water_surface/world.d.ts.map +1 -1
  338. package/src/shade/playground/water_surface/world.js +9 -8
  339. package/src/shade/renderer/INDIRECT_LIGHTING.d.ts +13 -0
  340. package/src/shade/renderer/INDIRECT_LIGHTING.d.ts.map +1 -0
  341. package/src/shade/renderer/INDIRECT_LIGHTING.js +14 -0
  342. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  343. package/src/shade/renderer/Renderer.js +68 -61
  344. package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSET_RESOURCES.d.ts +17 -0
  345. package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSET_RESOURCES.d.ts.map +1 -0
  346. package/src/shade/renderer/STATIC_GRAPHICS_ENGINE_ASSET_RESOURCES.js +19 -0
  347. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts +3 -0
  348. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.d.ts.map +1 -1
  349. package/src/shade/renderer/atmosphere/chunk_sample_environment_color.js +11 -8
  350. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts +6 -0
  351. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.d.ts.map +1 -1
  352. package/src/shade/renderer/atmosphere/shader_sky_irradiance_lut.js +227 -215
  353. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  354. package/src/shade/renderer/buffer/table/GPUDatabase.js +7 -4
  355. package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts +32 -2
  356. package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts.map +1 -1
  357. package/src/shade/renderer/buffer/table/GPUDatabaseReadback.js +231 -62
  358. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +12 -0
  359. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  360. package/src/shade/renderer/buffer/table/GPUTypedTable.js +51 -14
  361. package/src/shade/renderer/camera/CAMERA_RESOURCE.d.ts +7 -0
  362. package/src/shade/renderer/camera/CAMERA_RESOURCE.d.ts.map +1 -0
  363. package/src/shade/renderer/camera/CAMERA_RESOURCE.js +8 -0
  364. package/src/shade/renderer/deferred/GBUFFER_RESOURCES.d.ts +22 -0
  365. package/src/shade/renderer/deferred/GBUFFER_RESOURCES.d.ts.map +1 -0
  366. package/src/shade/renderer/deferred/GBUFFER_RESOURCES.js +25 -0
  367. package/src/shade/renderer/deferred/LOCAL_LIGHT_SHADING.d.ts +12 -0
  368. package/src/shade/renderer/deferred/LOCAL_LIGHT_SHADING.d.ts.map +1 -0
  369. package/src/shade/renderer/deferred/LOCAL_LIGHT_SHADING.js +13 -0
  370. package/src/shade/renderer/deferred/LocalLightShading.d.ts +10 -0
  371. package/src/shade/renderer/deferred/LocalLightShading.d.ts.map +1 -0
  372. package/src/shade/renderer/deferred/LocalLightShading.js +12 -0
  373. package/src/shade/renderer/deferred/SHADING_LIGHT_RESOURCE_GROUP.d.ts.map +1 -1
  374. package/src/shade/renderer/deferred/SHADING_LIGHT_RESOURCE_GROUP.js +17 -11
  375. package/src/shade/renderer/deferred/TonemapDisplaySettings.d.ts +50 -0
  376. package/src/shade/renderer/deferred/TonemapDisplaySettings.d.ts.map +1 -0
  377. package/src/shade/renderer/deferred/TonemapDisplaySettings.js +142 -0
  378. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.d.ts.map +1 -1
  379. package/src/shade/renderer/deferred/chunk_read_gBuffer_material.js +6 -1
  380. package/src/shade/renderer/deferred/chunk_sample_volumetrics.d.ts.map +1 -1
  381. package/src/shade/renderer/deferred/chunk_sample_volumetrics.js +11 -1
  382. package/src/shade/renderer/deferred/chunk_shade_directional_lights.d.ts +1 -2
  383. package/src/shade/renderer/deferred/chunk_shade_directional_lights.d.ts.map +1 -1
  384. package/src/shade/renderer/deferred/chunk_shade_directional_lights.js +4 -2
  385. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.d.ts +10 -3
  386. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.d.ts.map +1 -1
  387. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct.js +23 -5
  388. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_deferred.d.ts +16 -0
  389. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_deferred.d.ts.map +1 -0
  390. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_deferred.js +23 -0
  391. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_heavy.d.ts +3 -2
  392. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_heavy.d.ts.map +1 -1
  393. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_heavy.js +17 -16
  394. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.d.ts +3 -2
  395. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.d.ts.map +1 -1
  396. package/src/shade/renderer/deferred/chunk_shade_standard_material_direct_restir.js +9 -2
  397. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_irradiance.d.ts.map +1 -1
  398. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_irradiance.js +7 -2
  399. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_radiance.d.ts.map +1 -1
  400. package/src/shade/renderer/deferred/indirect/chunk_get_ibl_radiance.js +7 -2
  401. package/src/shade/renderer/deferred/indirect/chunk_lpv_sample_light.d.ts.map +1 -1
  402. package/src/shade/renderer/deferred/indirect/chunk_lpv_sample_light.js +7 -0
  403. package/src/shade/renderer/deferred/shader_background.d.ts.map +1 -1
  404. package/src/shade/renderer/deferred/shader_background.js +4 -2
  405. package/src/shade/renderer/deferred/shader_deferred_main.d.ts +11 -6
  406. package/src/shade/renderer/deferred/shader_deferred_main.d.ts.map +1 -1
  407. package/src/shade/renderer/deferred/shader_deferred_main.js +65 -86
  408. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts +1 -1
  409. package/src/shade/renderer/deferred/shader_tonemap_HDR.d.ts.map +1 -1
  410. package/src/shade/renderer/deferred/shader_tonemap_HDR.js +14 -20
  411. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts +2 -2
  412. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.d.ts.map +1 -1
  413. package/src/shade/renderer/deferred/shader_tonemap_HDR_none.js +13 -10
  414. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts +2 -2
  415. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.d.ts.map +1 -1
  416. package/src/shade/renderer/deferred/shader_tonemap_HDR_pbr_neutral.js +13 -20
  417. package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts +2 -2
  418. package/src/shade/renderer/deferred/shader_tonemap_LDR.d.ts.map +1 -1
  419. package/src/shade/renderer/deferred/shader_tonemap_LDR.js +13 -11
  420. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts +2 -2
  421. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.d.ts.map +1 -1
  422. package/src/shade/renderer/deferred/shader_tonemap_LDR_none.js +12 -9
  423. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts +2 -2
  424. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.d.ts.map +1 -1
  425. package/src/shade/renderer/deferred/shader_tonemap_LDR_pbr_neutral.js +12 -9
  426. package/src/shade/renderer/fluid/FluidCascadePlacement.d.ts +142 -0
  427. package/src/shade/renderer/fluid/FluidCascadePlacement.d.ts.map +1 -0
  428. package/src/shade/renderer/fluid/FluidCascadePlacement.js +349 -0
  429. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +383 -0
  430. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -0
  431. package/src/shade/renderer/fluid/GPUFluidCascade.js +1217 -0
  432. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +191 -0
  433. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -0
  434. package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +463 -0
  435. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_FILL_STRUCT.d.ts +27 -0
  436. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_FILL_STRUCT.d.ts.map +1 -0
  437. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_FILL_STRUCT.js +43 -0
  438. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_GHOSTS.d.ts +31 -0
  439. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_GHOSTS.d.ts.map +1 -0
  440. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_GHOSTS.js +38 -0
  441. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts +46 -0
  442. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts.map +1 -0
  443. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.js +61 -0
  444. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts +25 -0
  445. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts.map +1 -0
  446. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.js +41 -0
  447. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts +52 -0
  448. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts.map +1 -0
  449. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.js +146 -0
  450. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts +41 -0
  451. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -0
  452. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +238 -0
  453. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.d.ts +32 -0
  454. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.d.ts.map +1 -0
  455. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.js +141 -0
  456. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.d.ts +34 -0
  457. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.d.ts.map +1 -0
  458. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.js +101 -0
  459. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts +31 -0
  460. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts.map +1 -0
  461. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.js +126 -0
  462. package/src/shade/renderer/fluid/fluid_cascade_ruler.d.ts +15 -0
  463. package/src/shade/renderer/fluid/fluid_cascade_ruler.d.ts.map +1 -0
  464. package/src/shade/renderer/fluid/fluid_cascade_ruler.js +38 -0
  465. package/src/shade/renderer/fluid/fluid_cascade_window.d.ts +41 -0
  466. package/src/shade/renderer/fluid/fluid_cascade_window.d.ts.map +1 -0
  467. package/src/shade/renderer/fluid/fluid_cascade_window.js +49 -0
  468. package/src/shade/renderer/fluid/forcing/FLUID_DATABASE_SPEC.d.ts +68 -0
  469. package/src/shade/renderer/fluid/forcing/FLUID_DATABASE_SPEC.d.ts.map +1 -0
  470. package/src/shade/renderer/fluid/forcing/FLUID_DATABASE_SPEC.js +103 -0
  471. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts +71 -0
  472. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts.map +1 -0
  473. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.js +100 -0
  474. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts +21 -0
  475. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts.map +1 -0
  476. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.js +35 -0
  477. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_EXTRACT_STRUCT.d.ts +18 -0
  478. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_EXTRACT_STRUCT.d.ts.map +1 -0
  479. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_EXTRACT_STRUCT.js +27 -0
  480. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_QUERY_STRUCT.d.ts +17 -0
  481. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_QUERY_STRUCT.d.ts.map +1 -0
  482. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_QUERY_STRUCT.js +28 -0
  483. package/src/shade/renderer/fluid/forcing/FLUID_OBSTACLE_PLANE_STRUCT.d.ts +12 -0
  484. package/src/shade/renderer/fluid/forcing/FLUID_OBSTACLE_PLANE_STRUCT.d.ts.map +1 -0
  485. package/src/shade/renderer/fluid/forcing/FLUID_OBSTACLE_PLANE_STRUCT.js +16 -0
  486. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +289 -0
  487. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -0
  488. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +1487 -0
  489. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts +32 -0
  490. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts.map +1 -0
  491. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.js +87 -0
  492. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_leaf.d.ts +28 -0
  493. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_leaf.d.ts.map +1 -0
  494. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_leaf.js +99 -0
  495. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_query_select.d.ts +29 -0
  496. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_query_select.d.ts.map +1 -0
  497. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_query_select.js +67 -0
  498. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts +38 -0
  499. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts.map +1 -0
  500. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.js +287 -0
  501. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_command.d.ts +18 -0
  502. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_command.d.ts.map +1 -0
  503. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_command.js +64 -0
  504. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_extract.d.ts +22 -0
  505. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_extract.d.ts.map +1 -0
  506. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_extract.js +168 -0
  507. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_query.d.ts +31 -0
  508. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_query.d.ts.map +1 -0
  509. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_query.js +208 -0
  510. package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts +35 -0
  511. package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts.map +1 -0
  512. package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.js +50 -0
  513. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +162 -0
  514. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -0
  515. package/src/shade/renderer/fluid/mac/FluidMacPasses.js +384 -0
  516. package/src/shade/renderer/fluid/mac/FluidMacVelocitySet.d.ts +40 -0
  517. package/src/shade/renderer/fluid/mac/FluidMacVelocitySet.d.ts.map +1 -0
  518. package/src/shade/renderer/fluid/mac/FluidMacVelocitySet.js +77 -0
  519. package/src/shade/renderer/fluid/mac/V3_MAC_LATTICE_TAP_STRUCT.d.ts +14 -0
  520. package/src/shade/renderer/fluid/mac/V3_MAC_LATTICE_TAP_STRUCT.d.ts.map +1 -0
  521. package/src/shade/renderer/fluid/mac/V3_MAC_LATTICE_TAP_STRUCT.js +19 -0
  522. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.d.ts +35 -0
  523. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.d.ts.map +1 -0
  524. package/src/shade/renderer/fluid/mac/chunk_fluid_mac_seams.js +178 -0
  525. package/src/shade/renderer/fluid/mac/chunk_v3_mac_advect_maccormack.d.ts +17 -0
  526. package/src/shade/renderer/fluid/mac/chunk_v3_mac_advect_maccormack.d.ts.map +1 -0
  527. package/src/shade/renderer/fluid/mac/chunk_v3_mac_advect_maccormack.js +156 -0
  528. package/src/shade/renderer/fluid/mac/chunk_v3_mac_clip_trace.d.ts +31 -0
  529. package/src/shade/renderer/fluid/mac/chunk_v3_mac_clip_trace.d.ts.map +1 -0
  530. package/src/shade/renderer/fluid/mac/chunk_v3_mac_clip_trace.js +63 -0
  531. package/src/shade/renderer/fluid/mac/chunk_v3_mac_compute_divergence.d.ts +27 -0
  532. package/src/shade/renderer/fluid/mac/chunk_v3_mac_compute_divergence.d.ts.map +1 -0
  533. package/src/shade/renderer/fluid/mac/chunk_v3_mac_compute_divergence.js +42 -0
  534. package/src/shade/renderer/fluid/mac/chunk_v3_mac_face_carrier.d.ts +25 -0
  535. package/src/shade/renderer/fluid/mac/chunk_v3_mac_face_carrier.d.ts.map +1 -0
  536. package/src/shade/renderer/fluid/mac/chunk_v3_mac_face_carrier.js +67 -0
  537. package/src/shade/renderer/fluid/mac/chunk_v3_mac_face_pinned.d.ts +23 -0
  538. package/src/shade/renderer/fluid/mac/chunk_v3_mac_face_pinned.d.ts.map +1 -0
  539. package/src/shade/renderer/fluid/mac/chunk_v3_mac_face_pinned.js +38 -0
  540. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.d.ts +33 -0
  541. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.d.ts.map +1 -0
  542. package/src/shade/renderer/fluid/mac/chunk_v3_mac_lattice_corners.js +231 -0
  543. package/src/shade/renderer/fluid/mac/chunk_v3_mac_subtract_pressure_gradient.d.ts +30 -0
  544. package/src/shade/renderer/fluid/mac/chunk_v3_mac_subtract_pressure_gradient.d.ts.map +1 -0
  545. package/src/shade/renderer/fluid/mac/chunk_v3_mac_subtract_pressure_gradient.js +66 -0
  546. package/src/shade/renderer/fluid/mac/chunk_v3_mac_vorticity_confinement.d.ts +27 -0
  547. package/src/shade/renderer/fluid/mac/chunk_v3_mac_vorticity_confinement.d.ts.map +1 -0
  548. package/src/shade/renderer/fluid/mac/chunk_v3_mac_vorticity_confinement.js +65 -0
  549. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts +43 -0
  550. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts.map +1 -0
  551. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +245 -0
  552. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.d.ts +31 -0
  553. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.d.ts.map +1 -0
  554. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_predict.js +109 -0
  555. package/src/shade/renderer/fluid/mac/shader_fluid_mac_curl.d.ts +38 -0
  556. package/src/shade/renderer/fluid/mac/shader_fluid_mac_curl.d.ts.map +1 -0
  557. package/src/shade/renderer/fluid/mac/shader_fluid_mac_curl.js +222 -0
  558. package/src/shade/renderer/fluid/mac/shader_fluid_mac_divergence.d.ts +26 -0
  559. package/src/shade/renderer/fluid/mac/shader_fluid_mac_divergence.d.ts.map +1 -0
  560. package/src/shade/renderer/fluid/mac/shader_fluid_mac_divergence.js +92 -0
  561. package/src/shade/renderer/fluid/mac/shader_fluid_mac_gradient.d.ts +32 -0
  562. package/src/shade/renderer/fluid/mac/shader_fluid_mac_gradient.d.ts.map +1 -0
  563. package/src/shade/renderer/fluid/mac/shader_fluid_mac_gradient.js +181 -0
  564. package/src/shade/renderer/fluid/pressure/FLUID_MG.d.ts +112 -0
  565. package/src/shade/renderer/fluid/pressure/FLUID_MG.d.ts.map +1 -0
  566. package/src/shade/renderer/fluid/pressure/FLUID_MG.js +140 -0
  567. package/src/shade/renderer/fluid/pressure/FLUID_MG_PASS_STRUCT.d.ts +29 -0
  568. package/src/shade/renderer/fluid/pressure/FLUID_MG_PASS_STRUCT.d.ts.map +1 -0
  569. package/src/shade/renderer/fluid/pressure/FLUID_MG_PASS_STRUCT.js +45 -0
  570. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts +156 -0
  571. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.d.ts.map +1 -0
  572. package/src/shade/renderer/fluid/pressure/GPUFluidPressureSolve.js +605 -0
  573. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_coarse_word.d.ts +18 -0
  574. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_coarse_word.d.ts.map +1 -0
  575. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_coarse_word.js +48 -0
  576. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_level0_word.d.ts +17 -0
  577. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_level0_word.d.ts.map +1 -0
  578. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_level0_word.js +47 -0
  579. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_prolong.d.ts +21 -0
  580. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_prolong.d.ts.map +1 -0
  581. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_prolong.js +47 -0
  582. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_relax.d.ts +27 -0
  583. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_relax.d.ts.map +1 -0
  584. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_relax.js +79 -0
  585. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_restrict.d.ts +18 -0
  586. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_restrict.d.ts.map +1 -0
  587. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_restrict.js +35 -0
  588. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_word.d.ts +17 -0
  589. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_word.d.ts.map +1 -0
  590. package/src/shade/renderer/fluid/pressure/chunk_fluid_mg_word.js +34 -0
  591. package/src/shade/renderer/fluid/pressure/chunk_fluid_pressure_ghost.d.ts +21 -0
  592. package/src/shade/renderer/fluid/pressure/chunk_fluid_pressure_ghost.d.ts.map +1 -0
  593. package/src/shade/renderer/fluid/pressure/chunk_fluid_pressure_ghost.js +34 -0
  594. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarse_weights.d.ts +10 -0
  595. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarse_weights.d.ts.map +1 -0
  596. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarse_weights.js +45 -0
  597. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.d.ts +17 -0
  598. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.d.ts.map +1 -0
  599. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_coarsest.js +126 -0
  600. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_level0_weights.d.ts +10 -0
  601. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_level0_weights.d.ts.map +1 -0
  602. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_level0_weights.js +44 -0
  603. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.d.ts +18 -0
  604. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.d.ts.map +1 -0
  605. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_residual_restrict.js +149 -0
  606. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.d.ts +30 -0
  607. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.d.ts.map +1 -0
  608. package/src/shade/renderer/fluid/pressure/shader_fluid_mg_smooth.js +183 -0
  609. package/src/shade/renderer/fluid/publish/FLUID_WIND_PUBLISH_STRUCT.d.ts +9 -0
  610. package/src/shade/renderer/fluid/publish/FLUID_WIND_PUBLISH_STRUCT.d.ts.map +1 -0
  611. package/src/shade/renderer/fluid/publish/FLUID_WIND_PUBLISH_STRUCT.js +12 -0
  612. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +49 -0
  613. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -0
  614. package/src/shade/renderer/fluid/publish/FluidWindPublish.js +136 -0
  615. package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.d.ts +24 -0
  616. package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.d.ts.map +1 -0
  617. package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.js +37 -0
  618. package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts +41 -0
  619. package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts.map +1 -0
  620. package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.js +122 -0
  621. package/src/shade/renderer/fluid/query/FLUID_QUERY_DATABASE_SPEC.d.ts +66 -0
  622. package/src/shade/renderer/fluid/query/FLUID_QUERY_DATABASE_SPEC.d.ts.map +1 -0
  623. package/src/shade/renderer/fluid/query/FLUID_QUERY_DATABASE_SPEC.js +88 -0
  624. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts +157 -0
  625. package/src/shade/renderer/fluid/query/GPUFluidQueries.d.ts.map +1 -0
  626. package/src/shade/renderer/fluid/query/GPUFluidQueries.js +709 -0
  627. package/src/shade/renderer/fluid/query/shader_fluid_query_gather.d.ts +47 -0
  628. package/src/shade/renderer/fluid/query/shader_fluid_query_gather.d.ts.map +1 -0
  629. package/src/shade/renderer/fluid/query/shader_fluid_query_gather.js +140 -0
  630. package/src/shade/renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_RESOURCE.d.ts +7 -0
  631. package/src/shade/renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_RESOURCE.d.ts.map +1 -0
  632. package/src/shade/renderer/geometry/GEOMETRY_ATTRIBUTE_DATA_RESOURCE.js +8 -0
  633. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_BATCH_PLAN.md +619 -606
  634. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts +3 -2
  635. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts.map +1 -1
  636. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.js +50 -44
  637. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts +12 -9
  638. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts.map +1 -1
  639. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +447 -363
  640. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts +7 -4
  641. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts.map +1 -1
  642. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.js +13 -6
  643. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts +21 -0
  644. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts.map +1 -0
  645. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.js +75 -0
  646. package/src/shade/renderer/geometry/meshlet/MESHLET_METADATA_RESOURCE.d.ts +7 -0
  647. package/src/shade/renderer/geometry/meshlet/MESHLET_METADATA_RESOURCE.d.ts.map +1 -0
  648. package/src/shade/renderer/geometry/meshlet/MESHLET_METADATA_RESOURCE.js +9 -0
  649. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts +3 -3
  650. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.d.ts.map +1 -1
  651. package/src/shade/renderer/geometry/sdf/GPUGeometrySDFManager.js +11 -9
  652. package/src/shade/renderer/geometry/sdf/shader_build_sdf.d.ts.map +1 -1
  653. package/src/shade/renderer/geometry/sdf/shader_build_sdf.js +7 -3
  654. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +1 -1
  655. package/src/shade/renderer/global_illumination/brick4/gpu/BRICK4_RESOURCE.d.ts +7 -0
  656. package/src/shade/renderer/global_illumination/brick4/gpu/BRICK4_RESOURCE.d.ts.map +1 -0
  657. package/src/shade/renderer/global_illumination/brick4/gpu/BRICK4_RESOURCE.js +8 -0
  658. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  659. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +2 -0
  660. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.d.ts.map +1 -1
  661. package/src/shade/renderer/global_illumination/brick4/gpu/bake/shader_brick4_bake_probes.js +7 -3
  662. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_load_probe.d.ts.map +1 -1
  663. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_load_probe.js +4 -1
  664. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_node_by_position.d.ts.map +1 -1
  665. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_node_by_position.js +4 -1
  666. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_node_sample_probes.d.ts.map +1 -1
  667. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_node_sample_probes.js +3 -0
  668. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_probe_meta_pick2.d.ts.map +1 -1
  669. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_probe_meta_pick2.js +4 -1
  670. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.d.ts.map +1 -1
  671. package/src/shade/renderer/global_illumination/brick4/gpu/draw/chunk_brick4_sample_forward_indirect.js +3 -0
  672. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts +15 -0
  673. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.d.ts.map +1 -1
  674. package/src/shade/renderer/global_illumination/clipmap/shader_debug_clipmap.js +57 -57
  675. package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.d.ts.map +1 -1
  676. package/src/shade/renderer/global_illumination/ibl/shader_diffuse_IBL.js +3 -1
  677. package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.d.ts.map +1 -1
  678. package/src/shade/renderer/global_illumination/ibl/shader_specular_IBL.js +3 -1
  679. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  680. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +2 -0
  681. package/src/shade/renderer/global_illumination/lpv/deprecated/chunk_lpv_get_visibility_mask.d.ts.map +1 -1
  682. package/src/shade/renderer/global_illumination/lpv/deprecated/chunk_lpv_get_visibility_mask.js +3 -0
  683. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.d.ts.map +1 -1
  684. package/src/shade/renderer/global_illumination/lpv/deprecated/probe_trace_compute_shader_code.js +7 -3
  685. package/src/shade/renderer/global_illumination/probe/octahedral/LPV_SHADER_RESOURCE_GROUP.d.ts +39 -0
  686. package/src/shade/renderer/global_illumination/probe/octahedral/LPV_SHADER_RESOURCE_GROUP.d.ts.map +1 -1
  687. package/src/shade/renderer/global_illumination/probe/octahedral/LPV_SHADER_RESOURCE_GROUP.js +57 -4
  688. package/src/shade/renderer/global_illumination/probe/octahedral/graph_lpv_shade.js +3 -3
  689. package/src/shade/renderer/global_illumination/probe/octahedral/sample/chunk_lpv_radiance_sample_reflection.d.ts.map +1 -1
  690. package/src/shade/renderer/global_illumination/probe/octahedral/sample/chunk_lpv_radiance_sample_reflection.js +3 -0
  691. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.d.ts.map +1 -1
  692. package/src/shade/renderer/global_illumination/probe/octahedral/shader_lpv_build_gbuffer.js +4 -2
  693. package/src/shade/renderer/gpu_primitive/bvh/BVH_REFIT_DEFERRED_DEFINITION.d.ts +10 -0
  694. package/src/shade/renderer/gpu_primitive/bvh/BVH_REFIT_DEFERRED_DEFINITION.d.ts.map +1 -0
  695. package/src/shade/renderer/gpu_primitive/bvh/BVH_REFIT_DEFERRED_DEFINITION.js +25 -0
  696. package/src/shade/renderer/gpu_primitive/bvh/BVH_REFIT_DEFERRED_LAYOUT.d.ts +55 -0
  697. package/src/shade/renderer/gpu_primitive/bvh/BVH_REFIT_DEFERRED_LAYOUT.d.ts.map +1 -0
  698. package/src/shade/renderer/gpu_primitive/bvh/BVH_REFIT_DEFERRED_LAYOUT.js +63 -0
  699. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +120 -4
  700. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_climb.d.ts +23 -11
  701. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_climb.d.ts.map +1 -1
  702. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_climb.js +171 -102
  703. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_repair.d.ts +23 -0
  704. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_repair.d.ts.map +1 -0
  705. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_refit_repair.js +80 -0
  706. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +5 -3
  707. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -1
  708. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +55 -5
  709. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_refit_lbvh.d.ts +55 -0
  710. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_refit_lbvh.d.ts.map +1 -0
  711. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_refit_lbvh.js +197 -0
  712. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts +3 -1
  713. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.d.ts.map +1 -1
  714. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +45 -2
  715. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +3 -2
  716. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -1
  717. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +13 -3
  718. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +6 -6
  719. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -1
  720. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +11 -8
  721. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit_prepare.d.ts +24 -0
  722. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit_prepare.d.ts.map +1 -0
  723. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit_prepare.js +99 -0
  724. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit_repair.d.ts +17 -0
  725. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit_repair.d.ts.map +1 -0
  726. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit_repair.js +63 -0
  727. package/src/shade/renderer/gpu_primitive/chunk_collection_u32_append.d.ts +19 -0
  728. package/src/shade/renderer/gpu_primitive/chunk_collection_u32_append.d.ts.map +1 -0
  729. package/src/shade/renderer/gpu_primitive/chunk_collection_u32_append.js +44 -0
  730. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  731. package/src/shade/renderer/light/GPULightCollection.js +44 -0
  732. package/src/shade/renderer/light/LIGHT_DATA_RESOURCE.d.ts +7 -0
  733. package/src/shade/renderer/light/LIGHT_DATA_RESOURCE.d.ts.map +1 -0
  734. package/src/shade/renderer/light/LIGHT_DATA_RESOURCE.js +8 -0
  735. package/src/shade/renderer/light/cluster/CLUSTER_LIGHT_LIST.d.ts +7 -0
  736. package/src/shade/renderer/light/cluster/CLUSTER_LIGHT_LIST.d.ts.map +1 -0
  737. package/src/shade/renderer/light/cluster/CLUSTER_LIGHT_LIST.js +16 -0
  738. package/src/shade/renderer/light/cluster/CLUSTER_LIGHT_PROXY.d.ts +12 -0
  739. package/src/shade/renderer/light/cluster/CLUSTER_LIGHT_PROXY.d.ts.map +1 -0
  740. package/src/shade/renderer/light/cluster/CLUSTER_LIGHT_PROXY.js +33 -0
  741. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_ASSIGNMENT_SETTINGS.d.ts +7 -0
  742. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_ASSIGNMENT_SETTINGS.d.ts.map +1 -0
  743. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_ASSIGNMENT_SETTINGS.js +24 -0
  744. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_COARSE_BLOCK.d.ts +8 -0
  745. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_COARSE_BLOCK.d.ts.map +1 -0
  746. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_COARSE_BLOCK.js +7 -0
  747. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_METADATA.d.ts.map +1 -1
  748. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_METADATA.js +2 -3
  749. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_RESOURCES.d.ts +17 -0
  750. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_RESOURCES.d.ts.map +1 -0
  751. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_RESOURCES.js +22 -0
  752. package/src/shade/renderer/light/cluster/PROPOSAL_ALGORITHM_2026_10_16.md +524 -0
  753. package/src/shade/renderer/light/cluster/PROPOSAL_HIERARCHICAL_2026_10_16.md +1101 -0
  754. package/src/shade/renderer/light/cluster/chunk_cluster_cell.d.ts +19 -0
  755. package/src/shade/renderer/light/cluster/chunk_cluster_cell.d.ts.map +1 -0
  756. package/src/shade/renderer/light/cluster/chunk_cluster_cell.js +133 -0
  757. package/src/shade/renderer/light/cluster/chunk_cluster_from_fragment_coord.d.ts.map +1 -1
  758. package/src/shade/renderer/light/cluster/chunk_cluster_from_fragment_coord.js +6 -1
  759. package/src/shade/renderer/light/cluster/chunk_cluster_light_proxy.d.ts +19 -0
  760. package/src/shade/renderer/light/cluster/chunk_cluster_light_proxy.d.ts.map +1 -0
  761. package/src/shade/renderer/light/cluster/chunk_cluster_light_proxy.js +95 -0
  762. package/src/shade/renderer/light/cluster/chunk_light_cluster_counts.d.ts +6 -4
  763. package/src/shade/renderer/light/cluster/chunk_light_cluster_counts.d.ts.map +1 -1
  764. package/src/shade/renderer/light/cluster/chunk_light_cluster_counts.js +10 -8
  765. package/src/shade/renderer/light/cluster/chunk_light_cluster_metadata_by_position.d.ts.map +1 -1
  766. package/src/shade/renderer/light/cluster/chunk_light_cluster_metadata_by_position.js +4 -1
  767. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts +8 -0
  768. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.d.ts.map +1 -1
  769. package/src/shade/renderer/light/cluster/cull/graph_cull_lights.js +1 -1
  770. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts +27 -2
  771. package/src/shade/renderer/light/cluster/graph_assign_clsuters.d.ts.map +1 -1
  772. package/src/shade/renderer/light/cluster/graph_assign_clsuters.js +174 -76
  773. package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts +3 -1
  774. package/src/shade/renderer/light/cluster/graph_build_light_clusters.d.ts.map +1 -1
  775. package/src/shade/renderer/light/cluster/graph_build_light_clusters.js +3 -0
  776. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts +14 -2
  777. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.d.ts.map +1 -1
  778. package/src/shade/renderer/light/cluster/shader_cluster_assign_lights.js +230 -139
  779. package/src/shade/renderer/light/cluster/shader_cluster_coarse_mark.d.ts +19 -0
  780. package/src/shade/renderer/light/cluster/shader_cluster_coarse_mark.d.ts.map +1 -0
  781. package/src/shade/renderer/light/cluster/shader_cluster_coarse_mark.js +134 -0
  782. package/src/shade/renderer/light/cluster/shader_cluster_light_compact.d.ts +11 -0
  783. package/src/shade/renderer/light/cluster/shader_cluster_light_compact.d.ts.map +1 -0
  784. package/src/shade/renderer/light/cluster/shader_cluster_light_compact.js +114 -0
  785. package/src/shade/renderer/light/cluster/shader_cluster_light_mark.d.ts +9 -0
  786. package/src/shade/renderer/light/cluster/shader_cluster_light_mark.d.ts.map +1 -0
  787. package/src/shade/renderer/light/cluster/shader_cluster_light_mark.js +59 -0
  788. package/src/shade/renderer/light/cluster/shader_cluster_light_prepare.d.ts +14 -0
  789. package/src/shade/renderer/light/cluster/shader_cluster_light_prepare.d.ts.map +1 -0
  790. package/src/shade/renderer/light/cluster/shader_cluster_light_prepare.js +142 -0
  791. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.d.ts +8 -0
  792. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.d.ts.map +1 -0
  793. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_RESOURCE.js +8 -0
  794. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.d.ts +14 -0
  795. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.d.ts.map +1 -0
  796. package/src/shade/renderer/light/environment/ENVIRONMENT_MAP_SAMPLER_RESOURCE.js +25 -0
  797. package/src/shade/renderer/light/environment/ENVIRONMENT_SH_RESOURCE.d.ts +7 -0
  798. package/src/shade/renderer/light/environment/ENVIRONMENT_SH_RESOURCE.d.ts.map +1 -0
  799. package/src/shade/renderer/light/environment/ENVIRONMENT_SH_RESOURCE.js +8 -0
  800. package/src/shade/renderer/light/environment/execute_filter_environment_map.d.ts.map +1 -1
  801. package/src/shade/renderer/light/environment/execute_filter_environment_map.js +3 -4
  802. package/src/shade/renderer/light/environment/octahedral_skirt_matches.d.ts +19 -0
  803. package/src/shade/renderer/light/environment/octahedral_skirt_matches.d.ts.map +1 -0
  804. package/src/shade/renderer/light/environment/octahedral_skirt_matches.js +67 -0
  805. package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.d.ts +16 -0
  806. package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.d.ts.map +1 -0
  807. package/src/shade/renderer/light/environment/octahedral_skirt_source_texel.js +35 -0
  808. package/src/shade/renderer/light/environment/resample_cube_to_octahedral.d.ts +7 -2
  809. package/src/shade/renderer/light/environment/resample_cube_to_octahedral.d.ts.map +1 -1
  810. package/src/shade/renderer/light/environment/resample_cube_to_octahedral.js +23 -7
  811. package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.d.ts +8 -2
  812. package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.d.ts.map +1 -1
  813. package/src/shade/renderer/light/environment/resample_equirectangular_to_octahedral.js +24 -7
  814. package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.d.ts +12 -0
  815. package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.d.ts.map +1 -0
  816. package/src/shade/renderer/light/environment/sampler2d_octahedral_skirt_fill.js +54 -0
  817. package/src/shade/renderer/light/environment/sh_exponential/README.md +2 -1
  818. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts +2 -2
  819. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.d.ts.map +1 -1
  820. package/src/shade/renderer/light/environment/sh_exponential/shader_sh_exp_environment_cells.js +5 -4
  821. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.d.ts.map +1 -1
  822. package/src/shade/renderer/light/environment/shader_convolve_reflection_map.js +13 -9
  823. package/src/shade/renderer/light/environment/shader_project_environment_sh.d.ts.map +1 -1
  824. package/src/shade/renderer/light/environment/shader_project_environment_sh.js +3 -1
  825. package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
  826. package/src/shade/renderer/lightmap/GPULightMap.js +2 -0
  827. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.d.ts.map +1 -1
  828. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_irradiance_flat.js +7 -3
  829. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.d.ts.map +1 -1
  830. package/src/shade/renderer/lightmap/bake/shader_lightmap_viz_to_sh.js +7 -3
  831. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_density.d.ts.map +1 -1
  832. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_density.js +4 -0
  833. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_uv_checker.d.ts.map +1 -1
  834. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_uv_checker.js +4 -0
  835. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_view_flat.d.ts.map +1 -1
  836. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_view_flat.js +4 -0
  837. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_view_sh.d.ts.map +1 -1
  838. package/src/shade/renderer/lightmap/debug/shader_lightmap_debug_view_sh.js +4 -0
  839. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  840. package/src/shade/renderer/material/standard/SHADING_MATERIAL_RESOURCE_GROUP.d.ts +22 -0
  841. package/src/shade/renderer/material/standard/SHADING_MATERIAL_RESOURCE_GROUP.d.ts.map +1 -1
  842. package/src/shade/renderer/material/standard/SHADING_MATERIAL_RESOURCE_GROUP.js +33 -9
  843. package/src/shade/renderer/particles/DESIGN.md +16 -2
  844. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  845. package/src/shade/renderer/particles/GPUParticleSystem.js +3 -0
  846. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
  847. package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +21 -9
  848. package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
  849. package/src/shade/renderer/particles/graph/particle_node_parameters.js +1 -0
  850. package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
  851. package/src/shade/renderer/particles/graph/particle_node_presentation.js +8 -0
  852. package/src/shade/renderer/particles/graph_particles.d.ts +4 -1
  853. package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
  854. package/src/shade/renderer/particles/graph_particles.js +13 -0
  855. package/src/shade/renderer/particles/isa/InstructionStream.d.ts +13 -0
  856. package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
  857. package/src/shade/renderer/particles/isa/InstructionStream.js +13 -0
  858. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +1 -0
  859. package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
  860. package/src/shade/renderer/particles/isa/ParticleVMISA.js +8 -0
  861. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +2 -1
  862. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
  863. package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +28 -6
  864. package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +1 -1
  865. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
  866. package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +7 -0
  867. package/src/shade/renderer/particles/shaders/shader_particle_avboit_draw.js +1 -1
  868. package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
  869. package/src/shade/renderer/particles/shaders/shader_particle_emit.js +5 -2
  870. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -1
  871. package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +5 -2
  872. package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
  873. package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +5 -2
  874. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -1
  875. package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +5 -2
  876. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +16 -1
  877. package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
  878. package/src/shade/renderer/particles/vm/ParticleVMReference.js +35 -2
  879. package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
  880. package/src/shade/renderer/particles/vm/chunk_particle_vm.js +8 -0
  881. package/src/shade/renderer/particles/vm/chunk_particle_vm_wind_field.d.ts +20 -0
  882. package/src/shade/renderer/particles/vm/chunk_particle_vm_wind_field.d.ts.map +1 -0
  883. package/src/shade/renderer/particles/vm/chunk_particle_vm_wind_field.js +25 -0
  884. package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts +4 -1
  885. package/src/shade/renderer/particles/warmup/graph_particle_warmup.d.ts.map +1 -1
  886. package/src/shade/renderer/particles/warmup/graph_particle_warmup.js +8 -0
  887. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.d.ts.map +1 -1
  888. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance.js +109 -106
  889. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.d.ts.map +1 -1
  890. package/src/shade/renderer/particles/warmup/shader_particle_warmup_advance_wide.js +71 -68
  891. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  892. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +3 -8
  893. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.d.ts.map +1 -1
  894. package/src/shade/renderer/path_tracer/accumulating/shader_accumulating_path_tracer.js +7 -3
  895. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  896. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +9 -3
  897. package/src/shade/renderer/path_tracer/shader/chunk_render_trace_path.js +5 -5
  898. package/src/shade/renderer/path_tracer/shader/chunk_sample_material_data.js +3 -3
  899. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  900. package/src/shade/renderer/postprocess/ssr/SSR.d.ts +11 -8
  901. package/src/shade/renderer/postprocess/ssr/SSR.d.ts.map +1 -1
  902. package/src/shade/renderer/postprocess/ssr/SSR.js +49 -52
  903. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts +28 -0
  904. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.d.ts.map +1 -0
  905. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_add_hit_irradiance.js +79 -0
  906. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.d.ts +30 -0
  907. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.d.ts.map +1 -0
  908. package/src/shade/renderer/postprocess/ssr/resolve/chunk_ssr_sample_radiance.js +66 -0
  909. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts +11 -0
  910. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader.d.ts.map +1 -0
  911. package/src/shade/renderer/postprocess/ssr/resolve/{build_ssr_resolve_shader.js → ssr_resolve_shader.js} +95 -85
  912. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.d.ts.map +1 -1
  913. package/src/shade/renderer/rasterize/expand/GPUCollectionLimits.js +4 -0
  914. package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.d.ts +1 -0
  915. package/src/shade/renderer/rasterize/expand/RasterizationCollectionType.js +5 -0
  916. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.d.ts +25 -0
  917. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.d.ts.map +1 -0
  918. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect.js +33 -0
  919. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_brick4.d.ts +10 -0
  920. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_brick4.d.ts.map +1 -0
  921. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_brick4.js +38 -0
  922. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_environment.d.ts +9 -0
  923. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_environment.d.ts.map +1 -0
  924. package/src/shade/renderer/rasterize/forward/chunk_forward_sample_indirect_environment.js +30 -0
  925. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.d.ts +10 -0
  926. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment.d.ts.map +1 -0
  927. package/src/shade/renderer/rasterize/forward/{chunk_forward_shade_standard_fragment_brick4.js → chunk_forward_shade_standard_fragment.js} +60 -33
  928. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts +2 -3
  929. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.d.ts.map +1 -1
  930. package/src/shade/renderer/rasterize/native/avboit/AVBOITSideChannel.js +2 -3
  931. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts +0 -5
  932. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.d.ts.map +1 -1
  933. package/src/shade/renderer/rasterize/native/avboit/AVBOIT_CONSTANTS.js +0 -6
  934. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts +9 -4
  935. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.d.ts.map +1 -1
  936. package/src/shade/renderer/rasterize/native/avboit/avboit_draw_fragment_body.js +11 -5
  937. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.d.ts.map +1 -1
  938. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_counts_to_extinction.js +4 -1
  939. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts +4 -7
  940. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.d.ts.map +1 -1
  941. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +22 -45
  942. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.d.ts +18 -0
  943. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw.d.ts.map +1 -0
  944. package/src/shade/renderer/rasterize/native/avboit/{shader_avboit_draw_brick4.js → shader_avboit_draw.js} +23 -19
  945. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +3 -3
  946. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts +3 -3
  947. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.d.ts.map +1 -1
  948. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +21 -47
  949. package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.d.ts +12 -8
  950. package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.d.ts.map +1 -1
  951. package/src/shade/renderer/rasterize/native/oit/oit_resolve_fragment_body.js +128 -123
  952. package/src/shade/renderer/rasterize/native/oit/shader_oit_generate_moments.js +3 -3
  953. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts +11 -2
  954. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.d.ts.map +1 -1
  955. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments.js +17 -10
  956. package/src/shade/renderer/restir/di/RESTIR_RADIANCE_RESOURCE.d.ts +7 -0
  957. package/src/shade/renderer/restir/di/RESTIR_RADIANCE_RESOURCE.d.ts.map +1 -0
  958. package/src/shade/renderer/restir/di/RESTIR_RADIANCE_RESOURCE.js +7 -0
  959. package/src/shade/renderer/scene/GPUSceneContext.d.ts +9 -1
  960. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  961. package/src/shade/renderer/scene/GPUSceneContext.js +21 -1
  962. package/src/shade/renderer/scene/MESH_INSTANCE_METADATA_STRUCT.d.ts.map +1 -1
  963. package/src/shade/renderer/scene/MESH_INSTANCE_METADATA_STRUCT.js +5 -0
  964. package/src/shade/renderer/scene/SCENE_DATABASE_RESOURCE.d.ts +7 -0
  965. package/src/shade/renderer/scene/SCENE_DATABASE_RESOURCE.d.ts.map +1 -0
  966. package/src/shade/renderer/scene/SCENE_DATABASE_RESOURCE.js +8 -0
  967. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +14 -0
  968. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -1
  969. package/src/shade/renderer/scene/rows/GPUSceneRows.js +114 -10
  970. package/src/shade/renderer/shader/ComputeShader.d.ts +21 -0
  971. package/src/shade/renderer/shader/ComputeShader.d.ts.map +1 -1
  972. package/src/shade/renderer/shader/ComputeShader.js +54 -0
  973. package/src/shade/renderer/shader/ShaderDescriptor.d.ts +10 -4
  974. package/src/shade/renderer/shader/ShaderDescriptor.d.ts.map +1 -1
  975. package/src/shade/renderer/shader/ShaderDescriptor.js +78 -0
  976. package/src/shade/renderer/shader/chunk/brdf/FRESNEL_BRIEF_2026_10_16.md +394 -0
  977. package/src/shade/renderer/shader/chunk/brdf/chunk_BRDF_GGX.d.ts +4 -1
  978. package/src/shade/renderer/shader/chunk/brdf/chunk_BRDF_GGX.d.ts.map +1 -1
  979. package/src/shade/renderer/shader/chunk/brdf/chunk_BRDF_GGX.js +7 -4
  980. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts +4 -1
  981. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.d.ts.map +1 -1
  982. package/src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js +9 -9
  983. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.d.ts +10 -1
  984. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.d.ts.map +1 -1
  985. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.js +16 -5
  986. package/src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_cooperative.d.ts +82 -0
  987. package/src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_cooperative.d.ts.map +1 -0
  988. package/src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_cooperative.js +286 -0
  989. package/src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_frontier.d.ts +47 -0
  990. package/src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_frontier.d.ts.map +1 -0
  991. package/src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_frontier.js +121 -0
  992. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts +22 -0
  993. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.d.ts.map +1 -0
  994. package/src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js +38 -0
  995. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_contains.d.ts +11 -0
  996. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_contains.d.ts.map +1 -0
  997. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_contains.js +20 -0
  998. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts +19 -0
  999. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.d.ts.map +1 -0
  1000. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_select_finest.js +71 -0
  1001. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_storage_coord.d.ts +15 -0
  1002. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_storage_coord.d.ts.map +1 -0
  1003. package/src/shade/renderer/shader/chunk/clipmap/chunk_clipmap_storage_coord.js +25 -0
  1004. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_FROM_REC709_TO_P3.d.ts +17 -0
  1005. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_FROM_REC709_TO_P3.d.ts.map +1 -0
  1006. package/src/shade/renderer/shader/chunk/color/conversion/chunk_CRM_FROM_REC709_TO_P3.js +26 -0
  1007. package/src/shade/renderer/shader/chunk/color/tonemap/chunk_PAPER_WHITE_NITS.js +1 -1
  1008. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts +8 -4
  1009. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.d.ts.map +1 -1
  1010. package/src/shade/renderer/shader/chunk/color/tonemap/gt7/chunk_tonemap_gt7.js +13 -19
  1011. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_aabb3.d.ts +14 -0
  1012. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_aabb3.d.ts.map +1 -0
  1013. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_aabb3.js +24 -0
  1014. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_signed_distance_to_point.d.ts +3 -0
  1015. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_signed_distance_to_point.d.ts.map +1 -1
  1016. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_signed_distance_to_point.js +9 -10
  1017. package/src/shade/renderer/shader/chunk/geometry/chunk_point_closest_on_line.d.ts +11 -0
  1018. package/src/shade/renderer/shader/chunk/geometry/chunk_point_closest_on_line.d.ts.map +1 -0
  1019. package/src/shade/renderer/shader/chunk/geometry/chunk_point_closest_on_line.js +28 -0
  1020. package/src/shade/renderer/shader/chunk/geometry/chunk_point_distance_to_line.d.ts +3 -2
  1021. package/src/shade/renderer/shader/chunk/geometry/chunk_point_distance_to_line.d.ts.map +1 -1
  1022. package/src/shade/renderer/shader/chunk/geometry/chunk_point_distance_to_line.js +8 -17
  1023. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_u32.d.ts.map +1 -1
  1024. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_u32.js +3 -0
  1025. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_vec2f.d.ts.map +1 -1
  1026. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_vec2f.js +4 -1
  1027. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_vec3f.d.ts.map +1 -1
  1028. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_attribute_vec3f.js +4 -1
  1029. package/src/shade/renderer/shader/chunk/geometry/plane/chunk_point_distance_above_plane.d.ts +8 -0
  1030. package/src/shade/renderer/shader/chunk/geometry/plane/chunk_point_distance_above_plane.d.ts.map +1 -1
  1031. package/src/shade/renderer/shader/chunk/geometry/plane/chunk_point_distance_above_plane.js +8 -0
  1032. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_angle_stable.d.ts +14 -0
  1033. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_angle_stable.d.ts.map +1 -0
  1034. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_angle_stable.js +21 -0
  1035. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_clamp_to_cone.d.ts +21 -0
  1036. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_clamp_to_cone.d.ts.map +1 -0
  1037. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_clamp_to_cone.js +49 -0
  1038. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_slerp.d.ts +29 -0
  1039. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_slerp.d.ts.map +1 -0
  1040. package/src/shade/renderer/shader/chunk/geometry/vec3/chunk_v3_slerp.js +86 -0
  1041. package/src/shade/renderer/shader/chunk/grid/GRID_TILE_WINDOW_STRUCT.d.ts +24 -0
  1042. package/src/shade/renderer/shader/chunk/grid/GRID_TILE_WINDOW_STRUCT.d.ts.map +1 -0
  1043. package/src/shade/renderer/shader/chunk/grid/GRID_TILE_WINDOW_STRUCT.js +30 -0
  1044. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_halo_f32.d.ts +55 -0
  1045. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_halo_f32.d.ts.map +1 -0
  1046. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_halo_f32.js +101 -0
  1047. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_halo_vec4.d.ts +24 -0
  1048. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_halo_vec4.d.ts.map +1 -0
  1049. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_halo_vec4.js +70 -0
  1050. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_window.d.ts +42 -0
  1051. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_window.d.ts.map +1 -0
  1052. package/src/shade/renderer/shader/chunk/grid/chunk_grid_tile_window.js +88 -0
  1053. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mesh_get_vertices.d.ts.map +1 -1
  1054. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mesh_get_vertices.js +4 -1
  1055. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mesh_lookup_nearest_cell.d.ts.map +1 -1
  1056. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mesh_lookup_nearest_cell.js +4 -1
  1057. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_probe_get_data.d.ts.map +1 -1
  1058. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_probe_get_data.js +4 -1
  1059. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_probe_get_position.d.ts.map +1 -1
  1060. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_probe_get_position.js +4 -1
  1061. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_sample_radiance.d.ts.map +1 -1
  1062. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_sample_radiance.js +4 -1
  1063. package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_mask_weights_by_visibility.d.ts.map +1 -1
  1064. package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_mask_weights_by_visibility.js +6 -1
  1065. package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_sample_depth_atlas.d.ts.map +1 -1
  1066. package/src/shade/renderer/shader/chunk/light/lpv/depth/chunk_lpv_sample_depth_atlas.js +13 -1
  1067. package/src/shade/renderer/shader/chunk/material/MULTISCATTER.md +67 -16
  1068. package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.d.ts.map +1 -1
  1069. package/src/shade/renderer/shader/chunk/material/chunk_compute_indirect_specular.js +6 -1
  1070. package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts +7 -1
  1071. package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.d.ts.map +1 -1
  1072. package/src/shade/renderer/shader/chunk/material/chunk_re_direct_multiscatter.js +29 -1
  1073. package/src/shade/renderer/shader/chunk/math/chunk_falloff_quadratic.d.ts +11 -0
  1074. package/src/shade/renderer/shader/chunk/math/chunk_falloff_quadratic.d.ts.map +1 -0
  1075. package/src/shade/renderer/shader/chunk/math/chunk_falloff_quadratic.js +20 -0
  1076. package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.d.ts.map +1 -1
  1077. package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec2.js +4 -1
  1078. package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.d.ts.map +1 -1
  1079. package/src/shade/renderer/shader/chunk/noise/chunk_stbn_sample_vec3.js +3 -0
  1080. package/src/shade/renderer/shader/chunk/physics/fluid/chunk_vortex_swirl.d.ts +20 -0
  1081. package/src/shade/renderer/shader/chunk/physics/fluid/chunk_vortex_swirl.d.ts.map +1 -0
  1082. package/src/shade/renderer/shader/chunk/physics/fluid/chunk_vortex_swirl.js +39 -0
  1083. package/src/shade/renderer/shader/chunk/physics/kinematics/chunk_rigid_velocity_at_point.d.ts +12 -0
  1084. package/src/shade/renderer/shader/chunk/physics/kinematics/chunk_rigid_velocity_at_point.d.ts.map +1 -0
  1085. package/src/shade/renderer/shader/chunk/physics/kinematics/chunk_rigid_velocity_at_point.js +21 -0
  1086. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts +17 -0
  1087. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.d.ts.map +1 -0
  1088. package/src/shade/renderer/shader/chunk/screen_space/SCREEN_SPACE_RESOURCES.js +19 -0
  1089. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_depth.d.ts.map +1 -1
  1090. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_depth.js +5 -1
  1091. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_world_space_normal.d.ts.map +1 -1
  1092. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_load_world_space_normal.js +4 -1
  1093. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_screen_space_to_view_space.d.ts.map +1 -1
  1094. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_screen_space_to_view_space.js +4 -1
  1095. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_validate_hit.d.ts.map +1 -1
  1096. package/src/shade/renderer/shader/chunk/screen_space/chunk_ffx_sssr_validate_hit.js +3 -0
  1097. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts.map +1 -1
  1098. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.js +3 -5
  1099. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_box.d.ts +16 -0
  1100. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_box.d.ts.map +1 -0
  1101. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_box.js +28 -0
  1102. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_capsule.d.ts +18 -0
  1103. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_capsule.d.ts.map +1 -0
  1104. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_capsule.js +30 -0
  1105. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_cylinder.d.ts +18 -0
  1106. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_cylinder.d.ts.map +1 -0
  1107. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_cylinder.js +28 -0
  1108. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_sphere.d.ts +13 -0
  1109. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_sphere.d.ts.map +1 -0
  1110. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf3_sphere.js +20 -0
  1111. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_texture_region_sample_linear_uv.d.ts +7 -0
  1112. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_texture_region_sample_linear_uv.d.ts.map +1 -1
  1113. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_texture_region_sample_linear_uv.js +16 -41
  1114. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_kind.d.ts +10 -0
  1115. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_kind.d.ts.map +1 -0
  1116. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_kind.js +24 -0
  1117. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_local_bounds.d.ts +20 -0
  1118. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_local_bounds.d.ts.map +1 -0
  1119. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_local_bounds.js +54 -0
  1120. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_signed_distance.d.ts +23 -0
  1121. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_signed_distance.d.ts.map +1 -0
  1122. package/src/shade/renderer/shader/chunk/sdf/chunk_shape_record_signed_distance.js +82 -0
  1123. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts +4 -3
  1124. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.d.ts.map +1 -1
  1125. package/src/shade/renderer/shader/chunk/spherical_harmonics/exponential/chunk_sh_exp_split_sum.js +4 -3
  1126. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_append_slot.d.ts +31 -0
  1127. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_append_slot.d.ts.map +1 -0
  1128. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_append_slot.js +60 -0
  1129. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts +15 -0
  1130. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.d.ts.map +1 -0
  1131. package/src/shade/renderer/shader/chunk/subgroup/chunk_subgroup_atomic_add.js +29 -0
  1132. package/src/shade/renderer/shader/chunk/texture/TEXTURE3D_TRILINEAR_CORNERS_STRUCT.d.ts +15 -0
  1133. package/src/shade/renderer/shader/chunk/texture/TEXTURE3D_TRILINEAR_CORNERS_STRUCT.d.ts.map +1 -0
  1134. package/src/shade/renderer/shader/chunk/texture/TEXTURE3D_TRILINEAR_CORNERS_STRUCT.js +20 -0
  1135. package/src/shade/renderer/shader/chunk/texture/chunk_texel_coordinate_to_uv3.d.ts +11 -0
  1136. package/src/shade/renderer/shader/chunk/texture/chunk_texel_coordinate_to_uv3.d.ts.map +1 -0
  1137. package/src/shade/renderer/shader/chunk/texture/chunk_texel_coordinate_to_uv3.js +18 -0
  1138. package/src/shade/renderer/shader/chunk/texture/chunk_uv3_to_texel_coordinate.d.ts +11 -0
  1139. package/src/shade/renderer/shader/chunk/texture/chunk_uv3_to_texel_coordinate.d.ts.map +1 -0
  1140. package/src/shade/renderer/shader/chunk/texture/chunk_uv3_to_texel_coordinate.js +18 -0
  1141. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.d.ts +15 -0
  1142. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.d.ts.map +1 -0
  1143. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_texel_uv.js +27 -0
  1144. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.d.ts +18 -0
  1145. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.d.ts.map +1 -0
  1146. package/src/shade/renderer/shader/chunk/texture/octahedral/chunk_texture_octahedral_skirt_uv.js +24 -0
  1147. package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.d.ts +18 -1
  1148. package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.d.ts.map +1 -1
  1149. package/src/shade/renderer/shader/chunk/texture/sample/chunk_sample_environment_map.js +45 -27
  1150. package/src/shade/renderer/shader/chunk/texture/sample/chunk_texture3d_trilinear_corners.d.ts +35 -0
  1151. package/src/shade/renderer/shader/chunk/texture/sample/chunk_texture3d_trilinear_corners.d.ts.map +1 -0
  1152. package/src/shade/renderer/shader/chunk/texture/sample/chunk_texture3d_trilinear_corners.js +159 -0
  1153. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts +35 -2
  1154. package/src/shade/renderer/shader/compiler/CodeChunk.d.ts.map +1 -1
  1155. package/src/shade/renderer/shader/compiler/CodeChunk.js +65 -2
  1156. package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts +2 -0
  1157. package/src/shade/renderer/shader/compiler/CodeChunkChoice.d.ts.map +1 -1
  1158. package/src/shade/renderer/shader/compiler/CodeChunkChoice.js +10 -0
  1159. package/src/shade/renderer/shader/compiler/SHADER_SWITCH_PROPOSAL_2026_10_16.md +272 -20
  1160. package/src/shade/renderer/shader/compiler/ShaderSwitch.d.ts +1 -1
  1161. package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts +1 -1
  1162. package/src/shade/renderer/shader/compiler/ShaderSwitchSet.d.ts.map +1 -1
  1163. package/src/shade/renderer/shader/compiler/ShaderSwitchSet.js +26 -2
  1164. package/src/shade/renderer/shader/graph/graph_prepare_bindings.d.ts.map +1 -1
  1165. package/src/shade/renderer/shader/graph/graph_prepare_bindings.js +69 -0
  1166. package/src/shade/renderer/shader/resource/ShaderResourceDescriptor.d.ts +94 -2
  1167. package/src/shade/renderer/shader/resource/ShaderResourceDescriptor.d.ts.map +1 -1
  1168. package/src/shade/renderer/shader/resource/ShaderResourceDescriptor.js +333 -2
  1169. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts +14 -1
  1170. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.d.ts.map +1 -1
  1171. package/src/shade/renderer/shader/resource/ShaderResourceGroupDescriptor.js +28 -150
  1172. package/src/shade/renderer/shader/resource/encoder_prepare_shader_bindings_defaults.d.ts +5 -0
  1173. package/src/shade/renderer/shader/resource/encoder_prepare_shader_bindings_defaults.d.ts.map +1 -1
  1174. package/src/shade/renderer/shader/resource/encoder_prepare_shader_bindings_defaults.js +11 -1
  1175. package/src/shade/renderer/shadow/map/SHADOWMAP_RESOURCES.d.ts +12 -0
  1176. package/src/shade/renderer/shadow/map/SHADOWMAP_RESOURCES.d.ts.map +1 -0
  1177. package/src/shade/renderer/shadow/map/SHADOWMAP_RESOURCES.js +14 -0
  1178. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.d.ts.map +1 -1
  1179. package/src/shade/renderer/shadow/map/shader/chunk_sample_shadowmap_atlas_for_light.js +3 -0
  1180. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_filtered.d.ts.map +1 -1
  1181. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_filtered.js +8 -1
  1182. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.d.ts.map +1 -1
  1183. package/src/shade/renderer/shadow/map/shader/chunk_shadowmap_sample_point2.js +3 -0
  1184. package/src/shade/renderer/shadow/ray/shader_screens_space_shadows.d.ts.map +1 -1
  1185. package/src/shade/renderer/shadow/ray/shader_screens_space_shadows.js +3 -0
  1186. package/src/shade/renderer/shadow/sdf/chunk_geometry_sdf_query_distance.d.ts.map +1 -1
  1187. package/src/shade/renderer/shadow/sdf/chunk_geometry_sdf_query_distance.js +3 -3
  1188. package/src/shade/renderer/shadow/sdf/chunk_sdf_geometry_raymarch.d.ts.map +1 -1
  1189. package/src/shade/renderer/shadow/sdf/chunk_sdf_geometry_raymarch.js +3 -3
  1190. package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts +5 -3
  1191. package/src/shade/renderer/shadow/vsm/VSMPageManager.d.ts.map +1 -1
  1192. package/src/shade/renderer/shadow/vsm/VSMPageManager.js +86 -89
  1193. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.d.ts.map +1 -1
  1194. package/src/shade/renderer/shadow/vsm/VirtualShadowMap.js +12 -9
  1195. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts +2 -2
  1196. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.d.ts.map +1 -1
  1197. package/src/shade/renderer/shadow/vsm/shader/chunk_vsm_append_mover.js +13 -26
  1198. package/src/shade/renderer/texture/SAMPLER_LINEAR_RESOURCE.d.ts +7 -0
  1199. package/src/shade/renderer/texture/SAMPLER_LINEAR_RESOURCE.d.ts.map +1 -0
  1200. package/src/shade/renderer/texture/SAMPLER_LINEAR_RESOURCE.js +8 -0
  1201. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts +66 -47
  1202. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.d.ts.map +1 -1
  1203. package/src/shade/renderer/texture/atlas/GPUTileAtlas3D.js +193 -117
  1204. package/src/shade/renderer/texture/atlas/chunk_tile_atlas_slot_origin.d.ts +20 -0
  1205. package/src/shade/renderer/texture/atlas/chunk_tile_atlas_slot_origin.d.ts.map +1 -0
  1206. package/src/shade/renderer/texture/atlas/chunk_tile_atlas_slot_origin.js +30 -0
  1207. package/src/shade/renderer/texture/draw_texture_as_rgba.d.ts +2 -0
  1208. package/src/shade/renderer/texture/draw_texture_as_rgba.d.ts.map +1 -1
  1209. package/src/shade/renderer/texture/draw_texture_as_rgba.js +2 -0
  1210. package/src/shade/renderer/texture/graph_draw_texture_3d_slice_as_rgba.d.ts +31 -0
  1211. package/src/shade/renderer/texture/graph_draw_texture_3d_slice_as_rgba.d.ts.map +1 -0
  1212. package/src/shade/renderer/texture/graph_draw_texture_3d_slice_as_rgba.js +116 -0
  1213. package/src/shade/renderer/texture/shader_draw_texture_3d_slice_as_rgba.d.ts +33 -0
  1214. package/src/shade/renderer/texture/shader_draw_texture_3d_slice_as_rgba.d.ts.map +1 -0
  1215. package/src/shade/renderer/texture/shader_draw_texture_3d_slice_as_rgba.js +90 -0
  1216. package/src/shade/renderer/texture/util/ZERO_UINT_PIXEL_TEXTURE.d.ts +10 -0
  1217. package/src/shade/renderer/texture/util/ZERO_UINT_PIXEL_TEXTURE.d.ts.map +1 -0
  1218. package/src/shade/renderer/texture/util/ZERO_UINT_PIXEL_TEXTURE.js +33 -0
  1219. package/src/shade/renderer/view/GPUViewSkyContext.js +169 -169
  1220. package/src/shade/renderer/view/VIEW_RESOURCE.d.ts +7 -0
  1221. package/src/shade/renderer/view/VIEW_RESOURCE.d.ts.map +1 -0
  1222. package/src/shade/renderer/view/VIEW_RESOURCE.js +8 -0
  1223. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts +7 -4
  1224. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.d.ts.map +1 -1
  1225. package/src/shade/renderer/volumetrics/GPUSceneVolumetrics.js +192 -13
  1226. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts +8 -5
  1227. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  1228. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +9 -5
  1229. package/src/shade/renderer/volumetrics/NOTES.md +256 -0
  1230. package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.d.ts.map +1 -1
  1231. package/src/shade/renderer/volumetrics/PARTICIPATING_MEDIA_VOLUME_STRUCT.js +12 -0
  1232. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts +31 -5
  1233. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.d.ts.map +1 -1
  1234. package/src/shade/renderer/volumetrics/ParticipatingMediaVolume.js +53 -12
  1235. package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts +27 -11
  1236. package/src/shade/renderer/volumetrics/SceneVolumetrics.d.ts.map +1 -1
  1237. package/src/shade/renderer/volumetrics/SceneVolumetrics.js +30 -11
  1238. package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.d.ts.map +1 -1
  1239. package/src/shade/renderer/volumetrics/VOLUMETRICS_METADATA_STRUCT.js +1 -1
  1240. package/src/shade/renderer/volumetrics/VOLUMETRICS_RESOURCES.d.ts +17 -0
  1241. package/src/shade/renderer/volumetrics/VOLUMETRICS_RESOURCES.d.ts.map +1 -0
  1242. package/src/shade/renderer/volumetrics/VOLUMETRICS_RESOURCES.js +20 -0
  1243. package/src/shade/renderer/volumetrics/VOLUMETRIC_NOISE_PLAN_2026_10_15.md +13 -3
  1244. package/src/shade/renderer/volumetrics/chunk_integrate_optical_depth.d.ts.map +1 -1
  1245. package/src/shade/renderer/volumetrics/chunk_integrate_optical_depth.js +82 -76
  1246. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts +4 -3
  1247. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.d.ts.map +1 -1
  1248. package/src/shade/renderer/volumetrics/chunk_participating_media_volume_sample.js +4 -3
  1249. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.d.ts.map +1 -1
  1250. package/src/shade/renderer/volumetrics/chunk_volumetrics_froxel_uvw_from_clip.js +3 -0
  1251. package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.d.ts.map +1 -1
  1252. package/src/shade/renderer/volumetrics/chunk_volumetrics_local_light_shadow.js +3 -0
  1253. package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.d.ts +36 -0
  1254. package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.d.ts.map +1 -0
  1255. package/src/shade/renderer/volumetrics/chunk_volumetrics_media_group_list.js +129 -0
  1256. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts +7 -0
  1257. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.d.ts.map +1 -1
  1258. package/src/shade/renderer/volumetrics/chunk_volumetrics_sun_optical_depth.js +152 -130
  1259. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.d.ts.map +1 -1
  1260. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_froxel_centre_ws.js +5 -0
  1261. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts +7 -9
  1262. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.d.ts.map +1 -1
  1263. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi.js +11 -9
  1264. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts +35 -0
  1265. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.d.ts.map +1 -0
  1266. package/src/shade/renderer/volumetrics/gi/chunk_volumetrics_gi_sample.js +105 -0
  1267. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts +15 -9
  1268. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.d.ts.map +1 -1
  1269. package/src/shade/renderer/volumetrics/gi/graph_build_froxel_gi.js +26 -36
  1270. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts +10 -0
  1271. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.d.ts.map +1 -0
  1272. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi.js +51 -0
  1273. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts +11 -0
  1274. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.d.ts.map +1 -1
  1275. package/src/shade/renderer/volumetrics/gi/volumetrics_gi_resources.js +19 -6
  1276. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts +9 -5
  1277. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.d.ts.map +1 -1
  1278. package/src/shade/renderer/volumetrics/graph_build_froxel_irradiance.js +11 -5
  1279. package/src/shade/renderer/volumetrics/graph_build_volumetrics.d.ts.map +1 -1
  1280. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +100 -12
  1281. package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts +35 -0
  1282. package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.d.ts.map +1 -1
  1283. package/src/shade/renderer/volumetrics/noise/PARTICIPATING_MEDIA_NOISE.js +37 -0
  1284. package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts +2 -1
  1285. package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.d.ts.map +1 -1
  1286. package/src/shade/renderer/volumetrics/noise/bake_volumetrics_noise_tile.js +8 -3
  1287. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts +45 -13
  1288. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.d.ts.map +1 -1
  1289. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise.js +50 -69
  1290. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_carried.d.ts +14 -0
  1291. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_carried.d.ts.map +1 -0
  1292. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_carried.js +76 -0
  1293. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_scrolled.d.ts +14 -0
  1294. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_scrolled.d.ts.map +1 -0
  1295. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_scrolled.js +38 -0
  1296. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_tap.d.ts +21 -0
  1297. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_tap.d.ts.map +1 -0
  1298. package/src/shade/renderer/volumetrics/noise/chunk_participating_media_noise_tap.js +74 -0
  1299. package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.d.ts +26 -0
  1300. package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.d.ts.map +1 -0
  1301. package/src/shade/renderer/volumetrics/shader_volumetrics_bin_participating_media.js +110 -0
  1302. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts +6 -0
  1303. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.d.ts.map +1 -1
  1304. package/src/shade/renderer/volumetrics/shader_volumetrics_build_irradiance.js +11 -2
  1305. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts +7 -0
  1306. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.d.ts.map +1 -1
  1307. package/src/shade/renderer/volumetrics/shader_volumetrics_build_lighting.js +14 -4
  1308. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.d.ts.map +1 -1
  1309. package/src/shade/renderer/volumetrics/shader_volumetrics_build_participating_media.js +53 -15
  1310. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.d.ts.map +1 -1
  1311. package/src/shade/renderer/volumetrics/shader_volumetrics_build_scattering_lut.js +9 -4
  1312. package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.d.ts +31 -0
  1313. package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.d.ts.map +1 -0
  1314. package/src/shade/renderer/volumetrics/shader_volumetrics_split_participating_media.js +139 -0
  1315. package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.d.ts.map +1 -1
  1316. package/src/shade/renderer/volumetrics/volumetrics_position_world_to_froxel_uvw.js +5 -0
  1317. package/src/shade/renderer/water/GPUWaterRenderer.d.ts +1 -2
  1318. package/src/shade/renderer/water/GPUWaterRenderer.d.ts.map +1 -1
  1319. package/src/shade/renderer/water/GPUWaterRenderer.js +15 -24
  1320. package/src/shade/renderer/water/chunk_water_gi.d.ts +10 -2
  1321. package/src/shade/renderer/water/chunk_water_gi.d.ts.map +1 -1
  1322. package/src/shade/renderer/water/chunk_water_gi.js +70 -56
  1323. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts +2 -2
  1324. package/src/shade/renderer/water/optics/chunk_water_inscatter.d.ts.map +1 -1
  1325. package/src/shade/renderer/water/optics/chunk_water_inscatter.js +5 -2
  1326. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts +1 -2
  1327. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.d.ts.map +1 -1
  1328. package/src/shade/renderer/water/optics/chunk_water_receiver_downwelling.js +4 -2
  1329. package/src/shade/renderer/water/shader_water.d.ts +9 -12
  1330. package/src/shade/renderer/water/shader_water.d.ts.map +1 -1
  1331. package/src/shade/renderer/water/shader_water.js +69 -47
  1332. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts +4 -1
  1333. package/src/shade/renderer/water/surface/GPUWaterSurface.d.ts.map +1 -1
  1334. package/src/shade/renderer/water/surface/GPUWaterSurface.js +9 -3
  1335. package/src/shade/renderer/water/surface/WATER_SURFACE_RESOURCES.d.ts +15 -0
  1336. package/src/shade/renderer/water/surface/WATER_SURFACE_RESOURCES.d.ts.map +1 -0
  1337. package/src/shade/renderer/water/surface/WATER_SURFACE_RESOURCES.js +27 -0
  1338. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts +2 -1
  1339. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.d.ts.map +1 -1
  1340. package/src/shade/renderer/water/surface/WATER_WAVE_RECORD_STRUCT.js +18 -9
  1341. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +0 -3
  1342. package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts.map +1 -1
  1343. package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +15 -3
  1344. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +2 -2
  1345. package/src/shade/renderer/water/surface/shader_water_cull.d.ts +9 -3
  1346. package/src/shade/renderer/water/surface/shader_water_cull.d.ts.map +1 -1
  1347. package/src/shade/renderer/water/surface/shader_water_cull.js +46 -22
  1348. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts +26 -1
  1349. package/src/shade/renderer/water/surface/shader_water_waves_derive.d.ts.map +1 -1
  1350. package/src/shade/renderer/water/surface/shader_water_waves_derive.js +73 -9
  1351. package/src/shade/renderer/wind/GPUSceneWind.d.ts +127 -0
  1352. package/src/shade/renderer/wind/GPUSceneWind.d.ts.map +1 -0
  1353. package/src/shade/renderer/wind/GPUSceneWind.js +410 -0
  1354. package/src/shade/renderer/wind/WIND_FIELD.d.ts +53 -0
  1355. package/src/shade/renderer/wind/WIND_FIELD.d.ts.map +1 -0
  1356. package/src/shade/renderer/wind/WIND_FIELD.js +60 -0
  1357. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +36 -0
  1358. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -0
  1359. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +61 -0
  1360. package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts +17 -0
  1361. package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts.map +1 -0
  1362. package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.js +17 -0
  1363. package/src/shade/renderer/wind/chunk_wind_field_sample.d.ts +20 -0
  1364. package/src/shade/renderer/wind/chunk_wind_field_sample.d.ts.map +1 -0
  1365. package/src/shade/renderer/wind/chunk_wind_field_sample.js +26 -0
  1366. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +40 -0
  1367. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -0
  1368. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +92 -0
  1369. package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts +12 -0
  1370. package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts.map +1 -0
  1371. package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.js +22 -0
  1372. package/src/shade/renderer/wind/wind_field_add_resources.d.ts +15 -0
  1373. package/src/shade/renderer/wind/wind_field_add_resources.d.ts.map +1 -0
  1374. package/src/shade/renderer/wind/wind_field_add_resources.js +22 -0
  1375. package/src/shade/wgsl/emulator/CPUBitmapData.d.ts +5 -2
  1376. package/src/shade/wgsl/emulator/CPUBitmapData.d.ts.map +1 -1
  1377. package/src/shade/wgsl/emulator/CPUBitmapData.js +5 -2
  1378. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +5 -1
  1379. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  1380. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +75 -22
  1381. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  1382. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +90 -22
  1383. package/src/engine/physics/cloth/wind/ClothAmbientWind.d.ts +0 -87
  1384. package/src/engine/physics/cloth/wind/ClothAmbientWind.d.ts.map +0 -1
  1385. package/src/engine/physics/cloth/wind/ClothAmbientWind.js +0 -185
  1386. package/src/shade/renderer/geometry/sdf/chunk_sdf_slot_index_to_texture_offset.d.ts +0 -7
  1387. package/src/shade/renderer/geometry/sdf/chunk_sdf_slot_index_to_texture_offset.d.ts.map +0 -1
  1388. package/src/shade/renderer/geometry/sdf/chunk_sdf_slot_index_to_texture_offset.js +0 -25
  1389. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts +0 -43
  1390. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.d.ts.map +0 -1
  1391. package/src/shade/renderer/global_illumination/clipmap/GPUClipMap3D.js +0 -207
  1392. package/src/shade/renderer/global_illumination/clipmap/RadianceField.d.ts +0 -21
  1393. package/src/shade/renderer/global_illumination/clipmap/RadianceField.d.ts.map +0 -1
  1394. package/src/shade/renderer/global_illumination/clipmap/RadianceField.js +0 -40
  1395. package/src/shade/renderer/global_illumination/clipmap/chunk_clip_cascade_wrap_coord.d.ts +0 -13
  1396. package/src/shade/renderer/global_illumination/clipmap/chunk_clip_cascade_wrap_coord.d.ts.map +0 -1
  1397. package/src/shade/renderer/global_illumination/clipmap/chunk_clip_cascade_wrap_coord.js +0 -47
  1398. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts +0 -7
  1399. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.d.ts.map +0 -1
  1400. package/src/shade/renderer/global_illumination/clipmap/shader_update_clipmap_cascade.js +0 -115
  1401. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_LOCAL_LIGHT_LIMIT.d.ts +0 -7
  1402. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_LOCAL_LIGHT_LIMIT.d.ts.map +0 -1
  1403. package/src/shade/renderer/light/cluster/LIGHT_CLUSTER_LOCAL_LIGHT_LIMIT.js +0 -6
  1404. package/src/shade/renderer/light/cluster/chunk_cluster_keep_smallest.d.ts +0 -21
  1405. package/src/shade/renderer/light/cluster/chunk_cluster_keep_smallest.d.ts.map +0 -1
  1406. package/src/shade/renderer/light/cluster/chunk_cluster_keep_smallest.js +0 -47
  1407. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts +0 -21
  1408. package/src/shade/renderer/postprocess/ssr/resolve/build_ssr_resolve_shader.d.ts.map +0 -1
  1409. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts +0 -2
  1410. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.d.ts.map +0 -1
  1411. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_Brick4.js +0 -24
  1412. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts +0 -2
  1413. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.d.ts.map +0 -1
  1414. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_IBL.js +0 -21
  1415. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts +0 -2
  1416. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.d.ts.map +0 -1
  1417. package/src/shade/renderer/postprocess/ssr/resolve/ssr_resolve_shader_LPV.js +0 -34
  1418. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts +0 -3
  1419. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_brick4.d.ts.map +0 -1
  1420. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts +0 -7
  1421. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.d.ts.map +0 -1
  1422. package/src/shade/renderer/rasterize/forward/chunk_forward_shade_standard_fragment_ibl.js +0 -184
  1423. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts +0 -9
  1424. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_brick4.d.ts.map +0 -1
  1425. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts +0 -9
  1426. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.d.ts.map +0 -1
  1427. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_draw_ibl.js +0 -111
  1428. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.d.ts +0 -9
  1429. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.d.ts.map +0 -1
  1430. package/src/shade/renderer/rasterize/native/oit/shader_oit_resolve_moments_ibl.js +0 -111
  1431. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Hauber.d.ts +0 -9
  1432. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Hauber.d.ts.map +0 -1
  1433. package/src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Hauber.js +0 -22
  1434. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts +0 -10
  1435. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.d.ts.map +0 -1
  1436. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_brick4.js +0 -55
  1437. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts +0 -10
  1438. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.d.ts.map +0 -1
  1439. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_ibl.js +0 -47
  1440. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts +0 -10
  1441. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.d.ts.map +0 -1
  1442. package/src/shade/renderer/volumetrics/gi/shader_volumetrics_gi_lpv.js +0 -63
@@ -1,5 +1,14 @@
1
1
  /**
2
- * Original approximation by Christophe Schlick '94
2
+ * Schlick's approximation of the Fresnel reflectance (Schlick 1994), in the form Unreal's rasterizer evaluates it
3
+ * (`F_Schlick(F0, F90, VoH)` in UE 5.4's `BRDF.ush`, which Substrate's `Substrate_F_GGX` calls): `(1 - VoH)^5` by
4
+ * multiplies, as its `Pow5`, then `F90 Fc + (1 - Fc) F0`. A `pow(x, 5.0)` compiles to a log and an exp under DXC.
5
+ *
6
+ * It is linear in F0 and F90 and reflects all of a perfect conductor (F0 = F90 = 1) at every angle, so the split-sum
7
+ * LUT holds both its split, `f0 · A + f90 · B` (`chunk_integrate_brdf` integrates this weight), and in `A + B` the
8
+ * albedo Turquin's compensation needs. The direct lobe and every indirect path therefore reflect one Fresnel; see
9
+ * `FRESNEL_BRIEF_2026_10_16.md` beside the BRDF chunks for why Hauber's approximation could not.
10
+ *
11
+ * `f90` is a scalar: every caller passes one (1 for the specular lobe, Burley's retro-reflection term for diffuse).
3
12
  */
4
13
  export const chunk_F_Schlick: CodeChunk;
5
14
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_F_Schlick.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.js"],"names":[],"mappings":"AAEA;;GAEG;AACH,wCASC;0BAdyB,gCAAgC"}
1
+ {"version":3,"file":"chunk_F_Schlick.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/brdf/fresnel/chunk_F_Schlick.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wCAWE;0BAzBwB,gCAAgC"}
@@ -1,15 +1,26 @@
1
1
  import { CodeChunk } from "../../../compiler/CodeChunk.js";
2
2
 
3
3
  /**
4
- * Original approximation by Christophe Schlick '94
4
+ * Schlick's approximation of the Fresnel reflectance (Schlick 1994), in the form Unreal's rasterizer evaluates it
5
+ * (`F_Schlick(F0, F90, VoH)` in UE 5.4's `BRDF.ush`, which Substrate's `Substrate_F_GGX` calls): `(1 - VoH)^5` by
6
+ * multiplies, as its `Pow5`, then `F90 Fc + (1 - Fc) F0`. A `pow(x, 5.0)` compiles to a log and an exp under DXC.
7
+ *
8
+ * It is linear in F0 and F90 and reflects all of a perfect conductor (F0 = F90 = 1) at every angle, so the split-sum
9
+ * LUT holds both its split, `f0 · A + f90 · B` (`chunk_integrate_brdf` integrates this weight), and in `A + B` the
10
+ * albedo Turquin's compensation needs. The direct lobe and every indirect path therefore reflect one Fresnel; see
11
+ * `FRESNEL_BRIEF_2026_10_16.md` beside the BRDF chunks for why Hauber's approximation could not.
12
+ *
13
+ * `f90` is a scalar: every caller passes one (1 for the specular lobe, Burley's retro-reflection term for diffuse).
5
14
  */
6
15
  export const chunk_F_Schlick = CodeChunk.from(
7
16
  //language=WGSL
8
17
  `
9
18
  fn F_Schlick( f0: vec3<f32>, f90: f32, VoH: f32 ) -> vec3<f32> {
10
- let fresnel = pow(1.0 - VoH, 5.0);
11
-
12
- return mix( f0, vec3( f90 ), fresnel );
19
+ let x = 1.0 - VoH;
20
+ let x2 = x * x;
21
+ let Fc = x2 * x2 * x;
22
+
23
+ return f90 * Fc + (1.0 - Fc) * f0;
13
24
  }
14
25
  `
15
- )
26
+ );
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Every leaf of a BVH whose box overlaps one query box, found by a whole workgroup together and
3
+ * returned as payloads in ascending order.
4
+ *
5
+ * ## Why not a stack per thread
6
+ *
7
+ * The engine's traversals (`chunk_sdf_query_distance`, `chunk_ray_query_*`) walk a stack per
8
+ * thread with no cap on visits, which is right for one ray per thread and wrong for one box per
9
+ * workgroup: the box meets a subtree, not a path, and one thread walking it serially is the slowest
10
+ * thread of the dispatch. This expands the tree a **level at a time** instead, as the vgeo cut does
11
+ * its descent: every node on the current level is tested by its own invocation, the survivors'
12
+ * children are appended to the next level, overlapping leaves to the candidate list, and a barrier
13
+ * separates the levels. Per-invocation work is bounded by the depth of the tree, not by the size of
14
+ * the answer.
15
+ *
16
+ * ## The contract
17
+ *
18
+ * Call `bvh_query_aabb_cooperative(root, query, lane)` from every invocation of a workgroup of
19
+ * exactly `BVH_QUERY_AABB_WORKGROUP_SIZE` invocations, in uniform control flow, with `lane` the
20
+ * `local_invocation_index` and `root` and `query` the same in every invocation. `root` is the
21
+ * tree's root word (word 0 of `BVH_BUFFER_LAYOUT`), and `BVH_NULL_NODE` for an empty tree. `query`
22
+ * is `[min.xyz, max.xyz]`; touching counts as overlapping, as in `aabb3_intersects_aabb3`.
23
+ *
24
+ * It returns a `BVHQueryAABBResult` whose fields are workgroup-uniform, so they can bound the
25
+ * caller's loops. The payloads are `bvh_query_aabb_candidates[0, candidate_count)`, ascending, and
26
+ * visible to every invocation when the call returns. They stay there until the next query.
27
+ *
28
+ * The node layout is `BVH_BUFFER_LAYOUT`'s: a node is a leaf exactly when `child_1` is
29
+ * `BVH_NULL_NODE`, and then `child_2` is its payload.
30
+ *
31
+ * ## The seam: two functions the enclosing shader defines
32
+ *
33
+ * The chunk binds nothing. It reads the tree and filters leaves through two functions the shader
34
+ * that includes it must define, in the manner of the particle VM's `vm_reg_read` and
35
+ * `vm_reg_write`:
36
+ *
37
+ * - `fn bvh_query_aabb_node(index: u32) -> BVH2Node` returns node `index`, where `BVH2Node` is
38
+ * `BVH2_NODE_STRUCT.wgsl_ref`. A tree bound as `BVH_STRUCT` answers with `tree.nodes[index]`; one
39
+ * inside a word arena reads its eight words.
40
+ * - `fn bvh_query_aabb_accept_leaf(payload: u32, bounds: array<f32, 6>) -> bool` is asked about
41
+ * every leaf that overlaps the box, before it takes a place on the list. A caller with nothing to
42
+ * filter returns `true`. The fluid's resolution cull lives here: a leaf too small for the cascade
43
+ * is refused before it can crowd out one that is not.
44
+ *
45
+ * ## Deterministic order
46
+ *
47
+ * Appends from different subgroups land in whatever order the hardware runs them, so the list is
48
+ * sorted by payload before it is returned: the bitonic network of `chunk_sort_bitonic_comparator`
49
+ * over the smallest power-of-two prefix that holds the candidates (`sort_bitonic_size`), padded
50
+ * with `0xffffffff`, one compare-exchange per invocation per stage. A payload that is a stable row index then makes "the lowest K" the same K every frame for
51
+ * the same overlaps, however the traversal was scheduled.
52
+ *
53
+ * ## Bounds, and what is counted
54
+ *
55
+ * Nothing is dropped silently. A level whose appends pass `BVH_QUERY_AABB_FRONTIER_CAPACITY`, and a
56
+ * list still holding nodes when `BVH_QUERY_AABB_LEVEL_BUDGET` levels have been expanded, add those
57
+ * nodes to `nodes_dropped`: subtrees never tested. A leaf that passes the filter when the candidate
58
+ * list is full adds to `candidates_dropped`. With both zero the candidates are every overlapping
59
+ * leaf the filter accepted; with either non-zero they are a subset, and the lowest K of them need
60
+ * not be the lowest K overall.
61
+ *
62
+ * Per invocation, at most `BVH_QUERY_AABB_LEVEL_BUDGET * BVH_QUERY_AABB_FRONTIER_ROUNDS` = 51 * 4 =
63
+ * 204 node reads and filter calls, then two padding writes and 28 compare-exchanges. A query that
64
+ * meets nothing costs one level: the root is read, misses, and the loop leaves.
65
+ *
66
+ * Workgroup memory: two lists of 256 node indices, 128 payloads and five words, 2580 bytes.
67
+ *
68
+ * ## Subgroups
69
+ *
70
+ * Appends are aggregated per subgroup: an exclusive add numbers the subgroup's appends, one elected
71
+ * invocation reserves them all with one workgroup `atomicAdd`, and a broadcast hands each
72
+ * invocation its base. Nothing assumes which invocations share a subgroup or that a subgroup's
73
+ * invocations are contiguous in `local_invocation_index`: a subgroup reserves a run of its own
74
+ * wherever it lands. Every subgroup operation is reached in uniform control flow; the loops' trip
75
+ * counts are literals, and the one early exit is on a value read back through
76
+ * `workgroupUniformLoad`.
77
+ *
78
+ * @type {CodeChunk}
79
+ */
80
+ export const chunk_bvh_query_aabb_cooperative: CodeChunk;
81
+ import { CodeChunk } from "../../compiler/CodeChunk.js";
82
+ //# sourceMappingURL=chunk_bvh_query_aabb_cooperative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh_query_aabb_cooperative.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_cooperative.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,+CAFU,SAAS,CAuMhB;0BA1RuB,6BAA6B"}
@@ -0,0 +1,286 @@
1
+ import { WebGPUExtensionType } from "../../../../descriptor/WebGPUExtensionType.js";
2
+ import { CodeChunk } from "../../compiler/CodeChunk.js";
3
+ import { chunk_sort_bitonic_comparator } from "../../../gpu_primitive/sort/chunk_sort_bitonic_comparator.js";
4
+ import { BVH2_NODE_STRUCT } from "./BVH2_NODE_STRUCT.js";
5
+ import { BVH_NULL_NODE_DEFINITION } from "./BVH_NULL_NODE_DEFINITION.js";
6
+ import { chunk_bvh_query_aabb_frontier } from "./chunk_bvh_query_aabb_frontier.js";
7
+
8
+ /**
9
+ * Every leaf of a BVH whose box overlaps one query box, found by a whole workgroup together and
10
+ * returned as payloads in ascending order.
11
+ *
12
+ * ## Why not a stack per thread
13
+ *
14
+ * The engine's traversals (`chunk_sdf_query_distance`, `chunk_ray_query_*`) walk a stack per
15
+ * thread with no cap on visits, which is right for one ray per thread and wrong for one box per
16
+ * workgroup: the box meets a subtree, not a path, and one thread walking it serially is the slowest
17
+ * thread of the dispatch. This expands the tree a **level at a time** instead, as the vgeo cut does
18
+ * its descent: every node on the current level is tested by its own invocation, the survivors'
19
+ * children are appended to the next level, overlapping leaves to the candidate list, and a barrier
20
+ * separates the levels. Per-invocation work is bounded by the depth of the tree, not by the size of
21
+ * the answer.
22
+ *
23
+ * ## The contract
24
+ *
25
+ * Call `bvh_query_aabb_cooperative(root, query, lane)` from every invocation of a workgroup of
26
+ * exactly `BVH_QUERY_AABB_WORKGROUP_SIZE` invocations, in uniform control flow, with `lane` the
27
+ * `local_invocation_index` and `root` and `query` the same in every invocation. `root` is the
28
+ * tree's root word (word 0 of `BVH_BUFFER_LAYOUT`), and `BVH_NULL_NODE` for an empty tree. `query`
29
+ * is `[min.xyz, max.xyz]`; touching counts as overlapping, as in `aabb3_intersects_aabb3`.
30
+ *
31
+ * It returns a `BVHQueryAABBResult` whose fields are workgroup-uniform, so they can bound the
32
+ * caller's loops. The payloads are `bvh_query_aabb_candidates[0, candidate_count)`, ascending, and
33
+ * visible to every invocation when the call returns. They stay there until the next query.
34
+ *
35
+ * The node layout is `BVH_BUFFER_LAYOUT`'s: a node is a leaf exactly when `child_1` is
36
+ * `BVH_NULL_NODE`, and then `child_2` is its payload.
37
+ *
38
+ * ## The seam: two functions the enclosing shader defines
39
+ *
40
+ * The chunk binds nothing. It reads the tree and filters leaves through two functions the shader
41
+ * that includes it must define, in the manner of the particle VM's `vm_reg_read` and
42
+ * `vm_reg_write`:
43
+ *
44
+ * - `fn bvh_query_aabb_node(index: u32) -> BVH2Node` returns node `index`, where `BVH2Node` is
45
+ * `BVH2_NODE_STRUCT.wgsl_ref`. A tree bound as `BVH_STRUCT` answers with `tree.nodes[index]`; one
46
+ * inside a word arena reads its eight words.
47
+ * - `fn bvh_query_aabb_accept_leaf(payload: u32, bounds: array<f32, 6>) -> bool` is asked about
48
+ * every leaf that overlaps the box, before it takes a place on the list. A caller with nothing to
49
+ * filter returns `true`. The fluid's resolution cull lives here: a leaf too small for the cascade
50
+ * is refused before it can crowd out one that is not.
51
+ *
52
+ * ## Deterministic order
53
+ *
54
+ * Appends from different subgroups land in whatever order the hardware runs them, so the list is
55
+ * sorted by payload before it is returned: the bitonic network of `chunk_sort_bitonic_comparator`
56
+ * over the smallest power-of-two prefix that holds the candidates (`sort_bitonic_size`), padded
57
+ * with `0xffffffff`, one compare-exchange per invocation per stage. A payload that is a stable row index then makes "the lowest K" the same K every frame for
58
+ * the same overlaps, however the traversal was scheduled.
59
+ *
60
+ * ## Bounds, and what is counted
61
+ *
62
+ * Nothing is dropped silently. A level whose appends pass `BVH_QUERY_AABB_FRONTIER_CAPACITY`, and a
63
+ * list still holding nodes when `BVH_QUERY_AABB_LEVEL_BUDGET` levels have been expanded, add those
64
+ * nodes to `nodes_dropped`: subtrees never tested. A leaf that passes the filter when the candidate
65
+ * list is full adds to `candidates_dropped`. With both zero the candidates are every overlapping
66
+ * leaf the filter accepted; with either non-zero they are a subset, and the lowest K of them need
67
+ * not be the lowest K overall.
68
+ *
69
+ * Per invocation, at most `BVH_QUERY_AABB_LEVEL_BUDGET * BVH_QUERY_AABB_FRONTIER_ROUNDS` = 51 * 4 =
70
+ * 204 node reads and filter calls, then two padding writes and 28 compare-exchanges. A query that
71
+ * meets nothing costs one level: the root is read, misses, and the loop leaves.
72
+ *
73
+ * Workgroup memory: two lists of 256 node indices, 128 payloads and five words, 2580 bytes.
74
+ *
75
+ * ## Subgroups
76
+ *
77
+ * Appends are aggregated per subgroup: an exclusive add numbers the subgroup's appends, one elected
78
+ * invocation reserves them all with one workgroup `atomicAdd`, and a broadcast hands each
79
+ * invocation its base. Nothing assumes which invocations share a subgroup or that a subgroup's
80
+ * invocations are contiguous in `local_invocation_index`: a subgroup reserves a run of its own
81
+ * wherever it lands. Every subgroup operation is reached in uniform control flow; the loops' trip
82
+ * counts are literals, and the one early exit is on a value read back through
83
+ * `workgroupUniformLoad`.
84
+ *
85
+ * @type {CodeChunk}
86
+ */
87
+ export const chunk_bvh_query_aabb_cooperative = CodeChunk.from(
88
+ //language=WGSL
89
+ `
90
+ struct BVHQueryAABBResult {
91
+ // payloads in bvh_query_aabb_candidates[0, candidate_count), ascending
92
+ candidate_count: u32,
93
+ // leaves the filter accepted that found the candidate list full
94
+ candidates_dropped: u32,
95
+ // nodes never tested: frontier overflow, and what was left when the level budget ran out
96
+ nodes_dropped: u32,
97
+ }
98
+
99
+ // two lists of node indices, alternating by level; bvh_query_aabb_list says which one a level reads
100
+ var<workgroup> bvh_query_aabb_frontier: array<array<u32, BVH_QUERY_AABB_FRONTIER_CAPACITY>, 2>;
101
+ // appends asked of each list; past the capacity they were counted but not stored
102
+ var<workgroup> bvh_query_aabb_frontier_reserved: array<atomic<u32>, 2>;
103
+ var<workgroup> bvh_query_aabb_candidates: array<u32, BVH_QUERY_AABB_CANDIDATE_CAPACITY>;
104
+ var<workgroup> bvh_query_aabb_candidates_reserved: atomic<u32>;
105
+ // written by invocation 0 only
106
+ var<workgroup> bvh_query_aabb_nodes_dropped: u32;
107
+ // what invocation 0 publishes, read back through workgroupUniformLoad
108
+ var<workgroup> bvh_query_aabb_broadcast: u32;
109
+
110
+ // This invocation's first slot of count appends to a frontier list, reserved for the whole
111
+ // subgroup by one atomic.
112
+ fn bvh_query_aabb_reserve_frontier(list: u32, count: u32) -> u32 {
113
+ let offset = subgroupExclusiveAdd(count);
114
+ let total = subgroupAdd(count);
115
+
116
+ // elected before the branch, which then holds no subgroup operation and may be non-uniform
117
+ let elected = subgroupElect();
118
+
119
+ var base = 0u;
120
+
121
+ if (elected && total > 0u) {
122
+ base = atomicAdd(&bvh_query_aabb_frontier_reserved[list], total);
123
+ }
124
+
125
+ return subgroupBroadcastFirst(base) + offset;
126
+ }
127
+
128
+ // The same, for the candidate list.
129
+ fn bvh_query_aabb_reserve_candidates(count: u32) -> u32 {
130
+ let offset = subgroupExclusiveAdd(count);
131
+ let total = subgroupAdd(count);
132
+
133
+ let elected = subgroupElect();
134
+
135
+ var base = 0u;
136
+
137
+ if (elected && total > 0u) {
138
+ base = atomicAdd(&bvh_query_aabb_candidates_reserved, total);
139
+ }
140
+
141
+ return subgroupBroadcastFirst(base) + offset;
142
+ }
143
+
144
+ // Test this level's list: the children of overlapping internal nodes go on the next list, the
145
+ // payloads of overlapping leaves the filter accepts on the candidate list.
146
+ fn bvh_query_aabb_expand(list: u32, expand_count: u32, query: array<f32, 6>, lane: u32) {
147
+ let next = list ^ 1u;
148
+
149
+ for (var iteration = 0u; iteration < BVH_QUERY_AABB_FRONTIER_ROUNDS; iteration++) {
150
+ let slot = bvh_query_aabb_slot(iteration, lane);
151
+
152
+ var node: ${BVH2_NODE_STRUCT.wgsl_ref};
153
+ var kind = BVH_QUERY_AABB_SKIP;
154
+
155
+ if (slot < expand_count) {
156
+ node = bvh_query_aabb_node(bvh_query_aabb_frontier[list][slot]);
157
+
158
+ kind = bvh_query_aabb_classify(node.bounds, node.child_1, query);
159
+
160
+ if (kind == BVH_QUERY_AABB_LEAF && !bvh_query_aabb_accept_leaf(node.child_2, node.bounds)) {
161
+ kind = BVH_QUERY_AABB_SKIP;
162
+ }
163
+ }
164
+
165
+ // every invocation reserves, holding or not, so the subgroup operations stay uniform
166
+ let frontier_slot = bvh_query_aabb_reserve_frontier(next, select(0u, 2u, kind == BVH_QUERY_AABB_DESCEND));
167
+ let candidate_slot = bvh_query_aabb_reserve_candidates(select(0u, 1u, kind == BVH_QUERY_AABB_LEAF));
168
+
169
+ if (kind == BVH_QUERY_AABB_DESCEND) {
170
+ if (frontier_slot < BVH_QUERY_AABB_FRONTIER_CAPACITY) {
171
+ bvh_query_aabb_frontier[next][frontier_slot] = node.child_1;
172
+ }
173
+ if (frontier_slot + 1u < BVH_QUERY_AABB_FRONTIER_CAPACITY) {
174
+ bvh_query_aabb_frontier[next][frontier_slot + 1u] = node.child_2;
175
+ }
176
+ }
177
+
178
+ if (kind == BVH_QUERY_AABB_LEAF && candidate_slot < BVH_QUERY_AABB_CANDIDATE_CAPACITY) {
179
+ bvh_query_aabb_candidates[candidate_slot] = node.child_2;
180
+ }
181
+ }
182
+ }
183
+
184
+ // Order the first count candidates ascending, through the power-of-two prefix that holds them.
185
+ fn bvh_query_aabb_sort(count: u32, lane: u32) {
186
+ let span = sort_bitonic_size(count);
187
+
188
+ // the prefix past the candidates sorts last
189
+ for (var iteration = 0u; iteration < BVH_QUERY_AABB_CANDIDATE_ROUNDS; iteration++) {
190
+ let slot = iteration * BVH_QUERY_AABB_WORKGROUP_SIZE + lane;
191
+
192
+ if (slot >= count && slot < span) {
193
+ bvh_query_aabb_candidates[slot] = 0xffffffffu;
194
+ }
195
+ }
196
+
197
+ // span is workgroup-uniform, so is every bound and exit below
198
+ for (var k = 2u; k <= BVH_QUERY_AABB_CANDIDATE_CAPACITY; k = k << 1u) {
199
+ if (k > span) {
200
+ break;
201
+ }
202
+
203
+ for (var j = k >> 1u; j > 0u; j = j >> 1u) {
204
+ workgroupBarrier();
205
+
206
+ // the smaller of the two belongs in pair.x
207
+ let pair = sort_bitonic_comparator(lane, k, j);
208
+
209
+ // a pair is wholly inside the prefix or wholly past it
210
+ if (max(pair.x, pair.y) < span) {
211
+ let a = bvh_query_aabb_candidates[pair.x];
212
+ let b = bvh_query_aabb_candidates[pair.y];
213
+
214
+ if (b < a) {
215
+ bvh_query_aabb_candidates[pair.x] = b;
216
+ bvh_query_aabb_candidates[pair.y] = a;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+
223
+ fn bvh_query_aabb_cooperative(root: u32, query: array<f32, 6>, lane: u32) -> BVHQueryAABBResult {
224
+ // whatever the workgroup did with a previous query's candidates is done before they are reset
225
+ workgroupBarrier();
226
+
227
+ if (lane == 0u) {
228
+ bvh_query_aabb_frontier[0][0] = root;
229
+ atomicStore(&bvh_query_aabb_frontier_reserved[0], select(1u, 0u, root == BVH_NULL_NODE));
230
+ atomicStore(&bvh_query_aabb_frontier_reserved[1], 0u);
231
+ atomicStore(&bvh_query_aabb_candidates_reserved, 0u);
232
+ bvh_query_aabb_nodes_dropped = 0u;
233
+ }
234
+
235
+ // one pass past the budget, to count what the last expanded level left on its list; that
236
+ // pass publishes nothing to expand, so the loop always leaves through the break
237
+ for (var level = 0u; level <= BVH_QUERY_AABB_LEVEL_BUDGET; level++) {
238
+ let list = bvh_query_aabb_list(level);
239
+
240
+ // every append to this level's list has landed
241
+ workgroupBarrier();
242
+
243
+ if (lane == 0u) {
244
+ let published = bvh_query_aabb_publish(atomicLoad(&bvh_query_aabb_frontier_reserved[list]), level);
245
+
246
+ bvh_query_aabb_broadcast = published.x;
247
+ bvh_query_aabb_nodes_dropped += published.y;
248
+
249
+ // the list this level appends to, read two levels ago and empty again
250
+ atomicStore(&bvh_query_aabb_frontier_reserved[list ^ 1u], 0u);
251
+ }
252
+
253
+ let expand_count = workgroupUniformLoad(&bvh_query_aabb_broadcast);
254
+
255
+ if (expand_count == 0u) {
256
+ break;
257
+ }
258
+
259
+ bvh_query_aabb_expand(list, expand_count, query, lane);
260
+ }
261
+
262
+ // every invocation has read the last broadcast before invocation 0 writes the next
263
+ workgroupBarrier();
264
+
265
+ if (lane == 0u) {
266
+ bvh_query_aabb_broadcast = atomicLoad(&bvh_query_aabb_candidates_reserved);
267
+ }
268
+
269
+ let reserved = workgroupUniformLoad(&bvh_query_aabb_broadcast);
270
+ let count = min(reserved, BVH_QUERY_AABB_CANDIDATE_CAPACITY);
271
+
272
+ bvh_query_aabb_sort(count, lane);
273
+
274
+ // also the barrier that makes the sorted list visible to every invocation
275
+ let nodes_dropped = workgroupUniformLoad(&bvh_query_aabb_nodes_dropped);
276
+
277
+ return BVHQueryAABBResult(count, reserved - count, nodes_dropped);
278
+ }
279
+ `, [
280
+ BVH2_NODE_STRUCT.declaration_chunk,
281
+ BVH_NULL_NODE_DEFINITION,
282
+ chunk_bvh_query_aabb_frontier,
283
+ chunk_sort_bitonic_comparator,
284
+ ]);
285
+
286
+ chunk_bvh_query_aabb_cooperative.addExtension(WebGPUExtensionType.Subgroups);
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Invocations in a workgroup running {@link chunk_bvh_query_aabb_cooperative}: two subgroups on a
3
+ * 32-wide part, one on a 64-wide one. Small on purpose, because the caller dispatches one workgroup
4
+ * per query box and most boxes meet only a handful of leaves.
5
+ * @type {number}
6
+ */
7
+ export const BVH_QUERY_AABB_WORKGROUP_SIZE: number;
8
+ /**
9
+ * Nodes one level of the frontier holds. Both children of every overlapping internal node go on
10
+ * it, so it carries 128 overlapping internal nodes a level: as wide as the candidate list.
11
+ * @type {number}
12
+ */
13
+ export const BVH_QUERY_AABB_FRONTIER_CAPACITY: number;
14
+ /**
15
+ * Leaf payloads the query gathers. Twice the workgroup, so the sort is one compare-exchange per
16
+ * invocation per stage.
17
+ * @type {number}
18
+ */
19
+ export const BVH_QUERY_AABB_CANDIDATE_CAPACITY: number;
20
+ /**
21
+ * Levels of the frontier the query expands, depths 0 through 50.
22
+ *
23
+ * The deepest leaf of a Karras LBVH over at most 2^20 leaves is at depth 50. An internal node's
24
+ * split is the common-prefix length of its range, and a child's is strictly longer than its
25
+ * parent's, so a root-to-leaf path holds at most as many internal nodes as there are distinct
26
+ * prefix lengths: 2..31 for distinct 30-bit codes (30 values) and 32 + 12..31 for equal codes
27
+ * whose indices are below 2^20 (20 values). Fifty internal nodes, then the leaf.
28
+ *
29
+ * A deeper tree, which another builder may produce, is not walked past the budget; what is left
30
+ * on the frontier is counted in `nodes_dropped`.
31
+ * @type {number}
32
+ */
33
+ export const BVH_QUERY_AABB_LEVEL_BUDGET: number;
34
+ /**
35
+ * The pure parts of {@link chunk_bvh_query_aabb_cooperative}: its bounds, how a node is classified
36
+ * against the query box, and how a level's list is published.
37
+ * Everything here is per invocation and runs under the emulator; the cooperative chunk is the
38
+ * workgroup memory, the barriers and the subgroup appends around it.
39
+ *
40
+ * Per-invocation work is `BVH_QUERY_AABB_LEVEL_BUDGET * BVH_QUERY_AABB_FRONTIER_ROUNDS` = 51 * 4 =
41
+ * 204 node reads at most, then the candidate sort's 28 compare-exchanges.
42
+ *
43
+ * @type {CodeChunk}
44
+ */
45
+ export const chunk_bvh_query_aabb_frontier: CodeChunk;
46
+ import { CodeChunk } from "../../compiler/CodeChunk.js";
47
+ //# sourceMappingURL=chunk_bvh_query_aabb_frontier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh_query_aabb_frontier.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/bvh/chunk_bvh_query_aabb_frontier.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,4CAFU,MAAM,CAEgC;AAEhD;;;;GAIG;AACH,+CAFU,MAAM,CAEoC;AAEpD;;;;GAIG;AACH,gDAFU,MAAM,CAEqC;AASrD;;;;;;;;;;;;GAYG;AACH,0CAFU,MAAM,CAE6C;AAW7D;;;;;;;;;;GAUG;AACH,4CAFU,SAAS,CAqDhB;0BAvHuB,6BAA6B"}
@@ -0,0 +1,121 @@
1
+ import { assert } from "../../../../../core/assert.js";
2
+ import { CodeChunk } from "../../compiler/CodeChunk.js";
3
+ import { chunk_aabb3_intersects_aabb3 } from "../geometry/aabb3/chunk_aabb3_intersects_aabb3.js";
4
+ import { BVH_NULL_NODE_DEFINITION } from "./BVH_NULL_NODE_DEFINITION.js";
5
+
6
+ /**
7
+ * Invocations in a workgroup running {@link chunk_bvh_query_aabb_cooperative}: two subgroups on a
8
+ * 32-wide part, one on a 64-wide one. Small on purpose, because the caller dispatches one workgroup
9
+ * per query box and most boxes meet only a handful of leaves.
10
+ * @type {number}
11
+ */
12
+ export const BVH_QUERY_AABB_WORKGROUP_SIZE = 64;
13
+
14
+ /**
15
+ * Nodes one level of the frontier holds. Both children of every overlapping internal node go on
16
+ * it, so it carries 128 overlapping internal nodes a level: as wide as the candidate list.
17
+ * @type {number}
18
+ */
19
+ export const BVH_QUERY_AABB_FRONTIER_CAPACITY = 256;
20
+
21
+ /**
22
+ * Leaf payloads the query gathers. Twice the workgroup, so the sort is one compare-exchange per
23
+ * invocation per stage.
24
+ * @type {number}
25
+ */
26
+ export const BVH_QUERY_AABB_CANDIDATE_CAPACITY = 128;
27
+
28
+ /**
29
+ * Bits of an LBVH sort key: a 30-bit Morton code (`shader_bvh_morton`, ten bits per axis) and the
30
+ * leaf index that breaks ties between equal codes (`bvh_delta`), 20 bits for up to 2^20 leaves.
31
+ * @type {number}
32
+ */
33
+ const LBVH_KEY_BITS = 30 + 20;
34
+
35
+ /**
36
+ * Levels of the frontier the query expands, depths 0 through 50.
37
+ *
38
+ * The deepest leaf of a Karras LBVH over at most 2^20 leaves is at depth 50. An internal node's
39
+ * split is the common-prefix length of its range, and a child's is strictly longer than its
40
+ * parent's, so a root-to-leaf path holds at most as many internal nodes as there are distinct
41
+ * prefix lengths: 2..31 for distinct 30-bit codes (30 values) and 32 + 12..31 for equal codes
42
+ * whose indices are below 2^20 (20 values). Fifty internal nodes, then the leaf.
43
+ *
44
+ * A deeper tree, which another builder may produce, is not walked past the budget; what is left
45
+ * on the frontier is counted in `nodes_dropped`.
46
+ * @type {number}
47
+ */
48
+ export const BVH_QUERY_AABB_LEVEL_BUDGET = LBVH_KEY_BITS + 1;
49
+
50
+ assert.equal(
51
+ BVH_QUERY_AABB_FRONTIER_CAPACITY % BVH_QUERY_AABB_WORKGROUP_SIZE, 0,
52
+ 'the frontier is expanded in whole rounds of the workgroup'
53
+ );
54
+ assert.equal(
55
+ BVH_QUERY_AABB_CANDIDATE_CAPACITY, 2 * BVH_QUERY_AABB_WORKGROUP_SIZE,
56
+ 'the sort is one compare-exchange per invocation per stage'
57
+ );
58
+
59
+ /**
60
+ * The pure parts of {@link chunk_bvh_query_aabb_cooperative}: its bounds, how a node is classified
61
+ * against the query box, and how a level's list is published.
62
+ * Everything here is per invocation and runs under the emulator; the cooperative chunk is the
63
+ * workgroup memory, the barriers and the subgroup appends around it.
64
+ *
65
+ * Per-invocation work is `BVH_QUERY_AABB_LEVEL_BUDGET * BVH_QUERY_AABB_FRONTIER_ROUNDS` = 51 * 4 =
66
+ * 204 node reads at most, then the candidate sort's 28 compare-exchanges.
67
+ *
68
+ * @type {CodeChunk}
69
+ */
70
+ export const chunk_bvh_query_aabb_frontier = CodeChunk.from(
71
+ //language=WGSL
72
+ `
73
+ const BVH_QUERY_AABB_WORKGROUP_SIZE = ${BVH_QUERY_AABB_WORKGROUP_SIZE}u;
74
+ const BVH_QUERY_AABB_FRONTIER_CAPACITY = ${BVH_QUERY_AABB_FRONTIER_CAPACITY}u;
75
+ const BVH_QUERY_AABB_FRONTIER_ROUNDS = ${BVH_QUERY_AABB_FRONTIER_CAPACITY / BVH_QUERY_AABB_WORKGROUP_SIZE}u;
76
+ const BVH_QUERY_AABB_CANDIDATE_CAPACITY = ${BVH_QUERY_AABB_CANDIDATE_CAPACITY}u;
77
+ const BVH_QUERY_AABB_CANDIDATE_ROUNDS = ${BVH_QUERY_AABB_CANDIDATE_CAPACITY / BVH_QUERY_AABB_WORKGROUP_SIZE}u;
78
+ const BVH_QUERY_AABB_LEVEL_BUDGET = ${BVH_QUERY_AABB_LEVEL_BUDGET}u;
79
+
80
+ // what a node on the frontier turns into
81
+ const BVH_QUERY_AABB_SKIP = 0u;
82
+ const BVH_QUERY_AABB_DESCEND = 1u;
83
+ const BVH_QUERY_AABB_LEAF = 2u;
84
+
85
+ // A node against the query box: outside it, an internal node whose two children go on the next
86
+ // level, or a leaf whose payload is a candidate. Touching counts as overlapping.
87
+ fn bvh_query_aabb_classify(bounds: array<f32, 6>, child_1: u32, query: array<f32, 6>) -> u32 {
88
+ if (!aabb3_intersects_aabb3(bounds, query)) {
89
+ return BVH_QUERY_AABB_SKIP;
90
+ }
91
+
92
+ return select(BVH_QUERY_AABB_DESCEND, BVH_QUERY_AABB_LEAF, child_1 == BVH_NULL_NODE);
93
+ }
94
+
95
+ // The list a level reads. The level appends to the other one, so two lists alternate.
96
+ fn bvh_query_aabb_list(level: u32) -> u32 {
97
+ return level & 1u;
98
+ }
99
+
100
+ // The list entry an invocation expands in one of a level's rounds; the rounds tile the list.
101
+ fn bvh_query_aabb_slot(iteration: u32, lane: u32) -> u32 {
102
+ return iteration * BVH_QUERY_AABB_WORKGROUP_SIZE + lane;
103
+ }
104
+
105
+ // A level's list once every append to it has landed, from the appends it was asked for: x is
106
+ // how many entries to expand, y how many nodes are dropped. Appends past the capacity were never
107
+ // stored. At the budget nothing more is expanded, so the whole list is dropped.
108
+ fn bvh_query_aabb_publish(reserved: u32, level: u32) -> vec2<u32> {
109
+ let kept = min(reserved, BVH_QUERY_AABB_FRONTIER_CAPACITY);
110
+
111
+ if (level >= BVH_QUERY_AABB_LEVEL_BUDGET) {
112
+ return vec2<u32>(0u, reserved);
113
+ }
114
+
115
+ return vec2<u32>(kept, reserved - kept);
116
+ }
117
+
118
+ `, [
119
+ BVH_NULL_NODE_DEFINITION,
120
+ chunk_aabb3_intersects_aabb3,
121
+ ]);
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Levels a clipmap table holds at most, and how far `clipmap_select_finest` walks.
3
+ * @type {number}
4
+ */
5
+ export const CLIPMAP_LEVEL_LIMIT: number;
6
+ /**
7
+ * One level of a clipmap as a shader reads it: the level's window, and how big its cell is. Levels
8
+ * sit finest first in a {@link CLIPMAP_LEVEL_ARRAY}.
9
+ *
10
+ * 32 bytes, so an array of them meets a uniform buffer's 16-byte stride.
11
+ *
12
+ * @type {WebGPUStruct}
13
+ */
14
+ export const CLIPMAP_LEVEL_STRUCT: WebGPUStruct;
15
+ /**
16
+ * A clipmap's table of levels, as a field of the uniform that carries it.
17
+ * @type {WebGPUArray}
18
+ */
19
+ export const CLIPMAP_LEVEL_ARRAY: WebGPUArray;
20
+ import { WebGPUStruct } from "../../type/WebGPUStruct.js";
21
+ import { WebGPUArray } from "../../type/WebGPUArray.js";
22
+ //# sourceMappingURL=CLIPMAP_LEVEL_STRUCT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CLIPMAP_LEVEL_STRUCT.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/clipmap/CLIPMAP_LEVEL_STRUCT.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,kCAFU,MAAM,CAEsB;AAEtC;;;;;;;GAOG;AACH,mCAFU,YAAY,CAeH;AAEnB;;;GAGG;AACH,kCAFU,WAAW,CAE0E;6BAnClE,4BAA4B;4BAD7B,2BAA2B"}
@@ -0,0 +1,38 @@
1
+ import { f32, vec3i } from "../../type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { WebGPUArray } from "../../type/WebGPUArray.js";
3
+ import { WebGPUStruct } from "../../type/WebGPUStruct.js";
4
+
5
+ /**
6
+ * Levels a clipmap table holds at most, and how far `clipmap_select_finest` walks.
7
+ * @type {number}
8
+ */
9
+ export const CLIPMAP_LEVEL_LIMIT = 16;
10
+
11
+ /**
12
+ * One level of a clipmap as a shader reads it: the level's window, and how big its cell is. Levels
13
+ * sit finest first in a {@link CLIPMAP_LEVEL_ARRAY}.
14
+ *
15
+ * 32 bytes, so an array of them meets a uniform buffer's 16-byte stride.
16
+ *
17
+ * @type {WebGPUStruct}
18
+ */
19
+ export const CLIPMAP_LEVEL_STRUCT = WebGPUStruct.from({
20
+ /**
21
+ * The window's smallest cell on each axis, in the level's cells.
22
+ */
23
+ corner: vec3i,
24
+ /**
25
+ * World units on a side of a cell of the level.
26
+ */
27
+ cell_size: f32,
28
+ /**
29
+ * The window's side on each axis, in cells.
30
+ */
31
+ size: vec3i,
32
+ }, "ClipmapLevel");
33
+
34
+ /**
35
+ * A clipmap's table of levels, as a field of the uniform that carries it.
36
+ * @type {WebGPUArray}
37
+ */
38
+ export const CLIPMAP_LEVEL_ARRAY = WebGPUArray.from(CLIPMAP_LEVEL_STRUCT, CLIPMAP_LEVEL_LIMIT);