@woosh/meep-engine 3.68.0 → 3.70.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 (584) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts +2 -17
  4. package/editor/ecs/component/editors/ecs/Trail3DEditor.d.ts.map +1 -1
  5. package/editor/ecs/component/editors/ecs/Trail3DEditor.js +3 -18
  6. package/package.json +1 -1
  7. package/src/core/bvh8/build/BVH8Converter.d.ts +16 -0
  8. package/src/core/bvh8/build/BVH8Converter.d.ts.map +1 -1
  9. package/src/core/bvh8/build/BVH8Converter.js +64 -37
  10. package/src/core/bvh8/build/bvh8_assign_slots_greedy.d.ts +25 -0
  11. package/src/core/bvh8/build/bvh8_assign_slots_greedy.d.ts.map +1 -0
  12. package/src/core/bvh8/build/bvh8_assign_slots_greedy.js +68 -0
  13. package/src/core/bvh8/build/bvh8_from_proxy.d.ts.map +1 -1
  14. package/src/core/bvh8/build/bvh8_from_proxy.js +2 -33
  15. package/src/core/bvh8/build/bvh8_node_fit_slots.d.ts +22 -0
  16. package/src/core/bvh8/build/bvh8_node_fit_slots.d.ts.map +1 -0
  17. package/src/core/bvh8/build/bvh8_node_fit_slots.js +115 -0
  18. package/src/core/bvh8/bvh8_depth.d.ts +8 -0
  19. package/src/core/bvh8/bvh8_depth.d.ts.map +1 -0
  20. package/src/core/bvh8/bvh8_depth.js +39 -0
  21. package/src/core/math/complex/complex_fft_radix2.d.ts +19 -0
  22. package/src/core/math/complex/complex_fft_radix2.d.ts.map +1 -0
  23. package/src/core/math/complex/complex_fft_radix2.js +71 -0
  24. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts +33 -65
  25. package/src/engine/graphics/ecs/trail3d/Trail3D.d.ts.map +1 -1
  26. package/src/engine/graphics/ecs/trail3d/Trail3D.js +37 -245
  27. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.d.ts +0 -4
  28. package/src/engine/graphics/ecs/trail3d/Trail3DFlags.js +4 -10
  29. package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts +13 -10
  30. package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.d.ts.map +1 -1
  31. package/src/engine/graphics/ecs/trail3d/seed_trail_stroke.js +28 -37
  32. package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts +10 -0
  33. package/src/engine/graphics/ecs/trail3d/trail_knot_count.d.ts.map +1 -0
  34. package/src/engine/graphics/ecs/trail3d/trail_knot_count.js +27 -0
  35. package/src/engine/graphics/trail/TrailKnots.d.ts +62 -0
  36. package/src/engine/graphics/trail/TrailKnots.d.ts.map +1 -0
  37. package/src/engine/graphics/trail/TrailKnots.js +137 -0
  38. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.d.ts +1 -1
  39. package/src/engine/graphics/trail/tube/TubeXMaterialSpec.js +1 -1
  40. package/src/engine/graphics3/EntityRowHold.d.ts +48 -0
  41. package/src/engine/graphics3/EntityRowHold.d.ts.map +1 -0
  42. package/src/engine/graphics3/EntityRowHold.js +128 -0
  43. package/src/engine/graphics3/GPUFluidSystem.d.ts +17 -4
  44. package/src/engine/graphics3/GPUFluidSystem.d.ts.map +1 -1
  45. package/src/engine/graphics3/GPUFluidSystem.js +113 -16
  46. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +6 -2
  47. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  48. package/src/engine/graphics3/GPUParticleEmitterSystem.js +11 -44
  49. package/src/engine/graphics3/Trail3DSystem.d.ts +69 -35
  50. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
  51. package/src/engine/graphics3/Trail3DSystem.js +380 -81
  52. package/src/engine/physics/cloth/playground/wind_main.js +7 -6
  53. package/src/engine/physics/cloth/wind/AbstractClothWind.d.ts +2 -2
  54. package/src/engine/physics/cloth/wind/AbstractClothWind.js +2 -2
  55. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts +3 -3
  56. package/src/engine/physics/cloth/wind/ClothFluidWind.d.ts.map +1 -1
  57. package/src/engine/physics/cloth/wind/ClothFluidWind.js +7 -9
  58. package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts +10 -10
  59. package/src/engine/physics/cloth/wind/ClothGPUFluidWind.d.ts.map +1 -1
  60. package/src/engine/physics/cloth/wind/ClothGPUFluidWind.js +14 -22
  61. package/src/engine/physics/fluid/FluidAtmosphere.d.ts +16 -2
  62. package/src/engine/physics/fluid/FluidAtmosphere.d.ts.map +1 -1
  63. package/src/engine/physics/fluid/FluidAtmosphere.js +17 -3
  64. package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts +1 -2
  65. package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.d.ts.map +1 -1
  66. package/src/engine/physics/fluid/ecs/FluidEffectorsComponentSerializationAdapter.js +1 -2
  67. package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts +8 -5
  68. package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.d.ts.map +1 -1
  69. package/src/engine/physics/fluid/ecs/FluidEffectorsSystem.js +60 -17
  70. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts +17 -0
  71. package/src/engine/physics/fluid/ecs/FluidObstacle.d.ts.map +1 -1
  72. package/src/engine/physics/fluid/ecs/FluidObstacle.js +22 -2
  73. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +6 -5
  74. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  75. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.js +14 -3
  76. package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +1 -1
  77. package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +1 -1
  78. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts +33 -47
  79. package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
  80. package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +38 -176
  81. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts +8 -11
  82. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.d.ts.map +1 -1
  83. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationAdapter.js +13 -24
  84. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts +16 -0
  85. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.d.ts.map +1 -0
  86. package/src/engine/physics/fluid/effector/GlobalFluidEffectorSerializationUpgrader_0_1.js +35 -0
  87. package/src/engine/physics/fluid/fluid_apply_atmosphere.d.ts +1 -1
  88. package/src/engine/physics/fluid/fluid_apply_atmosphere.js +1 -1
  89. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts +9 -1
  90. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.d.ts.map +1 -1
  91. package/src/engine/physics/fluid/obstacle/FLUID_OBSTACLE_RECORD_STRUCT.js +11 -1
  92. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts +5 -0
  93. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.d.ts.map +1 -1
  94. package/src/engine/physics/fluid/obstacle/fluid_obstacle_record_create.js +2 -0
  95. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts +4 -3
  96. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.d.ts.map +1 -1
  97. package/src/engine/physics/fluid/obstacle/fluid_obstacle_write_gpu_record.js +11 -3
  98. package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.d.ts +28 -0
  99. package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.d.ts.map +1 -0
  100. package/src/engine/physics/fluid/turbulence/FLUID_TURBULENCE_TILE.js +29 -0
  101. package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.d.ts +16 -0
  102. package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.d.ts.map +1 -0
  103. package/src/engine/physics/fluid/turbulence/fluid_atmosphere_velocity_at.js +49 -0
  104. package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.d.ts +11 -0
  105. package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.d.ts.map +1 -0
  106. package/src/engine/physics/fluid/turbulence/fluid_turbulence_inverse_tile_size.js +18 -0
  107. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.d.ts +25 -0
  108. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.d.ts.map +1 -0
  109. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_data.js +65 -0
  110. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.d.ts +56 -0
  111. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.d.ts.map +1 -0
  112. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_generate.js +313 -0
  113. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.d.ts +16 -0
  114. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.d.ts.map +1 -0
  115. package/src/engine/physics/fluid/turbulence/fluid_turbulence_tile_sample.js +69 -0
  116. package/src/generation/foliage/mesh/branch_ring_triangulate.d.ts +1 -1
  117. package/src/generation/foliage/mesh/branch_ring_triangulate.js +1 -1
  118. package/src/shade/playground/bvh_repro/README.md +8 -6
  119. package/src/shade/playground/bvh_repro/index.html +125 -124
  120. package/src/shade/playground/bvh_repro/main.js +259 -254
  121. package/src/shade/playground/foliage_wind/foliage_world.d.ts.map +1 -1
  122. package/src/shade/playground/foliage_wind/foliage_world.js +7 -4
  123. package/src/shade/playground/grass_surfaces/main.js +3 -2
  124. package/src/shade/playground/particle_ecs/bonfire_wind.d.ts +23 -13
  125. package/src/shade/playground/particle_ecs/bonfire_wind.d.ts.map +1 -1
  126. package/src/shade/playground/particle_ecs/bonfire_wind.js +30 -33
  127. package/src/shade/playground/skinned_blas_refit/README.md +26 -14
  128. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +14 -9
  129. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -1
  130. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +126 -127
  131. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +95 -95
  132. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +9 -1
  133. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -1
  134. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +146 -135
  135. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +6 -6
  136. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
  137. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +148 -134
  138. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +11 -8
  139. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -1
  140. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +342 -202
  141. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +12 -13
  142. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  143. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +136 -116
  144. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +4 -4
  145. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
  146. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +255 -249
  147. package/src/shade/playground/trails/index.html +50 -0
  148. package/src/shade/playground/trails/main.d.ts +2 -0
  149. package/src/shade/playground/trails/main.d.ts.map +1 -0
  150. package/src/shade/playground/trails/main.js +258 -0
  151. package/src/shade/playground/water_surface/main.js +6 -3
  152. package/src/shade/renderer/animation/GPUAnimationManager.js +2 -2
  153. package/src/shade/renderer/animation/animation_curve_write_keys.d.ts +18 -0
  154. package/src/shade/renderer/animation/animation_curve_write_keys.d.ts.map +1 -0
  155. package/src/shade/renderer/animation/animation_curve_write_keys.js +34 -0
  156. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  157. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +7 -8
  158. package/src/shade/renderer/deferred/tonemap/ColorGrade.d.ts.map +1 -1
  159. package/src/shade/renderer/deferred/tonemap/ColorGrade.js +13 -36
  160. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +2 -2
  161. package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts +2 -13
  162. package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.d.ts.map +1 -1
  163. package/src/shade/renderer/dynamic/chunk_dynamic_mesh_avboit_vertex.js +6 -21
  164. package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts +17 -6
  165. package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.d.ts.map +1 -1
  166. package/src/shade/renderer/dynamic/graph_dynamic_mesh_avboit.js +38 -178
  167. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts +7 -9
  168. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.d.ts.map +1 -1
  169. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_draw.js +17 -106
  170. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts +7 -17
  171. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.d.ts.map +1 -1
  172. package/src/shade/renderer/dynamic/shader_dynamic_mesh_avboit_splat.js +18 -118
  173. package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.d.ts +111 -0
  174. package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.d.ts.map +1 -0
  175. package/src/shade/renderer/fluid/FLUID_FAR_FIELD_STRUCT.js +162 -0
  176. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts +37 -8
  177. package/src/shade/renderer/fluid/GPUFluidCascade.d.ts.map +1 -1
  178. package/src/shade/renderer/fluid/GPUFluidCascade.js +149 -47
  179. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts +10 -3
  180. package/src/shade/renderer/fluid/GPUFluidCascadeStack.d.ts.map +1 -1
  181. package/src/shade/renderer/fluid/GPUFluidCascadeStack.js +69 -10
  182. package/src/shade/renderer/fluid/chunk_fluid_far_field.d.ts +19 -0
  183. package/src/shade/renderer/fluid/chunk_fluid_far_field.d.ts.map +1 -0
  184. package/src/shade/renderer/fluid/chunk_fluid_far_field.js +43 -0
  185. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts +10 -9
  186. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.d.ts.map +1 -1
  187. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_PARENT_STRUCT.js +14 -12
  188. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts +3 -2
  189. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.d.ts.map +1 -1
  190. package/src/shade/renderer/fluid/coupling/FLUID_CASCADE_RESTRICT_STRUCT.js +7 -5
  191. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts +17 -9
  192. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.d.ts.map +1 -1
  193. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_epilogue.js +58 -18
  194. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts +23 -11
  195. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.d.ts.map +1 -1
  196. package/src/shade/renderer/fluid/coupling/chunk_fluid_cascade_parent.js +371 -335
  197. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.d.ts.map +1 -1
  198. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_fill.js +2 -1
  199. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.d.ts.map +1 -1
  200. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_ghosts.js +109 -108
  201. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts +5 -3
  202. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.d.ts.map +1 -1
  203. package/src/shade/renderer/fluid/coupling/shader_fluid_cascade_restrict.js +24 -12
  204. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts +14 -0
  205. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.d.ts.map +1 -1
  206. package/src/shade/renderer/fluid/forcing/FLUID_FORCING.js +18 -0
  207. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts +3 -1
  208. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.d.ts.map +1 -1
  209. package/src/shade/renderer/fluid/forcing/FLUID_FORCING_APPLY_STRUCT.js +4 -1
  210. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts +9 -0
  211. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.d.ts.map +1 -1
  212. package/src/shade/renderer/fluid/forcing/GPUFluidForcing.js +20 -4
  213. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts +11 -2
  214. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.d.ts.map +1 -1
  215. package/src/shade/renderer/fluid/forcing/chunk_fluid_forcing_cell.js +59 -2
  216. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts +4 -1
  217. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.d.ts.map +1 -1
  218. package/src/shade/renderer/fluid/forcing/shader_fluid_forcing_apply.js +367 -341
  219. package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts +6 -2
  220. package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.d.ts.map +1 -1
  221. package/src/shade/renderer/fluid/mac/FLUID_MAC_STEP_STRUCT.js +10 -5
  222. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts +20 -21
  223. package/src/shade/renderer/fluid/mac/FluidMacPasses.d.ts.map +1 -1
  224. package/src/shade/renderer/fluid/mac/FluidMacPasses.js +453 -427
  225. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts +6 -2
  226. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.d.ts.map +1 -1
  227. package/src/shade/renderer/fluid/mac/shader_fluid_mac_advect_correct.js +340 -282
  228. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts +13 -5
  229. package/src/shade/renderer/fluid/publish/FluidWindPublish.d.ts.map +1 -1
  230. package/src/shade/renderer/fluid/publish/FluidWindPublish.js +20 -10
  231. package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.d.ts +2 -2
  232. package/src/shade/renderer/fluid/publish/chunk_fluid_wind_publish_cell.js +2 -2
  233. package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts +5 -3
  234. package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.d.ts.map +1 -1
  235. package/src/shade/renderer/fluid/publish/shader_fluid_wind_publish.js +147 -142
  236. package/src/shade/renderer/fluid/query/GPUFluidQueries.js +2 -2
  237. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  238. package/src/shade/renderer/geometry/GPUGeometryManager.js +5 -7
  239. package/src/shade/renderer/geometry/MeshletGeometry.d.ts +4 -1
  240. package/src/shade/renderer/geometry/MeshletGeometry.d.ts.map +1 -1
  241. package/src/shade/renderer/geometry/MeshletGeometry.js +4 -1
  242. package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts +20 -0
  243. package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.d.ts.map +1 -1
  244. package/src/shade/renderer/geometry/MeshletGeometrySerializationAdapter.js +35 -3
  245. package/src/shade/renderer/geometry/blas_from_meshlets.d.ts +9 -3
  246. package/src/shade/renderer/geometry/blas_from_meshlets.d.ts.map +1 -1
  247. package/src/shade/renderer/geometry/blas_from_meshlets.js +16 -30
  248. package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.d.ts +14 -0
  249. package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.d.ts.map +1 -0
  250. package/src/shade/renderer/geometry/bvh/BLAS8_REFIT_TARGET_STRUCT.js +33 -0
  251. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts +18 -21
  252. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.d.ts.map +1 -1
  253. package/src/shade/renderer/geometry/bvh/GPUBLASRefitBatch.js +78 -158
  254. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +18 -39
  255. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  256. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +39 -398
  257. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +6 -7
  258. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  259. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +5 -7
  260. package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.d.ts +36 -0
  261. package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.d.ts.map +1 -0
  262. package/src/shade/renderer/geometry/bvh/bvh8_build_for_meshlets.js +179 -0
  263. package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.d.ts +30 -0
  264. package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.d.ts.map +1 -0
  265. package/src/shade/renderer/geometry/bvh/meshlet_batch_to_clustered_bvh.js +207 -0
  266. package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.d.ts +52 -0
  267. package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.d.ts.map +1 -0
  268. package/src/shade/renderer/geometry/bvh/shader_blas8_refit_batch.js +464 -0
  269. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts +12 -0
  270. package/src/shade/renderer/geometry/meshlet/MeshletBatch.d.ts.map +1 -1
  271. package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +37 -0
  272. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.d.ts.map +1 -1
  273. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_classify.js +4 -4
  274. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.d.ts.map +1 -1
  275. package/src/shade/renderer/geometry/sdf/bake/shader_mesh_sdf_evaluate.js +2 -2
  276. package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.d.ts.map +1 -1
  277. package/src/shade/renderer/geometry/sdf/chunk_blas_query_band_sdf.js +2 -2
  278. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.d.ts.map +1 -1
  279. package/src/shade/renderer/geometry/sdf/shader_sdf_visualize.js +4 -4
  280. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.d.ts.map +1 -1
  281. package/src/shade/renderer/geometry/sdf/surface/shader_mesh_surface_trace.js +2 -2
  282. package/src/shade/renderer/geometry/sr_create_group_RTX.d.ts.map +1 -1
  283. package/src/shade/renderer/geometry/sr_create_group_RTX.js +4 -4
  284. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.d.ts.map +1 -1
  285. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -0
  286. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  287. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -0
  288. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
  289. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +372 -376
  290. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts +9 -10
  291. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.d.ts.map +1 -1
  292. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/MESH_BRICK.js +10 -11
  293. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.d.ts +2 -2
  294. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/chunk_mesh_brick_walk.js +2 -2
  295. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts +12 -8
  296. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.d.ts.map +1 -1
  297. package/src/shade/renderer/global_illumination/probe_clipmap/brick/mesh/shader_mesh_brick_gather.js +109 -60
  298. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_sdf.js +2 -2
  299. package/src/shade/renderer/global_illumination/probe_clipmap/debug/graph_probe_clipmap_debug_mesh_surfaces.js +2 -2
  300. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +2 -2
  301. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -70
  302. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +6 -7
  303. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -1
  304. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +6 -7
  305. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +3 -3
  306. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +3 -3
  307. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_build_single_workgroup.js +1 -1
  308. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +2 -2
  309. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +3 -3
  310. package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.d.ts +69 -0
  311. package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.d.ts.map +1 -0
  312. package/src/shade/renderer/gpu_primitive/bvh8/BVH8_TREE_BUFFER_LAYOUT.js +89 -0
  313. package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.d.ts +41 -0
  314. package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.d.ts.map +1 -0
  315. package/src/shade/renderer/gpu_primitive/bvh8/bvh8_encode_from_bvh2.js +348 -0
  316. package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.d.ts +34 -0
  317. package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.d.ts.map +1 -0
  318. package/src/shade/renderer/gpu_primitive/bvh8/check_bvh8_tree.js +291 -0
  319. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.d.ts +31 -0
  320. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.d.ts.map +1 -0
  321. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.js +175 -0
  322. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.d.ts +27 -0
  323. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.d.ts.map +1 -0
  324. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.js +48 -0
  325. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.d.ts +26 -0
  326. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.d.ts.map +1 -0
  327. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.js +118 -0
  328. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.d.ts +22 -0
  329. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.d.ts.map +1 -0
  330. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.js +143 -0
  331. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.d.ts +36 -0
  332. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.d.ts.map +1 -0
  333. package/src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.js +97 -0
  334. package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.d.ts +49 -0
  335. package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.d.ts.map +1 -0
  336. package/src/shade/renderer/gpu_primitive/bvh8/graph_bvh8_encode_from_bvh2.js +265 -0
  337. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.d.ts +37 -0
  338. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.d.ts.map +1 -0
  339. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_assign.js +109 -0
  340. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.d.ts +15 -0
  341. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.d.ts.map +1 -0
  342. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count.js +85 -0
  343. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.d.ts +26 -0
  344. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.d.ts.map +1 -0
  345. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_count_single_workgroup.js +200 -0
  346. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.d.ts +19 -0
  347. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.d.ts.map +1 -0
  348. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_parents.js +81 -0
  349. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.d.ts +14 -0
  350. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.d.ts.map +1 -0
  351. package/src/shade/renderer/gpu_primitive/bvh8/shader_bvh8_encode_write.js +101 -0
  352. package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.d.ts +19 -0
  353. package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.d.ts.map +1 -0
  354. package/src/shade/renderer/gpu_primitive/bvh8/verify_gpu_bvh8_encode.js +361 -0
  355. package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts +3 -2
  356. package/src/shade/renderer/grass/press/shader_grass_press_mark.d.ts.map +1 -1
  357. package/src/shade/renderer/grass/press/shader_grass_press_mark.js +5 -3
  358. package/src/shade/renderer/grass/surface/shader_grass_surface_bake.d.ts.map +1 -1
  359. package/src/shade/renderer/grass/surface/shader_grass_surface_bake.js +5 -6
  360. package/src/shade/renderer/lightmap/GPULightMap.d.ts.map +1 -1
  361. package/src/shade/renderer/lightmap/GPULightMap.js +1 -0
  362. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.d.ts.map +1 -1
  363. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -0
  364. package/src/shade/renderer/path_tracer/graph_path_trace_scene.d.ts.map +1 -1
  365. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -0
  366. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts +49 -0
  367. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.d.ts.map +1 -0
  368. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_draw.js +144 -0
  369. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts +71 -0
  370. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.d.ts.map +1 -0
  371. package/src/shade/renderer/rasterize/native/avboit/avboit_unlit_splat.js +152 -0
  372. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts +21 -0
  373. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.d.ts.map +1 -0
  374. package/src/shade/renderer/rasterize/native/avboit/chunk_avboit_unlit_varyings.js +30 -0
  375. package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts +101 -0
  376. package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.d.ts.map +1 -0
  377. package/src/shade/renderer/rasterize/native/avboit/graph_avboit_unlit.js +306 -0
  378. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts +9 -0
  379. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.d.ts.map +1 -1
  380. package/src/shade/renderer/rasterize/native/avboit/shader_avboit_splat.js +11 -4
  381. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +8 -4
  382. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  383. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +60 -33
  384. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +6 -6
  385. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -1
  386. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +23 -53
  387. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.d.ts +3 -1
  388. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.d.ts.map +1 -1
  389. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_INODE_STRUCT.js +5 -3
  390. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.d.ts +28 -0
  391. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.d.ts.map +1 -0
  392. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/BVH8_MAX_DEPTH.js +29 -0
  393. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.d.ts +25 -0
  394. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.d.ts.map +1 -0
  395. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.js +97 -0
  396. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.d.ts +8 -0
  397. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.d.ts.map +1 -1
  398. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_intersect.js +23 -14
  399. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts +36 -0
  400. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.d.ts.map +1 -0
  401. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_slot_distances.js +222 -0
  402. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.d.ts +20 -0
  403. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.d.ts.map +1 -0
  404. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_direction_rcp.js +30 -0
  405. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.d.ts +30 -0
  406. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.d.ts.map +1 -0
  407. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_tree_read.js +91 -0
  408. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.d.ts +23 -0
  409. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.d.ts.map +1 -0
  410. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_waiting_slots.js +40 -0
  411. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.d.ts +22 -0
  412. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.d.ts.map +1 -1
  413. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_nearest.js +121 -70
  414. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.d.ts +13 -1
  415. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.d.ts.map +1 -1
  416. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_blas_occluded.js +117 -61
  417. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.d.ts +21 -0
  418. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.d.ts.map +1 -1
  419. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest.js +111 -72
  420. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts +1 -2
  421. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.d.ts.map +1 -1
  422. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_nearest_among.js +83 -54
  423. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.d.ts +14 -0
  424. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.d.ts.map +1 -1
  425. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_query_occluded.js +92 -60
  426. package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.d.ts +22 -0
  427. package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.d.ts.map +1 -1
  428. package/src/shade/renderer/shader/chunk/sdf/chunk_point_query_blas_nearest.js +153 -106
  429. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.d.ts +21 -0
  430. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.d.ts.map +1 -1
  431. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_point_query_nearest.js +115 -74
  432. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts +5 -2
  433. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.d.ts.map +1 -1
  434. package/src/shade/renderer/shader/chunk/sdf/chunk_scene_sdf_raymarch.js +89 -63
  435. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.d.ts +15 -0
  436. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.d.ts.map +1 -1
  437. package/src/shade/renderer/shader/chunk/sdf/chunk_sdf_query_distance.js +108 -63
  438. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.d.ts +14 -0
  439. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.d.ts.map +1 -1
  440. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast.js +94 -60
  441. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.d.ts.map +1 -1
  442. package/src/shade/renderer/shadow/sdf/graph_draw_sdf_shadows.js +4 -4
  443. package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts +69 -0
  444. package/src/shade/renderer/trails/GPUTrailAVBOITChannel.d.ts.map +1 -0
  445. package/src/shade/renderer/trails/GPUTrailAVBOITChannel.js +129 -0
  446. package/src/shade/renderer/trails/GPUTrailSystem.d.ts +164 -0
  447. package/src/shade/renderer/trails/GPUTrailSystem.d.ts.map +1 -0
  448. package/src/shade/renderer/trails/GPUTrailSystem.js +725 -0
  449. package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts +14 -0
  450. package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.d.ts.map +1 -0
  451. package/src/shade/renderer/trails/data/TRAIL_DATABASE_SPEC.js +38 -0
  452. package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts +66 -0
  453. package/src/shade/renderer/trails/data/TRAIL_KNOT.d.ts.map +1 -0
  454. package/src/shade/renderer/trails/data/TRAIL_KNOT.js +154 -0
  455. package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts +19 -0
  456. package/src/shade/renderer/trails/data/TRAIL_RECORD.d.ts.map +1 -0
  457. package/src/shade/renderer/trails/data/TRAIL_RECORD.js +68 -0
  458. package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts +18 -0
  459. package/src/shade/renderer/trails/data/TRAIL_STATE.d.ts.map +1 -0
  460. package/src/shade/renderer/trails/data/TRAIL_STATE.js +43 -0
  461. package/src/shade/renderer/trails/graph_trails.d.ts +58 -0
  462. package/src/shade/renderer/trails/graph_trails.d.ts.map +1 -0
  463. package/src/shade/renderer/trails/graph_trails.js +155 -0
  464. package/src/shade/renderer/trails/graph_trails_avboit.d.ts +126 -0
  465. package/src/shade/renderer/trails/graph_trails_avboit.d.ts.map +1 -0
  466. package/src/shade/renderer/trails/graph_trails_avboit.js +300 -0
  467. package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts +56 -0
  468. package/src/shade/renderer/trails/runtime/TrailFadeCurves.d.ts.map +1 -0
  469. package/src/shade/renderer/trails/runtime/TrailFadeCurves.js +220 -0
  470. package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts +49 -0
  471. package/src/shade/renderer/trails/runtime/TrailKnotPool.d.ts.map +1 -0
  472. package/src/shade/renderer/trails/runtime/TrailKnotPool.js +162 -0
  473. package/src/shade/renderer/trails/runtime/TrailParameters.d.ts +52 -0
  474. package/src/shade/renderer/trails/runtime/TrailParameters.d.ts.map +1 -0
  475. package/src/shade/renderer/trails/runtime/TrailParameters.js +126 -0
  476. package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts +23 -0
  477. package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.d.ts.map +1 -0
  478. package/src/shade/renderer/trails/shaders/chunk_trail_frame_transport.js +57 -0
  479. package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts +14 -0
  480. package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.d.ts.map +1 -0
  481. package/src/shade/renderer/trails/shaders/chunk_trail_knot_alpha.js +40 -0
  482. package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts +18 -0
  483. package/src/shade/renderer/trails/shaders/chunk_trail_seed.d.ts.map +1 -0
  484. package/src/shade/renderer/trails/shaders/chunk_trail_seed.js +64 -0
  485. package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts +14 -0
  486. package/src/shade/renderer/trails/shaders/chunk_trail_segment.d.ts.map +1 -0
  487. package/src/shade/renderer/trails/shaders/chunk_trail_segment.js +51 -0
  488. package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts +48 -0
  489. package/src/shade/renderer/trails/shaders/chunk_trail_update.d.ts.map +1 -0
  490. package/src/shade/renderer/trails/shaders/chunk_trail_update.js +197 -0
  491. package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts +34 -0
  492. package/src/shade/renderer/trails/shaders/chunk_trail_vertex.d.ts.map +1 -0
  493. package/src/shade/renderer/trails/shaders/chunk_trail_vertex.js +111 -0
  494. package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts +24 -0
  495. package/src/shade/renderer/trails/shaders/shader_trail_avboit.d.ts.map +1 -0
  496. package/src/shade/renderer/trails/shaders/shader_trail_avboit.js +78 -0
  497. package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts +23 -0
  498. package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.d.ts.map +1 -0
  499. package/src/shade/renderer/trails/shaders/shader_trail_avboit_segments.js +130 -0
  500. package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts +29 -0
  501. package/src/shade/renderer/trails/shaders/shader_trail_draw_args.d.ts.map +1 -0
  502. package/src/shade/renderer/trails/shaders/shader_trail_draw_args.js +78 -0
  503. package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts +18 -0
  504. package/src/shade/renderer/trails/shaders/shader_trail_seed.d.ts.map +1 -0
  505. package/src/shade/renderer/trails/shaders/shader_trail_seed.js +79 -0
  506. package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts +20 -0
  507. package/src/shade/renderer/trails/shaders/shader_trail_update.d.ts.map +1 -0
  508. package/src/shade/renderer/trails/shaders/shader_trail_update.js +101 -0
  509. package/src/shade/renderer/volumetrics/graph_build_volumetrics.js +2 -2
  510. package/src/shade/renderer/water/query/shader_water_surface_query.d.ts.map +1 -1
  511. package/src/shade/renderer/water/query/shader_water_surface_query.js +227 -227
  512. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
  513. package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +7 -4
  514. package/src/shade/renderer/water/surface/particles/shader_water_particles.js +2 -2
  515. package/src/shade/renderer/wind/GPUSceneWind.d.ts +36 -4
  516. package/src/shade/renderer/wind/GPUSceneWind.d.ts.map +1 -1
  517. package/src/shade/renderer/wind/GPUSceneWind.js +150 -4
  518. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts +9 -3
  519. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.d.ts.map +1 -1
  520. package/src/shade/renderer/wind/WIND_FIELD_STRUCT.js +13 -3
  521. package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.d.ts +6 -6
  522. package/src/shade/renderer/wind/WIND_FIELD_UNIFORM.js +6 -6
  523. package/src/shade/renderer/wind/chunk_fluid_turbulence.d.ts +39 -0
  524. package/src/shade/renderer/wind/chunk_fluid_turbulence.d.ts.map +1 -0
  525. package/src/shade/renderer/wind/chunk_fluid_turbulence.js +63 -0
  526. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts +10 -7
  527. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.d.ts.map +1 -1
  528. package/src/shade/renderer/wind/chunk_wind_field_sample_cascades.js +34 -11
  529. package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.d.ts +2 -2
  530. package/src/shade/renderer/wind/chunk_wind_field_sample_uniform.js +2 -2
  531. package/src/shade/renderer/wind/wind_field_add_resources.d.ts +6 -4
  532. package/src/shade/renderer/wind/wind_field_add_resources.d.ts.map +1 -1
  533. package/src/shade/renderer/wind/wind_field_add_resources.js +9 -6
  534. package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts +0 -18
  535. package/src/engine/graphics/ecs/trail3d/advance_trail.d.ts.map +0 -1
  536. package/src/engine/graphics/ecs/trail3d/advance_trail.js +0 -42
  537. package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts +0 -14
  538. package/src/engine/graphics/ecs/trail3d/seed_trail_tube.d.ts.map +0 -1
  539. package/src/engine/graphics/ecs/trail3d/seed_trail_tube.js +0 -75
  540. package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts +0 -17
  541. package/src/engine/graphics/ecs/trail3d/trail_head_position.d.ts.map +0 -1
  542. package/src/engine/graphics/ecs/trail3d/trail_head_position.js +0 -19
  543. package/src/engine/graphics/trail/tube/TubeX.d.ts +0 -186
  544. package/src/engine/graphics/trail/tube/TubeX.d.ts.map +0 -1
  545. package/src/engine/graphics/trail/tube/TubeX.js +0 -575
  546. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts +0 -16
  547. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.d.ts.map +0 -1
  548. package/src/engine/graphics/trail/tube/simulator/TubeXFixedPhysicsSimulator.js +0 -34
  549. package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts +0 -27
  550. package/src/engine/graphics/trail/tube/tube_attributes_spec.d.ts.map +0 -1
  551. package/src/engine/graphics/trail/tube/tube_attributes_spec.js +0 -70
  552. package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts +0 -38
  553. package/src/engine/graphics3/trail/trail_tube_write_geometry.d.ts.map +0 -1
  554. package/src/engine/graphics3/trail/trail_tube_write_geometry.js +0 -119
  555. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts +0 -18
  556. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.d.ts.map +0 -1
  557. package/src/shade/renderer/geometry/bvh/BLAS_REFIT_TARGET_STRUCT.js +0 -50
  558. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +0 -23
  559. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +0 -1
  560. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +0 -87
  561. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts +0 -42
  562. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.d.ts.map +0 -1
  563. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch.js +0 -141
  564. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts +0 -21
  565. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.d.ts.map +0 -1
  566. package/src/shade/renderer/geometry/bvh/shader_blas_refit_batch_seed.js +0 -75
  567. package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts +0 -17
  568. package/src/shade/renderer/geometry/meshlet_batch_to_bvh.d.ts.map +0 -1
  569. package/src/shade/renderer/geometry/meshlet_batch_to_bvh.js +0 -247
  570. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.d.ts +0 -7
  571. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.d.ts.map +0 -1
  572. package/src/shade/renderer/shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_ray_query_blas_occlusion.js +0 -226
  573. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.d.ts +0 -8
  574. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.d.ts.map +0 -1
  575. package/src/shade/renderer/shader/chunk/light/lpv/chunk_lpv_mask_visibility_via_rays.js +0 -45
  576. package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.d.ts +0 -3
  577. package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.d.ts.map +0 -1
  578. package/src/shade/renderer/shader/chunk/light/sample/chunk_ray_sample_light.js +0 -105
  579. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.d.ts +0 -6
  580. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.d.ts.map +0 -1
  581. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_distance.js +0 -86
  582. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.d.ts +0 -2
  583. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.d.ts.map +0 -1
  584. package/src/shade/renderer/shadow/sdf/chunk_ray_query_sdf_raycast_traversal_count.js +0 -136
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The slot each child of a wide node is given by the encode of a binary tree as a BVH8
3
+ * ({@link bvh8_encode_from_bvh2}):
4
+ *
5
+ * ```wgsl
6
+ * struct BVH8EncodeAssignment { slots: u32, internal: u32 }
7
+ *
8
+ * fn bvh8_encode_assign(node: u32, children: BVH8EncodeChildren) -> BVH8EncodeAssignment
9
+ * fn bvh8_encode_slot_of(slots: u32, child: u32) -> u32
10
+ * fn bvh8_encode_rank(internal: u32, slot: u32) -> u32
11
+ * ```
12
+ *
13
+ * `slots` holds a slot a child, three bits each, in the order `bvh8_encode_gather` lists the
14
+ * children; `bvh8_encode_slot_of` reads one out. `internal` has a bit per slot that holds a child
15
+ * node, which is the node's child mask; `bvh8_encode_rank` is how many of those sit below a slot:
16
+ * where the child node in that slot stands in the node's block of child nodes.
17
+ *
18
+ * Cheapest (child, slot) pair first, where a child costs a slot the distance its box's centre lies
19
+ * from the node's, taken with the slot's signs. Of equal costs the first met wins, children in order
20
+ * and for a child its slots in order. A child whose box is not a number costs nothing a comparison
21
+ * can rank; it takes the lowest slot left, so that a tree's shape never depends on what its boxes
22
+ * hold.
23
+ *
24
+ * The enclosing shader declares what {@link chunk_bvh8_encode_gather} reads, and the binary tree is
25
+ * fitted.
26
+ *
27
+ * @type {CodeChunk}
28
+ */
29
+ export const chunk_bvh8_encode_assign: CodeChunk;
30
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
31
+ //# sourceMappingURL=chunk_bvh8_encode_assign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh8_encode_assign.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_assign.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,uCAFU,SAAS,CAgJjB;0BA7KwB,oCAAoC"}
@@ -0,0 +1,175 @@
1
+ import { F32_MAX_DEFINITION } from "../../shader/chunk/math/F32_MAX_DEFINITION.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+ import { chunk_bvh8_encode_gather } from "./chunk_bvh8_encode_gather.js";
4
+
5
+ /**
6
+ * The slot each child of a wide node is given by the encode of a binary tree as a BVH8
7
+ * ({@link bvh8_encode_from_bvh2}):
8
+ *
9
+ * ```wgsl
10
+ * struct BVH8EncodeAssignment { slots: u32, internal: u32 }
11
+ *
12
+ * fn bvh8_encode_assign(node: u32, children: BVH8EncodeChildren) -> BVH8EncodeAssignment
13
+ * fn bvh8_encode_slot_of(slots: u32, child: u32) -> u32
14
+ * fn bvh8_encode_rank(internal: u32, slot: u32) -> u32
15
+ * ```
16
+ *
17
+ * `slots` holds a slot a child, three bits each, in the order `bvh8_encode_gather` lists the
18
+ * children; `bvh8_encode_slot_of` reads one out. `internal` has a bit per slot that holds a child
19
+ * node, which is the node's child mask; `bvh8_encode_rank` is how many of those sit below a slot:
20
+ * where the child node in that slot stands in the node's block of child nodes.
21
+ *
22
+ * Cheapest (child, slot) pair first, where a child costs a slot the distance its box's centre lies
23
+ * from the node's, taken with the slot's signs. Of equal costs the first met wins, children in order
24
+ * and for a child its slots in order. A child whose box is not a number costs nothing a comparison
25
+ * can rank; it takes the lowest slot left, so that a tree's shape never depends on what its boxes
26
+ * hold.
27
+ *
28
+ * The enclosing shader declares what {@link chunk_bvh8_encode_gather} reads, and the binary tree is
29
+ * fitted.
30
+ *
31
+ * @type {CodeChunk}
32
+ */
33
+ export const chunk_bvh8_encode_assign = CodeChunk.from(
34
+ //language=WGSL
35
+ `
36
+ const BVH8_ENCODE_SLOT_UNASSIGNED = 0xffffffffu;
37
+
38
+ struct BVH8EncodeAssignment {
39
+ // a slot a child, three bits each, in the children's order
40
+ slots: u32,
41
+ // a bit per slot that holds a child node
42
+ internal: u32,
43
+ }
44
+
45
+ fn bvh8_encode_slot_of(slots: u32, child: u32) -> u32 {
46
+ return (slots >> (child * 3u)) & 7u;
47
+ }
48
+
49
+ // how many child nodes sit in the slots below this one
50
+ fn bvh8_encode_rank(internal: u32, slot: u32) -> u32 {
51
+ return countOneBits(internal & ((1u << slot) - 1u));
52
+ }
53
+
54
+ struct BVH8EncodeCheapest {
55
+ cost: f32,
56
+ // BVH8_ENCODE_SLOT_UNASSIGNED when no open slot has a cost that can be ranked
57
+ slot: u32,
58
+ }
59
+
60
+ // The cheapest of the slots still open to a child whose centre lies 'offset' from its node's, and of
61
+ // equal costs the lowest slot.
62
+ fn bvh8_encode_cheapest_slot(offset: vec3<f32>, filled: u32) -> BVH8EncodeCheapest {
63
+ // the slots still open, the low four and the high four
64
+ let open_low = (vec4<u32>(filled) & vec4<u32>(1u, 2u, 4u, 8u)) == vec4<u32>(0u);
65
+ let open_high = (vec4<u32>(filled) & vec4<u32>(16u, 32u, 64u, 128u)) == vec4<u32>(0u);
66
+
67
+ // What the child costs each slot, (±x + ±y) + ±z: x is taken against the slot's bit 2, y against
68
+ // bit 1, z against bit 0.
69
+ let y = vec4<f32>(offset.y, offset.y, -offset.y, -offset.y);
70
+ let z = vec4<f32>(offset.z, -offset.z, offset.z, -offset.z);
71
+
72
+ let cost_low = (vec4<f32>(offset.x) + y) + z;
73
+ let cost_high = (vec4<f32>(-offset.x) + y) + z;
74
+
75
+ // an open slot, at a cost that is a number below infinity
76
+ let ranked_low = open_low & (cost_low <= vec4<f32>(F32_MAX));
77
+ let ranked_high = open_high & (cost_high <= vec4<f32>(F32_MAX));
78
+
79
+ let least_of = min(
80
+ select(vec4<f32>(F32_MAX), cost_low, ranked_low),
81
+ select(vec4<f32>(F32_MAX), cost_high, ranked_high)
82
+ );
83
+
84
+ let least = min(min(least_of.x, least_of.y), min(least_of.z, least_of.w));
85
+
86
+ // the slots at that cost
87
+ let at = select(vec4<u32>(0u), vec4<u32>(1u, 2u, 4u, 8u), ranked_low & (cost_low == vec4<f32>(least)))
88
+ | select(vec4<u32>(0u), vec4<u32>(16u, 32u, 64u, 128u), ranked_high & (cost_high == vec4<f32>(least)));
89
+
90
+ let slots_at = at.x | at.y | at.z | at.w;
91
+
92
+ return BVH8EncodeCheapest(least, select(countTrailingZeros(slots_at), BVH8_ENCODE_SLOT_UNASSIGNED, slots_at == 0u));
93
+ }
94
+
95
+ fn bvh8_encode_assign(node: u32, children: BVH8EncodeChildren) -> BVH8EncodeAssignment {
96
+ // each child's centre from the node's, both doubled
97
+ var offsets: array<vec3<f32>, 8>;
98
+
99
+ // each child's cheapest open slot, and what it costs
100
+ var cheapest_cost: array<f32, 8>;
101
+ var cheapest_slot: array<u32, 8>;
102
+
103
+ let centre = bvh8_encode_low(node) + bvh8_encode_high(node);
104
+
105
+ for (var c = 0u; c < children.count; c++) {
106
+ let child = children.nodes[c];
107
+
108
+ let offset = (bvh8_encode_low(child) + bvh8_encode_high(child)) - centre;
109
+
110
+ let cheapest = bvh8_encode_cheapest_slot(offset, 0u);
111
+
112
+ offsets[c] = offset;
113
+ cheapest_cost[c] = cheapest.cost;
114
+ cheapest_slot[c] = cheapest.slot;
115
+ }
116
+
117
+ var assignment = BVH8EncodeAssignment(0u, 0u);
118
+
119
+ // children with a slot, and slots with a child
120
+ var placed = 0u;
121
+ var filled = 0u;
122
+
123
+ // a child a turn: the cheapest (child, slot) pair still open
124
+ for (var turn = 0u; turn < children.count; turn++) {
125
+ var min_cost = 0.0;
126
+ var min_slot = BVH8_ENCODE_SLOT_UNASSIGNED;
127
+ var min_child = BVH8_ENCODE_SLOT_UNASSIGNED;
128
+
129
+ for (var c = 0u; c < children.count; c++) {
130
+ if ((placed & (1u << c)) != 0u || cheapest_slot[c] == BVH8_ENCODE_SLOT_UNASSIGNED) {
131
+ continue;
132
+ }
133
+
134
+ // the first child that can be ranked, and after it any that is cheaper
135
+ if (min_slot == BVH8_ENCODE_SLOT_UNASSIGNED || cheapest_cost[c] < min_cost) {
136
+ min_cost = cheapest_cost[c];
137
+ min_slot = cheapest_slot[c];
138
+ min_child = c;
139
+ }
140
+ }
141
+
142
+ if (min_slot == BVH8_ENCODE_SLOT_UNASSIGNED) {
143
+ // no cost can be ranked: the first child still without a slot, into the lowest slot left
144
+ min_child = countTrailingZeros(~placed);
145
+ min_slot = countTrailingZeros(~filled);
146
+ }
147
+
148
+ placed |= 1u << min_child;
149
+ filled |= 1u << min_slot;
150
+
151
+ assignment.slots |= min_slot << (min_child * 3u);
152
+
153
+ if ((children.internal & (1u << min_child)) != 0u) {
154
+ assignment.internal |= 1u << min_slot;
155
+ }
156
+
157
+ // A child's cheapest open slot stays its cheapest until that slot is taken; whoever had that
158
+ // one looks again.
159
+ for (var c = 0u; c < children.count; c++) {
160
+ if ((placed & (1u << c)) == 0u && cheapest_slot[c] == min_slot) {
161
+ let cheapest = bvh8_encode_cheapest_slot(offsets[c], filled);
162
+
163
+ cheapest_cost[c] = cheapest.cost;
164
+ cheapest_slot[c] = cheapest.slot;
165
+ }
166
+ }
167
+ }
168
+
169
+ return assignment;
170
+ }
171
+ `, [
172
+ F32_MAX_DEFINITION,
173
+ chunk_bvh8_encode_gather,
174
+ ]
175
+ );
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Levels a binary tree handed to the GPU's encode may have below its root.
3
+ *
4
+ * A Karras tree splits on a bit of a 30-bit Morton code or, among equal codes, on a bit of a 32-bit
5
+ * leaf index, and every level down splits on a later bit.
6
+ *
7
+ * @type {number}
8
+ */
9
+ export const BVH8_ENCODE_MAX_BINARY_DEPTH: number;
10
+ /**
11
+ * How many nodes lie above an internal node of a binary tree:
12
+ *
13
+ * ```wgsl
14
+ * fn bvh8_encode_depth(node: u32) -> u32
15
+ * ```
16
+ *
17
+ * The encode of a binary tree as a BVH8 ({@link bvh8_encode_from_bvh2}) makes a node of the wide
18
+ * tree of every internal node whose depth is a multiple of three.
19
+ *
20
+ * The enclosing shader declares `parents`, an array of `u32` an internal node: its parent,
21
+ * `BVH_NULL_NODE` at the root. The tree is at most {@link BVH8_ENCODE_MAX_BINARY_DEPTH} deep.
22
+ *
23
+ * @type {CodeChunk}
24
+ */
25
+ export const chunk_bvh8_encode_depth: CodeChunk;
26
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
27
+ //# sourceMappingURL=chunk_bvh8_encode_depth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh8_encode_depth.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_depth.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,2CAFU,MAAM,CAEoC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,sCAFU,SAAS,CAqBjB;0BA9CwB,oCAAoC"}
@@ -0,0 +1,48 @@
1
+ import { BVH_NULL_NODE_DEFINITION } from "../../shader/chunk/bvh/BVH_NULL_NODE_DEFINITION.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+
4
+ /**
5
+ * Levels a binary tree handed to the GPU's encode may have below its root.
6
+ *
7
+ * A Karras tree splits on a bit of a 30-bit Morton code or, among equal codes, on a bit of a 32-bit
8
+ * leaf index, and every level down splits on a later bit.
9
+ *
10
+ * @type {number}
11
+ */
12
+ export const BVH8_ENCODE_MAX_BINARY_DEPTH = 30 + 32;
13
+
14
+ /**
15
+ * How many nodes lie above an internal node of a binary tree:
16
+ *
17
+ * ```wgsl
18
+ * fn bvh8_encode_depth(node: u32) -> u32
19
+ * ```
20
+ *
21
+ * The encode of a binary tree as a BVH8 ({@link bvh8_encode_from_bvh2}) makes a node of the wide
22
+ * tree of every internal node whose depth is a multiple of three.
23
+ *
24
+ * The enclosing shader declares `parents`, an array of `u32` an internal node: its parent,
25
+ * `BVH_NULL_NODE` at the root. The tree is at most {@link BVH8_ENCODE_MAX_BINARY_DEPTH} deep.
26
+ *
27
+ * @type {CodeChunk}
28
+ */
29
+ export const chunk_bvh8_encode_depth = CodeChunk.from(
30
+ //language=WGSL
31
+ `
32
+ const BVH8_ENCODE_MAX_BINARY_DEPTH = ${BVH8_ENCODE_MAX_BINARY_DEPTH}u;
33
+
34
+ fn bvh8_encode_depth(node: u32) -> u32 {
35
+ var depth = 0u;
36
+ var at = parents[node];
37
+
38
+ while (at != BVH_NULL_NODE && depth < BVH8_ENCODE_MAX_BINARY_DEPTH) {
39
+ depth++;
40
+ at = parents[at];
41
+ }
42
+
43
+ return depth;
44
+ }
45
+ `, [
46
+ BVH_NULL_NODE_DEFINITION,
47
+ ]
48
+ );
@@ -0,0 +1,26 @@
1
+ /**
2
+ * What the encode of a binary tree as a BVH8 ({@link bvh8_encode_from_bvh2}) reads of the binary
3
+ * tree, for one of its nodes:
4
+ *
5
+ * ```wgsl
6
+ * fn bvh8_encode_child_1(node: u32) -> u32
7
+ * fn bvh8_encode_child_2(node: u32) -> u32 // on a leaf, its payload
8
+ * fn bvh8_encode_low(node: u32) -> vec3<f32>
9
+ * fn bvh8_encode_high(node: u32) -> vec3<f32>
10
+ * fn bvh8_encode_gather(node: u32, internal_count: u32) -> BVH8EncodeChildren
11
+ * ```
12
+ *
13
+ * `bvh8_encode_gather` is the children a node of the binary tree has as a node of the wide one:
14
+ * what lies `BVH8_ENCODE_LEVELS` below it and the leaves met sooner, with which of them are
15
+ * nodes of the wide tree themselves.
16
+ *
17
+ * The enclosing shader declares `tree`, `array<u32>`: the binary tree, `[root][nodes]` in
18
+ * the layout of {@link BVH_BUFFER_LAYOUT}, in the order `graph_bvh_build_lbvh` writes one: its
19
+ * `internal_count` internal nodes first, the root node 0. A node is internal by its index, with no
20
+ * word of it read.
21
+ *
22
+ * @type {CodeChunk}
23
+ */
24
+ export const chunk_bvh8_encode_gather: CodeChunk;
25
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
26
+ //# sourceMappingURL=chunk_bvh8_encode_gather.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh8_encode_gather.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_gather.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,uCAFU,SAAS,CA2FjB;0BArHwB,oCAAoC"}
@@ -0,0 +1,118 @@
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+ import { BVH_HEADER_WORDS } from "../bvh/BVH_BUFFER_LAYOUT.js";
3
+ import { BVH_NODE_LAYOUT_DEFINITION } from "../bvh/BVH_NODE_LAYOUT_DEFINITION.js";
4
+ import { BVH8_ENCODE_LEVELS } from "./bvh8_encode_from_bvh2.js";
5
+
6
+ /**
7
+ * What the encode of a binary tree as a BVH8 ({@link bvh8_encode_from_bvh2}) reads of the binary
8
+ * tree, for one of its nodes:
9
+ *
10
+ * ```wgsl
11
+ * fn bvh8_encode_child_1(node: u32) -> u32
12
+ * fn bvh8_encode_child_2(node: u32) -> u32 // on a leaf, its payload
13
+ * fn bvh8_encode_low(node: u32) -> vec3<f32>
14
+ * fn bvh8_encode_high(node: u32) -> vec3<f32>
15
+ * fn bvh8_encode_gather(node: u32, internal_count: u32) -> BVH8EncodeChildren
16
+ * ```
17
+ *
18
+ * `bvh8_encode_gather` is the children a node of the binary tree has as a node of the wide one:
19
+ * what lies `BVH8_ENCODE_LEVELS` below it and the leaves met sooner, with which of them are
20
+ * nodes of the wide tree themselves.
21
+ *
22
+ * The enclosing shader declares `tree`, `array<u32>`: the binary tree, `[root][nodes]` in
23
+ * the layout of {@link BVH_BUFFER_LAYOUT}, in the order `graph_bvh_build_lbvh` writes one: its
24
+ * `internal_count` internal nodes first, the root node 0. A node is internal by its index, with no
25
+ * word of it read.
26
+ *
27
+ * @type {CodeChunk}
28
+ */
29
+ export const chunk_bvh8_encode_gather = CodeChunk.from(
30
+ //language=WGSL
31
+ `
32
+ const BVH8_ENCODE_LEVELS = ${BVH8_ENCODE_LEVELS}u;
33
+
34
+ // node 0 of the binary tree, in words
35
+ const BVH8_ENCODE_TREE_NODES = ${BVH_HEADER_WORDS}u;
36
+
37
+ struct BVH8EncodeChildren {
38
+ // nodes of the binary tree, child 1 before child 2 all the way down
39
+ nodes: array<u32, 8>,
40
+ count: u32,
41
+ // a bit per entry of 'nodes' that is internal, and so a wide node itself
42
+ internal: u32,
43
+ }
44
+
45
+ fn bvh8_encode_child_1(node: u32) -> u32 {
46
+ return tree[BVH8_ENCODE_TREE_NODES + node * BVH_NODE_STRIDE + BVH_NODE_CHILD_1];
47
+ }
48
+
49
+ // on a leaf, its payload
50
+ fn bvh8_encode_child_2(node: u32) -> u32 {
51
+ return tree[BVH8_ENCODE_TREE_NODES + node * BVH_NODE_STRIDE + BVH_NODE_CHILD_2];
52
+ }
53
+
54
+ fn bvh8_encode_low(node: u32) -> vec3<f32> {
55
+ let at = BVH8_ENCODE_TREE_NODES + node * BVH_NODE_STRIDE + BVH_NODE_BOUNDS;
56
+
57
+ return bitcast<vec3<f32>>(vec3<u32>(tree[at], tree[at + 1u], tree[at + 2u]));
58
+ }
59
+
60
+ fn bvh8_encode_high(node: u32) -> vec3<f32> {
61
+ let at = BVH8_ENCODE_TREE_NODES + node * BVH_NODE_STRIDE + BVH_NODE_BOUNDS + 3u;
62
+
63
+ return bitcast<vec3<f32>>(vec3<u32>(tree[at], tree[at + 1u], tree[at + 2u]));
64
+ }
65
+
66
+ // The children of a wide node: what lies BVH8_ENCODE_LEVELS below it in the binary tree, and the
67
+ // leaves met sooner. A node that is a leaf is the whole tree, and its own only child.
68
+ fn bvh8_encode_gather(node: u32, internal_count: u32) -> BVH8EncodeChildren {
69
+ var children: BVH8EncodeChildren;
70
+
71
+ if (node >= internal_count) {
72
+ children.nodes[0] = node;
73
+ children.count = 1u;
74
+ children.internal = 0u;
75
+
76
+ return children;
77
+ }
78
+
79
+ children.nodes[0] = bvh8_encode_child_1(node);
80
+ children.nodes[1] = bvh8_encode_child_2(node);
81
+ children.count = 2u;
82
+
83
+ // a level at a time, an internal node gives way to its two children where it stands
84
+ for (var level = 1u; level < BVH8_ENCODE_LEVELS; level++) {
85
+ var next: array<u32, 8>;
86
+ var next_count = 0u;
87
+
88
+ for (var c = 0u; c < children.count; c++) {
89
+ let at = children.nodes[c];
90
+
91
+ if (at >= internal_count) {
92
+ next[next_count] = at;
93
+ next_count++;
94
+ } else {
95
+ next[next_count] = bvh8_encode_child_1(at);
96
+ next[next_count + 1u] = bvh8_encode_child_2(at);
97
+ next_count += 2u;
98
+ }
99
+ }
100
+
101
+ children.nodes = next;
102
+ children.count = next_count;
103
+ }
104
+
105
+ children.internal = 0u;
106
+
107
+ for (var c = 0u; c < children.count; c++) {
108
+ if (children.nodes[c] < internal_count) {
109
+ children.internal |= 1u << c;
110
+ }
111
+ }
112
+
113
+ return children;
114
+ }
115
+ `, [
116
+ BVH_NODE_LAYOUT_DEFINITION,
117
+ ]
118
+ );
@@ -0,0 +1,22 @@
1
+ /**
2
+ * What the encode of a binary tree as a BVH8 ({@link bvh8_encode_from_bvh2}) writes, for one node of
3
+ * the binary tree that becomes a node of the wide one:
4
+ *
5
+ * ```wgsl
6
+ * fn bvh8_encode_write_node(node: u32, internal_count: u32, slots: u32, index: u32, child_base: u32, leaf_base: u32, order_offset: u32)
7
+ * fn bvh8_encode_write_header(leaf_count: u32, order_offset: u32)
8
+ * ```
9
+ *
10
+ * `bvh8_encode_write_node` writes the twenty words of the node at `index` and the payloads of its
11
+ * leaves, in the run that starts `leaf_base` into the payloads at word `order_offset`. `slots` is
12
+ * the slot each of the node's children was given, three bits a child in the order
13
+ * `bvh8_encode_gather` lists them ({@link chunk_bvh8_encode_assign}).
14
+ *
15
+ * The enclosing shader declares what {@link chunk_bvh8_encode_gather} reads, fitted, and
16
+ * `out`, `array<u32>`: the BVH8, in the layout of {@link BVH8_TREE_BUFFER_LAYOUT}.
17
+ *
18
+ * @type {CodeChunk}
19
+ */
20
+ export const chunk_bvh8_encode_node: CodeChunk;
21
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
22
+ //# sourceMappingURL=chunk_bvh8_encode_node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh8_encode_node.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_node.js"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;GAkBG;AACH,qCAFU,SAAS,CAiHjB;0BA7IwB,oCAAoC"}
@@ -0,0 +1,143 @@
1
+ import { chunk_bvh8_node_grid } from "../../shader/chunk/bvh/bvh8/webgpu/chunk_bvh8_node_grid.js";
2
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
3
+ import {
4
+ BVH8_TREE_BOUNDS_HIGH_WORD,
5
+ BVH8_TREE_BOUNDS_LOW_WORD,
6
+ BVH8_TREE_HEADER_WORDS,
7
+ BVH8_TREE_LEAF_COUNT_WORD,
8
+ BVH8_TREE_NODE_STRIDE_WORDS,
9
+ BVH8_TREE_ORDER_OFFSET_WORD
10
+ } from "./BVH8_TREE_BUFFER_LAYOUT.js";
11
+ import { chunk_bvh8_encode_gather } from "./chunk_bvh8_encode_gather.js";
12
+
13
+ /**
14
+ * What the encode of a binary tree as a BVH8 ({@link bvh8_encode_from_bvh2}) writes, for one node of
15
+ * the binary tree that becomes a node of the wide one:
16
+ *
17
+ * ```wgsl
18
+ * fn bvh8_encode_write_node(node: u32, internal_count: u32, slots: u32, index: u32, child_base: u32, leaf_base: u32, order_offset: u32)
19
+ * fn bvh8_encode_write_header(leaf_count: u32, order_offset: u32)
20
+ * ```
21
+ *
22
+ * `bvh8_encode_write_node` writes the twenty words of the node at `index` and the payloads of its
23
+ * leaves, in the run that starts `leaf_base` into the payloads at word `order_offset`. `slots` is
24
+ * the slot each of the node's children was given, three bits a child in the order
25
+ * `bvh8_encode_gather` lists them ({@link chunk_bvh8_encode_assign}).
26
+ *
27
+ * The enclosing shader declares what {@link chunk_bvh8_encode_gather} reads, fitted, and
28
+ * `out`, `array<u32>`: the BVH8, in the layout of {@link BVH8_TREE_BUFFER_LAYOUT}.
29
+ *
30
+ * @type {CodeChunk}
31
+ */
32
+ export const chunk_bvh8_encode_node = CodeChunk.from(
33
+ //language=WGSL
34
+ `
35
+ const BVH8_ENCODE_OUT_NODES = ${BVH8_TREE_HEADER_WORDS}u;
36
+ const BVH8_ENCODE_OUT_NODE_STRIDE = ${BVH8_TREE_NODE_STRIDE_WORDS}u;
37
+
38
+ fn bvh8_encode_write_node(node: u32, internal_count: u32, slots: u32, index: u32, child_base: u32, leaf_base: u32, order_offset: u32) {
39
+ let children = bvh8_encode_gather(node, internal_count);
40
+
41
+ let low = bvh8_encode_low(node);
42
+
43
+ let grid = bvh8_node_grid(low, bvh8_encode_high(node));
44
+
45
+ var boxes: array<u32, 12>;
46
+
47
+ // the node of the binary tree in each slot
48
+ var held: array<u32, 8>;
49
+
50
+ var occupied = 0u;
51
+ var internal = 0u;
52
+
53
+ for (var c = 0u; c < children.count; c++) {
54
+ let child = children.nodes[c];
55
+ let slot = (slots >> (c * 3u)) & 7u;
56
+
57
+ occupied |= 1u << slot;
58
+ held[slot] = child;
59
+
60
+ if ((children.internal & (1u << c)) != 0u) {
61
+ internal |= 1u << slot;
62
+ }
63
+
64
+ let q_low = bvh8_node_grid_low(grid, bvh8_encode_low(child));
65
+ let q_high = bvh8_node_grid_high(grid, bvh8_encode_high(child));
66
+
67
+ let word = slot >> 2u;
68
+ let shift = (slot & 3u) * 8u;
69
+
70
+ // per axis: two words of low bytes, then two of high
71
+ boxes[word] |= q_low.x << shift;
72
+ boxes[2u + word] |= q_high.x << shift;
73
+ boxes[4u + word] |= q_low.y << shift;
74
+ boxes[6u + word] |= q_high.y << shift;
75
+ boxes[8u + word] |= q_low.z << shift;
76
+ boxes[10u + word] |= q_high.z << shift;
77
+ }
78
+
79
+ var metas = vec2<u32>(0u);
80
+
81
+ // leaves in slot order, a run of one each
82
+ var leaves = 0u;
83
+
84
+ for (var slot = 0u; slot < 8u; slot++) {
85
+ if ((occupied & (1u << slot)) == 0u) {
86
+ continue;
87
+ }
88
+
89
+ var slot_meta = 0x20u | (24u + slot);
90
+
91
+ if ((internal & (1u << slot)) == 0u) {
92
+ slot_meta = 0x20u | leaves;
93
+
94
+ // a leaf's second child word is its payload
95
+ out[order_offset + leaf_base + leaves] = bvh8_encode_child_2(held[slot]);
96
+
97
+ leaves++;
98
+ }
99
+
100
+ let shift = (slot & 3u) * 8u;
101
+
102
+ if (slot < 4u) {
103
+ metas.x |= slot_meta << shift;
104
+ } else {
105
+ metas.y |= slot_meta << shift;
106
+ }
107
+ }
108
+
109
+ let at = BVH8_ENCODE_OUT_NODES + index * BVH8_ENCODE_OUT_NODE_STRIDE;
110
+
111
+ out[at] = bitcast<u32>(low.x);
112
+ out[at + 1u] = bitcast<u32>(low.y);
113
+ out[at + 2u] = bitcast<u32>(low.z);
114
+ out[at + 3u] = grid.exponent.x | (grid.exponent.y << 8u) | (grid.exponent.z << 16u) | (internal << 24u);
115
+ out[at + 4u] = child_base;
116
+ out[at + 5u] = leaf_base;
117
+ out[at + 6u] = metas.x;
118
+ out[at + 7u] = metas.y;
119
+
120
+ for (var i = 0u; i < 12u; i++) {
121
+ out[at + 8u + i] = boxes[i];
122
+ }
123
+ }
124
+
125
+ // what stands before the nodes: the root's box, the leaves, and where their payloads start
126
+ fn bvh8_encode_write_header(leaf_count: u32, order_offset: u32) {
127
+ let low = bvh8_encode_low(0u);
128
+ let high = bvh8_encode_high(0u);
129
+
130
+ out[${BVH8_TREE_BOUNDS_LOW_WORD}u] = bitcast<u32>(low.x);
131
+ out[${BVH8_TREE_BOUNDS_LOW_WORD + 1}u] = bitcast<u32>(low.y);
132
+ out[${BVH8_TREE_BOUNDS_LOW_WORD + 2}u] = bitcast<u32>(low.z);
133
+ out[${BVH8_TREE_LEAF_COUNT_WORD}u] = leaf_count;
134
+ out[${BVH8_TREE_BOUNDS_HIGH_WORD}u] = bitcast<u32>(high.x);
135
+ out[${BVH8_TREE_BOUNDS_HIGH_WORD + 1}u] = bitcast<u32>(high.y);
136
+ out[${BVH8_TREE_BOUNDS_HIGH_WORD + 2}u] = bitcast<u32>(high.z);
137
+ out[${BVH8_TREE_ORDER_OFFSET_WORD}u] = order_offset;
138
+ }
139
+ `, [
140
+ chunk_bvh8_node_grid,
141
+ chunk_bvh8_encode_gather,
142
+ ]
143
+ );
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Counts the encode of a binary tree as a BVH8 keeps of each internal node of the binary tree, laid
3
+ * end to end a kind at a time and summed by one scan: its child nodes, its leaves, and whether it is
4
+ * a node of the wide tree at all.
5
+ *
6
+ * @type {number}
7
+ */
8
+ export const BVH8_ENCODE_COUNTS_PER_NODE: number;
9
+ /**
10
+ * What the running sums of {@link shader_bvh8_encode_count}'s counts say:
11
+ *
12
+ * ```wgsl
13
+ * fn bvh8_encode_child_nodes(internal_count: u32) -> u32
14
+ * fn bvh8_encode_child_nodes_before(node: u32) -> u32
15
+ * fn bvh8_encode_leaves_before(node: u32, internal_count: u32) -> u32
16
+ * fn bvh8_encode_wide_node(ordinal: u32, internal_count: u32) -> u32
17
+ * ```
18
+ *
19
+ * `bvh8_encode_child_nodes` is every child node of the wide tree, which is every node of it but the
20
+ * root. The two `before` are what the internal nodes before one hold between them: with the root's
21
+ * one node, where that node's block of child nodes starts, and where its run of payloads does.
22
+ *
23
+ * `bvh8_encode_wide_node` is the internal node that is the `ordinal`th node of the wide tree, counted
24
+ * in the binary tree's order, for an ordinal below the wide tree's node count. A pass that takes a
25
+ * lane per node of the wide tree finds its node by it, and so has no lane without one.
26
+ *
27
+ * `internal_count` is the binary tree's internal nodes; a tree that is one leaf has none, and nothing
28
+ * of the sums is read for it. The enclosing shader declares `sums`,
29
+ * `array<u32>`: what `graph_prefix_scan_csdldf` makes of the counts, each sum including its own
30
+ * element.
31
+ *
32
+ * @type {CodeChunk}
33
+ */
34
+ export const chunk_bvh8_encode_sums: CodeChunk;
35
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
36
+ //# sourceMappingURL=chunk_bvh8_encode_sums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk_bvh8_encode_sums.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/bvh8/chunk_bvh8_encode_sums.js"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,0CAFU,MAAM,CAE6B;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qCAFU,SAAS,CA6DhB;0BAhGuB,oCAAoC"}