@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,6 +1,3 @@
1
- /**
2
- * @typedef {import("./compiler/ShaderSwitch.js").ShaderSwitch} ShaderSwitch
3
- */
4
1
  export class ShaderDescriptor {
5
2
  /**
6
3
  *
@@ -24,6 +21,13 @@ export class ShaderDescriptor {
24
21
  * @return {ShaderResourceSetDescriptor}
25
22
  */
26
23
  get resources(): ShaderResourceSetDescriptor;
24
+ /**
25
+ * The chunk graph this shader links, before its resources' declarations are added at link. It may
26
+ * still hold choices: `body.specialize(set)` is the graph {@link variant} links for `set`.
27
+ *
28
+ * @returns {CodeChunk}
29
+ */
30
+ get body(): CodeChunk;
27
31
  /**
28
32
  *
29
33
  * @return {string|GPUFeatureName[]}
@@ -69,8 +73,10 @@ export class ShaderDescriptor {
69
73
  validate_gpu_features(device: GPUDevice): boolean;
70
74
  #private;
71
75
  }
76
+ export type CodeChunkResourceRequirement = import("./compiler/CodeChunk.js").CodeChunkResourceRequirement;
72
77
  export type ShaderSwitch = import("./compiler/ShaderSwitch.js").ShaderSwitch;
78
+ export type ShaderResourceDescriptor = import("./resource/ShaderResourceDescriptor.js").ShaderResourceDescriptor;
73
79
  import { ShaderResourceSetDescriptor } from "./resource/ShaderResourceSetDescriptor.js";
74
- import { ShaderSwitchSet } from "./compiler/ShaderSwitchSet.js";
75
80
  import { CodeChunk } from "./compiler/CodeChunk.js";
81
+ import { ShaderSwitchSet } from "./compiler/ShaderSwitchSet.js";
76
82
  //# sourceMappingURL=ShaderDescriptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ShaderDescriptor.js"],"names":[],"mappings":"AAKA;;GAEG;AAEH;IA+NI;;;;;;OAMG;IACH;QAJ4B,KAAK,GAAtB,MAAM;QACgC,SAAS,GAA/C,2BAA2B;QACR,IAAI,EAAvB,SAAS;yBAuBnB;IApPD;;;OAGG;IACH,oBAEC;IAOD;;;OAGG;IACH,6CAEC;IAaD;;;OAGG;IACH,0CAEC;IAQD;;;OAGG;IACH,qBAQC;IAOD;;;;;OAKG;IACH,oEAMC;IASD;;;;;;;OAOG;IACH,aAHW,eAAe,GACb,gBAAgB,CA8B5B;IAED;;;OAGG;IACH,WAFY,MAAM,CAiCjB;IAED;;;OAGG;IACH,iDA6BC;IAED;;;;;OAKG;IACH,0CAHa,OAAO,CAenB;;CA+BJ;2BA/PY,OAAO,4BAA4B,EAAE,YAAY;4CAHlB,2CAA2C;gCADvD,+BAA+B;0BADrC,yBAAyB"}
1
+ {"version":3,"file":"ShaderDescriptor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/shader/ShaderDescriptor.js"],"names":[],"mappings":"AA2EA;IA2OI;;;;;;OAMG;IACH;QAJ4B,KAAK,GAAtB,MAAM;QACgC,SAAS,GAA/C,2BAA2B;QACR,IAAI,EAAvB,SAAS;yBAuBnB;IAhQD;;;OAGG;IACH,oBAEC;IAOD;;;OAGG;IACH,6CAEC;IAOD;;;;;OAKG;IACH,sBAEC;IAQD;;;OAGG;IACH,0CAEC;IAQD;;;OAGG;IACH,qBAQC;IAOD;;;;;OAKG;IACH,oEAMC;IASD;;;;;;;OAOG;IACH,aAHW,eAAe,GACb,gBAAgB,CA8B5B;IAED;;;OAGG;IACH,WAFY,MAAM,CAmCjB;IAED;;;OAGG;IACH,iDA6BC;IAED;;;;;OAKG;IACH,0CAHa,OAAO,CAenB;;CA+BJ;2CA7UY,OAAO,yBAAyB,EAAE,4BAA4B;2BAC9D,OAAO,4BAA4B,EAAE,YAAY;uCACjD,OAAO,wCAAwC,EAAE,wBAAwB;4CAL1C,2CAA2C;0BAF7D,yBAAyB;gCACnB,+BAA+B"}
@@ -4,9 +4,75 @@ import { ShaderSwitchSet } from "./compiler/ShaderSwitchSet.js";
4
4
  import { ShaderResourceSetDescriptor } from "./resource/ShaderResourceSetDescriptor.js";
5
5
 
6
6
  /**
7
+ * @typedef {import("./compiler/CodeChunk.js").CodeChunkResourceRequirement} CodeChunkResourceRequirement
7
8
  * @typedef {import("./compiler/ShaderSwitch.js").ShaderSwitch} ShaderSwitch
9
+ * @typedef {import("./resource/ShaderResourceDescriptor.js").ShaderResourceDescriptor} ShaderResourceDescriptor
8
10
  */
9
11
 
12
+ /**
13
+ * A chunk's name for an error: the first thing its text declares, as a reader searching for it would type it.
14
+ *
15
+ * @param {CodeChunk} chunk
16
+ * @returns {string}
17
+ */
18
+ function chunk_name(chunk) {
19
+ const match = /\b(?:fn|struct|const|alias|override|var(?:<[^>]*>)?)\s+([A-Za-z_][A-Za-z0-9_]*)/.exec(chunk.text);
20
+
21
+ return match === null ? `a chunk beginning '${chunk.text.trim().slice(0, 40)}'` : `'${match[1]}'`;
22
+ }
23
+
24
+ /**
25
+ * How a binding reads in WGSL terms, for an error.
26
+ *
27
+ * @param {ShaderResourceDescriptor} resource
28
+ * @returns {string}
29
+ */
30
+ function describe_resource(resource) {
31
+ const member = resource.member_descriptor;
32
+
33
+ if (resource.buffer_type !== undefined) {
34
+ return `a ${member.type} buffer of ${resource.buffer_type.wgsl_ref}`;
35
+ }
36
+
37
+ if (member.sampleType !== undefined) {
38
+ return `a ${member.multisampled ? "multisampled " : ""}${member.viewDimension} ${member.sampleType} texture`;
39
+ }
40
+
41
+ if (member.format !== undefined) {
42
+ return `a ${member.viewDimension} ${member.format} ${member.access} storage texture`;
43
+ }
44
+
45
+ return `a ${member.type} sampler`;
46
+ }
47
+
48
+ /**
49
+ * Throw unless `resources` binds every binding the linked graph declared it reads, each as the declaration
50
+ * says. A shader's own resources are the one place its bindings are written down, so a chunk that reads
51
+ * one the shader lacks is the shader's error, named here rather than as an unresolved identifier.
52
+ *
53
+ * @param {CodeChunkResourceRequirement[]} required
54
+ * @param {ShaderResourceSetDescriptor} resources
55
+ * @param {string} label the shader's
56
+ */
57
+ function check_required_resources(required, resources, label) {
58
+ for (let i = 0; i < required.length; i++) {
59
+ const { resource, chunk } = required[i];
60
+
61
+ const bound = resources.getResourceByName(resource.name);
62
+
63
+ if (bound === undefined) {
64
+ throw new Error(`${chunk_name(chunk)} reads '${resource.name}', which '${label}' does not bind`);
65
+ }
66
+
67
+ if (!resource.isSatisfiedBy(bound)) {
68
+ throw new Error(
69
+ `${chunk_name(chunk)} reads '${resource.name}' as ${describe_resource(resource)},`
70
+ + ` which '${label}' binds as ${describe_resource(bound)}`
71
+ );
72
+ }
73
+ }
74
+ }
75
+
10
76
  export class ShaderDescriptor {
11
77
  /**
12
78
  * Human-readable label
@@ -40,6 +106,16 @@ export class ShaderDescriptor {
40
106
  */
41
107
  #body;
42
108
 
109
+ /**
110
+ * The chunk graph this shader links, before its resources' declarations are added at link. It may
111
+ * still hold choices: `body.specialize(set)` is the graph {@link variant} links for `set`.
112
+ *
113
+ * @returns {CodeChunk}
114
+ */
115
+ get body() {
116
+ return this.#body;
117
+ }
118
+
43
119
  /**
44
120
  *
45
121
  * @type {string|GPUFeatureName[]}
@@ -149,6 +225,8 @@ export class ShaderDescriptor {
149
225
 
150
226
  const compiled = chunk.compile();
151
227
 
228
+ check_required_resources(compiled.resources, this.#resources, this.#label);
229
+
152
230
  /**
153
231
  *
154
232
  * @type {string[]}
@@ -0,0 +1,394 @@
1
+ # Fresnel for the direct lobe and the split-sum LUT: a brief (2026-10-16)
2
+
3
+ **Status: decided and built.** Alex chose Schlick, in the form Unreal's rasterizer uses; it landed in dbdb1cdb1
4
+ (§7). The sections before §7 are the brief as it was written, with the shading it describes as current. Every number
5
+ here was measured; how, and where the scripts are, is in §8.
6
+
7
+ Shade evaluates one material with two Fresnels. The direct lobe (`chunk_BRDF_GGX`) uses `F_Hauber`; the split-sum LUT
8
+ `tSplitSum`, read by every indirect specular path and by `re_direct_multiscatter`, encodes `f0 · A + f90 · B` with
9
+ Schlick's form at the fourth power. `MULTISCATTER.md` records three consequences: a dielectric's indirect specular is up
10
+ to 0.068 of a uniform sky above its direct, a white metal's direct path reaches only 0.93, and Turquin's eq. 16
11
+ overshoots the Heitz 2016 random walk partly because Hauber's dip compounds on every bounce.
12
+
13
+ ## 1. Recommendation
14
+
15
+ **Use Schlick's `(1 − VoH)⁵` in the direct lobe, and regenerate the split-sum LUT with the same weight in both
16
+ channels.** Keep the LUT, a 64² rg16float texture read with one fetch, and replace its contents. In §5 this is
17
+ pairing E.
18
+
19
+ - **All three inconsistencies close.** Direct and indirect agree to the LUT's precision: the worst gap in the f64
20
+ model goes from 0.071 to 0.000. A white metal's direct furnace goes from 0.929 to 1.000. At roughness 0.99, eq. 16
21
+ against a random walk using the same Fresnel goes from +4.7% to 0.0% for a white metal and from +5.7% to +1.0% for
22
+ silver.
23
+ - **It costs one multiply per light.** Per vec3, it is 13 DXIL float operations against Hauber's 12, with no
24
+ transcendental. The LUT fetch and the per-pixel compensation are unchanged.
25
+ - **Against exact Fresnel it ties with Hauber.**
26
+ - Dielectrics: the two are within 0.0033 of each other at every angle.
27
+ - Five measured metals: mean |ΔF| 0.0139 against Hauber's 0.0148. Each wins on different metals (§3).
28
+ - It is far more accurate than what the indirect path uses now. The shipped x⁴ LUT is up to +0.079 in albedo at
29
+ IOR 1.5 (up to +29%).
30
+ - **What it changes visually** (§6):
31
+ - Dielectric reflections at grazing view darken toward the exact value: −12% to −34% of a sphere rim's linear
32
+ luminance. At roughness 0.26, N·V 0.26, the indirect albedo goes from 0.288 to 0.2225, and exact is 0.229.
33
+ - Metal spheres move by less than 2.3% at the rim.
34
+ - A back-lit white-metal or silver rim brightens by about 1%.
35
+ - **It is the white-tint case of F82-tint**, the metal Fresnel of OpenPBR and Adobe's Standard Material. If a metal
36
+ edge tint is ever added to the material, it becomes a third LUT channel on top of this, not a rewrite (§4).
37
+
38
+ **What would reverse it: preferring the grazing dip of high-index grey metals over silver, gold, copper and the perfect
39
+ conductor.** For aluminium and iron at low roughness, Hauber is 0.03 to 0.06 closer in albedo; chromium, nickel and
40
+ titanium follow the same physics. For silver, Hauber is 0.06 worse.
41
+
42
+ If that look matters, Hauber's consistent form is pairing B (§5): it adds an `Ess` channel to the LUT. That closes the
43
+ gap, but the white furnace stays at 0.93 and the walk overshoot at +4.7%.
44
+
45
+ ## 2. Why the two paths disagree: Hauber's dip forces a choice
46
+
47
+ At `f90 = 1`, which every caller passes, `F_Hauber = f0 (1 − x⁴) + x⁵` with `x = 1 − VoH`. At `F0 = 1` it is
48
+ `1 − VoH x⁴`, which dips to 0.918 at VoH = 0.2.
49
+
50
+ Turquin's compensation needs `Ess`, the albedo with `F ≡ 1`, and Shade reads it as `A + B`. A two-channel LUT can hold
51
+ Hauber's split or `A + B = Ess`, but not both:
52
+
53
+ - **Before 933feac74**, the asset held Hauber's split exactly. That commit's own check found A within 4.9e-4 of the
54
+ `1 − f⁴` term and B within 4.8e-4 of the `f⁵` term. Its `A + B` was therefore the dipped white albedo. 933feac74 read
55
+ that shortfall (up to −8.2%) as a stale asset.
56
+ - **933feac74 moved B to x⁴.** Now `A + B = Ess`, but `f0 · A + B` is Schlick at the fourth power, not Hauber, and the
57
+ indirect path has used a different Fresnel since. The furnace's 0.068 dielectric gap is that difference:
58
+ `(1 − f0)x⁴ − (x − f0)x⁴ = VoH x⁴`, up to 0.082.
59
+
60
+ **The f64 model of the pre-933feac74 pairing gives no gap and a white furnace of 1.000, but for the wrong reason.**
61
+ `Kms = (1 − A − B) / (A + B)` counts the dip as missing multiple scattering, so it stays positive even as roughness
62
+ goes to 0.
63
+
64
+ **Any Fresnel that is linear in F0, with `F(1, μ) ≡ 1`, removes the choice.** `f0 · A + f90 · B` is then its split,
65
+ and `A + B` is its `Ess`. Schlick at any exponent qualifies; Hauber does not.
66
+
67
+ ## 3. Hauber's approximation, re-examined
68
+
69
+ ### Source
70
+
71
+ Niklas Hauber, "Finding Alternatives to Schlick's Approximation of the Fresnel Equations", photometric.io, 2024-06-27
72
+ (the URL in `chunk_F_Hauber`). He found it by GPU symbolic regression, with parameters R0 and 1 − cos θ:
73
+
74
+ R(θ) = R0 + (1 − cos θ − R0)(1 − cos θ)⁴
75
+
76
+ **What he fitted it to:**
77
+
78
+ - 4,096 points, θ uniform "from 0 to π" as written.
79
+ - 40% at IOR 1.5, and 40% at an IOR uniform in [1.34, 1.7].
80
+ - 20% from seven complex IORs: 0.3+3i, 0.15+4i, 0.3+3.35i, 1.4+7i, 1.84+3.73i, 2.1+4i, 2.9+3.1i.
81
+
82
+ So the fit covers both dielectrics and conductors, mostly dielectrics, and most of its metals have a real part large
83
+ enough to dip.
84
+
85
+ **What he reports:** 34% lower MSE than Schlick, essentially the same shape for dielectrics, almost 50% better on his
86
+ metals, with the warning that another dataset would differ. He also reports 5 CUDA instructions against 6. He offers a
87
+ shape blend, `R0 + (1 − R0 − s cos θ)(1 − cos θ)⁴`, where `s = 1` is his form and `s = 0` is Schlick at the fourth
88
+ power. The post does not discuss F0 → 1.
89
+
90
+ ### Shade's form
91
+
92
+ `mix(f0, f90 − VoH, x⁴)` is `f0 + (f90 − VoH − f0) x⁴`. At `f90 = 1` this is Hauber's formula exactly, and it equals
93
+ Schlick x⁵ minus `F0 · VoH x⁴`: the dip is proportional to F0, so it is deepest at F0 = 1. The `f90` is
94
+ Shade's own generalisation; the post has none. The dip term does not scale with it, so at `f90 = 0` the form is
95
+ negative (`−VoH x⁴`). Every caller passes 1, so that never runs.
96
+
97
+ **His claim reproduces on his dataset:** 35.5% lower MSE (θ in [0, π/2]; the same with |cos θ| over [0, π]), 1.6% on
98
+ dielectrics, 49% on metals. So the formula is read correctly.
99
+
100
+ ### Against exact Fresnel
101
+
102
+ **Dielectrics** use the exact unpolarised Fresnel. Error over θ uniform in [0°, 90°]; "albedo" is the GGX lobe's
103
+ directional albedo at the 25 furnace points (roughness 0.26–0.99, N·V 0.10–0.99):
104
+
105
+ | IOR 1.5 (F0 0.04) | max \|ΔF\| | mean \|ΔF\| | ΔF_avg | worst Δalbedo | worst relative Δalbedo |
106
+ |---|---|---|---|---|---|
107
+ | Hauber | 0.033 at 85° | 0.0093 | −0.0068 | −0.0185 | −21.5% |
108
+ | Schlick x⁵ | 0.036 at 85° | 0.0092 | −0.0061 | +0.0194 | −20.2% |
109
+ | Schlick x⁴ (the shipped LUT) | 0.103 at 82° | 0.0214 | +0.0122 | +0.0785 | +28.7% |
110
+
111
+ The worst absolute and the worst relative errors fall at different points. For Hauber and Schlick x⁵ the worst
112
+ relative error is at mid angles, where the albedo is small and both read low (0.054 against 0.069 at roughness 0.51,
113
+ N·V 0.51).
114
+
115
+ Over IOR 1.3–2.0, the worst case for each:
116
+
117
+ | | max \|ΔF\| | mean \|ΔF\| | worst \|Δalbedo\| | worst relative |
118
+ |---|---|---|---|---|
119
+ | Hauber | 0.067 | 0.0119 | 0.047 | −21.5% |
120
+ | Schlick x⁵ | 0.068 | 0.0121 | 0.048 | −20.2% |
121
+ | Schlick x⁴ | 0.142 | 0.0313 | 0.109 | +54.1% (IOR 1.3) |
122
+
123
+ For a dielectric, Hauber is Schlick x⁵ minus `F0 · VoH x⁴`, at most 0.0033 at F0 0.04.
124
+
125
+ **Conductors** use measured n and k: Johnson & Christy 1972 for gold, silver and copper; Johnson & Christy 1974 for
126
+ iron; McPeak et al. 2015 for aluminium (Rakić 1995 has 13 rows in the visible, and its dip agrees to 0.012). The full
127
+ complex Fresnel equations are integrated over 380–780 nm against D65 and the CIE 1931 2° observer (the CIE's own
128
+ 1 nm tables, taken at 5 nm), then projected to linear sRGB. That gives gold F0 (1.038, 0.729, 0.365) and aluminium
129
+ (0.906, 0.916, 0.923). Each candidate is fed the exact curve's own F0; gold's red is left above 1.
130
+
131
+ Worst channel per metal. The Δalbedo column is the worst over the 25 lobes:
132
+
133
+ | metal | Hauber max \|ΔF\| | Schlick x⁵ max \|ΔF\| | Hauber Δalbedo | Schlick x⁵ Δalbedo | measured dip below F0 |
134
+ |---|---|---|---|---|---|
135
+ | silver | 0.078 | 0.007 | −0.065 | +0.005 | 0.3% |
136
+ | gold | 0.062 | 0.033 | −0.051 | +0.029 | 4.5% (red) |
137
+ | copper | 0.055 | 0.043 | −0.044 | +0.033 | 1.3% (red) |
138
+ | aluminium | 0.049 | 0.109 | −0.026 | +0.082 | 7.1% (red) |
139
+ | iron | 0.141 | 0.178 | +0.103 | +0.135 | 4.7% (red) |
140
+ | mean of the 15 channels' mean \|ΔF\| | 0.0148 | 0.0139 | | | |
141
+
142
+ Over all five metals, Hauber's MSE is 22% below Schlick's. That comes from aluminium (85% lower) and iron (47%). On
143
+ gold it is 5× Schlick's, on silver 212×, on copper about equal.
144
+
145
+ **As F0 → 1**, Hauber's minimum over angle falls further below F0:
146
+
147
+ | F0 | 0.5 | 0.8 | 0.9 | 0.95 | 0.98 | 1.0 |
148
+ |---|---|---|---|---|---|---|
149
+ | Hauber, minimum | −0.5% | −3.4% | −5.4% | −6.7% | −7.6% | −8.2% (0.918 at VoH 0.20) |
150
+
151
+ Schlick at either exponent never falls below F0, and is exactly 1 at F0 = 1. Only a perfect conductor has F0 = 1, and
152
+ it has no dip. Silver, the nearest real metal (F0 0.98), dips 0.3%.
153
+
154
+ ### The dip belongs to n, not to F0
155
+
156
+ Fitting Hauber's shape parameter `s` to each measured channel by least squares:
157
+
158
+ | | silver | gold | copper | aluminium | iron |
159
+ |---|---|---|---|---|---|
160
+ | best `s` (R, G, B) | 0.09, 0.09, 0.05 | 0.38, 0.24, 0.58 | 0.34, 0.86, 0.88 | 1.15, 0.88, 0.64 | 2.24, 2.21, 1.96 |
161
+ | F0 (R, G, B) | 0.99, 0.98, 0.98 | 1.04, 0.73, 0.36 | 0.93, 0.62, 0.52 | 0.91, 0.92, 0.92 | 0.53, 0.51, 0.49 |
162
+
163
+ Silver and aluminium have nearly the same F0 and need opposite shapes. The dip comes from the real part of the index
164
+ (Lazányi's correction has its slope at 2n), and the G-buffer carries only F0.
165
+
166
+ **So no function of F0 alone can carry the dip.** Hauber's fit applies the average dip of its seven metals to every
167
+ F0, including F0 = 1. It is right for aluminium-like metals and wrong for silver-like ones.
168
+
169
+ ## 4. The state of the art in pure functions
170
+
171
+ ### Fresnel
172
+
173
+ DXIL is from Chrome's own Tint and DXC on the RTX 4090. Float operations per vec3 are counted, with the input loads
174
+ excluded.
175
+
176
+ | form | inputs | DXIL float ops (div, sqrt, exp/log) | five metals: worst max \|ΔF\| / mean \|ΔF\| | dielectric IOR 1.5 max \|ΔF\| | F0 = 1 |
177
+ |---|---|---|---|---|---|
178
+ | Schlick 1994, x⁵ (multiplies) | F0 | 13 (0) | 0.178 / 0.0139 | 0.036 | 1 |
179
+ | Schlick x⁵ as `chunk_F_Schlick` (`pow`) | F0 | 13 (log + exp) | same | same | 1 |
180
+ | Schlick x⁴ (the shipped LUT) | F0 | 12 (0) | 0.213 / 0.0186 | 0.103 | 1 |
181
+ | Hauber 2024 (shipped direct) | F0 | 12 (0) | 0.141 / 0.0148 | 0.033 | 0.918 |
182
+ | Lazányi–Schlick 2005 | n, k → F0, a, α | 25 (log + exp) | needs n | — | — |
183
+ | F82-tint: Hoffman 2019, Adobe ASM, OpenPBR | F0 + edge tint | 40 (3 div) | 0.020 / 0.0026 (tint from data) | — | 1 at tint 1 |
184
+ | Gulbrandsen 2014, (r, g) → n, k | F0 + edge tint | 109 (15 div, 3 sqrt) | exact up to its approximate conductor formula | — | singular, clamped to 0.99 |
185
+ | exact dielectric (`F_dielectric`) | IOR | 28, scalar (4 div, 1 sqrt), branch | — | 0 | — |
186
+ | exact conductor | n, k | 85 (6 div, 6 sqrt) | 0 | — | — |
187
+
188
+ Notes on the sources (the literature summaries are with the scripts, §8):
189
+
190
+ - **Schlick 1994** was not read first-hand: the only reachable copy is an image-only scan. Its formula is as Hoffman
191
+ 2019 (eq. 1) and OpenPBR give it.
192
+
193
+ - **Lazányi & Szirmay-Kalos 2005** (WSCG): subtract `a μ (1 − μ)^α` from Schlick. `a = 2n` comes from the slope at
194
+ grazing incidence; α is fitted at μ = 0.15. Their stated relative errors: Cu 1.9–4.9%, Au 5.0–5.4%, Ag 4.4–9.0%,
195
+ Al 2.0–17.5%. The inputs are n and k.
196
+ - **Gulbrandsen 2014** (JCGT 3(4)): maps reflectivity and edge tint to n, k, then evaluates PBRT's approximate
197
+ conductor formula. Standard Surface uses it; MaterialX feeds the result to its full conductor Fresnel.
198
+ - **Hoffman 2019 and 2023, Kutz et al. 2021/2023 (Adobe Standard Material), OpenPBR 1.1.1:**
199
+ `F = Schlick(μ) − b μ (1 − μ)⁶`, with `b = Schlick(1/7)(1 − tint)/(μ̄(1 − μ̄)⁶)` and μ̄ = 1/7, so that F(82°) =
200
+ tint · Schlick(82°). It is linear in F0, F90 and b, so a split-sum LUT needs one more channel, `∫ μ(1 − μ)⁶`.
201
+ The OpenPBR companion paper gives its hemispherical average as `F0 + (1 − F0)/21 − b/126`. Unreal 5.4 has
202
+ `F_AdobeF82` only in the Substrate path tracer, behind `SUBSTRATE_FRESNEL_F82 = 0`; its rasterizer runs Schlick.
203
+ - **Filament and Frostbite** use Schlick with a shadowed F90. Belcour et al. 2020 needs a tabulated basis.
204
+ Vernooij 2024 fits the Lazányi form per metal. No F0-only metal approximation newer than Hauber's was found.
205
+
206
+ ### Split-sum (DFG) fits
207
+
208
+ **Keep the LUT.** It is one fetch that both paths already pay, since the compensation reads it anyway. It is also an
209
+ order of magnitude more accurate than the best published fit, which costs 26 to 89 float operations.
210
+
211
+ Each fit was measured against the f64 x⁵ split of Shade's lobe (GGX, height-correlated Smith, α = r²). The points are
212
+ a 32² grid of N·V ≥ 0.05 and roughness, which falls midway between the 64-wide LUT's texel centres, its worst place to
213
+ interpolate. DXIL is counted as above.
214
+
215
+ | fit | fitted to | DXIL float ops | white (F0 1) albedo: max \|ΔE\| / mean | F0 0.04: max \|ΔE\| |
216
+ |---|---|---|---|---|
217
+ | **the LUT, regenerated at x⁵** | Shade's lobe | **1 sample** | **0.0027 (0.3%) / 0.0002** | **0.0009** |
218
+ | Karis 2014 `EnvBRDFApprox` (`DFGApprox`) | UE4's G, "adapted" | 16 (1 exp) | 0.342 (−43%) / 0.106 | 0.083 |
219
+ | Narkowicz 2014, polynomial | uncorrelated Smith, α = (1 − gloss)⁴ | 36 (1 sqrt) | 0.221 (−28%) / 0.019 | 0.080 |
220
+ | Narkowicz 2014, Lazarov form | same | — | 0.315 (−39%) / 0.041 | 0.080 |
221
+ | Pesce & Iwanicki 2015 | not stated; roughness = √r, the best of three readings | 15 (1 sqrt, 1 exp) | 0.126 (−15%) / 0.028 | 0.135 |
222
+ | UE 5.4 energy fit (`USE_ENERGY_CONSERVATION == 2`, "WIP") | height-correlated table | 26 (2 div, 3 log, 3 exp) | 0.058 (+6.5%) / 0.0064 | 0.015 |
223
+ | MaterialX `mx_ggx_dir_albedo_analytic` (2022) | height-correlated, Schlick | 89 (2 div) | 0.084 (−8.4%) / 0.0060 | 0.025 |
224
+ | Kulla & Conty 2017, E only | height-correlated | 38 (div, sqrt, log, exp) | 0.011 (3.5%) / 0.0022 | — |
225
+ | Sforza & Pellacini 2022, E only | uncorrelated Smith | — | 0.226 (−28%) / 0.016 | — |
226
+
227
+ Notes on the table:
228
+
229
+ - **Worst cases.** Most fits are worst at grazing (N·V 0.08) and rough. The LUT's three columns below N·V 0.05 reach
230
+ 0.019.
231
+ - **Fdez-Agüera 2019 is not a fit.** It reads Epic's LUT, and its contribution is a multiple-scattering form, with
232
+ `Favg = F0 + (1 − F0)/21` for Schlick.
233
+ - **Kulla & Conty keep tables.** Their slides favour tables over fits. The E-only fits can stand in for Turquin's
234
+ `Ess`, but not for the split.
235
+ - **Turquin lists analytic fits as future work.** His conclusion names good analytic fits for all the smooth tables as
236
+ future work, to save texture fetches in real time. No published fit reaches the LUT's accuracy for a
237
+ height-correlated lobe.
238
+ - **Engines moved from fits to LUTs in 2025.** three.js dropped Karis's fit for a height-correlated LUT (PR #32054,
239
+ October 2025). Godot's Forward+ renderer moved to a LUT in March 2025; its mobile renderers keep Karis's fit.
240
+ Filament, EEVEE and Unity HDRP use LUTs only.
241
+ - **One Shade pass still uses a fit:** `ssr_combine_shader.js` weights by `DFGApprox`, which is 0.34 (43%) below Shade's
242
+ white albedo at grazing, rough. That is already reported (2026-10-03) and separate from this brief.
243
+
244
+ ## 5. The pairings against the three inconsistencies
245
+
246
+ Measured in an f64 model of Shade's two paths under a uniform sky, at the 25 furnace points, for white, a 0.04
247
+ dielectric and the five measured metals:
248
+
249
+ - direct = `E_F(F0) · (1 + F0 Kms)`
250
+ - indirect = `(F0 A + B)(1 + F0 Kms)`
251
+
252
+ The model reproduces the real passes' furnace sweep (`white_furnace.spec.js`'s helpers, run through the emulator):
253
+ white direct 0.9301 against 0.9302, dielectric 0.2198 against 0.2196, gap 0.0682 against 0.0684.
254
+
255
+ The walk is the shared bench's port of Heitz 2016, 4M paths per point. Each Fresnel candidate and the exact Fresnel
256
+ are applied at every bounce, and the conductors are walked per wavelength (10 nm) before projection.
257
+
258
+ | pairing | worst indirect − direct | white direct, min | eq. 16 vs its own walk, r 0.99: white / silver | LUT |
259
+ |---|---|---|---|---|
260
+ | A. shipped: Hauber direct, LUT x⁴ | +0.071 (white), +0.068 (dielectric) | 0.929 | +4.7% / +5.7% | as is |
261
+ | B. Hauber direct, LUT (1 − x⁴, x⁵) + an `Ess` channel | 0.000 | 0.929 | +4.7% / +5.7% | 3 channels |
262
+ | C. Hauber direct, LUT (1 − x⁴, x⁵), `Kms` from A + B (pre-933feac74) | 0.000 | 1.000, by booking the dip as multiple scattering | — | regenerate |
263
+ | D. Schlick x⁴ in both | 0.000 | 1.000 | 0.0% / +0.9% | as is |
264
+ | **E. Schlick x⁵ in both** | **0.000** | **1.000** | **0.0% / +1.0%** | **regenerate** |
265
+
266
+ **D needs no new asset, but it moves the direct path to the least accurate form.** For a dielectric, it puts the
267
+ +29% albedo error of today's indirect path into the direct one, and it is worse on every metal (§3).
268
+
269
+ **E is the shipped LUT's two channels, regenerated.**
270
+
271
+ **Against the walk with exact Fresnel**, the worst over N·V and channels, at roughness 0.26:
272
+
273
+ | | white | silver | gold | copper | aluminium | iron | dielectric IOR 1.5 |
274
+ |---|---|---|---|---|---|---|---|
275
+ | Hauber (A's, B's direct) | −7.1% | −6.9% | −8.0% | −5.4% | +3.4% | +17.3% | −22% |
276
+ | Schlick x⁵ (E) | 0.0% | +0.5% | −4.1% | +4.3% | +10.7% | +23.4% | −21% |
277
+ | Schlick x⁴ (A's indirect, D) | 0.0% | +0.6% | +6.4% | +9.2% | +11.5% | +28.9% | +25% |
278
+
279
+ The dielectric's relative errors are on small values. At N·V 0.51 they are 0.0687 (x⁵) and 0.0962 (x⁴) against an
280
+ exact 0.0869. At N·V 0.26 they are 0.2225 and 0.2879 against 0.2294.
281
+
282
+ **At roughness 0.99, the Fresnel no longer decides; Turquin's `Fms = F0` does.** Against the exact walk, eq. 16 is
283
+ +21.7% for iron, +17.2% for copper and +23.8% in gold's blue under every Fresnel. That is the compensation's own
284
+ saturation error, which `MULTISCATTER.md` already ledgers.
285
+
286
+ **Hauber's dip compounding is the part E removes.** Against walks with their own Fresnel at roughness 0.99, eq. 16's
287
+ mean overshoot is:
288
+
289
+ | | white | silver | aluminium | gold | copper | iron |
290
+ |---|---|---|---|---|---|---|
291
+ | Hauber | +0.026 | +0.029 | +0.036 | +0.024 | +0.031 | +0.025 |
292
+ | Schlick x⁵ | 0.000 | +0.004 | +0.016 | +0.010 | +0.020 | +0.021 |
293
+
294
+ Against the exact walk the totals move the other way, by 0.003 to 0.008 for the metals: Hauber's dip had been
295
+ offsetting part of `Fms = F0`'s overshoot.
296
+
297
+ ## 6. The visual change
298
+
299
+ Rendered on the RTX 4090 with the multiscatter bench's sphere sweep: seven roughnesses (0.1–1.0) by seven materials
300
+ (gold, copper, aluminium, iron and silver at their table F0, a white metal at F0 1, and a black dielectric), IBL, TAA,
301
+ EV −1.
302
+
303
+ Two lightings:
304
+
305
+ - the bench's sun, which comes from the camera's side, so VoH is about 0.9 on every sphere;
306
+ - the same sun from behind the spheres, so their rims see VoH ≈ 0.27, where Hauber's dip lives.
307
+
308
+ No engine file was edited. The "after" page's prelude rewrites `F_Hauber`'s body to Schlick x⁵ in the one module that
309
+ declares it, and replaces `split_sum.bin`'s texels as they are fetched. The replacement is the shipped texels plus the
310
+ f64 change of weight, `∫ VoH x⁴`, so only the Fresnel differs, not the integration. A repeat of the shipped arm
311
+ differed by at most 0.27% (front) and 0.09% (back).
312
+
313
+ Change in mean linear luminance, after against before, over the outer rim (0.75–0.92 of the radius):
314
+
315
+ | | 0.1 | 0.25 | 0.4 | 0.55 | 0.7 | 0.85 | 1.0 |
316
+ |---|---|---|---|---|---|---|---|
317
+ | black dielectric, front | −34.1% | −32.8% | −27.6% | −21.4% | −18.4% | −14.9% | −12.3% |
318
+ | black dielectric, back | −33.7% | −17.3% | −7.5% | −11.6% | −17.2% | −15.6% | −13.4% |
319
+ | iron, front | −2.3% | −2.2% | −1.6% | −0.9% | −0.6% | −0.4% | −0.3% |
320
+ | copper, front | −1.5% | −1.4% | −1.0% | −0.5% | −0.3% | −0.2% | −0.1% |
321
+ | white metal, back | 0.0% | +0.9% | +1.3% | +0.8% | +0.2% | 0.0% | 0.0% |
322
+ | silver, back | −0.1% | +0.6% | +1.0% | +0.5% | +0.1% | 0.0% | 0.0% |
323
+
324
+ Over whole spheres, metals move by at most 0.4% and the black dielectric by 2–8%.
325
+
326
+ **Where the eye sees it is the dielectric's Fresnel rim under the sky.** It loses the x⁴ LUT's excess and lands near
327
+ exact: 0.2225 against 0.2294 at roughness 0.26, N·V 0.26, where it was 0.288.
328
+
329
+ Swapping only the direct Fresnel to x⁴ (pairing D) brightens the back-lit black dielectric's rim by up to 28%. The
330
+ images are with the scripts (§8).
331
+
332
+ ## 7. As built (dbdb1cdb1)
333
+
334
+ **The form is Unreal 5.4's rasterizer.** `F_Schlick(F0, F90, VoH)` in `BRDF.ush`, which Substrate's `Substrate_F_GGX`
335
+ calls, computes `Fc = Pow5(1 − VoH)` by multiplies, then returns `F90 Fc + (1 − Fc) F0`. Its `EnvBRDF(F0, F90)` reads
336
+ a LUT integrated with the same weight. `chunk_F_Schlick` now has that form; its `pow(x, 5.0)` had compiled to a log
337
+ and an exp.
338
+
339
+ **Every `F_Hauber` caller moved to it,** and `chunk_F_Hauber` is deleted:
340
+
341
+ - `chunk_BRDF_GGX`;
342
+ - `graph_lpv_shade.js`;
343
+ - the path tracer: `chunk_render_trace_path.js` ×2 and `chunk_sample_material_data.js`;
344
+ - the forward fragment;
345
+ - the view Fresnel of `shader_avboit_splat.js` and `shader_oit_generate_moments.js`.
346
+
347
+ **`chunk_integrate_brdf` weights `(1 − x⁵, x⁵)`, and `split_sum.bin` was regenerated once on the RTX 4090.** It
348
+ followed the 16cca4c69 procedure: 2^18 samples in 1024-sample blocks through rg32float, f16 encoded on the CPU, then
349
+ the chunk put back at 1024 samples. Checked against the old asset:
350
+
351
+ - its A + B moved by at most one f16 ulp anywhere;
352
+ - against the old asset plus the f64 change of weight, it is within 5.8e-4 everywhere.
353
+
354
+ **Pinned red then green:**
355
+
356
+ - `chunk_BRDF_GGX.spec.js` (new): a perfect conductor's lobe is D V alone, and the lobe's Fresnel is Schlick's fifth
357
+ power.
358
+ - `split_sum_asset.spec.js`: weight x⁵, and the generator itself held to the same integral.
359
+ - `white_furnace.spec.js`: the dip's slack goes from four checks.
360
+ - A white metal's direct light reads 0.997 – 1.000 of the sky.
361
+ - A pure material's direct and indirect specular agree to 0.0031.
362
+ - A white dielectric's totals agree to 0.0010.
363
+ - The metalness blend holds to 1.3e-5.
364
+ - `chunk_F_Schlick.spec.js` (new): pins the form.
365
+
366
+ **The diffuse coupling of 835cba76b now balances exactly.** It keeps 1 − the LUT's dielectric albedo, which is now the
367
+ direct lobe's own, so a white dielectric's direct light reads 1.000 – 1.001 of the sky (it was 0.932 – 1.000).
368
+
369
+ **Device checks:**
370
+
371
+ - Every shader that links a changed chunk compiles on the 4090: 19 unique modules, found through the reverse import
372
+ closure. The lightmap bake pair fails on a struct member already missing on master (a224bc59c1).
373
+ - The sphere sweep, rendered from a detached master worktree and from the change, moves as §6 predicted, to 0.1
374
+ point.
375
+
376
+ **Not part of this:** `ssr_combine_shader.js` weights by Karis's fit, not the LUT (§4).
377
+
378
+ ## 8. Method and reproduction
379
+
380
+ The scripts, data and renders are in the side-session notes folder
381
+ `local_9644ea11-c179-40dd-a485-620475f78a45/fresnel-brief/`, outside the repo:
382
+
383
+ - `dfg_lib.mjs`: the lobe integrated over microfacet normals, with GGX's CDF as the variable, so that narrow lobes
384
+ resolve. It is held to `split_sum_asset.spec.js`'s light-direction quadrature and to the shipped texels to about
385
+ 1e-4.
386
+ - `fresnel_lib.mjs`: exact dielectric and complex conductor Fresnel, and the spectral projection.
387
+ - `optical_data.json`: n and k, CIE 1931 and D65, each with its source URL.
388
+ - `study_dielectric.mjs`, `study_metal.mjs`, `hauber_claim.mjs`, `study_dfg.mjs`, `study_dfg_e.mjs`,
389
+ `pesce_mapping.mjs`, `combos_study.mjs` and `model_check.mjs`, each with its `.txt` output.
390
+ - `dfg_fits.mjs`: every published fit, with its constants.
391
+ - `lit_fresnel.md` and `lit_dfg.md`: the literature, read from the primary sources, with URLs and sections.
392
+ - `walk_candidates.mjs`: the shared bench's Heitz port, with every Fresnel. Run with `analyse_walk.mjs`.
393
+ - `alu/`: the dump page and counter.
394
+ - `render_drive.mjs`, the sphere page and `sphere_diff.py`, with the renders.
@@ -1,6 +1,9 @@
1
1
  /**
2
2
  * Specular GGX
3
- * GGX Distribution, Fresnel, GGX_SmithCorrelated Visibility
3
+ * GGX Distribution, Schlick's Fresnel, GGX_SmithCorrelated Visibility
4
+ *
5
+ * - the Fresnel is `F_Schlick`, the weight the split-sum LUT integrates (`chunk_integrate_brdf`), so this lobe
6
+ * and every indirect path reflect one Fresnel for one material
4
7
  *
5
8
  * - alpha = roughness_linear * roughness_linear
6
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_BRDF_GGX.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/brdf/chunk_BRDF_GGX.js"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,uCAmCC;0BA/CyB,6BAA6B"}
1
+ {"version":3,"file":"chunk_BRDF_GGX.d.ts","sourceRoot":"","sources":["../../../../../../../src/shade/renderer/shader/chunk/brdf/chunk_BRDF_GGX.js"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,uCAmCC;0BAlDyB,6BAA6B"}
@@ -2,11 +2,14 @@ import { CodeChunk } from "../../compiler/CodeChunk.js";
2
2
  import { chunk_pow2 } from "../math/chunk_pow2.js";
3
3
  import { chunk_D_GGX } from "./chunk_D_GGX.js";
4
4
  import { chunk_V_GGX_SmithCorrelated } from "./chunk_V_GGX_SmithCorrelated.js";
5
- import { chunk_F_Hauber } from "./fresnel/chunk_F_Hauber.js";
5
+ import { chunk_F_Schlick } from "./fresnel/chunk_F_Schlick.js";
6
6
 
7
7
  /**
8
8
  * Specular GGX
9
- * GGX Distribution, Fresnel, GGX_SmithCorrelated Visibility
9
+ * GGX Distribution, Schlick's Fresnel, GGX_SmithCorrelated Visibility
10
+ *
11
+ * - the Fresnel is `F_Schlick`, the weight the split-sum LUT integrates (`chunk_integrate_brdf`), so this lobe
12
+ * and every indirect path reflect one Fresnel for one material
10
13
  *
11
14
  * - alpha = roughness_linear * roughness_linear
12
15
  */
@@ -28,7 +31,7 @@ fn BRDF_GGX(
28
31
  ) -> vec3<f32> {
29
32
 
30
33
  // Fresnel
31
- let F = F_Hauber( f0, f90, VoH );
34
+ let F = F_Schlick( f0, f90, VoH );
32
35
 
33
36
  // Masking (geometric term)
34
37
  let V = V_GGX_SmithCorrelated( alpha, NoL, NoV );
@@ -41,7 +44,7 @@ fn BRDF_GGX(
41
44
  `,
42
45
  [
43
46
  chunk_pow2,
44
- chunk_F_Hauber,
47
+ chunk_F_Schlick,
45
48
  chunk_D_GGX,
46
49
  chunk_V_GGX_SmithCorrelated
47
50
  ]
@@ -1,7 +1,10 @@
1
1
  /**
2
+ * The split-sum terms of Shade's specular lobe: A = ∫ D V (1 - Fc) <n,l>, B = ∫ D V Fc <n,l>, with Fc = (1 - VoH)^5,
3
+ * the Fresnel weight of `F_Schlick` that the direct lobe applies.
4
+ *
2
5
  * The engine ships this integrated once, as `assets/textures/split_sum.bin` (`generate_dfg_texture`, run on a
3
6
  * device), so changing what it integrates means regenerating that; `split_sum_asset.spec.js` holds the asset
4
- * to the integral.
7
+ * and this chunk to the integral.
5
8
  * @see https://github.com/qiutang98/flower/blob/d67c6f1ae36bad18f6da15a70e2fe8d2949bf401/install/shader/brdf_lut.glsl
6
9
  * @see https://www.shadertoy.com/view/fdd3zf
7
10
  * @type {CodeChunk}
@@ -1 +1 @@
1
- {"version":3,"file":"chunk_integrate_brdf.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,mCAFU,SAAS,CA4DlB;0BAvEyB,gCAAgC"}
1
+ {"version":3,"file":"chunk_integrate_brdf.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/shader/chunk/brdf/dfg/chunk_integrate_brdf.js"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,mCAFU,SAAS,CAyDlB;0BAvEyB,gCAAgC"}
@@ -4,9 +4,12 @@ import { chunk_importance_sample_GGX } from "../chunk_importance_sample_GGX.js";
4
4
  import { chunk_V_GGX_SmithCorrelated } from "../chunk_V_GGX_SmithCorrelated.js";
5
5
 
6
6
  /**
7
+ * The split-sum terms of Shade's specular lobe: A = ∫ D V (1 - Fc) <n,l>, B = ∫ D V Fc <n,l>, with Fc = (1 - VoH)^5,
8
+ * the Fresnel weight of `F_Schlick` that the direct lobe applies.
9
+ *
7
10
  * The engine ships this integrated once, as `assets/textures/split_sum.bin` (`generate_dfg_texture`, run on a
8
11
  * device), so changing what it integrates means regenerating that; `split_sum_asset.spec.js` holds the asset
9
- * to the integral.
12
+ * and this chunk to the integral.
10
13
  * @see https://github.com/qiutang98/flower/blob/d67c6f1ae36bad18f6da15a70e2fe8d2949bf401/install/shader/brdf_lut.glsl
11
14
  * @see https://www.shadertoy.com/view/fdd3zf
12
15
  * @type {CodeChunk}
@@ -44,18 +47,15 @@ fn integrate_brdf( NoV: f32, roughness: f32 ) -> vec2<f32> {
44
47
  let G = V_GGX_SmithCorrelated(alpha, NoL, NoV);
45
48
  let Gv = 4.0 * NoL * G * VoH / NoH;
46
49
 
47
- // Fresnel term, Shlick's approximation with Hauber's scale factor.
48
- // we use F_Hauber in direct lighting, which is
50
+ // Schlick's (1 - VoH)^5, the weight F_Schlick applies in the direct lobe, so f0 · A + f90 · B is the
51
+ // albedo with the direct lobe's own Fresnel and A + B the albedo at F = 1
49
52
  let fx = 1.0 - VoH;
50
53
  let fx2 = fx * fx;
51
- let fx4 = fx2 * fx2;
54
+ let fx5 = fx2 * fx2 * fx;
52
55
 
53
- // Both terms use Hauber's (1-VoH)^4 falloff to match the runtime F_Hauber Fresnel used
54
- // in direct lighting — the bias term previously used Schlick's (1-VoH)^5, making the
55
- // f90/edge weight of indirect specular inconsistent with direct.
56
56
  lut += vec2(
57
- (1.0 - fx4) * Gv,
58
- fx4 * Gv
57
+ (1.0 - fx5) * Gv,
58
+ fx5 * Gv
59
59
  );
60
60
 
61
61
  }