@woosh/meep-engine 3.3.0 → 3.4.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 (846) 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/EntityCreator.d.ts +19 -11
  9. package/src/engine/EntityCreator.d.ts.map +1 -1
  10. package/src/engine/EntityCreator.js +116 -94
  11. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  12. package/src/engine/achievements/AchievementManager.js +437 -433
  13. package/src/engine/animation/AnimatedActions.d.ts +6 -1
  14. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  15. package/src/engine/animation/AnimatedActions.js +111 -81
  16. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  17. package/src/engine/animation/AnimationUtils.js +234 -252
  18. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +275 -269
  19. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  20. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +26 -5
  21. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
  22. package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
  23. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -1
  24. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  25. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +4 -2
  26. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +536 -0
  27. package/src/engine/sound/SoundEngine.d.ts +2 -2
  28. package/src/engine/sound/SoundEngine.js +124 -124
  29. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +20 -0
  30. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  31. package/src/engine/sound/ecs/audio/AudioEmitter.js +25 -2
  32. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  33. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  34. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +338 -314
  35. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +143 -0
  36. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -0
  37. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +191 -0
  38. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts +33 -0
  39. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -0
  40. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +81 -0
  41. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +65 -0
  42. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -0
  43. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +184 -0
  44. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +999 -993
  45. package/src/engine/sound/sopra/README.md +644 -643
  46. package/src/engine/sound/sopra/SopraEngine.d.ts +2 -2
  47. package/src/engine/sound/sopra/SopraEngine.js +432 -432
  48. package/src/engine/sound/sopra/legacy/SoundAttenuationFunction.d.ts.map +1 -0
  49. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.d.ts +3 -3
  50. package/src/engine/sound/sopra/legacy/SoundController.d.ts.map +1 -0
  51. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.js +176 -176
  52. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.d.ts +11 -27
  53. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -0
  54. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.js +352 -382
  55. package/src/engine/sound/sopra/legacy/SoundEmitterFlags.d.ts.map +1 -0
  56. package/src/engine/sound/sopra/legacy/SoundEmitterSerializationAdapter.d.ts.map +1 -0
  57. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  58. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  59. package/src/engine/sound/sopra/legacy/SoundPanningModelType.d.ts.map +1 -0
  60. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.d.ts +11 -55
  61. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -0
  62. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.js +278 -357
  63. package/src/engine/sound/sopra/legacy/SoundTrackFlags.d.ts.map +1 -0
  64. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts +34 -0
  65. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts.map +1 -0
  66. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.js +279 -0
  67. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +3 -3
  68. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  69. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -122
  70. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  71. package/src/shade/device/mock/SoftwareGPUDevice.js +7 -1
  72. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  73. package/src/shade/device/timing/GPUTimerArray.js +10 -0
  74. package/src/shade/playground/add_random_meshes.d.ts +19 -3
  75. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  76. package/src/shade/playground/add_random_meshes.js +132 -84
  77. package/src/shade/playground/bvh_repro/README.md +57 -0
  78. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts +33 -0
  79. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -0
  80. package/src/shade/playground/bvh_repro/bvh_repro_device.js +90 -0
  81. package/src/shade/playground/bvh_repro/index.html +124 -0
  82. package/src/shade/playground/bvh_repro/main.d.ts.map +1 -0
  83. package/src/shade/playground/bvh_repro/main.js +254 -0
  84. package/src/shade/playground/load_default_environment.d.ts +10 -1
  85. package/src/shade/playground/load_default_environment.d.ts.map +1 -1
  86. package/src/shade/playground/load_default_environment.js +44 -20
  87. package/src/shade/playground/make_playground_asset_manager.d.ts +16 -0
  88. package/src/shade/playground/make_playground_asset_manager.d.ts.map +1 -0
  89. package/src/shade/playground/make_playground_asset_manager.js +33 -0
  90. package/src/shade/playground/skinned_blas_refit/README.md +103 -0
  91. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +47 -0
  92. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -0
  93. package/src/shade/playground/skinned_blas_refit/add_floor.js +71 -0
  94. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts +28 -0
  95. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -0
  96. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +745 -0
  97. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts +30 -0
  98. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts.map +1 -0
  99. package/src/shade/playground/skinned_blas_refit/flat_environment.js +67 -0
  100. package/src/shade/playground/skinned_blas_refit/index.html +168 -0
  101. package/src/shade/playground/skinned_blas_refit/main.d.ts +8 -0
  102. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -0
  103. package/src/shade/playground/skinned_blas_refit/main.js +502 -0
  104. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +81 -0
  105. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -0
  106. package/src/shade/playground/skinned_blas_refit/place_character.js +116 -0
  107. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +21 -0
  108. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -0
  109. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +104 -0
  110. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts +23 -0
  111. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -0
  112. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +94 -0
  113. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +26 -0
  114. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -0
  115. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +134 -0
  116. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +40 -0
  117. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -0
  118. package/src/shade/playground/skinned_blas_refit/sweep_views.js +135 -0
  119. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts +31 -0
  120. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -0
  121. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +240 -0
  122. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +20 -0
  123. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -0
  124. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -0
  125. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +50 -0
  126. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -0
  127. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +366 -0
  128. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +17 -0
  129. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -0
  130. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -0
  131. package/src/shade/playground/sponza_path_trace/README.md +57 -0
  132. package/src/shade/playground/sponza_path_trace/index.html +164 -0
  133. package/src/shade/playground/sponza_path_trace/main.d.ts +8 -0
  134. package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -0
  135. package/src/shade/playground/sponza_path_trace/main.js +363 -0
  136. package/src/shade/renderer/Renderer.d.ts +16 -0
  137. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  138. package/src/shade/renderer/Renderer.js +23 -4
  139. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -1
  140. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  141. package/src/shade/renderer/animation/GPUAnimationManager.js +28 -3
  142. package/src/shade/renderer/animation/Skin.d.ts +9 -7
  143. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  144. package/src/shade/renderer/animation/Skin.js +9 -7
  145. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +35 -0
  146. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +1 -0
  147. package/src/shade/renderer/animation/compute_skin_world_bounds.js +146 -0
  148. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  149. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +41 -0
  150. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  151. package/src/shade/renderer/geometry/GPUGeometryManager.js +65 -15
  152. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +78 -7
  153. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  154. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +302 -77
  155. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +18 -6
  156. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  157. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +19 -6
  158. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts +51 -0
  159. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -0
  160. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.js +260 -0
  161. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +23 -0
  162. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -0
  163. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +82 -0
  164. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +25 -0
  165. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -0
  167. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +30 -0
  168. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +122 -0
  170. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +55 -0
  171. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts.map +1 -0
  172. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -0
  173. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +37 -0
  174. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -0
  175. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +45 -0
  176. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -0
  177. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +201 -0
  178. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts +88 -0
  179. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -0
  180. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.js +233 -0
  181. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +18 -0
  182. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -0
  183. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +38 -0
  184. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +16 -0
  185. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -0
  186. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +79 -0
  187. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +16 -0
  188. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -0
  189. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +49 -0
  190. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +43 -0
  191. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -0
  192. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -0
  193. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +24 -0
  194. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -0
  195. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +143 -0
  196. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +17 -0
  197. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -0
  198. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +83 -0
  199. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +24 -0
  200. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -0
  201. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +141 -0
  202. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +31 -0
  203. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -0
  204. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +422 -0
  205. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.d.ts.map +1 -1
  206. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.js +1 -2
  207. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts +9 -0
  208. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts.map +1 -0
  209. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.js +23 -0
  210. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts +18 -0
  211. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts.map +1 -0
  212. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.js +32 -0
  213. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts +27 -0
  214. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts.map +1 -0
  215. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.js +41 -0
  216. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts +25 -0
  217. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.js +74 -0
  219. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts +71 -0
  220. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts.map +1 -0
  221. package/src/shade/renderer/gpu_primitive/sort/defs.js +79 -0
  222. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +37 -0
  223. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -0
  224. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +197 -0
  225. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts +16 -0
  226. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -0
  227. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +85 -0
  228. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts +15 -0
  229. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -0
  230. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +192 -0
  231. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts +12 -0
  232. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts.map +1 -0
  233. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.js +188 -0
  234. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +16 -4
  235. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  236. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +235 -24
  237. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  238. package/src/shade/renderer/scene/GPUSceneContext.js +15 -3
  239. package/src/shade/renderer/scene/SkinnedMesh.d.ts +57 -11
  240. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  241. package/src/shade/renderer/scene/SkinnedMesh.js +111 -11
  242. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts +22 -0
  243. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -0
  244. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +145 -0
  245. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +18 -0
  246. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -0
  247. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +364 -0
  248. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts +9 -1
  249. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts.map +1 -1
  250. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.js +29 -21
  251. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts +22 -0
  252. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts.map +1 -0
  253. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.js +31 -0
  254. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.d.ts.map +1 -1
  255. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.js +87 -39
  256. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts +17 -0
  257. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts.map +1 -0
  258. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.js +40 -0
  259. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +15 -0
  260. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -0
  261. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +52 -0
  262. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts +9 -0
  263. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts.map +1 -1
  264. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.js +9 -0
  265. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts +20 -0
  266. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts.map +1 -1
  267. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.js +52 -34
  268. package/src/shade/renderer/texture/virtual/README.md +255 -276
  269. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  270. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -2
  271. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  272. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +83 -0
  273. package/src/view/interaction/InterfaceCommand.d.ts +8 -8
  274. package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
  275. package/src/view/interaction/InterfaceCommand.js +146 -146
  276. package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
  277. package/src/view/interaction/createInterfaceCommandButton.js +115 -124
  278. package/src/engine/ecs/components/Timer.d.ts +0 -50
  279. package/src/engine/ecs/components/Timer.d.ts.map +0 -1
  280. package/src/engine/ecs/components/Timer.js +0 -80
  281. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts +0 -22
  282. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +0 -1
  283. package/src/engine/ecs/evaluation/PointFitnessBinary.js +0 -33
  284. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts +0 -12
  285. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +0 -1
  286. package/src/engine/ecs/evaluation/PointFitnessConstant.js +0 -27
  287. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts +0 -17
  288. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts.map +0 -1
  289. package/src/engine/ecs/evaluation/PointFitnessFunction.js +0 -20
  290. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts +0 -12
  291. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts.map +0 -1
  292. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.js +0 -27
  293. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts +0 -12
  294. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts.map +0 -1
  295. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.js +0 -28
  296. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +0 -50
  297. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +0 -1
  298. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +0 -176
  299. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts +0 -7
  300. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts.map +0 -1
  301. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.js +0 -68
  302. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts +0 -7
  303. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts.map +0 -1
  304. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.js +0 -89
  305. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts +0 -17
  306. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +0 -1
  307. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +0 -60
  308. package/src/engine/ecs/systems/TimerSystem.d.ts +0 -10
  309. package/src/engine/ecs/systems/TimerSystem.d.ts.map +0 -1
  310. package/src/engine/ecs/systems/TimerSystem.js +0 -86
  311. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +0 -13
  312. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +0 -1
  313. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +0 -14
  314. package/src/engine/graphics/StandardFrameBuffers.d.ts +0 -7
  315. package/src/engine/graphics/StandardFrameBuffers.d.ts.map +0 -1
  316. package/src/engine/graphics/StandardFrameBuffers.js +0 -9
  317. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts +0 -7
  318. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts.map +0 -1
  319. package/src/engine/graphics/copy_transform_to_threejs_object.js +0 -12
  320. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts +0 -42
  321. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +0 -1
  322. package/src/engine/graphics/ecs/light/binding/LightBinding.js +0 -133
  323. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts +0 -25
  324. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +0 -1
  325. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +0 -90
  326. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts +0 -7
  327. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts.map +0 -1
  328. package/src/engine/graphics/ecs/light/binding/three/applyRotation.js +0 -24
  329. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts +0 -7
  330. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts.map +0 -1
  331. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.js +0 -12
  332. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts +0 -8
  333. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts.map +0 -1
  334. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.js +0 -41
  335. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts +0 -4
  336. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts.map +0 -1
  337. package/src/engine/graphics/ecs/light/shadow/LightShadow.js +0 -4
  338. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts +0 -27
  339. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts.map +0 -1
  340. package/src/engine/graphics/ecs/light/shadow/ShadowManager.js +0 -53
  341. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts +0 -8
  342. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +0 -1
  343. package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +0 -7
  344. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts +0 -14
  345. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts.map +0 -1
  346. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.js +0 -62
  347. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts +0 -30
  348. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +0 -1
  349. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +0 -77
  350. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts +0 -13
  351. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts.map +0 -1
  352. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.js +0 -43
  353. package/src/engine/graphics/ecs/light/three/light2type.d.ts +0 -8
  354. package/src/engine/graphics/ecs/light/three/light2type.d.ts.map +0 -1
  355. package/src/engine/graphics/ecs/light/three/light2type.js +0 -20
  356. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts +0 -7
  357. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts.map +0 -1
  358. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +0 -13
  359. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts +0 -20
  360. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts.map +0 -1
  361. package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +0 -47
  362. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts +0 -12
  363. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts.map +0 -1
  364. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.js +0 -19
  365. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts +0 -18
  366. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts.map +0 -1
  367. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.js +0 -249
  368. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts +0 -7
  369. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts.map +0 -1
  370. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.js +0 -8
  371. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts +0 -7
  372. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts.map +0 -1
  373. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.js +0 -8
  374. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +0 -14
  375. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +0 -1
  376. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +0 -20
  377. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts +0 -3
  378. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts.map +0 -1
  379. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.js +0 -58
  380. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts +0 -3
  381. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts.map +0 -1
  382. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.js +0 -44
  383. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts +0 -3
  384. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts.map +0 -1
  385. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.js +0 -28
  386. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts +0 -3
  387. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts.map +0 -1
  388. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.js +0 -28
  389. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts +0 -3
  390. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts.map +0 -1
  391. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.js +0 -39
  392. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts +0 -3
  393. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts.map +0 -1
  394. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.js +0 -124
  395. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts +0 -3
  396. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts.map +0 -1
  397. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.js +0 -30
  398. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts +0 -64
  399. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts.map +0 -1
  400. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.js +0 -131
  401. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts +0 -32
  402. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.js +0 -62
  404. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts +0 -46
  405. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts.map +0 -1
  406. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.js +0 -272
  407. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts +0 -28
  408. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts.map +0 -1
  409. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.js +0 -57
  410. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts +0 -32
  411. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts.map +0 -1
  412. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.js +0 -55
  413. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts +0 -34
  414. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +0 -1
  415. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +0 -178
  416. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts +0 -7
  417. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts.map +0 -1
  418. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.js +0 -31
  419. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts +0 -13
  420. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts.map +0 -1
  421. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.js +0 -13
  422. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts +0 -7
  423. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts.map +0 -1
  424. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.js +0 -26
  425. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts +0 -4
  426. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts.map +0 -1
  427. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.js +0 -5
  428. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts +0 -6
  429. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts.map +0 -1
  430. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.js +0 -14
  431. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts +0 -37
  432. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts.map +0 -1
  433. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.js +0 -73
  434. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts +0 -7
  435. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts.map +0 -1
  436. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.js +0 -30
  437. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts +0 -7
  438. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts.map +0 -1
  439. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.js +0 -30
  440. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts +0 -7
  441. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts.map +0 -1
  442. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.js +0 -32
  443. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts +0 -6
  444. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts.map +0 -1
  445. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.js +0 -15
  446. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts +0 -7
  447. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts.map +0 -1
  448. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.js +0 -27
  449. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts +0 -7
  450. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts.map +0 -1
  451. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.js +0 -25
  452. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts +0 -7
  453. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts.map +0 -1
  454. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.js +0 -26
  455. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts +0 -7
  456. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts.map +0 -1
  457. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.js +0 -25
  458. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts +0 -7
  459. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts.map +0 -1
  460. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.js +0 -25
  461. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts +0 -7
  462. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts.map +0 -1
  463. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.js +0 -25
  464. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts +0 -7
  465. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts.map +0 -1
  466. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.js +0 -25
  467. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts +0 -7
  468. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts.map +0 -1
  469. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.js +0 -39
  470. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +0 -39
  471. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +0 -1
  472. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +0 -45
  473. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts +0 -9
  474. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts.map +0 -1
  475. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.js +0 -10
  476. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts +0 -13
  477. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts.map +0 -1
  478. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.js +0 -14
  479. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +0 -50
  480. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +0 -1
  481. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +0 -47
  482. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts +0 -51
  483. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts.map +0 -1
  484. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.js +0 -93
  485. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts +0 -6
  486. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts.map +0 -1
  487. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.js +0 -23
  488. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts +0 -7
  489. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts.map +0 -1
  490. package/src/engine/graphics/particles/node-based/populateNodeRegistry.js +0 -48
  491. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts +0 -21
  492. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +0 -1
  493. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +0 -35
  494. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts +0 -20
  495. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts.map +0 -1
  496. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.js +0 -35
  497. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts +0 -14
  498. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts.map +0 -1
  499. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.js +0 -17
  500. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts +0 -5
  501. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts.map +0 -1
  502. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +0 -150
  503. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts +0 -55
  504. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +0 -1
  505. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +0 -105
  506. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts +0 -49
  507. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +0 -1
  508. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +0 -103
  509. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts +0 -4
  510. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts.map +0 -1
  511. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.js +0 -6
  512. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts +0 -83
  513. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +0 -1
  514. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +0 -188
  515. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts +0 -123
  516. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +0 -1
  517. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +0 -415
  518. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +0 -71
  519. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +0 -1
  520. package/src/engine/graphics/render/buffer/FrameBufferManager.js +0 -229
  521. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts +0 -22
  522. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts.map +0 -1
  523. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.js +0 -84
  524. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +0 -33
  525. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +0 -1
  526. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +0 -61
  527. package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +0 -155
  528. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts +0 -29
  529. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +0 -1
  530. package/src/engine/graphics/render/forward_plus/assign_cluster.js +0 -124
  531. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts +0 -7
  532. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts.map +0 -1
  533. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.js +0 -17
  534. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts +0 -7
  535. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts.map +0 -1
  536. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +0 -17
  537. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +0 -9
  538. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts.map +0 -1
  539. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +0 -29
  540. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts +0 -12
  541. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts.map +0 -1
  542. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.js +0 -43
  543. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts +0 -8
  544. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +0 -1
  545. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +0 -68
  546. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts +0 -4
  547. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts.map +0 -1
  548. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.js +0 -46
  549. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts +0 -14
  550. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts.map +0 -1
  551. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.js +0 -327
  552. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts +0 -2
  553. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts.map +0 -1
  554. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +0 -1
  555. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts +0 -2
  556. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts.map +0 -1
  557. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +0 -40
  558. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts +0 -2
  559. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts.map +0 -1
  560. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.js +0 -74
  561. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts +0 -2
  562. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts.map +0 -1
  563. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +0 -55
  564. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts +0 -2
  565. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts.map +0 -1
  566. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.js +0 -11
  567. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts +0 -2
  568. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts.map +0 -1
  569. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +0 -34
  570. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts +0 -7
  571. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts.map +0 -1
  572. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +0 -60
  573. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts +0 -7
  574. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts.map +0 -1
  575. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +0 -38
  576. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts +0 -7
  577. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts.map +0 -1
  578. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +0 -30
  579. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -51
  580. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +0 -1
  581. package/src/engine/graphics/render/forward_plus/model/Decal.js +0 -133
  582. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts +0 -16
  583. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts.map +0 -1
  584. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.js +0 -18
  585. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts +0 -7
  586. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts.map +0 -1
  587. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.js +0 -8
  588. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts +0 -10
  589. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts.map +0 -1
  590. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.js +0 -65
  591. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts +0 -7
  592. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts.map +0 -1
  593. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +0 -8
  594. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts +0 -11
  595. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts.map +0 -1
  596. package/src/engine/graphics/render/forward_plus/query/cube_mapping.js +0 -38
  597. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +0 -21
  598. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +0 -1
  599. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +0 -96
  600. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +0 -22
  601. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +0 -1
  602. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +0 -44
  603. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +0 -11
  604. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +0 -1
  605. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +0 -169
  606. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts +0 -9
  607. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts.map +0 -1
  608. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +0 -33
  609. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +0 -2
  610. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +0 -1
  611. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +0 -2
  612. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts +0 -9
  613. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts.map +0 -1
  614. package/src/engine/graphics/render/forward_plus/sort_decal_data.js +0 -102
  615. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts +0 -10
  616. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts.map +0 -1
  617. package/src/engine/graphics/render/forward_plus/testClusterEquality.js +0 -22
  618. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts +0 -19
  619. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts.map +0 -1
  620. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.js +0 -62
  621. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts +0 -18
  622. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts.map +0 -1
  623. package/src/engine/graphics/shaders/AlphaBlendShader.js +0 -42
  624. package/src/engine/graphics/shaders/ClearShader.d.ts +0 -8
  625. package/src/engine/graphics/shaders/ClearShader.d.ts.map +0 -1
  626. package/src/engine/graphics/shaders/ClearShader.js +0 -28
  627. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts +0 -13
  628. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts.map +0 -1
  629. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.js +0 -38
  630. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts +0 -7
  631. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts.map +0 -1
  632. package/src/engine/graphics/shaders/ScreenSpaceShader.js +0 -102
  633. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +0 -102
  634. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +0 -1
  635. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +0 -277
  636. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +0 -40
  637. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +0 -1
  638. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +0 -57
  639. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts +0 -8
  640. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts.map +0 -1
  641. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.js +0 -39
  642. package/src/engine/graphics/shadows/README.md +0 -6
  643. package/src/engine/graphics/shadows/vsm.glsl.d.ts +0 -3
  644. package/src/engine/graphics/shadows/vsm.glsl.d.ts.map +0 -1
  645. package/src/engine/graphics/shadows/vsm.glsl.js +0 -43
  646. package/src/engine/graphics/util/composeMatrix4.d.ts +0 -9
  647. package/src/engine/graphics/util/composeMatrix4.d.ts.map +0 -1
  648. package/src/engine/graphics/util/composeMatrix4.js +0 -13
  649. package/src/engine/graphics/util/threeUpdateMatrix.d.ts +0 -6
  650. package/src/engine/graphics/util/threeUpdateMatrix.d.ts.map +0 -1
  651. package/src/engine/graphics/util/threeUpdateMatrix.js +0 -14
  652. package/src/engine/graphics/util/threeUpdateTransform.d.ts +0 -6
  653. package/src/engine/graphics/util/threeUpdateTransform.d.ts.map +0 -1
  654. package/src/engine/graphics/util/threeUpdateTransform.js +0 -16
  655. package/src/engine/sound/ecs/SoundController.d.ts.map +0 -1
  656. package/src/engine/sound/ecs/SoundControllerSystem.d.ts +0 -23
  657. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +0 -1
  658. package/src/engine/sound/ecs/SoundControllerSystem.js +0 -103
  659. package/src/engine/sound/ecs/emitter/SoundAttenuationFunction.d.ts.map +0 -1
  660. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +0 -1
  661. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +0 -55
  662. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +0 -1
  663. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +0 -265
  664. package/src/engine/sound/ecs/emitter/SoundEmitterFlags.d.ts.map +0 -1
  665. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.d.ts.map +0 -1
  666. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +0 -88
  667. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +0 -1
  668. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -159
  669. package/src/engine/sound/ecs/emitter/SoundPanningModelType.d.ts.map +0 -1
  670. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +0 -1
  671. package/src/engine/sound/ecs/emitter/SoundTrackFlags.d.ts.map +0 -1
  672. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts +0 -8
  673. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts.map +0 -1
  674. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.js +0 -41
  675. package/src/shade/playground/FramePerformanceMonitor.d.ts +0 -114
  676. package/src/shade/playground/FramePerformanceMonitor.d.ts.map +0 -1
  677. package/src/shade/playground/FramePerformanceMonitor.js +0 -468
  678. package/src/shade/playground/add_random_lights.d.ts +0 -8
  679. package/src/shade/playground/add_random_lights.d.ts.map +0 -1
  680. package/src/shade/playground/add_random_lights.js +0 -50
  681. package/src/shade/playground/animation_prototype.d.ts +0 -24
  682. package/src/shade/playground/animation_prototype.d.ts.map +0 -1
  683. package/src/shade/playground/animation_prototype.js +0 -508
  684. package/src/shade/playground/animation_prototype_skinning.d.ts +0 -31
  685. package/src/shade/playground/animation_prototype_skinning.d.ts.map +0 -1
  686. package/src/shade/playground/animation_prototype_skinning.js +0 -647
  687. package/src/shade/playground/animation_prototype_stress.d.ts +0 -35
  688. package/src/shade/playground/animation_prototype_stress.d.ts.map +0 -1
  689. package/src/shade/playground/animation_prototype_stress.js +0 -765
  690. package/src/shade/playground/enable_picker.d.ts +0 -8
  691. package/src/shade/playground/enable_picker.d.ts.map +0 -1
  692. package/src/shade/playground/enable_picker.js +0 -60
  693. package/src/shade/playground/gltf_skinned_prototype.d.ts +0 -27
  694. package/src/shade/playground/gltf_skinned_prototype.d.ts.map +0 -1
  695. package/src/shade/playground/gltf_skinned_prototype.js +0 -560
  696. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts +0 -24
  697. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts.map +0 -1
  698. package/src/shade/playground/gltf_skinned_stress_prototype.js +0 -387
  699. package/src/shade/playground/gltf_viewer.d.ts +0 -2
  700. package/src/shade/playground/gltf_viewer.d.ts.map +0 -1
  701. package/src/shade/playground/gltf_viewer.js +0 -283
  702. package/src/shade/playground/main.d.ts.map +0 -1
  703. package/src/shade/playground/main.js +0 -2727
  704. package/src/shade/playground/make_animated_instances.d.ts +0 -9
  705. package/src/shade/playground/make_animated_instances.d.ts.map +0 -1
  706. package/src/shade/playground/make_animated_instances.js +0 -118
  707. package/src/shade/playground/prototype_virtual_texture.d.ts +0 -2
  708. package/src/shade/playground/prototype_virtual_texture.d.ts.map +0 -1
  709. package/src/shade/playground/prototype_virtual_texture.js +0 -274
  710. package/src/shade/playground/prototype_volumetrics_01.d.ts +0 -2
  711. package/src/shade/playground/prototype_volumetrics_01.d.ts.map +0 -1
  712. package/src/shade/playground/prototype_volumetrics_01.js +0 -206
  713. package/src/shade/playground/sample.d.ts +0 -2
  714. package/src/shade/playground/sample.d.ts.map +0 -1
  715. package/src/shade/playground/sample.js +0 -234
  716. package/src/shade/playground/sample_load_gltf.d.ts +0 -9
  717. package/src/shade/playground/sample_load_gltf.d.ts.map +0 -1
  718. package/src/shade/playground/sample_load_gltf.js +0 -103
  719. package/src/shade/playground/spread_node3d_grid.d.ts +0 -7
  720. package/src/shade/playground/spread_node3d_grid.d.ts.map +0 -1
  721. package/src/shade/playground/spread_node3d_grid.js +0 -20
  722. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts +0 -24
  723. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts.map +0 -1
  724. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.js +0 -88
  725. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts +0 -3
  726. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts.map +0 -1
  727. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.js +0 -49
  728. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts +0 -3
  729. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts.map +0 -1
  730. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.js +0 -93
  731. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts +0 -24
  732. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts.map +0 -1
  733. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.js +0 -119
  734. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts +0 -7
  735. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts.map +0 -1
  736. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.js +0 -235
  737. package/src/shade/renderer/gpu_primitive/sort/NOTES.md +0 -5
  738. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts +0 -7
  739. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts.map +0 -1
  740. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.js +0 -136
  741. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts +0 -18
  742. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts.map +0 -1
  743. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.js +0 -108
  744. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts +0 -35
  745. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts.map +0 -1
  746. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.js +0 -42
  747. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts +0 -13
  748. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts.map +0 -1
  749. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.js +0 -116
  750. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts +0 -3
  751. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts.map +0 -1
  752. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.js +0 -120
  753. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts +0 -3
  754. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts.map +0 -1
  755. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.js +0 -76
  756. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts +0 -3
  757. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts.map +0 -1
  758. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.js +0 -125
  759. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts +0 -3
  760. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts.map +0 -1
  761. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.js +0 -140
  762. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts +0 -3
  763. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts.map +0 -1
  764. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.js +0 -338
  765. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts +0 -7
  766. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts.map +0 -1
  767. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.js +0 -261
  768. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts +0 -3
  769. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts.map +0 -1
  770. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.js +0 -14
  771. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts +0 -25
  772. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts.map +0 -1
  773. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.js +0 -25
  774. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts +0 -15
  775. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts.map +0 -1
  776. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.js +0 -192
  777. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts +0 -5
  778. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts.map +0 -1
  779. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.js +0 -990
  780. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts +0 -5
  781. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts.map +0 -1
  782. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.js +0 -82
  783. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts +0 -3
  784. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts.map +0 -1
  785. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.js +0 -44
  786. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts +0 -5
  787. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts.map +0 -1
  788. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.js +0 -156
  789. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts +0 -6
  790. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts.map +0 -1
  791. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.js +0 -55
  792. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts +0 -14
  793. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts.map +0 -1
  794. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js +0 -110
  795. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts +0 -12
  796. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts.map +0 -1
  797. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.js +0 -74
  798. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts +0 -3
  799. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts.map +0 -1
  800. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.js +0 -125
  801. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
  802. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
  803. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
  804. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
  805. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
  806. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
  807. package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
  808. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
  809. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
  810. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
  811. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
  812. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
  813. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
  814. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
  815. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
  816. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
  817. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
  818. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
  819. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
  820. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
  821. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
  822. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
  823. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
  824. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
  825. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
  826. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
  827. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
  828. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
  829. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
  830. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
  831. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
  832. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
  833. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
  834. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
  835. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
  836. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
  837. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
  838. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
  839. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
  840. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
  841. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
  842. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
  843. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
  844. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
  845. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
  846. /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
@@ -1,765 +0,0 @@
1
- import Quaternion from "../../core/geom/Quaternion.js";
2
- import Vector3 from "../../core/geom/Vector3.js";
3
- import { randomFloatBetween } from "../../core/math/random/randomFloatBetween.js";
4
- import { randomFromArray } from "../../core/math/random/randomFromArray.js";
5
- import { roundFair } from "../../core/math/random/roundFair.js";
6
- import { seededRandom } from "../../core/math/random/seededRandom.js";
7
- import { AnimationCurve } from "../../engine/animation/curve/AnimationCurve.js";
8
- import { Keyframe } from "../../engine/animation/curve/Keyframe.js";
9
- import { Transform } from "../../engine/ecs/transform/Transform.js";
10
- import { FrameGraph } from "../../engine/graphics/render/frame_graph/FrameGraph.js";
11
- import { ShadeGPUCommandContext } from "../device/ShadeGPUCommandContext.js";
12
- import { shader_animation_apply, WORKGROUP_SIZE as ANIMATION_APPLY_WORKGROUP_SIZE } from "../renderer/animation/shader_animation_apply.js";
13
- import {
14
- shader_animation_pose_resolve,
15
- WORKGROUP_SIZE as ANIMATION_POSE_RESOLVE_WORKGROUP_SIZE,
16
- } from "../renderer/animation/shader_animation_pose_resolve.js";
17
- import { BoxGeometry, PlaneGeometry } from "../renderer/geometry/BoxGeometry.js";
18
- import { RasterizationCollectionType } from "../renderer/rasterize/expand/RasterizationCollectionType.js";
19
- import { make_sunlight } from "../renderer/light/make_sunlight.js";
20
- import { load_default_environment } from "./load_default_environment.js";
21
- import { StandardShadeMaterial } from "../renderer/material/StandardShadeMaterial.js";
22
- import { Mesh } from "../renderer/scene/Mesh.js";
23
- import { Node3D } from "../renderer/scene/Node3D.js";
24
- import { Node3DProperty } from "../renderer/object_property/Node3DProperty.js";
25
- import {
26
- REFRESH_ALL_MESH_BOUNDS_SETTINGS_STRUCT,
27
- shader_refresh_all_mesh_bounds
28
- } from "../renderer/object_property/shader_refresh_all_mesh_bounds.js";
29
- import { graph_scene_update_transform_hierarchy } from "../renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js";
30
- import { graph_import_buffer } from "../renderer/shader/graph/graph_import_buffer.js";
31
-
32
- /**
33
- * Number of trees per side of the grid; total tree count is the square
34
- * of this. Adjust to scale the load — each tree adds dozens to thousands
35
- * of joints depending on how the branching dice land.
36
- */
37
- const TREE_GRID_RESOLUTION = 3;
38
-
39
- /**
40
- * Centre-to-centre spacing between trees in metres. Kept short so a
41
- * single camera pose covers the full grid; small enough that limbs at
42
- * full sway don't punch into the next tree's roots.
43
- */
44
- const TREE_SPACING = 3.0;
45
-
46
- /**
47
- * Limb dimensions. The box is centred on its origin in the geometry,
48
- * but each Mesh is offset by `BOX_HEIGHT/2` along its joint's local +Y
49
- * so the joint sits at the *base* of the limb. Children attach at the
50
- * limb's tip (offset `BOX_HEIGHT` from the joint origin).
51
- */
52
- const BOX_HEIGHT = 0.3;
53
- const BOX_THICKNESS = 0.08;
54
-
55
- /**
56
- * Hard depth cap for any branch — guards against pathologically long
57
- * tails when the branching distribution stays at ≥ 1 by chance. The
58
- * deepest a leaf transform's parent walk can go is `MAX_DEPTH + 1`
59
- * (the wrapping joint plus the visual mesh), comfortably under the
60
- * hierarchy shader's MAX_PARENT_WALK = 64.
61
- */
62
- const MAX_DEPTH = 32;
63
-
64
- /**
65
- * Number of pre-built rotation tracks shared across every joint. Each
66
- * limb picks one at random via `randomFromArray`, so the visual
67
- * variety is bounded by this pool size — more tracks → more distinct
68
- * rotation targets visible at once. Per-frame cost is independent of
69
- * the pool: tracks are GPU-side animation data, evaluated by the
70
- * apply shader, not iterated on the CPU.
71
- */
72
- const TRACK_POOL_SIZE = 1024;
73
-
74
- /**
75
- * Common loop period for every track in the pool — the curve
76
- * evaluator clamps `time` to `[time_min, time_max]`, so a single
77
- * clip-time can only meaningfully drive tracks that share its range.
78
- * Per-tree clips get a random phase offset within this period for
79
- * cross-tree variety.
80
- */
81
- const LOOP_PERIOD_S = 7;
82
-
83
- /**
84
- * How far each joint slerps from identity at the apex of its cycle. A
85
- * full random quaternion is on average a ~90° rotation; this scales
86
- * that down so a deep chain doesn't sweep through wild angles when
87
- * everything aligns.
88
- */
89
- const ROTATION_SLERP_FACTOR = 0.04;
90
-
91
- /**
92
- * Seed for the scene generator so the topology and the per-joint
93
- * animation choices are reproducible.
94
- */
95
- const RANDOM_SEED = 1234;
96
-
97
- /**
98
- * Shape of the per-joint branching distribution.
99
- *
100
- * Branch count is rolled as `roundFair(randomFloatBetween(lo, hi))`,
101
- * with `lo` and `hi` shrinking as we go deeper. The floor decays
102
- * slowly while the range (hi − lo) decays much faster, so deeper
103
- * levels collapse to a near-deterministic ~0.85 — almost always one
104
- * child, occasionally none, never branching. That keeps the tree
105
- * extending without exploding: depth ~32 is reachable by chance, but
106
- * the total node count stays tractable.
107
- *
108
- * @param {number} depth
109
- * @returns {{lo: number, hi: number}}
110
- */
111
- function branching_range_at_depth(depth) {
112
- const FLOOR_INITIAL = 1.0;
113
- const FLOOR_SHRINK_PER_LEVEL = 0.99;
114
-
115
- const RANGE_INITIAL = 2.0;
116
- const RANGE_SHRINK_PER_LEVEL = 0.9;
117
-
118
- const lo = FLOOR_INITIAL * Math.pow(FLOOR_SHRINK_PER_LEVEL, depth);
119
- const range = RANGE_INITIAL * Math.pow(RANGE_SHRINK_PER_LEVEL, depth);
120
-
121
- return { lo, hi: lo + range };
122
- }
123
-
124
- /**
125
- * Build a quaternion-rotation animation track that oscillates between
126
- * identity and `target` and back over `period_s` seconds.
127
- *
128
- * The four channels (x, y, z, w) animate independently as scalar
129
- * Hermite curves; the apply shader normalizes the result so any drift
130
- * off the unit 4-sphere from per-channel interpolation is corrected.
131
- * Three keyframes per channel are enough for a small offset — the
132
- * exact path between identity and a small `target` is nearly linear,
133
- * so smoothed cubic interpolation is well within visual tolerance.
134
- *
135
- * @param {GPUAnimationManager} manager
136
- * @param {Quaternion} source
137
- * @param {Quaternion} target
138
- * @param {number} period_s
139
- * @returns {number} track id
140
- */
141
- function add_oscillating_rotation_track(manager, source, target, period_s) {
142
- const x_keys = [
143
- Keyframe.from(0, source.x),
144
- Keyframe.from(period_s / 2, target.x),
145
- Keyframe.from(period_s, source.x),
146
- ];
147
- const y_keys = [
148
- Keyframe.from(0, source.y),
149
- Keyframe.from(period_s / 2, target.y),
150
- Keyframe.from(period_s, source.y),
151
- ];
152
- const z_keys = [
153
- Keyframe.from(0, source.z),
154
- Keyframe.from(period_s / 2, target.z),
155
- Keyframe.from(period_s, source.z),
156
- ];
157
- const w_keys = [
158
- Keyframe.from(0, source.w),
159
- Keyframe.from(period_s / 2, target.w),
160
- Keyframe.from(period_s, source.w),
161
- ];
162
-
163
- const x_curve = AnimationCurve.from(x_keys);
164
- x_curve.alignAllTangents();
165
- const y_curve = AnimationCurve.from(y_keys);
166
- y_curve.alignAllTangents();
167
- const z_curve = AnimationCurve.from(z_keys);
168
- z_curve.alignAllTangents();
169
- const w_curve = AnimationCurve.from(w_keys);
170
- w_curve.alignAllTangents();
171
-
172
- return manager.add_track({
173
- x: manager.add_curve(x_curve),
174
- y: manager.add_curve(y_curve),
175
- z: manager.add_curve(z_curve),
176
- w: manager.add_curve(w_curve),
177
- });
178
- }
179
-
180
- /**
181
- * Recursively build a single tree of jointed limbs into `parent`.
182
- *
183
- * Each level adds:
184
- * - a non-mesh `Node3D` (the joint) that owns the rotation animation,
185
- * positioned at the tip of the parent's limb so its rotation pivots
186
- * around that point;
187
- * - a child `Mesh` (the visible limb) offset along the joint's local
188
- * +Y so the limb extends outward from the pivot;
189
- * - 0..N child joints, recursively, attached at the limb's tip.
190
- *
191
- * Joints are pushed into `joints_out` (a flat list) so the deferred
192
- * animation-binding pass can iterate them once GPU node ids are
193
- * known.
194
- *
195
- * @param {Node3D} parent_joint Parent in the hierarchy. The first
196
- * call passes the tree root; recursive calls pass the joint
197
- * spawned at the previous level.
198
- * @param {number} depth
199
- * @param {function():number} random
200
- * @param {BoxGeometry} limb_geometry
201
- * @param {StandardShadeMaterial} limb_material
202
- * @param {Node3D[]} joints_out Accumulator the caller scans after the
203
- * tree is fully attached to the scene.
204
- */
205
- function grow_branch(parent_joint, depth, random, limb_geometry, limb_material, joints_out) {
206
- // Visual limb: offset along the joint's local +Y so the limb
207
- // extends from the joint origin upward. Rotating the joint pivots
208
- // both the limb and any child joints around this origin — exactly
209
- // the "elbow at the base of the bone" feel we want.
210
- const limb = new Mesh();
211
- limb.geometry = limb_geometry;
212
- limb.material = limb_material;
213
- limb.transform_local.setTranslation(0, BOX_HEIGHT / 2, 0);
214
- parent_joint.addChild(limb);
215
-
216
- joints_out.push(parent_joint);
217
-
218
- if (depth >= MAX_DEPTH) return;
219
-
220
- const { lo, hi } = branching_range_at_depth(depth);
221
- const branch_count = roundFair(randomFloatBetween(random, lo, hi), random);
222
-
223
- for (let i = 0; i < branch_count; i++) {
224
- const child_joint = new Node3D();
225
- // Hung off the tip of the parent limb so children visually
226
- // attach at the far end. Same axis as the limb's extension —
227
- // the joint's rotation pivot is the limb tip.
228
- child_joint.transform_local.setTranslation(0, BOX_HEIGHT, 0);
229
- parent_joint.addChild(child_joint);
230
-
231
- grow_branch(child_joint, depth + 1, random, limb_geometry, limb_material, joints_out);
232
- }
233
- }
234
-
235
- /**
236
- * Stress test for the GPU animation system and the transform-hierarchy
237
- * resolve pass.
238
- *
239
- * Generates a `TREE_GRID_RESOLUTION × TREE_GRID_RESOLUTION` grid of
240
- * jointed branches in the XZ plane. The animation database is structured as:
241
- * - a shared pool of `TRACK_POOL_SIZE` rotation tracks, each with a
242
- * distinct small random target rotation slerped `ROTATION_SLERP_FACTOR`
243
- * of the way toward a uniformly-random orientation;
244
- * - one clip per tree, with one binding per joint pointing at a
245
- * randomly-picked track from the pool;
246
- * - per-tree random phase offsets so neighbouring trees animate out
247
- * of sync without needing per-track time-scaling.
248
- *
249
- * Per-frame the engine advances one clip per tree and dispatches
250
- * the apply shader over every (clip, binding) pair (~total joint
251
- * count). The transform-hierarchy pass sees long parent chains (up to
252
- * depth `MAX_DEPTH`) with deep-tree fan-out near the roots, exercising
253
- * both the lookback fast-path and the local-walk fallback in
254
- * `shader_nodes_update_transform_hierarchy`.
255
- *
256
- * Topology, track targets, and per-joint track picks are all seeded by
257
- * `RANDOM_SEED` so reruns produce identical scenes.
258
- *
259
- * @param {object} args
260
- * @param {Renderer} args.renderer
261
- * @param {Scene} args.scene
262
- * @param {OrbitalCameraController} args.controller
263
- */
264
- export function animation_prototype_stress({ renderer, scene, controller }) {
265
-
266
- const random = seededRandom(RANDOM_SEED);
267
-
268
- // ── Lighting & environment ──────────────────────────────────
269
- scene.lights.add(make_sunlight({
270
- intensity: 3,
271
- direction: new Vector3(-0.4, -1, -0.3),
272
- }));
273
-
274
- load_default_environment(scene);
275
-
276
- // ── Ground plane ────────────────────────────────────────────
277
- // Sized to fit the grid plus margin on every side.
278
- const ground_extent = TREE_GRID_RESOLUTION * TREE_SPACING + 10;
279
- const plane_material = new StandardShadeMaterial();
280
- plane_material.diffuse_color.parse("#b5b5b5");
281
- plane_material.roughness_factor = 1;
282
- plane_material.metallic_factor = 0;
283
-
284
- const plane_transform = Transform.fromJSON({ position: { x: 0, y: 0, z: 0 } });
285
- plane_transform.lookAt(Vector3.up);
286
-
287
- const ground = Mesh.from(
288
- new PlaneGeometry(ground_extent, ground_extent, 1, 1),
289
- plane_material,
290
- plane_transform.matrix,
291
- );
292
- ground.name = "Ground";
293
- scene.add(ground);
294
-
295
- // ── Trees ──────────────────────────────────────────────────
296
- // One geometry + material shared across every limb. The mesh
297
- // count still scales with joints (rasterization, culling,
298
- // bounds-refresh all run per mesh), but vertex-buffer / material
299
- // memory is constant.
300
- const limb_geometry = new BoxGeometry(BOX_THICKNESS, BOX_HEIGHT, BOX_THICKNESS);
301
- const limb_material = new StandardShadeMaterial();
302
- limb_material.diffuse_color.parse("#7E5A3C");
303
- limb_material.roughness_factor = 0.7;
304
- limb_material.metallic_factor = 0;
305
-
306
- // ── Animation manager + track pool ─────────────────────────
307
- // Pool of TRACK_POOL_SIZE pre-built rotation tracks, each with a
308
- // distinct small random target rotation. Tracks are created once
309
- // upfront; every limb picks one at random via `randomFromArray`,
310
- // so the apply shader sees a steady-state animation database
311
- // regardless of how many trees end up referencing each track.
312
- // Animation manager is owned by the scene context — fetch it via
313
- // the scene context, don't construct a separate one. See the
314
- // matching note in animation_prototype.js.
315
- const animation_manager = renderer.scenes.obtain(scene).animation_manager;
316
-
317
- /** @type {number[]} */
318
- const track_pool = [];
319
- {
320
- const scratch_target = new Quaternion();
321
- const scratch_source = new Quaternion();
322
- for (let i = 0; i < TRACK_POOL_SIZE; i++) {
323
- scratch_target.random(random);
324
- scratch_target.slerpQuaternions(Quaternion.identity, scratch_target, ROTATION_SLERP_FACTOR);
325
- scratch_source.normalize();
326
-
327
- scratch_source.random(random);
328
- scratch_source.slerpQuaternions(Quaternion.identity, scratch_source, ROTATION_SLERP_FACTOR);
329
- scratch_source.normalize();
330
-
331
- const track_id = add_oscillating_rotation_track(
332
- animation_manager, scratch_source, scratch_target, LOOP_PERIOD_S
333
- );
334
- track_pool.push(track_id);
335
- }
336
- }
337
-
338
- let total_joint_count = 0;
339
-
340
- /**
341
- * Per-tree state captured at scene-build time. The joints array
342
- * and the corresponding track-pick array are populated together
343
- * during topology generation (track picks happen here so the
344
- * scene's reproducible-from-seed property covers track selection
345
- * too); the deferred animation-binding pass turns each row into a
346
- * single clip whose bindings reference the picked tracks.
347
- *
348
- * @type {{
349
- * joints: Node3D[],
350
- * track_ids: number[],
351
- * phase_offset_s: number,
352
- * }[]}
353
- */
354
- const trees = [];
355
-
356
- // Grid centred on the origin in the XZ plane. With
357
- // TREE_GRID_RESOLUTION = 10 and TREE_SPACING = 1 each side spans
358
- // [-4.5, 4.5]. Iterated as a flat index so the rest of the loop
359
- // body needs no extra indentation.
360
- const total_tree_count = TREE_GRID_RESOLUTION * TREE_GRID_RESOLUTION;
361
- const grid_start = -((TREE_GRID_RESOLUTION - 1) * TREE_SPACING) / 2;
362
-
363
- for (let i = 0; i < total_tree_count; i++) {
364
- const gx = i % TREE_GRID_RESOLUTION;
365
- const gz = Math.floor(i / TREE_GRID_RESOLUTION);
366
-
367
- const tree_root = new Node3D();
368
- tree_root.name = `tree_${gx}_${gz}_root`;
369
- tree_root.transform_local.setTranslation(
370
- grid_start + gx * TREE_SPACING,
371
- 0,
372
- grid_start + gz * TREE_SPACING,
373
- );
374
-
375
- const tree_joints = [];
376
- grow_branch(tree_root, 0, random, limb_geometry, limb_material, tree_joints);
377
-
378
- // updateMatrices populates each node's transform_global from
379
- // local + parent.global on the CPU side, so the first
380
- // GPUSceneContext.build has correct globals to upload before
381
- // the GPU hierarchy pass takes over.
382
- tree_root.updateMatrices();
383
-
384
- scene.add(tree_root);
385
-
386
- // Pick a track per joint now, while RNG state is fresh.
387
- // Doing it in two passes (build topology → pick tracks)
388
- // would also work, but coupling them keeps the seed → output
389
- // mapping straightforward to reason about.
390
- const tree_track_ids = new Array(tree_joints.length);
391
- for (let j = 0; j < tree_joints.length; j++) {
392
- tree_track_ids[j] = randomFromArray(random, track_pool);
393
- }
394
-
395
- trees.push({
396
- joints: tree_joints,
397
- track_ids: tree_track_ids,
398
- phase_offset_s: randomFloatBetween(random, 0, LOOP_PERIOD_S),
399
- });
400
-
401
- total_joint_count += tree_joints.length;
402
- }
403
-
404
- // Prime two rasterization collection limits — Meshes / Meshlets —
405
- // through `limits.prime()` (sets both stats AND the runaway-clamp
406
- // baseline so the renderer's first `update()` doesn't observe
407
- // these as growth and reset siblings).
408
- //
409
- // Meshes / Meshlets: a 3×3 tree grid with depth-32 branching
410
- // produces ~40k limb meshes, well past the GPUCollectionLimits
411
- // defaults of 1e4 / 2e5. Without the prime, the cull-pass output
412
- // overflows `arrayLength(output.elements)` and the truncated tail
413
- // drops most trees from the visible set — ground at row 0
414
- // survives because page-iteration order puts it first in the
415
- // output stream. Each box has ~6 meshlets (one per face); pad to
416
- // 10 to absorb larger primitives or any future encoder change
417
- // that bumps the per-mesh meshlet count.
418
- {
419
- const limits = renderer.graphics.collection_limits;
420
-
421
- // mesh count = ground (1) + every limb across every tree.
422
- // `scene.instances.instances` is the cached mesh-only filter
423
- // of the scene's InstanceBatch — same accessor scene.build
424
- // iterates.
425
- const total_mesh_count = scene.instances.instances.length;
426
- const meshes_target = Math.ceil(total_mesh_count * 1.5);
427
- if (meshes_target > limits.get_limit(RasterizationCollectionType.Meshes)) {
428
- limits.prime(RasterizationCollectionType.Meshes, meshes_target);
429
- }
430
-
431
- const meshlets_target = total_mesh_count * 10;
432
- if (meshlets_target > limits.get_limit(RasterizationCollectionType.Meshlets)) {
433
- limits.prime(RasterizationCollectionType.Meshlets, meshlets_target);
434
- }
435
-
436
- console.log(
437
- `[stress] total_joint_count=${total_joint_count}, ` +
438
- `total_mesh_count=${total_mesh_count}; ` +
439
- `Meshes=${limits.get_limit(RasterizationCollectionType.Meshes)}, ` +
440
- `Meshlets=${limits.get_limit(RasterizationCollectionType.Meshlets)}`
441
- );
442
- }
443
-
444
- // ── Camera ──────────────────────────────────────────────────
445
- // Pulled back along +Z and slightly elevated so the whole grid
446
- // fits in frame at startup.
447
- const grid_span = TREE_GRID_RESOLUTION * TREE_SPACING;
448
- const camera_position = new Vector3(0, BOX_HEIGHT * MAX_DEPTH * 0.4, grid_span * 0.55);
449
- const camera_target = new Vector3(0, BOX_HEIGHT * MAX_DEPTH * 0.25, 0);
450
- controller.look(camera_position, camera_target);
451
- controller.camera.near = 0.1;
452
- controller.camera.far = grid_span * 3 + 10;
453
-
454
- // ── Deferred clip creation ─────────────────────────────────
455
- // Clips can't be created until the joints have GPU rows in
456
- // `id_mapping`, which only happens after the first
457
- // `GPUSceneContext.build`. We run this once on the first
458
- // onFrameFinished where the scene database is populated.
459
-
460
- /**
461
- * One clip id per tree, captured in the same order as `trees`.
462
- * Used per-frame to advance each clip's time.
463
- * @type {number[]}
464
- */
465
- const tree_clip_ids = new Array(trees.length);
466
-
467
- let bindings_initialised = false;
468
- let post_apply_readback_done = false;
469
- let post_apply_frames_remaining = 1;
470
- let render_state_logged = false;
471
-
472
- /**
473
- * Diagnostic — one-shot dump of what the GPU side actually believes
474
- * about the scene right after the first build runs. Pinpoints the
475
- * category of bug for "trees aren't visible":
476
- * - meshes_table empty / row 0 only → mesh-add path didn't run.
477
- * - meshes_table populated but every row points at the same geometry
478
- * id → obtain_geometry_index folded source + clones into one slot.
479
- * - meshes_table populated but every row's geometry id is past
480
- * geometry_count → clones polluted the buffer for non-skinned meshes.
481
- * - meshes_table populated, geometry ids reasonable, but bounds are
482
- * NaN / garbage → bounding-box / sphere serialisation regressed.
483
- *
484
- * @param {GPUSceneContext} gpu_scene
485
- */
486
- function log_render_state(gpu_scene) {
487
- const meshes_table = gpu_scene.scene_database.get('meshes');
488
- const transforms_table = gpu_scene.scene_database.get('transforms');
489
- const geometry_count = gpu_scene.geometries.managed.size;
490
-
491
- // CPU-side meshes_table.count (count() is the cardinality of the
492
- // occupancy bitset, populated synchronously by add() during build).
493
- const mesh_row_count = meshes_table.count;
494
- const transform_row_count = transforms_table.count;
495
-
496
- console.log(
497
- `[stress] render state: ` +
498
- `meshes_table.count=${mesh_row_count}, ` +
499
- `transforms_table.count=${transform_row_count}, ` +
500
- `geometry_count=${geometry_count}, ` +
501
- `instance_count=${gpu_scene.scene.instance_count}, ` +
502
- `node_count=${gpu_scene.scene.node_count}`
503
- );
504
-
505
- // Async: read the meshes_table back from the GPU and dump a
506
- // representative cross-section so we can compare CPU's view with
507
- // what's actually in the buffer the rasterizer reads.
508
- gpu_scene.scene_database.debug_table_read_element('meshes', 0).then((row0) => {
509
- const summary = row0
510
- ? `geometry=${row0.geometry}, material=${row0.material}, node=${row0.node}, bb=${JSON.stringify(row0.bounding_box)}`
511
- : 'undefined';
512
- console.log(`[stress] gpu meshes[0] = ${summary}`);
513
- });
514
-
515
- if (mesh_row_count > 1) {
516
- gpu_scene.scene_database.debug_table_read_element('meshes', 1).then((row1) => {
517
- const summary = row1
518
- ? `geometry=${row1.geometry}, material=${row1.material}, node=${row1.node}, bb=${JSON.stringify(row1.bounding_box)}`
519
- : 'undefined';
520
- console.log(`[stress] gpu meshes[1] = ${summary}`);
521
- });
522
- }
523
-
524
- if (mesh_row_count > 2) {
525
- gpu_scene.scene_database.debug_table_read_element('meshes', mesh_row_count - 1).then((rowN) => {
526
- const summary = rowN
527
- ? `geometry=${rowN.geometry}, material=${rowN.material}, node=${rowN.node}, bb=${JSON.stringify(rowN.bounding_box)}`
528
- : 'undefined';
529
- console.log(`[stress] gpu meshes[${mesh_row_count - 1}] = ${summary}`);
530
- });
531
- }
532
- }
533
-
534
- function initialise_bindings(gpu_scene) {
535
- let min_instance = Infinity;
536
- let max_instance = -Infinity;
537
- let undefined_count = 0;
538
- let total_bindings = 0;
539
-
540
- // Sanity: walk id_mapping and count entries that resolve into
541
- // the scene/mesh/joint ranges based on what we know about how
542
- // GPUSceneContext.build allocates rows. A joint should never
543
- // resolve to scene's row 0 or to a mesh row — if any do, the
544
- // binding will write rotation into the wrong place.
545
- const expected_first_joint_row = 1 + gpu_scene.scene.instance_count;
546
- let joints_outside_expected_range = 0;
547
-
548
- for (let i = 0; i < trees.length; i++) {
549
- const tree = trees[i];
550
- const bindings = [];
551
-
552
- for (let j = 0; j < tree.joints.length; j++) {
553
- const joint = tree.joints[j];
554
- const node_row = gpu_scene.id_mapping.get(joint.id);
555
- if (node_row === undefined) {
556
- undefined_count++;
557
- continue;
558
- }
559
-
560
- if (node_row < expected_first_joint_row) {
561
- joints_outside_expected_range++;
562
- }
563
-
564
- if (node_row < min_instance) min_instance = node_row;
565
- if (node_row > max_instance) max_instance = node_row;
566
- total_bindings++;
567
-
568
- bindings.push({
569
- track: tree.track_ids[j],
570
- instance: node_row,
571
- property: Node3DProperty.Rotation,
572
- });
573
- }
574
-
575
- if (bindings.length === 0) continue;
576
-
577
- tree_clip_ids[i] = animation_manager.add_clip({
578
- time: tree.phase_offset_s,
579
- bindings,
580
- });
581
- }
582
-
583
- console.log(
584
- `[stress] bindings: total=${total_bindings}, ` +
585
- `instance range=[${min_instance}, ${max_instance}], ` +
586
- `expected_first_joint_row=${expected_first_joint_row}, ` +
587
- `joints_in_mesh_range=${joints_outside_expected_range}, ` +
588
- `id_mapping_size=${gpu_scene.id_mapping.size}, ` +
589
- `instance_count=${gpu_scene.scene.instance_count}, ` +
590
- `node_count=${gpu_scene.scene.node_count}, ` +
591
- `undefined_resolutions=${undefined_count}`
592
- );
593
-
594
- bindings_initialised = true;
595
-
596
- }
597
-
598
- // Expose for debugging from the console.
599
- window.animation_manager = animation_manager;
600
-
601
- // ── Per-frame: advance clip times, dispatch evaluation ─────
602
- const start_time_ms = performance.now();
603
-
604
- renderer.onFrameFinished.add(() => {
605
- const gpu_scene = renderer.scenes.obtain(scene);
606
- const scene_database_buffer = gpu_scene.scene_database_buffer;
607
-
608
- if (scene_database_buffer === undefined) {
609
- // Scene hasn't been built yet — nothing to write into
610
- // and id_mapping isn't populated.
611
- return;
612
- }
613
-
614
- if (!render_state_logged) {
615
- log_render_state(gpu_scene);
616
- render_state_logged = true;
617
- }
618
-
619
- if (!bindings_initialised) {
620
- initialise_bindings(gpu_scene);
621
- }
622
-
623
- const elapsed_s = (performance.now() - start_time_ms) * 1e-3;
624
-
625
- // One clip per tree. Each clip drives every limb in its tree
626
- // through its own time axis; the per-tree phase offset is
627
- // baked in here (rather than as a track property) so all
628
- // tracks in the pool can share the same curve range and stay
629
- // cheap to evaluate.
630
- for (let i = 0; i < tree_clip_ids.length; i++) {
631
- const clip_id = tree_clip_ids[i];
632
- if (clip_id === undefined) continue;
633
- const t = (elapsed_s + trees[i].phase_offset_s) % LOOP_PERIOD_S;
634
- animation_manager.set_time(clip_id, t);
635
- }
636
-
637
- const apply_dispatch_groups = animation_manager.database
638
- .get('animation_bound_track_groups')
639
- .dispatch_group_count(ANIMATION_APPLY_WORKGROUP_SIZE);
640
- if (apply_dispatch_groups === 0) {
641
- return;
642
- }
643
-
644
- const cmd = ShadeGPUCommandContext.create(
645
- renderer.graphics,
646
- "AnimationPrototypeStress/Tick"
647
- );
648
-
649
- animation_manager.update(cmd);
650
-
651
- // Size the pose accumulator to cover every allocated row of
652
- // the transforms table — apply writes by absolute row index,
653
- // resolve iterates the table via page iterator.
654
- const transforms_table = gpu_scene.scene_database.get('transforms');
655
- const resolve_dispatch_groups = transforms_table.dispatch_group_count(
656
- ANIMATION_POSE_RESOLVE_WORKGROUP_SIZE
657
- );
658
- const pose_accumulator_rows = transforms_table.dispatch_page_count
659
- * transforms_table.descriptor.elements_per_page;
660
- animation_manager.ensure_pose_accumulator_capacity(pose_accumulator_rows);
661
-
662
- const graph = new FrameGraph("AnimationPrototypeStress/Tick");
663
-
664
- // ── Imported existing resources ────────────────────────
665
- const gr_animation_database = graph_import_buffer(
666
- graph, animation_manager.database.buffer, "animation_database"
667
- );
668
- const gr_scene_database = graph_import_buffer(
669
- graph, scene_database_buffer, "scene_database"
670
- );
671
- const gr_geometries = graph_import_buffer(
672
- graph, gpu_scene.geometries.buffer_metadata, "geometries"
673
- );
674
- const gr_materials = graph_import_buffer(
675
- graph, gpu_scene.materials.metadata_table.buffer, "materials"
676
- );
677
- const gr_pose_accumulator = graph_import_buffer(
678
- graph, animation_manager.pose_accumulator_buffer, "pose_accumulator"
679
- );
680
-
681
- // ── Pass 1: animation apply ───────────────────────────
682
- // Atomic-adds weighted per-binding values into the pose
683
- // accumulator. With one clip per tree at weight 1.0 and
684
- // disjoint joint targets, there's no inter-thread contention
685
- // on accumulator slots.
686
- const apply_data = {};
687
- const apply_pass = graph.add("animation/apply", apply_data, (data, resources, ctx) => {
688
- shader_animation_apply.dispatch({
689
- encoder: ctx.encoder,
690
- group_count_x: apply_dispatch_groups,
691
- bindings: {
692
- animation_database: resources.get(data.animation_database),
693
- pose_accumulator: resources.get(data.pose_accumulator),
694
- materials: resources.get(data.materials),
695
- },
696
- });
697
- });
698
-
699
- apply_data.animation_database = apply_pass.read(gr_animation_database);
700
- apply_data.materials = apply_pass.write(apply_pass.read(gr_materials));
701
- apply_data.pose_accumulator = apply_pass.write(apply_pass.read(gr_pose_accumulator));
702
-
703
- // ── Pass 2: pose resolve ──────────────────────────────
704
- const resolve_data = {};
705
- const resolve_pass = graph.add("animation/pose_resolve", resolve_data, (data, resources, ctx) => {
706
- if (resolve_dispatch_groups === 0) {
707
- return;
708
- }
709
- shader_animation_pose_resolve.dispatch({
710
- encoder: ctx.encoder,
711
- group_count_x: resolve_dispatch_groups,
712
- bindings: {
713
- scene_database: resources.get(data.scene_database),
714
- pose_accumulator: resources.get(data.pose_accumulator),
715
- },
716
- });
717
- });
718
-
719
- resolve_data.scene_database = resolve_pass.write(resolve_pass.read(gr_scene_database));
720
- resolve_data.pose_accumulator = resolve_pass.write(resolve_pass.read(apply_data.pose_accumulator));
721
-
722
- // ── Pass 3: propagate node.local → node.global ─────────
723
- const { scene_database: gr_scene_database_after_propagate } =
724
- graph_scene_update_transform_hierarchy({
725
- graph,
726
- scene: gpu_scene,
727
- scene_database: resolve_data.scene_database,
728
- });
729
-
730
- // ── Pass 4: blanket bounds refresh ─────────────────────
731
- // With the stress test driving joints (non-mesh nodes),
732
- // descendant limbs' world positions move but their bounds
733
- // don't update. Sweep every mesh once a frame until proper
734
- // descendant invalidation lands (Phase 3 — per-meshlet
735
- // bounds refresh).
736
- const refresh_all_data = {};
737
- const refresh_all_pass = graph.add(
738
- "object-property/refresh-all-mesh-bounds",
739
- refresh_all_data,
740
- (data, resources, ctx) => {
741
- const settings = ctx.encoder.allocateTransientValueBuffer(
742
- REFRESH_ALL_MESH_BOUNDS_SETTINGS_STRUCT,
743
- { instance_count: gpu_scene.scene.instance_count }
744
- );
745
- shader_refresh_all_mesh_bounds.dispatchLinear({
746
- encoder: ctx.encoder,
747
- element_count: gpu_scene.scene.instance_count,
748
- bindings: {
749
- settings,
750
- scene_database: resources.get(data.scene_database),
751
- geometries: resources.get(data.geometries),
752
- },
753
- });
754
- }
755
- );
756
- refresh_all_data.scene_database = refresh_all_pass.write(
757
- refresh_all_pass.read(gr_scene_database_after_propagate)
758
- );
759
- refresh_all_data.geometries = refresh_all_pass.read(gr_geometries);
760
-
761
- cmd.encodeGraph(graph);
762
- cmd.finish();
763
-
764
- });
765
- }