@woosh/meep-engine 3.3.0 → 3.5.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 (886) hide show
  1. package/editor/process/SymbolicDisplayProcess.js +106 -106
  2. package/editor/process/symbolic/{SoundEmitterSymbolicDisplay.js → AudioEmitterSymbolicDisplay.js} +67 -57
  3. package/package.json +94 -94
  4. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +110 -102
  5. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts +54 -0
  6. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
  7. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +10 -3
  8. package/src/engine/Engine.js +2 -2
  9. package/src/engine/EntityCreator.d.ts +19 -11
  10. package/src/engine/EntityCreator.d.ts.map +1 -1
  11. package/src/engine/EntityCreator.js +116 -94
  12. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  13. package/src/engine/achievements/AchievementManager.js +437 -433
  14. package/src/engine/animation/AnimatedActions.d.ts +6 -1
  15. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  16. package/src/engine/animation/AnimatedActions.js +111 -81
  17. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  18. package/src/engine/animation/AnimationUtils.js +234 -252
  19. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +275 -269
  20. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  21. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +26 -5
  22. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
  23. package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
  24. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +1 -1
  25. package/src/engine/graphics3/GraphicsEngine3.d.ts +7 -0
  26. package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
  27. package/src/engine/graphics3/GraphicsEngine3.js +9 -0
  28. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -1
  29. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  30. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +4 -2
  31. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  32. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +536 -0
  33. package/src/engine/sound/SoundEngine.d.ts +2 -2
  34. package/src/engine/sound/SoundEngine.js +124 -124
  35. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +20 -0
  36. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  37. package/src/engine/sound/ecs/audio/AudioEmitter.js +25 -2
  38. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  39. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  40. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +338 -314
  41. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +143 -0
  42. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -0
  43. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +191 -0
  44. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts +33 -0
  45. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -0
  46. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +81 -0
  47. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +65 -0
  48. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -0
  49. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +184 -0
  50. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +999 -993
  51. package/src/engine/sound/sopra/README.md +644 -643
  52. package/src/engine/sound/sopra/SopraEngine.d.ts +2 -2
  53. package/src/engine/sound/sopra/SopraEngine.js +432 -432
  54. package/src/engine/sound/sopra/legacy/SoundAttenuationFunction.d.ts.map +1 -0
  55. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.d.ts +3 -3
  56. package/src/engine/sound/sopra/legacy/SoundController.d.ts.map +1 -0
  57. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.js +176 -176
  58. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.d.ts +11 -27
  59. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -0
  60. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.js +352 -382
  61. package/src/engine/sound/sopra/legacy/SoundEmitterFlags.d.ts.map +1 -0
  62. package/src/engine/sound/sopra/legacy/SoundEmitterSerializationAdapter.d.ts.map +1 -0
  63. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  64. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  65. package/src/engine/sound/sopra/legacy/SoundPanningModelType.d.ts.map +1 -0
  66. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.d.ts +11 -55
  67. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -0
  68. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.js +278 -357
  69. package/src/engine/sound/sopra/legacy/SoundTrackFlags.d.ts.map +1 -0
  70. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts +34 -0
  71. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts.map +1 -0
  72. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.js +279 -0
  73. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +3 -3
  74. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  75. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -122
  76. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  77. package/src/shade/device/mock/SoftwareGPUDevice.js +7 -1
  78. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  79. package/src/shade/device/timing/GPUTimerArray.js +10 -0
  80. package/src/shade/playground/add_random_meshes.d.ts +19 -3
  81. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  82. package/src/shade/playground/add_random_meshes.js +132 -84
  83. package/src/shade/playground/bvh_repro/README.md +57 -0
  84. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts +33 -0
  85. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -0
  86. package/src/shade/playground/bvh_repro/bvh_repro_device.js +90 -0
  87. package/src/shade/playground/bvh_repro/index.html +124 -0
  88. package/src/shade/playground/bvh_repro/main.d.ts.map +1 -0
  89. package/src/shade/playground/bvh_repro/main.js +254 -0
  90. package/src/shade/playground/load_default_environment.d.ts +10 -1
  91. package/src/shade/playground/load_default_environment.d.ts.map +1 -1
  92. package/src/shade/playground/load_default_environment.js +44 -20
  93. package/src/shade/playground/make_playground_asset_manager.d.ts +16 -0
  94. package/src/shade/playground/make_playground_asset_manager.d.ts.map +1 -0
  95. package/src/shade/playground/make_playground_asset_manager.js +33 -0
  96. package/src/shade/playground/skinned_blas_refit/README.md +126 -0
  97. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +47 -0
  98. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -0
  99. package/src/shade/playground/skinned_blas_refit/add_floor.js +71 -0
  100. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts +28 -0
  101. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -0
  102. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +745 -0
  103. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts +30 -0
  104. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts.map +1 -0
  105. package/src/shade/playground/skinned_blas_refit/flat_environment.js +67 -0
  106. package/src/shade/playground/skinned_blas_refit/index.html +168 -0
  107. package/src/shade/playground/skinned_blas_refit/main.d.ts +8 -0
  108. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -0
  109. package/src/shade/playground/skinned_blas_refit/main.js +502 -0
  110. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +82 -0
  111. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -0
  112. package/src/shade/playground/skinned_blas_refit/place_character.js +117 -0
  113. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +21 -0
  114. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -0
  115. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +104 -0
  116. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts +23 -0
  117. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -0
  118. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +94 -0
  119. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +26 -0
  120. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -0
  121. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +134 -0
  122. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +40 -0
  123. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -0
  124. package/src/shade/playground/skinned_blas_refit/sweep_views.js +135 -0
  125. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts +31 -0
  126. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -0
  127. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +240 -0
  128. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +20 -0
  129. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -0
  130. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -0
  131. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +50 -0
  132. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -0
  133. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +366 -0
  134. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +17 -0
  135. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -0
  136. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -0
  137. package/src/shade/playground/sponza_path_trace/README.md +57 -0
  138. package/src/shade/playground/sponza_path_trace/index.html +164 -0
  139. package/src/shade/playground/sponza_path_trace/main.d.ts +8 -0
  140. package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -0
  141. package/src/shade/playground/sponza_path_trace/main.js +363 -0
  142. package/src/shade/renderer/Renderer.d.ts +16 -0
  143. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  144. package/src/shade/renderer/Renderer.js +23 -4
  145. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -1
  146. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  147. package/src/shade/renderer/animation/GPUAnimationManager.js +28 -3
  148. package/src/shade/renderer/animation/Skin.d.ts +9 -7
  149. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  150. package/src/shade/renderer/animation/Skin.js +9 -7
  151. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +35 -0
  152. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +1 -0
  153. package/src/shade/renderer/animation/compute_skin_world_bounds.js +146 -0
  154. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  155. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +41 -0
  156. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  157. package/src/shade/renderer/geometry/GPUGeometryManager.js +65 -15
  158. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +78 -7
  159. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  160. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +302 -77
  161. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +18 -6
  162. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  163. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +19 -6
  164. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts +51 -0
  165. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.js +260 -0
  167. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +23 -0
  168. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +82 -0
  170. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +25 -0
  171. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +1 -0
  172. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -0
  173. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +30 -0
  174. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -0
  175. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +122 -0
  176. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +55 -0
  177. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts.map +1 -0
  178. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -0
  179. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +37 -0
  180. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -0
  181. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +45 -0
  182. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -0
  183. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +201 -0
  184. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts +88 -0
  185. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -0
  186. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.js +233 -0
  187. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +18 -0
  188. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -0
  189. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +38 -0
  190. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +16 -0
  191. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -0
  192. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +79 -0
  193. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +16 -0
  194. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -0
  195. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +49 -0
  196. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +43 -0
  197. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -0
  198. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -0
  199. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +24 -0
  200. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -0
  201. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +143 -0
  202. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +17 -0
  203. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -0
  204. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +83 -0
  205. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +24 -0
  206. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -0
  207. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +141 -0
  208. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +31 -0
  209. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -0
  210. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +422 -0
  211. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.d.ts.map +1 -1
  212. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.js +1 -2
  213. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts +9 -0
  214. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts.map +1 -0
  215. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.js +23 -0
  216. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts +18 -0
  217. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.js +32 -0
  219. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts +27 -0
  220. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts.map +1 -0
  221. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.js +41 -0
  222. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts +25 -0
  223. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts.map +1 -0
  224. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.js +74 -0
  225. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts +71 -0
  226. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts.map +1 -0
  227. package/src/shade/renderer/gpu_primitive/sort/defs.js +79 -0
  228. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +37 -0
  229. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -0
  230. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +197 -0
  231. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts +16 -0
  232. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -0
  233. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +85 -0
  234. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts +15 -0
  235. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -0
  236. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +192 -0
  237. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts +12 -0
  238. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts.map +1 -0
  239. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.js +188 -0
  240. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +16 -4
  241. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  242. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +235 -24
  243. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  244. package/src/shade/renderer/scene/GPUSceneContext.js +15 -3
  245. package/src/shade/renderer/scene/SkinnedMesh.d.ts +57 -11
  246. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  247. package/src/shade/renderer/scene/SkinnedMesh.js +111 -11
  248. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts +22 -0
  249. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -0
  250. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +145 -0
  251. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +18 -0
  252. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -0
  253. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +364 -0
  254. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts +9 -1
  255. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts.map +1 -1
  256. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.js +29 -21
  257. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts +22 -0
  258. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts.map +1 -0
  259. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.js +31 -0
  260. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.d.ts.map +1 -1
  261. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.js +87 -39
  262. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts +17 -0
  263. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts.map +1 -0
  264. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.js +40 -0
  265. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +15 -0
  266. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -0
  267. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +52 -0
  268. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts +9 -0
  269. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts.map +1 -1
  270. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.js +9 -0
  271. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts +20 -0
  272. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts.map +1 -1
  273. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.js +52 -34
  274. package/src/shade/renderer/texture/virtual/README.md +255 -276
  275. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  276. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -2
  277. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  278. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +83 -0
  279. package/src/view/graphics/{WebGLContextFailureView.d.ts → GraphicsContextFailureView.d.ts} +2 -2
  280. package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -0
  281. package/src/view/graphics/{WebGLContextFailureView.js → GraphicsContextFailureView.js} +1 -1
  282. package/src/view/interaction/InterfaceCommand.d.ts +8 -8
  283. package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
  284. package/src/view/interaction/InterfaceCommand.js +146 -146
  285. package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
  286. package/src/view/interaction/createInterfaceCommandButton.js +115 -124
  287. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts +0 -7
  288. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts.map +0 -1
  289. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.js +0 -18
  290. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts +0 -7
  291. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts.map +0 -1
  292. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +0 -7
  293. package/src/engine/ecs/components/Timer.d.ts +0 -50
  294. package/src/engine/ecs/components/Timer.d.ts.map +0 -1
  295. package/src/engine/ecs/components/Timer.js +0 -80
  296. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts +0 -22
  297. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +0 -1
  298. package/src/engine/ecs/evaluation/PointFitnessBinary.js +0 -33
  299. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts +0 -12
  300. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +0 -1
  301. package/src/engine/ecs/evaluation/PointFitnessConstant.js +0 -27
  302. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts +0 -17
  303. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts.map +0 -1
  304. package/src/engine/ecs/evaluation/PointFitnessFunction.js +0 -20
  305. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts +0 -12
  306. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts.map +0 -1
  307. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.js +0 -27
  308. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts +0 -12
  309. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts.map +0 -1
  310. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.js +0 -28
  311. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +0 -50
  312. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +0 -1
  313. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +0 -176
  314. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts +0 -7
  315. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts.map +0 -1
  316. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.js +0 -68
  317. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts +0 -7
  318. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts.map +0 -1
  319. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.js +0 -89
  320. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts +0 -17
  321. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +0 -1
  322. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +0 -60
  323. package/src/engine/ecs/systems/TimerSystem.d.ts +0 -10
  324. package/src/engine/ecs/systems/TimerSystem.d.ts.map +0 -1
  325. package/src/engine/ecs/systems/TimerSystem.js +0 -86
  326. package/src/engine/ecs/transform/copy_three_transform.d.ts +0 -7
  327. package/src/engine/ecs/transform/copy_three_transform.d.ts.map +0 -1
  328. package/src/engine/ecs/transform/copy_three_transform.js +0 -15
  329. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +0 -13
  330. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +0 -1
  331. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +0 -14
  332. package/src/engine/graphics/StandardFrameBuffers.d.ts +0 -7
  333. package/src/engine/graphics/StandardFrameBuffers.d.ts.map +0 -1
  334. package/src/engine/graphics/StandardFrameBuffers.js +0 -9
  335. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts +0 -7
  336. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts.map +0 -1
  337. package/src/engine/graphics/copy_transform_to_threejs_object.js +0 -12
  338. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts +0 -42
  339. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +0 -1
  340. package/src/engine/graphics/ecs/light/binding/LightBinding.js +0 -133
  341. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts +0 -25
  342. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +0 -1
  343. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +0 -90
  344. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts +0 -7
  345. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts.map +0 -1
  346. package/src/engine/graphics/ecs/light/binding/three/applyRotation.js +0 -24
  347. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts +0 -7
  348. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts.map +0 -1
  349. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.js +0 -12
  350. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts +0 -8
  351. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts.map +0 -1
  352. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.js +0 -41
  353. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts +0 -4
  354. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts.map +0 -1
  355. package/src/engine/graphics/ecs/light/shadow/LightShadow.js +0 -4
  356. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts +0 -27
  357. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts.map +0 -1
  358. package/src/engine/graphics/ecs/light/shadow/ShadowManager.js +0 -53
  359. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts +0 -8
  360. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +0 -1
  361. package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +0 -7
  362. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts +0 -14
  363. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts.map +0 -1
  364. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.js +0 -62
  365. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts +0 -30
  366. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +0 -1
  367. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +0 -77
  368. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts +0 -13
  369. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts.map +0 -1
  370. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.js +0 -43
  371. package/src/engine/graphics/ecs/light/three/light2type.d.ts +0 -8
  372. package/src/engine/graphics/ecs/light/three/light2type.d.ts.map +0 -1
  373. package/src/engine/graphics/ecs/light/three/light2type.js +0 -20
  374. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts +0 -7
  375. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts.map +0 -1
  376. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +0 -13
  377. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts +0 -48
  378. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts.map +0 -1
  379. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.js +0 -88
  380. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts +0 -63
  381. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts.map +0 -1
  382. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js +0 -314
  383. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts +0 -67
  384. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts.map +0 -1
  385. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js +0 -130
  386. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts +0 -42
  387. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts.map +0 -1
  388. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.js +0 -71
  389. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts +0 -20
  390. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts.map +0 -1
  391. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +0 -123
  392. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts +0 -8
  393. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts.map +0 -1
  394. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +0 -55
  395. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts +0 -12
  396. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts.map +0 -1
  397. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.js +0 -31
  398. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts +0 -20
  399. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts.map +0 -1
  400. package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +0 -47
  401. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts +0 -12
  402. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.js +0 -19
  404. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts +0 -18
  405. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts.map +0 -1
  406. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.js +0 -249
  407. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts +0 -7
  408. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts.map +0 -1
  409. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.js +0 -8
  410. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts +0 -7
  411. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts.map +0 -1
  412. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.js +0 -8
  413. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +0 -14
  414. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +0 -1
  415. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +0 -20
  416. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts +0 -3
  417. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts.map +0 -1
  418. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.js +0 -58
  419. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts +0 -3
  420. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts.map +0 -1
  421. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.js +0 -44
  422. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts +0 -3
  423. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts.map +0 -1
  424. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.js +0 -28
  425. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts +0 -3
  426. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts.map +0 -1
  427. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.js +0 -28
  428. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts +0 -3
  429. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts.map +0 -1
  430. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.js +0 -39
  431. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts +0 -3
  432. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts.map +0 -1
  433. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.js +0 -124
  434. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts +0 -3
  435. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts.map +0 -1
  436. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.js +0 -30
  437. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts +0 -64
  438. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts.map +0 -1
  439. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.js +0 -131
  440. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts +0 -32
  441. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts.map +0 -1
  442. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.js +0 -62
  443. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts +0 -46
  444. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts.map +0 -1
  445. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.js +0 -272
  446. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts +0 -28
  447. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts.map +0 -1
  448. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.js +0 -57
  449. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts +0 -32
  450. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts.map +0 -1
  451. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.js +0 -55
  452. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts +0 -34
  453. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +0 -1
  454. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +0 -178
  455. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts +0 -7
  456. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts.map +0 -1
  457. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.js +0 -31
  458. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts +0 -13
  459. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts.map +0 -1
  460. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.js +0 -13
  461. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts +0 -7
  462. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts.map +0 -1
  463. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.js +0 -26
  464. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts +0 -4
  465. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts.map +0 -1
  466. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.js +0 -5
  467. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts +0 -6
  468. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts.map +0 -1
  469. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.js +0 -14
  470. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts +0 -37
  471. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts.map +0 -1
  472. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.js +0 -73
  473. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts +0 -7
  474. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts.map +0 -1
  475. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.js +0 -30
  476. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts +0 -7
  477. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts.map +0 -1
  478. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.js +0 -30
  479. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts +0 -7
  480. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts.map +0 -1
  481. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.js +0 -32
  482. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts +0 -6
  483. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts.map +0 -1
  484. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.js +0 -15
  485. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts +0 -7
  486. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts.map +0 -1
  487. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.js +0 -27
  488. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts +0 -7
  489. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts.map +0 -1
  490. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.js +0 -25
  491. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts +0 -7
  492. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts.map +0 -1
  493. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.js +0 -26
  494. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts +0 -7
  495. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts.map +0 -1
  496. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.js +0 -25
  497. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts +0 -7
  498. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts.map +0 -1
  499. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.js +0 -25
  500. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts +0 -7
  501. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts.map +0 -1
  502. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.js +0 -25
  503. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts +0 -7
  504. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts.map +0 -1
  505. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.js +0 -25
  506. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts +0 -7
  507. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts.map +0 -1
  508. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.js +0 -39
  509. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +0 -39
  510. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +0 -1
  511. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +0 -45
  512. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts +0 -9
  513. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts.map +0 -1
  514. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.js +0 -10
  515. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts +0 -13
  516. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts.map +0 -1
  517. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.js +0 -14
  518. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +0 -50
  519. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +0 -1
  520. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +0 -47
  521. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts +0 -51
  522. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts.map +0 -1
  523. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.js +0 -93
  524. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts +0 -6
  525. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts.map +0 -1
  526. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.js +0 -23
  527. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts +0 -7
  528. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts.map +0 -1
  529. package/src/engine/graphics/particles/node-based/populateNodeRegistry.js +0 -48
  530. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts +0 -21
  531. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +0 -1
  532. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +0 -35
  533. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts +0 -20
  534. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts.map +0 -1
  535. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.js +0 -35
  536. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts +0 -14
  537. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts.map +0 -1
  538. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.js +0 -17
  539. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts +0 -5
  540. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts.map +0 -1
  541. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +0 -150
  542. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts +0 -55
  543. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +0 -1
  544. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +0 -105
  545. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts +0 -49
  546. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +0 -1
  547. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +0 -103
  548. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts +0 -4
  549. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts.map +0 -1
  550. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.js +0 -6
  551. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts +0 -83
  552. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +0 -1
  553. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +0 -188
  554. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts +0 -123
  555. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +0 -1
  556. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +0 -415
  557. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +0 -71
  558. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +0 -1
  559. package/src/engine/graphics/render/buffer/FrameBufferManager.js +0 -229
  560. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts +0 -22
  561. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts.map +0 -1
  562. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.js +0 -84
  563. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +0 -33
  564. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +0 -1
  565. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +0 -61
  566. package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +0 -155
  567. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts +0 -29
  568. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +0 -1
  569. package/src/engine/graphics/render/forward_plus/assign_cluster.js +0 -124
  570. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts +0 -7
  571. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts.map +0 -1
  572. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.js +0 -17
  573. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts +0 -7
  574. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts.map +0 -1
  575. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +0 -17
  576. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +0 -9
  577. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts.map +0 -1
  578. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +0 -29
  579. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts +0 -12
  580. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts.map +0 -1
  581. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.js +0 -43
  582. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts +0 -8
  583. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +0 -1
  584. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +0 -68
  585. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts +0 -4
  586. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts.map +0 -1
  587. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.js +0 -46
  588. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts +0 -14
  589. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts.map +0 -1
  590. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.js +0 -327
  591. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts +0 -2
  592. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts.map +0 -1
  593. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +0 -1
  594. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts +0 -2
  595. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts.map +0 -1
  596. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +0 -40
  597. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts +0 -2
  598. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts.map +0 -1
  599. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.js +0 -74
  600. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts +0 -2
  601. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts.map +0 -1
  602. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +0 -55
  603. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts +0 -2
  604. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts.map +0 -1
  605. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.js +0 -11
  606. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts +0 -2
  607. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts.map +0 -1
  608. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +0 -34
  609. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts +0 -7
  610. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts.map +0 -1
  611. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +0 -60
  612. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts +0 -7
  613. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts.map +0 -1
  614. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +0 -38
  615. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts +0 -7
  616. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts.map +0 -1
  617. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +0 -30
  618. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -51
  619. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +0 -1
  620. package/src/engine/graphics/render/forward_plus/model/Decal.js +0 -133
  621. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts +0 -16
  622. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts.map +0 -1
  623. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.js +0 -18
  624. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts +0 -7
  625. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts.map +0 -1
  626. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.js +0 -8
  627. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts +0 -10
  628. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts.map +0 -1
  629. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.js +0 -65
  630. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts +0 -7
  631. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts.map +0 -1
  632. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +0 -8
  633. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts +0 -11
  634. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts.map +0 -1
  635. package/src/engine/graphics/render/forward_plus/query/cube_mapping.js +0 -38
  636. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +0 -21
  637. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +0 -1
  638. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +0 -96
  639. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +0 -22
  640. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +0 -1
  641. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +0 -44
  642. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +0 -11
  643. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +0 -1
  644. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +0 -169
  645. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts +0 -9
  646. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts.map +0 -1
  647. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +0 -33
  648. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +0 -2
  649. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +0 -1
  650. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +0 -2
  651. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts +0 -9
  652. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts.map +0 -1
  653. package/src/engine/graphics/render/forward_plus/sort_decal_data.js +0 -102
  654. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts +0 -10
  655. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts.map +0 -1
  656. package/src/engine/graphics/render/forward_plus/testClusterEquality.js +0 -22
  657. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts +0 -19
  658. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts.map +0 -1
  659. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.js +0 -62
  660. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts +0 -18
  661. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts.map +0 -1
  662. package/src/engine/graphics/shaders/AlphaBlendShader.js +0 -42
  663. package/src/engine/graphics/shaders/ClearShader.d.ts +0 -8
  664. package/src/engine/graphics/shaders/ClearShader.d.ts.map +0 -1
  665. package/src/engine/graphics/shaders/ClearShader.js +0 -28
  666. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts +0 -13
  667. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts.map +0 -1
  668. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.js +0 -38
  669. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts +0 -7
  670. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts.map +0 -1
  671. package/src/engine/graphics/shaders/ScreenSpaceShader.js +0 -102
  672. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +0 -102
  673. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +0 -1
  674. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +0 -277
  675. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +0 -40
  676. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +0 -1
  677. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +0 -57
  678. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts +0 -8
  679. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts.map +0 -1
  680. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.js +0 -39
  681. package/src/engine/graphics/shadows/README.md +0 -6
  682. package/src/engine/graphics/shadows/vsm.glsl.d.ts +0 -3
  683. package/src/engine/graphics/shadows/vsm.glsl.d.ts.map +0 -1
  684. package/src/engine/graphics/shadows/vsm.glsl.js +0 -43
  685. package/src/engine/graphics/util/composeMatrix4.d.ts +0 -9
  686. package/src/engine/graphics/util/composeMatrix4.d.ts.map +0 -1
  687. package/src/engine/graphics/util/composeMatrix4.js +0 -13
  688. package/src/engine/graphics/util/threeUpdateMatrix.d.ts +0 -6
  689. package/src/engine/graphics/util/threeUpdateMatrix.d.ts.map +0 -1
  690. package/src/engine/graphics/util/threeUpdateMatrix.js +0 -14
  691. package/src/engine/graphics/util/threeUpdateTransform.d.ts +0 -6
  692. package/src/engine/graphics/util/threeUpdateTransform.d.ts.map +0 -1
  693. package/src/engine/graphics/util/threeUpdateTransform.js +0 -16
  694. package/src/engine/sound/ecs/SoundController.d.ts.map +0 -1
  695. package/src/engine/sound/ecs/SoundControllerSystem.d.ts +0 -23
  696. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +0 -1
  697. package/src/engine/sound/ecs/SoundControllerSystem.js +0 -103
  698. package/src/engine/sound/ecs/emitter/SoundAttenuationFunction.d.ts.map +0 -1
  699. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +0 -1
  700. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +0 -55
  701. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +0 -1
  702. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +0 -265
  703. package/src/engine/sound/ecs/emitter/SoundEmitterFlags.d.ts.map +0 -1
  704. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.d.ts.map +0 -1
  705. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +0 -88
  706. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +0 -1
  707. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -159
  708. package/src/engine/sound/ecs/emitter/SoundPanningModelType.d.ts.map +0 -1
  709. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +0 -1
  710. package/src/engine/sound/ecs/emitter/SoundTrackFlags.d.ts.map +0 -1
  711. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts +0 -8
  712. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts.map +0 -1
  713. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.js +0 -41
  714. package/src/shade/playground/FramePerformanceMonitor.d.ts +0 -114
  715. package/src/shade/playground/FramePerformanceMonitor.d.ts.map +0 -1
  716. package/src/shade/playground/FramePerformanceMonitor.js +0 -468
  717. package/src/shade/playground/add_random_lights.d.ts +0 -8
  718. package/src/shade/playground/add_random_lights.d.ts.map +0 -1
  719. package/src/shade/playground/add_random_lights.js +0 -50
  720. package/src/shade/playground/animation_prototype.d.ts +0 -24
  721. package/src/shade/playground/animation_prototype.d.ts.map +0 -1
  722. package/src/shade/playground/animation_prototype.js +0 -508
  723. package/src/shade/playground/animation_prototype_skinning.d.ts +0 -31
  724. package/src/shade/playground/animation_prototype_skinning.d.ts.map +0 -1
  725. package/src/shade/playground/animation_prototype_skinning.js +0 -647
  726. package/src/shade/playground/animation_prototype_stress.d.ts +0 -35
  727. package/src/shade/playground/animation_prototype_stress.d.ts.map +0 -1
  728. package/src/shade/playground/animation_prototype_stress.js +0 -765
  729. package/src/shade/playground/enable_picker.d.ts +0 -8
  730. package/src/shade/playground/enable_picker.d.ts.map +0 -1
  731. package/src/shade/playground/enable_picker.js +0 -60
  732. package/src/shade/playground/gltf_skinned_prototype.d.ts +0 -27
  733. package/src/shade/playground/gltf_skinned_prototype.d.ts.map +0 -1
  734. package/src/shade/playground/gltf_skinned_prototype.js +0 -560
  735. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts +0 -24
  736. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts.map +0 -1
  737. package/src/shade/playground/gltf_skinned_stress_prototype.js +0 -387
  738. package/src/shade/playground/gltf_viewer.d.ts +0 -2
  739. package/src/shade/playground/gltf_viewer.d.ts.map +0 -1
  740. package/src/shade/playground/gltf_viewer.js +0 -283
  741. package/src/shade/playground/main.d.ts.map +0 -1
  742. package/src/shade/playground/main.js +0 -2727
  743. package/src/shade/playground/make_animated_instances.d.ts +0 -9
  744. package/src/shade/playground/make_animated_instances.d.ts.map +0 -1
  745. package/src/shade/playground/make_animated_instances.js +0 -118
  746. package/src/shade/playground/prototype_virtual_texture.d.ts +0 -2
  747. package/src/shade/playground/prototype_virtual_texture.d.ts.map +0 -1
  748. package/src/shade/playground/prototype_virtual_texture.js +0 -274
  749. package/src/shade/playground/prototype_volumetrics_01.d.ts +0 -2
  750. package/src/shade/playground/prototype_volumetrics_01.d.ts.map +0 -1
  751. package/src/shade/playground/prototype_volumetrics_01.js +0 -206
  752. package/src/shade/playground/sample.d.ts +0 -2
  753. package/src/shade/playground/sample.d.ts.map +0 -1
  754. package/src/shade/playground/sample.js +0 -234
  755. package/src/shade/playground/sample_load_gltf.d.ts +0 -9
  756. package/src/shade/playground/sample_load_gltf.d.ts.map +0 -1
  757. package/src/shade/playground/sample_load_gltf.js +0 -103
  758. package/src/shade/playground/spread_node3d_grid.d.ts +0 -7
  759. package/src/shade/playground/spread_node3d_grid.d.ts.map +0 -1
  760. package/src/shade/playground/spread_node3d_grid.js +0 -20
  761. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts +0 -24
  762. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts.map +0 -1
  763. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.js +0 -88
  764. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts +0 -3
  765. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts.map +0 -1
  766. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.js +0 -49
  767. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts +0 -3
  768. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts.map +0 -1
  769. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.js +0 -93
  770. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts +0 -24
  771. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts.map +0 -1
  772. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.js +0 -119
  773. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts +0 -7
  774. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts.map +0 -1
  775. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.js +0 -235
  776. package/src/shade/renderer/gpu_primitive/sort/NOTES.md +0 -5
  777. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts +0 -7
  778. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts.map +0 -1
  779. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.js +0 -136
  780. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts +0 -18
  781. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts.map +0 -1
  782. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.js +0 -108
  783. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts +0 -35
  784. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts.map +0 -1
  785. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.js +0 -42
  786. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts +0 -13
  787. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts.map +0 -1
  788. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.js +0 -116
  789. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts +0 -3
  790. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts.map +0 -1
  791. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.js +0 -120
  792. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts +0 -3
  793. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts.map +0 -1
  794. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.js +0 -76
  795. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts +0 -3
  796. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts.map +0 -1
  797. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.js +0 -125
  798. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts +0 -3
  799. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts.map +0 -1
  800. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.js +0 -140
  801. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts +0 -3
  802. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts.map +0 -1
  803. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.js +0 -338
  804. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts +0 -7
  805. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts.map +0 -1
  806. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.js +0 -261
  807. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts +0 -3
  808. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts.map +0 -1
  809. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.js +0 -14
  810. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts +0 -25
  811. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts.map +0 -1
  812. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.js +0 -25
  813. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts +0 -15
  814. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts.map +0 -1
  815. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.js +0 -192
  816. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts +0 -5
  817. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts.map +0 -1
  818. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.js +0 -990
  819. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts +0 -5
  820. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts.map +0 -1
  821. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.js +0 -82
  822. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts +0 -3
  823. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts.map +0 -1
  824. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.js +0 -44
  825. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts +0 -5
  826. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts.map +0 -1
  827. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.js +0 -156
  828. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts +0 -6
  829. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts.map +0 -1
  830. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.js +0 -55
  831. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts +0 -14
  832. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts.map +0 -1
  833. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js +0 -110
  834. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts +0 -12
  835. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts.map +0 -1
  836. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.js +0 -74
  837. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts +0 -3
  838. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts.map +0 -1
  839. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.js +0 -125
  840. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
  841. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
  842. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
  843. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
  844. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
  845. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
  846. package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
  847. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
  848. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
  849. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
  850. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
  851. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
  852. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
  853. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
  854. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
  855. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
  856. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
  857. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
  858. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
  859. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
  860. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
  861. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
  862. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
  863. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
  864. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
  865. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
  866. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
  867. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
  868. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
  869. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
  870. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
  871. package/src/view/graphics/WebGLContextFailureView.d.ts.map +0 -1
  872. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
  873. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
  874. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
  875. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
  876. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
  877. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
  878. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
  879. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
  880. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
  881. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
  882. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
  883. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
  884. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
  885. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
  886. /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
@@ -0,0 +1,74 @@
1
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
2
+ import { MAX_SUBGROUPS_PER_WORKGROUP, SORT_WORKGROUP_SIZE } from "./defs.js";
3
+
4
+ /**
5
+ * Workgroup-wide exclusive scan of one `u32` per thread, returning
6
+ * `vec2(exclusive_prefix, workgroup_total)`.
7
+ *
8
+ * Two levels: `subgroupInclusiveAdd` inside each subgroup, then a Hillis–Steele scan over the
9
+ * per-subgroup totals in workgroup memory. Subgroup ops carry the wide part of the work; workgroup
10
+ * memory is the correctness layer across subgroup boundaries, because subgroup size is a runtime
11
+ * value in [4, 128] and nothing here may assume one.
12
+ *
13
+ * The Hillis–Steele loop's trip count is the **constant** `MAX_SUBGROUPS_PER_WORKGROUP` rather than
14
+ * the real subgroup count. It contains `workgroupBarrier`, and a barrier under a bound derived from
15
+ * `subgroup_size` is precisely the shape a uniformity analysis is entitled to reject; iterations
16
+ * past the real subgroup count find `active` false and write nothing. The per-iteration
17
+ * read-barrier-write split is what keeps a thread from overwriting a value another thread has yet
18
+ * to read.
19
+ *
20
+ * Callers must invoke this from workgroup-uniform control flow — subgroup builtins require it, and
21
+ * so do the barriers. The barrier at the top is what lets a caller invoke it repeatedly: it fences
22
+ * the previous call's reads of `wg_sort_partials` against this call's writes.
23
+ *
24
+ * @type {CodeChunk}
25
+ */
26
+ export const chunk_sort_workgroup_scan = CodeChunk.from(
27
+ //language=WGSL
28
+ `
29
+ var<workgroup> wg_sort_partials: array<u32, ${MAX_SUBGROUPS_PER_WORKGROUP}>;
30
+
31
+ fn sort_workgroup_exclusive_scan(
32
+ value: u32,
33
+ thread_id: u32,
34
+ lane_id: u32,
35
+ lane_count: u32
36
+ ) -> vec2<u32> {
37
+ let subgroup_id = thread_id / lane_count;
38
+ let subgroup_count = ${SORT_WORKGROUP_SIZE}u / lane_count;
39
+
40
+ let inclusive = subgroupInclusiveAdd(value);
41
+
42
+ workgroupBarrier();
43
+
44
+ if (lane_id == lane_count - 1u) {
45
+ wg_sort_partials[subgroup_id] = inclusive;
46
+ }
47
+
48
+ workgroupBarrier();
49
+
50
+ for (var offset = 1u; offset < ${MAX_SUBGROUPS_PER_WORKGROUP}u; offset <<= 1u) {
51
+ let contributes = thread_id < subgroup_count && thread_id >= offset;
52
+
53
+ var carry = 0u;
54
+ if (contributes) {
55
+ carry = wg_sort_partials[thread_id - offset];
56
+ }
57
+
58
+ workgroupBarrier();
59
+
60
+ if (contributes) {
61
+ wg_sort_partials[thread_id] += carry;
62
+ }
63
+
64
+ workgroupBarrier();
65
+ }
66
+
67
+ var subgroup_prefix = 0u;
68
+ if (subgroup_id != 0u) {
69
+ subgroup_prefix = wg_sort_partials[subgroup_id - 1u];
70
+ }
71
+
72
+ return vec2<u32>(inclusive - value + subgroup_prefix, wg_sort_partials[subgroup_count - 1u]);
73
+ }
74
+ `);
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shared configuration for the key-value radix sort.
3
+ *
4
+ * The sort is LSD reduce-then-scan: four 8-bit digit passes, each of them a per-tile histogram,
5
+ * a spine scan through {@link graph_prefix_scan_csdldf}, and a rank-and-scatter. The numbers below
6
+ * are what the three stages have to agree on, so they live in one place rather than in each
7
+ * shader's template literal.
8
+ */
9
+ /**
10
+ * Number of digit bins. 8-bit digits — one `u32` key is covered by {@link RADIX_PASSES} of them.
11
+ * @type {number}
12
+ */
13
+ export const RADIX: number;
14
+ /**
15
+ * `log2(RADIX)` — also the number of binary split rounds the scatter's in-tile sort runs.
16
+ * @type {number}
17
+ */
18
+ export const RADIX_LOG: number;
19
+ /**
20
+ * (key width) / RADIX_LOG. Four passes over a 32-bit key.
21
+ *
22
+ * Even, which is what puts the result back in the caller's buffers rather than in the ping-pong
23
+ * scratch — see {@link graph_radix_sort}.
24
+ * @type {number}
25
+ */
26
+ export const RADIX_PASSES: number;
27
+ /**
28
+ * Threads per workgroup, in both the histogram and the scatter.
29
+ *
30
+ * 256 is `maxComputeInvocationsPerWorkgroup`'s default value, and it is also exactly {@link RADIX},
31
+ * which is what lets the scatter run "one thread per bin" over its local histogram with no strided
32
+ * loop.
33
+ * @type {number}
34
+ */
35
+ export const SORT_WORKGROUP_SIZE: number;
36
+ /**
37
+ * Keys each thread carries through a tile.
38
+ * @type {number}
39
+ */
40
+ export const SORT_KEYS_PER_THREAD: number;
41
+ /**
42
+ * Keys one workgroup processes. Also the granularity of the spine: the spine holds one 256-bin
43
+ * histogram per tile.
44
+ * @type {number}
45
+ */
46
+ export const SORT_TILE_SIZE: number;
47
+ /**
48
+ * The smallest subgroup size WebGPU permits, and therefore the largest number of subgroups a
49
+ * workgroup can be split into: `SORT_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE`.
50
+ *
51
+ * Subgroup size is a runtime value in [4, 128]; nothing here may bake a width in. What the bound
52
+ * buys is a *compile-time* trip count for the loop that scans the per-subgroup partials — a loop
53
+ * that contains barriers, and whose bound therefore has to be provably uniform. Iterations past
54
+ * the real subgroup count do nothing.
55
+ * @type {number}
56
+ */
57
+ export const MIN_SUBGROUP_SIZE: number;
58
+ /**
59
+ * @type {number}
60
+ */
61
+ export const MAX_SUBGROUPS_PER_WORKGROUP: number;
62
+ /**
63
+ * Words of `{count: u32, elements: array<vec4u>}` header that sit in front of the spine's elements.
64
+ *
65
+ * {@link graph_prefix_scan_csdldf} reads its element count from word 0 and its `elements` member is
66
+ * `@align(16)`, so the first count word lives at word 4. The histogram and scatter shaders bind the
67
+ * same buffer flat and have to step over the header by hand.
68
+ * @type {number}
69
+ */
70
+ export const SPINE_HEADER_WORDS: number;
71
+ //# sourceMappingURL=defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/defs.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,oBAFU,MAAM,CAES;AAEzB;;;GAGG;AACH,wBAFU,MAAM,CAEW;AAE3B;;;;;;GAMG;AACH,2BAFU,MAAM,CAEc;AAE9B;;;;;;;GAOG;AACH,kCAFU,MAAM,CAEuB;AAEvC;;;GAGG;AACH,mCAFU,MAAM,CAEsB;AAEtC;;;;GAIG;AACH,6BAFU,MAAM,CAEyD;AAEzE;;;;;;;;;GASG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;GAEG;AACH,0CAFU,MAAM,CAEmE;AAEnF;;;;;;;GAOG;AACH,iCAFU,MAAM,CAEoB"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Shared configuration for the key-value radix sort.
3
+ *
4
+ * The sort is LSD reduce-then-scan: four 8-bit digit passes, each of them a per-tile histogram,
5
+ * a spine scan through {@link graph_prefix_scan_csdldf}, and a rank-and-scatter. The numbers below
6
+ * are what the three stages have to agree on, so they live in one place rather than in each
7
+ * shader's template literal.
8
+ */
9
+
10
+ /**
11
+ * Number of digit bins. 8-bit digits — one `u32` key is covered by {@link RADIX_PASSES} of them.
12
+ * @type {number}
13
+ */
14
+ export const RADIX = 256;
15
+
16
+ /**
17
+ * `log2(RADIX)` — also the number of binary split rounds the scatter's in-tile sort runs.
18
+ * @type {number}
19
+ */
20
+ export const RADIX_LOG = 8;
21
+
22
+ /**
23
+ * (key width) / RADIX_LOG. Four passes over a 32-bit key.
24
+ *
25
+ * Even, which is what puts the result back in the caller's buffers rather than in the ping-pong
26
+ * scratch — see {@link graph_radix_sort}.
27
+ * @type {number}
28
+ */
29
+ export const RADIX_PASSES = 4;
30
+
31
+ /**
32
+ * Threads per workgroup, in both the histogram and the scatter.
33
+ *
34
+ * 256 is `maxComputeInvocationsPerWorkgroup`'s default value, and it is also exactly {@link RADIX},
35
+ * which is what lets the scatter run "one thread per bin" over its local histogram with no strided
36
+ * loop.
37
+ * @type {number}
38
+ */
39
+ export const SORT_WORKGROUP_SIZE = 256;
40
+
41
+ /**
42
+ * Keys each thread carries through a tile.
43
+ * @type {number}
44
+ */
45
+ export const SORT_KEYS_PER_THREAD = 4;
46
+
47
+ /**
48
+ * Keys one workgroup processes. Also the granularity of the spine: the spine holds one 256-bin
49
+ * histogram per tile.
50
+ * @type {number}
51
+ */
52
+ export const SORT_TILE_SIZE = SORT_WORKGROUP_SIZE * SORT_KEYS_PER_THREAD;
53
+
54
+ /**
55
+ * The smallest subgroup size WebGPU permits, and therefore the largest number of subgroups a
56
+ * workgroup can be split into: `SORT_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE`.
57
+ *
58
+ * Subgroup size is a runtime value in [4, 128]; nothing here may bake a width in. What the bound
59
+ * buys is a *compile-time* trip count for the loop that scans the per-subgroup partials — a loop
60
+ * that contains barriers, and whose bound therefore has to be provably uniform. Iterations past
61
+ * the real subgroup count do nothing.
62
+ * @type {number}
63
+ */
64
+ export const MIN_SUBGROUP_SIZE = 4;
65
+
66
+ /**
67
+ * @type {number}
68
+ */
69
+ export const MAX_SUBGROUPS_PER_WORKGROUP = SORT_WORKGROUP_SIZE / MIN_SUBGROUP_SIZE;
70
+
71
+ /**
72
+ * Words of `{count: u32, elements: array<vec4u>}` header that sit in front of the spine's elements.
73
+ *
74
+ * {@link graph_prefix_scan_csdldf} reads its element count from word 0 and its `elements` member is
75
+ * `@align(16)`, so the first count word lives at word 4. The histogram and scatter shaders bind the
76
+ * same buffer flat and have to step over the header by hand.
77
+ * @type {number}
78
+ */
79
+ export const SPINE_HEADER_WORDS = 4;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Key-value LSD radix sort, reduce-then-scan, built on the CSDLDF spine.
3
+ *
4
+ * Keys are 32-bit unsigned integers, values are 32-bit unsigned integers, sorting is always
5
+ * ASCENDING and STABLE — equal keys come out in their input order, which is what an LSD radix sort
6
+ * needs of each of its own digit passes and what a caller sorting Morton codes needs of the whole
7
+ * thing. The result lands back in the caller's own buffers: four digit passes ping-pong between
8
+ * them and a pair of transients, and four is even.
9
+ *
10
+ * One digit pass is three dispatches:
11
+ *
12
+ * 1. {@link shader_radix_sort_histogram} — a 256-bin histogram per tile, written into the spine
13
+ * bin-major;
14
+ * 2. {@link graph_prefix_scan_csdldf}, reused as-is — one running scan over the whole spine
15
+ * therefore yields the global start of every digit and the per-tile offset within it together.
16
+ * That scan is inclusive-only and in-place, so the scatter recovers the exclusive value by
17
+ * subtracting the tile's own count (which it has, having re-derived the tile histogram to rank
18
+ * its keys anyway);
19
+ * 3. {@link shader_radix_sort_scatter} — rank within the tile, then scatter.
20
+ *
21
+ * Twelve dispatches per sort, against the seven of the single-pass one-sweep formulation that
22
+ * commit `b6049214c` removed. What that buys is the absence of any unbounded cross-workgroup wait:
23
+ * the only spin anywhere is CSDLDF's own bounded-spin-then-fallback, so the sort makes progress on
24
+ * a scheduler that offers no fairness guarantee at all. The single-pass upgrade is recorded in
25
+ * `GPU_BVH_BUILD_PLAN.md` §4.2.1 as v2, gated on a measurement from a real consumer.
26
+ *
27
+ * @param {FrameGraph} graph
28
+ * @param {number} keys buffer resource ID, `array<u32>`, at least `element_count` entries
29
+ * @param {number} values buffer resource ID, `array<u32>`, at least `element_count` entries
30
+ * @param {number} element_count number of input elements
31
+ * @returns {{keys:number, values:number}} sorted output, in the caller's buffers
32
+ */
33
+ export function graph_radix_sort({ graph, keys, values, element_count, }: FrameGraph): {
34
+ keys: number;
35
+ values: number;
36
+ };
37
+ //# sourceMappingURL=graph_radix_sort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph_radix_sort.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,uFAFa;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,MAAM,CAAA;CAAC,CA4JxC"}
@@ -0,0 +1,197 @@
1
+ import { assert } from "../../../../core/assert.js";
2
+ import { round_up } from "../../../../core/math/round_up.js";
3
+ import { warn_limited } from "../../../util/warn_limited.js";
4
+ import { BufferResourceDescriptor } from "../../../device/graph/BufferResourceDescriptor.js";
5
+ import { graph_prefix_scan_csdldf } from "../prefix_sum/v1/graph_prefix_scan_csdldf.js";
6
+ import { RADIX, RADIX_LOG, RADIX_PASSES, SORT_TILE_SIZE, SPINE_HEADER_WORDS } from "./defs.js";
7
+ import { SORT_PASS_SETTINGS_STRUCT } from "./SORT_PASS_SETTINGS_STRUCT.js";
8
+ import { shader_radix_sort_histogram } from "./shader_radix_sort_histogram.js";
9
+ import { shader_radix_sort_scatter } from "./shader_radix_sort_scatter.js";
10
+
11
+ /**
12
+ * Key-value LSD radix sort, reduce-then-scan, built on the CSDLDF spine.
13
+ *
14
+ * Keys are 32-bit unsigned integers, values are 32-bit unsigned integers, sorting is always
15
+ * ASCENDING and STABLE — equal keys come out in their input order, which is what an LSD radix sort
16
+ * needs of each of its own digit passes and what a caller sorting Morton codes needs of the whole
17
+ * thing. The result lands back in the caller's own buffers: four digit passes ping-pong between
18
+ * them and a pair of transients, and four is even.
19
+ *
20
+ * One digit pass is three dispatches:
21
+ *
22
+ * 1. {@link shader_radix_sort_histogram} — a 256-bin histogram per tile, written into the spine
23
+ * bin-major;
24
+ * 2. {@link graph_prefix_scan_csdldf}, reused as-is — one running scan over the whole spine
25
+ * therefore yields the global start of every digit and the per-tile offset within it together.
26
+ * That scan is inclusive-only and in-place, so the scatter recovers the exclusive value by
27
+ * subtracting the tile's own count (which it has, having re-derived the tile histogram to rank
28
+ * its keys anyway);
29
+ * 3. {@link shader_radix_sort_scatter} — rank within the tile, then scatter.
30
+ *
31
+ * Twelve dispatches per sort, against the seven of the single-pass one-sweep formulation that
32
+ * commit `b6049214c` removed. What that buys is the absence of any unbounded cross-workgroup wait:
33
+ * the only spin anywhere is CSDLDF's own bounded-spin-then-fallback, so the sort makes progress on
34
+ * a scheduler that offers no fairness guarantee at all. The single-pass upgrade is recorded in
35
+ * `GPU_BVH_BUILD_PLAN.md` §4.2.1 as v2, gated on a measurement from a real consumer.
36
+ *
37
+ * @param {FrameGraph} graph
38
+ * @param {number} keys buffer resource ID, `array<u32>`, at least `element_count` entries
39
+ * @param {number} values buffer resource ID, `array<u32>`, at least `element_count` entries
40
+ * @param {number} element_count number of input elements
41
+ * @returns {{keys:number, values:number}} sorted output, in the caller's buffers
42
+ */
43
+ export function graph_radix_sort({
44
+ graph,
45
+ keys,
46
+ values,
47
+ element_count,
48
+ }) {
49
+
50
+ assert.defined(graph, 'graph');
51
+ assert.isNonNegativeInteger(keys, 'keys');
52
+ assert.isNonNegativeInteger(values, 'values');
53
+ assert.isNonNegativeInteger(element_count, 'element_count');
54
+
55
+ if (element_count <= 1) {
56
+ // nothing a sort could change
57
+ return { keys, values };
58
+ }
59
+
60
+ const tile_count = Math.ceil(element_count / SORT_TILE_SIZE);
61
+
62
+ const spine_element_count = tile_count * RADIX;
63
+ const spine_size = (SPINE_HEADER_WORDS + spine_element_count) * Uint32Array.BYTES_PER_ELEMENT;
64
+
65
+ // The histogram writes every element cell, but the `{count, elements}` header's padding words
66
+ // and any tail the round-up leaves are never written and would otherwise carry whatever the
67
+ // pool last put there into the scan.
68
+ const SPINE_DESCRIPTOR = BufferResourceDescriptor.from(
69
+ spine_size,
70
+ GPUBufferUsage.STORAGE,
71
+ 0, spine_size
72
+ );
73
+
74
+ // aligned on a 1k boundary to lower memory fragmentation, as the deleted port did
75
+ const PING_PONG_DESCRIPTOR = BufferResourceDescriptor.from(
76
+ round_up(element_count * Uint32Array.BYTES_PER_ELEMENT, 1024),
77
+ GPUBufferUsage.STORAGE
78
+ );
79
+
80
+ /**
81
+ * @param pass_data
82
+ * @param {FramePassResources} resources
83
+ * @param {GraphicsExecutionContext} context
84
+ */
85
+ function execute_histogram(pass_data, resources, context) {
86
+ const encoder = context.encoder;
87
+
88
+ const MAX_DISPATCH_SIZE = encoder.device.limits.maxComputeWorkgroupsPerDimension;
89
+
90
+ if (tile_count > MAX_DISPATCH_SIZE) {
91
+ warn_limited(`radix sort: tile_count(=${tile_count}) > MAX_DISPATCH_SIZE(=${MAX_DISPATCH_SIZE}). Sort will be incomplete`);
92
+ }
93
+
94
+ shader_radix_sort_histogram.dispatch({
95
+ encoder,
96
+ group_count_x: tile_count,
97
+ bindings: {
98
+ settings: encoder.allocateTransientValueBuffer(SORT_PASS_SETTINGS_STRUCT, {
99
+ shift: pass_data.shift,
100
+ element_count,
101
+ tile_count,
102
+ }),
103
+ keys: resources.get(pass_data.keys),
104
+ spine: resources.get(pass_data.spine),
105
+ }
106
+ });
107
+ }
108
+
109
+ /**
110
+ * @param pass_data
111
+ * @param {FramePassResources} resources
112
+ * @param {GraphicsExecutionContext} context
113
+ */
114
+ function execute_scatter(pass_data, resources, context) {
115
+ const encoder = context.encoder;
116
+
117
+ const in_keys = resources.get(pass_data.in_keys);
118
+ const in_values = resources.get(pass_data.in_values);
119
+ const out_keys = resources.get(pass_data.out_keys);
120
+ const out_values = resources.get(pass_data.out_values);
121
+
122
+ const required = element_count * Uint32Array.BYTES_PER_ELEMENT;
123
+
124
+ assert.greaterThanOrEqual(in_keys.size, required, 'key buffer underflow');
125
+ assert.greaterThanOrEqual(in_values.size, required, 'value buffer underflow');
126
+ assert.greaterThanOrEqual(out_keys.size, required, 'key output buffer underflow');
127
+ assert.greaterThanOrEqual(out_values.size, required, 'value output buffer underflow');
128
+
129
+ shader_radix_sort_scatter.dispatch({
130
+ encoder,
131
+ group_count_x: tile_count,
132
+ bindings: {
133
+ settings: encoder.allocateTransientValueBuffer(SORT_PASS_SETTINGS_STRUCT, {
134
+ shift: pass_data.shift,
135
+ element_count,
136
+ tile_count,
137
+ }),
138
+ in_keys,
139
+ in_values,
140
+ out_keys,
141
+ out_values,
142
+ spine: resources.get(pass_data.spine),
143
+ }
144
+ });
145
+ }
146
+
147
+ let read_keys = keys;
148
+ let read_values = values;
149
+
150
+ // the ping-pong halves, created by the first scatter and then alternated into
151
+ let write_keys;
152
+ let write_values;
153
+
154
+ for (let pass_index = 0; pass_index < RADIX_PASSES; pass_index++) {
155
+
156
+ const shift = pass_index * RADIX_LOG;
157
+
158
+ const histogram_data = { shift };
159
+ const histogram_pass = graph.add(`radix sort/histogram ${pass_index}`, histogram_data, execute_histogram);
160
+
161
+ histogram_data.keys = histogram_pass.read(read_keys);
162
+ histogram_data.spine = histogram_pass.create(`radix sort/spine ${pass_index}`, SPINE_DESCRIPTOR);
163
+
164
+ const scanned_spine = graph_prefix_scan_csdldf({
165
+ graph,
166
+ data: histogram_data.spine,
167
+ element_max_count: spine_element_count,
168
+ });
169
+
170
+ const scatter_data = { shift };
171
+ const scatter_pass = graph.add(`radix sort/scatter ${pass_index}`, scatter_data, execute_scatter);
172
+
173
+ scatter_data.in_keys = scatter_pass.read(read_keys);
174
+ scatter_data.in_values = scatter_pass.read(read_values);
175
+ scatter_data.spine = scatter_pass.read(scanned_spine);
176
+
177
+ if (write_keys === undefined) {
178
+ write_keys = scatter_pass.create("radix sort/ping-pong keys", PING_PONG_DESCRIPTOR);
179
+ write_values = scatter_pass.create("radix sort/ping-pong values", PING_PONG_DESCRIPTOR);
180
+ } else {
181
+ write_keys = scatter_pass.write(write_keys);
182
+ write_values = scatter_pass.write(write_values);
183
+ }
184
+
185
+ scatter_data.out_keys = write_keys;
186
+ scatter_data.out_values = write_values;
187
+
188
+ // what this pass wrote is what the next one sorts
189
+ [read_keys, write_keys] = [write_keys, read_keys];
190
+ [read_values, write_values] = [write_values, read_values];
191
+ }
192
+
193
+ return {
194
+ keys: read_keys,
195
+ values: read_values,
196
+ };
197
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Per-tile 256-bin digit histogram — stage (a) of one digit pass of {@link graph_radix_sort}.
3
+ *
4
+ * One workgroup per tile; the counts land in the spine bin-major, so that the single scan that
5
+ * follows produces global digit offsets and per-tile offsets in one traversal.
6
+ *
7
+ * Subgroup ballot peer-aggregation ahead of the workgroup atomics (the deleted one-sweep port's
8
+ * `WarpLevelMultiSplit`) is the recorded upgrade here; it is left out of v1 because this pass reads
9
+ * each key once and is bandwidth-shaped, while the machinery it needs is the widest part of the
10
+ * subgroup-size surface.
11
+ *
12
+ * @type {ComputeShader}
13
+ */
14
+ export const shader_radix_sort_histogram: ComputeShader;
15
+ import { ComputeShader } from "../../shader/ComputeShader.js";
16
+ //# sourceMappingURL=shader_radix_sort_histogram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_radix_sort_histogram.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js"],"names":[],"mappings":"AAkEA;;;;;;;;;;;;GAYG;AACH,0CAFU,aAAa,CAOpB;8BAjF2B,+BAA+B"}
@@ -0,0 +1,85 @@
1
+ import { u32 } from "../../shader/type/WEBGPU_WGSL_PRIMITIVE_TYPES.js";
2
+ import { WebGPUArray } from "../../shader/type/WebGPUArray.js";
3
+ import { CodeChunk } from "../../shader/compiler/CodeChunk.js";
4
+ import { ComputeShader } from "../../shader/ComputeShader.js";
5
+ import { ShaderResourceSetDescriptor } from "../../shader/resource/ShaderResourceSetDescriptor.js";
6
+ import { chunk_sort_digit } from "./chunk_sort_digit.js";
7
+ import { RADIX, SORT_KEYS_PER_THREAD, SORT_TILE_SIZE, SORT_WORKGROUP_SIZE } from "./defs.js";
8
+ import { SORT_PASS_SETTINGS_STRUCT } from "./SORT_PASS_SETTINGS_STRUCT.js";
9
+
10
+ const resources = new ShaderResourceSetDescriptor();
11
+ resources.createGroup()
12
+ .addUniform("settings", SORT_PASS_SETTINGS_STRUCT)
13
+ .addStorageBuffer("keys", WebGPUArray.from(u32), false)
14
+ // `{count: u32, elements: array<vec4u>}` as the scan sees it, flat as this pass writes it.
15
+ // Every cell is produced by exactly one thread of one workgroup, so no atomics: the only
16
+ // consumer is a later dispatch, and WebGPU orders dispatches against each other.
17
+ .addStorageBuffer("spine", WebGPUArray.from(u32), true);
18
+
19
+ const body = CodeChunk.from(
20
+ //language=WGSL
21
+ `
22
+ const WORKGROUP_SIZE = ${SORT_WORKGROUP_SIZE}u;
23
+ const KEYS_PER_THREAD = ${SORT_KEYS_PER_THREAD}u;
24
+ const TILE_SIZE = ${SORT_TILE_SIZE}u;
25
+ const RADIX = ${RADIX}u;
26
+
27
+ // One bin per thread — RADIX and the workgroup size are equal, so the clear and the write-out are
28
+ // both a single unstrided step.
29
+ var<workgroup> wg_histogram: array<atomic<u32>, RADIX>;
30
+
31
+ @compute @workgroup_size(WORKGROUP_SIZE, 1, 1)
32
+ fn main(
33
+ @builtin(local_invocation_index) thread_id: u32,
34
+ @builtin(workgroup_id) workgroup_id: vec3<u32>,
35
+ ) {
36
+ let tile = workgroup_id.x;
37
+
38
+ atomicStore(&wg_histogram[thread_id], 0u);
39
+
40
+ workgroupBarrier();
41
+
42
+ // Striped so that neighbouring threads read neighbouring addresses. The tail tile is partial;
43
+ // the keys past the end are not counted, which is what lets the scatter recognise them later
44
+ // by position alone.
45
+ let tile_base = tile * TILE_SIZE;
46
+ for (var k = 0u; k < KEYS_PER_THREAD; k += 1u) {
47
+ let source = tile_base + k * WORKGROUP_SIZE + thread_id;
48
+
49
+ if (source < settings.element_count) {
50
+ atomicAdd(&wg_histogram[sort_extract_digit(keys[source], settings.shift)], 1u);
51
+ }
52
+ }
53
+
54
+ workgroupBarrier();
55
+
56
+ spine[sort_spine_index(thread_id, tile, settings.tile_count)] = atomicLoad(&wg_histogram[thread_id]);
57
+
58
+ // The scan is indirect-dispatched off an element count it reads from word 0 of this buffer.
59
+ if (tile == 0u && thread_id == 0u) {
60
+ spine[0] = settings.tile_count * RADIX;
61
+ }
62
+ }
63
+ `, [
64
+ chunk_sort_digit,
65
+ ]);
66
+
67
+ /**
68
+ * Per-tile 256-bin digit histogram — stage (a) of one digit pass of {@link graph_radix_sort}.
69
+ *
70
+ * One workgroup per tile; the counts land in the spine bin-major, so that the single scan that
71
+ * follows produces global digit offsets and per-tile offsets in one traversal.
72
+ *
73
+ * Subgroup ballot peer-aggregation ahead of the workgroup atomics (the deleted one-sweep port's
74
+ * `WarpLevelMultiSplit`) is the recorded upgrade here; it is left out of v1 because this pass reads
75
+ * each key once and is bandwidth-shaped, while the machinery it needs is the widest part of the
76
+ * subgroup-size surface.
77
+ *
78
+ * @type {ComputeShader}
79
+ */
80
+ export const shader_radix_sort_histogram = ComputeShader.from({
81
+ label: "RadixSort/Histogram",
82
+ resources,
83
+ body,
84
+ group_size: [SORT_WORKGROUP_SIZE, 1, 1],
85
+ });
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Rank-and-scatter — stage (c) of one digit pass of {@link graph_radix_sort}.
3
+ *
4
+ * One workgroup per tile. The tile is sorted by the current digit in workgroup memory (stability is
5
+ * what an LSD radix sort's correctness rests on, and it is also what lets the tail tile's padding
6
+ * be identified by position), the tile's own histogram is re-derived rather than carried over from
7
+ * the histogram pass — the scan is inclusive-only, and re-counting is cheaper than preserving
8
+ * pre-scan counts — and each key is written to
9
+ * `spine_inclusive[bin] - local_count[bin] - bin_start[bin] + sorted_position`.
10
+ *
11
+ * @type {ComputeShader}
12
+ */
13
+ export const shader_radix_sort_scatter: ComputeShader;
14
+ import { ComputeShader } from "../../shader/ComputeShader.js";
15
+ //# sourceMappingURL=shader_radix_sort_scatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader_radix_sort_scatter.d.ts","sourceRoot":"","sources":["../../../../../../src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js"],"names":[],"mappings":"AA8KA;;;;;;;;;;;GAWG;AACH,wCAFU,aAAa,CAOpB;8BA3L2B,+BAA+B"}