@woosh/meep-engine 3.2.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 (893) 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/avif/encoder_worker.js +5 -18
  6. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts +54 -0
  7. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
  8. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +10 -3
  9. package/src/core/color/PQ/PQ_constants.d.ts +43 -0
  10. package/src/core/color/PQ/PQ_constants.d.ts.map +1 -0
  11. package/src/core/color/PQ/PQ_constants.js +50 -0
  12. package/src/core/color/PQ/PQ_to_linear.d.ts +24 -0
  13. package/src/core/color/PQ/PQ_to_linear.d.ts.map +1 -0
  14. package/src/core/color/PQ/PQ_to_linear.js +35 -0
  15. package/src/core/color/PQ/linear_to_PQ.d.ts +27 -0
  16. package/src/core/color/PQ/linear_to_PQ.d.ts.map +1 -0
  17. package/src/core/color/PQ/linear_to_PQ.js +32 -0
  18. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_face.d.ts +32 -0
  19. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_face.d.ts.map +1 -0
  20. package/src/core/geom/3d/topology/struct/binary/query/bt_edge_other_face.js +59 -0
  21. package/src/core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.d.ts +26 -0
  22. package/src/core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.d.ts.map +1 -0
  23. package/src/core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.js +55 -0
  24. package/src/engine/EntityCreator.d.ts +19 -11
  25. package/src/engine/EntityCreator.d.ts.map +1 -1
  26. package/src/engine/EntityCreator.js +116 -94
  27. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  28. package/src/engine/achievements/AchievementManager.js +437 -433
  29. package/src/engine/animation/AnimatedActions.d.ts +6 -1
  30. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  31. package/src/engine/animation/AnimatedActions.js +111 -81
  32. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  33. package/src/engine/animation/AnimationUtils.js +234 -252
  34. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +275 -269
  35. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  36. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +290 -265
  37. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
  38. package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
  39. package/src/engine/graphics3/VolumetricLightMap.d.ts +90 -0
  40. package/src/engine/graphics3/VolumetricLightMap.d.ts.map +1 -0
  41. package/src/engine/graphics3/VolumetricLightMap.js +160 -0
  42. package/src/engine/graphics3/VolumetricLightMapSerializationAdapter.d.ts +32 -0
  43. package/src/engine/graphics3/VolumetricLightMapSerializationAdapter.d.ts.map +1 -0
  44. package/src/engine/graphics3/VolumetricLightMapSerializationAdapter.js +67 -0
  45. package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts +98 -0
  46. package/src/engine/graphics3/VolumetricLightMapSystem3.d.ts.map +1 -0
  47. package/src/engine/graphics3/VolumetricLightMapSystem3.js +261 -0
  48. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -1
  49. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  50. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +4 -2
  51. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  52. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +536 -0
  53. package/src/engine/sound/SoundEngine.d.ts +2 -2
  54. package/src/engine/sound/SoundEngine.js +124 -124
  55. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +20 -0
  56. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  57. package/src/engine/sound/ecs/audio/AudioEmitter.js +25 -2
  58. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  59. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  60. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +338 -314
  61. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +143 -0
  62. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -0
  63. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +191 -0
  64. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts +33 -0
  65. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -0
  66. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +81 -0
  67. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +65 -0
  68. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -0
  69. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +184 -0
  70. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +999 -993
  71. package/src/engine/sound/sopra/README.md +644 -643
  72. package/src/engine/sound/sopra/SopraEngine.d.ts +2 -2
  73. package/src/engine/sound/sopra/SopraEngine.js +432 -432
  74. package/src/engine/sound/sopra/legacy/SoundAttenuationFunction.d.ts.map +1 -0
  75. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.d.ts +3 -3
  76. package/src/engine/sound/sopra/legacy/SoundController.d.ts.map +1 -0
  77. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.js +176 -176
  78. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.d.ts +11 -27
  79. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -0
  80. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.js +352 -382
  81. package/src/engine/sound/sopra/legacy/SoundEmitterFlags.d.ts.map +1 -0
  82. package/src/engine/sound/sopra/legacy/SoundEmitterSerializationAdapter.d.ts.map +1 -0
  83. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  84. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  85. package/src/engine/sound/sopra/legacy/SoundPanningModelType.d.ts.map +1 -0
  86. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.d.ts +11 -55
  87. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -0
  88. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.js +278 -357
  89. package/src/engine/sound/sopra/legacy/SoundTrackFlags.d.ts.map +1 -0
  90. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts +34 -0
  91. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts.map +1 -0
  92. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.js +279 -0
  93. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +3 -3
  94. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  95. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -122
  96. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  97. package/src/shade/device/mock/SoftwareGPUDevice.js +7 -1
  98. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  99. package/src/shade/device/timing/GPUTimerArray.js +10 -0
  100. package/src/shade/playground/add_random_meshes.d.ts +19 -3
  101. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  102. package/src/shade/playground/add_random_meshes.js +132 -84
  103. package/src/shade/playground/bvh_repro/README.md +57 -0
  104. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts +33 -0
  105. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -0
  106. package/src/shade/playground/bvh_repro/bvh_repro_device.js +90 -0
  107. package/src/shade/playground/bvh_repro/index.html +124 -0
  108. package/src/shade/playground/bvh_repro/main.d.ts.map +1 -0
  109. package/src/shade/playground/bvh_repro/main.js +254 -0
  110. package/src/shade/playground/load_default_environment.d.ts +10 -1
  111. package/src/shade/playground/load_default_environment.d.ts.map +1 -1
  112. package/src/shade/playground/load_default_environment.js +44 -20
  113. package/src/shade/playground/make_playground_asset_manager.d.ts +16 -0
  114. package/src/shade/playground/make_playground_asset_manager.d.ts.map +1 -0
  115. package/src/shade/playground/make_playground_asset_manager.js +33 -0
  116. package/src/shade/playground/skinned_blas_refit/README.md +103 -0
  117. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +47 -0
  118. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -0
  119. package/src/shade/playground/skinned_blas_refit/add_floor.js +71 -0
  120. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts +28 -0
  121. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -0
  122. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +745 -0
  123. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts +30 -0
  124. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts.map +1 -0
  125. package/src/shade/playground/skinned_blas_refit/flat_environment.js +67 -0
  126. package/src/shade/playground/skinned_blas_refit/index.html +168 -0
  127. package/src/shade/playground/skinned_blas_refit/main.d.ts +8 -0
  128. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -0
  129. package/src/shade/playground/skinned_blas_refit/main.js +502 -0
  130. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +81 -0
  131. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -0
  132. package/src/shade/playground/skinned_blas_refit/place_character.js +116 -0
  133. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +21 -0
  134. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -0
  135. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +104 -0
  136. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts +23 -0
  137. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -0
  138. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +94 -0
  139. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +26 -0
  140. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -0
  141. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +134 -0
  142. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +40 -0
  143. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -0
  144. package/src/shade/playground/skinned_blas_refit/sweep_views.js +135 -0
  145. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts +31 -0
  146. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -0
  147. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +240 -0
  148. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +20 -0
  149. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -0
  150. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -0
  151. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +50 -0
  152. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -0
  153. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +366 -0
  154. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +17 -0
  155. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -0
  156. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -0
  157. package/src/shade/playground/sponza_path_trace/README.md +57 -0
  158. package/src/shade/playground/sponza_path_trace/index.html +164 -0
  159. package/src/shade/playground/sponza_path_trace/main.d.ts +8 -0
  160. package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -0
  161. package/src/shade/playground/sponza_path_trace/main.js +363 -0
  162. package/src/shade/renderer/Renderer.d.ts +16 -0
  163. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  164. package/src/shade/renderer/Renderer.js +23 -4
  165. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -1
  166. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  167. package/src/shade/renderer/animation/GPUAnimationManager.js +28 -3
  168. package/src/shade/renderer/animation/Skin.d.ts +9 -7
  169. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  170. package/src/shade/renderer/animation/Skin.js +9 -7
  171. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +35 -0
  172. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +1 -0
  173. package/src/shade/renderer/animation/compute_skin_world_bounds.js +146 -0
  174. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  175. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +41 -0
  176. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  177. package/src/shade/renderer/geometry/GPUGeometryManager.js +65 -15
  178. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +78 -7
  179. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  180. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +302 -77
  181. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +18 -6
  182. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  183. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +19 -6
  184. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts +51 -0
  185. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -0
  186. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.js +260 -0
  187. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +23 -0
  188. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -0
  189. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +82 -0
  190. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +25 -0
  191. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +1 -0
  192. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -0
  193. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +30 -0
  194. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -0
  195. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +122 -0
  196. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_empty_gpu_structure.d.ts +23 -0
  197. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_empty_gpu_structure.d.ts.map +1 -0
  198. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_empty_gpu_structure.js +34 -0
  199. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +55 -0
  200. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts.map +1 -0
  201. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -0
  202. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +37 -0
  203. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -0
  204. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +45 -0
  205. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -0
  206. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +201 -0
  207. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts +88 -0
  208. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -0
  209. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.js +233 -0
  210. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +18 -0
  211. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -0
  212. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +38 -0
  213. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +16 -0
  214. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -0
  215. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +79 -0
  216. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +16 -0
  217. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +49 -0
  219. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +43 -0
  220. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -0
  221. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -0
  222. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +24 -0
  223. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -0
  224. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +143 -0
  225. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +17 -0
  226. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -0
  227. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +83 -0
  228. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +24 -0
  229. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -0
  230. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +141 -0
  231. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +31 -0
  232. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -0
  233. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +422 -0
  234. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.d.ts.map +1 -1
  235. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.js +1 -2
  236. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts +9 -0
  237. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts.map +1 -0
  238. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.js +23 -0
  239. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts +18 -0
  240. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts.map +1 -0
  241. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.js +32 -0
  242. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts +27 -0
  243. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts.map +1 -0
  244. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.js +41 -0
  245. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts +25 -0
  246. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts.map +1 -0
  247. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.js +74 -0
  248. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts +71 -0
  249. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts.map +1 -0
  250. package/src/shade/renderer/gpu_primitive/sort/defs.js +79 -0
  251. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +37 -0
  252. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -0
  253. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +197 -0
  254. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts +16 -0
  255. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -0
  256. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +85 -0
  257. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts +15 -0
  258. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -0
  259. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +192 -0
  260. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts +12 -0
  261. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts.map +1 -0
  262. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.js +188 -0
  263. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +16 -4
  264. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  265. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +235 -24
  266. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  267. package/src/shade/renderer/scene/GPUSceneContext.js +15 -3
  268. package/src/shade/renderer/scene/SkinnedMesh.d.ts +57 -11
  269. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  270. package/src/shade/renderer/scene/SkinnedMesh.js +111 -11
  271. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.d.ts.map +1 -1
  272. package/src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js +12 -3
  273. package/src/shade/renderer/scene/optimization/geometry/internal/match_validate_topology.js +3 -3
  274. package/src/shade/renderer/scene/optimization/geometry/internal/seed_correspondence_from_window.js +3 -3
  275. package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
  276. package/src/shade/renderer/scene/serialization/deserialize_scene.js +0 -2
  277. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts +22 -0
  278. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -0
  279. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +145 -0
  280. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +18 -0
  281. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -0
  282. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +364 -0
  283. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts +9 -1
  284. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts.map +1 -1
  285. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.js +29 -21
  286. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts +22 -0
  287. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts.map +1 -0
  288. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.js +31 -0
  289. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.d.ts.map +1 -1
  290. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.js +87 -39
  291. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts +17 -0
  292. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts.map +1 -0
  293. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.js +40 -0
  294. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +15 -0
  295. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -0
  296. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +52 -0
  297. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts +9 -0
  298. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts.map +1 -1
  299. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.js +9 -0
  300. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts +20 -0
  301. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts.map +1 -1
  302. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.js +52 -34
  303. package/src/shade/renderer/texture/virtual/README.md +255 -276
  304. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  305. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -2
  306. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  307. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +83 -0
  308. package/src/view/interaction/InterfaceCommand.d.ts +8 -8
  309. package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
  310. package/src/view/interaction/InterfaceCommand.js +146 -146
  311. package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
  312. package/src/view/interaction/createInterfaceCommandButton.js +115 -124
  313. package/src/engine/ecs/components/Timer.d.ts +0 -50
  314. package/src/engine/ecs/components/Timer.d.ts.map +0 -1
  315. package/src/engine/ecs/components/Timer.js +0 -80
  316. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts +0 -22
  317. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +0 -1
  318. package/src/engine/ecs/evaluation/PointFitnessBinary.js +0 -33
  319. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts +0 -12
  320. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +0 -1
  321. package/src/engine/ecs/evaluation/PointFitnessConstant.js +0 -27
  322. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts +0 -17
  323. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts.map +0 -1
  324. package/src/engine/ecs/evaluation/PointFitnessFunction.js +0 -20
  325. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts +0 -12
  326. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts.map +0 -1
  327. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.js +0 -27
  328. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts +0 -12
  329. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts.map +0 -1
  330. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.js +0 -28
  331. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +0 -50
  332. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +0 -1
  333. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +0 -176
  334. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts +0 -7
  335. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts.map +0 -1
  336. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.js +0 -68
  337. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts +0 -7
  338. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts.map +0 -1
  339. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.js +0 -89
  340. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts +0 -17
  341. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +0 -1
  342. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +0 -60
  343. package/src/engine/ecs/systems/TimerSystem.d.ts +0 -10
  344. package/src/engine/ecs/systems/TimerSystem.d.ts.map +0 -1
  345. package/src/engine/ecs/systems/TimerSystem.js +0 -86
  346. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +0 -13
  347. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +0 -1
  348. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +0 -14
  349. package/src/engine/graphics/StandardFrameBuffers.d.ts +0 -7
  350. package/src/engine/graphics/StandardFrameBuffers.d.ts.map +0 -1
  351. package/src/engine/graphics/StandardFrameBuffers.js +0 -9
  352. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts +0 -7
  353. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts.map +0 -1
  354. package/src/engine/graphics/copy_transform_to_threejs_object.js +0 -12
  355. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts +0 -42
  356. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +0 -1
  357. package/src/engine/graphics/ecs/light/binding/LightBinding.js +0 -133
  358. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts +0 -25
  359. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +0 -1
  360. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +0 -90
  361. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts +0 -7
  362. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts.map +0 -1
  363. package/src/engine/graphics/ecs/light/binding/three/applyRotation.js +0 -24
  364. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts +0 -7
  365. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts.map +0 -1
  366. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.js +0 -12
  367. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts +0 -8
  368. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts.map +0 -1
  369. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.js +0 -41
  370. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts +0 -4
  371. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts.map +0 -1
  372. package/src/engine/graphics/ecs/light/shadow/LightShadow.js +0 -4
  373. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts +0 -27
  374. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts.map +0 -1
  375. package/src/engine/graphics/ecs/light/shadow/ShadowManager.js +0 -53
  376. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts +0 -8
  377. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +0 -1
  378. package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +0 -7
  379. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts +0 -14
  380. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts.map +0 -1
  381. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.js +0 -62
  382. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts +0 -30
  383. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +0 -1
  384. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +0 -77
  385. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts +0 -13
  386. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts.map +0 -1
  387. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.js +0 -43
  388. package/src/engine/graphics/ecs/light/three/light2type.d.ts +0 -8
  389. package/src/engine/graphics/ecs/light/three/light2type.d.ts.map +0 -1
  390. package/src/engine/graphics/ecs/light/three/light2type.js +0 -20
  391. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts +0 -7
  392. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts.map +0 -1
  393. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +0 -13
  394. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts +0 -20
  395. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts.map +0 -1
  396. package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +0 -47
  397. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts +0 -12
  398. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts.map +0 -1
  399. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.js +0 -19
  400. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts +0 -18
  401. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts.map +0 -1
  402. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.js +0 -249
  403. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts +0 -7
  404. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts.map +0 -1
  405. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.js +0 -8
  406. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts +0 -7
  407. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts.map +0 -1
  408. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.js +0 -8
  409. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +0 -14
  410. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +0 -1
  411. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +0 -20
  412. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts +0 -3
  413. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts.map +0 -1
  414. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.js +0 -58
  415. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts +0 -3
  416. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts.map +0 -1
  417. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.js +0 -44
  418. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts +0 -3
  419. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts.map +0 -1
  420. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.js +0 -28
  421. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts +0 -3
  422. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts.map +0 -1
  423. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.js +0 -28
  424. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts +0 -3
  425. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts.map +0 -1
  426. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.js +0 -39
  427. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts +0 -3
  428. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts.map +0 -1
  429. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.js +0 -124
  430. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts +0 -3
  431. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts.map +0 -1
  432. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.js +0 -30
  433. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts +0 -64
  434. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts.map +0 -1
  435. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.js +0 -131
  436. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts +0 -32
  437. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts.map +0 -1
  438. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.js +0 -62
  439. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts +0 -46
  440. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts.map +0 -1
  441. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.js +0 -272
  442. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts +0 -28
  443. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts.map +0 -1
  444. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.js +0 -57
  445. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts +0 -32
  446. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts.map +0 -1
  447. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.js +0 -55
  448. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts +0 -34
  449. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +0 -1
  450. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +0 -178
  451. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts +0 -7
  452. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts.map +0 -1
  453. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.js +0 -31
  454. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts +0 -13
  455. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts.map +0 -1
  456. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.js +0 -13
  457. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts +0 -7
  458. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts.map +0 -1
  459. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.js +0 -26
  460. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts +0 -4
  461. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts.map +0 -1
  462. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.js +0 -5
  463. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts +0 -6
  464. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts.map +0 -1
  465. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.js +0 -14
  466. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts +0 -37
  467. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts.map +0 -1
  468. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.js +0 -73
  469. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts +0 -7
  470. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts.map +0 -1
  471. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.js +0 -30
  472. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts +0 -7
  473. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts.map +0 -1
  474. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.js +0 -30
  475. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts +0 -7
  476. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts.map +0 -1
  477. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.js +0 -32
  478. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts +0 -6
  479. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts.map +0 -1
  480. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.js +0 -15
  481. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts +0 -7
  482. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts.map +0 -1
  483. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.js +0 -27
  484. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts +0 -7
  485. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts.map +0 -1
  486. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.js +0 -25
  487. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts +0 -7
  488. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts.map +0 -1
  489. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.js +0 -26
  490. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts +0 -7
  491. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts.map +0 -1
  492. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.js +0 -25
  493. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts +0 -7
  494. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts.map +0 -1
  495. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.js +0 -25
  496. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts +0 -7
  497. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts.map +0 -1
  498. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.js +0 -25
  499. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts +0 -7
  500. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts.map +0 -1
  501. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.js +0 -25
  502. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts +0 -7
  503. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts.map +0 -1
  504. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.js +0 -39
  505. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +0 -39
  506. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +0 -1
  507. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +0 -45
  508. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts +0 -9
  509. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts.map +0 -1
  510. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.js +0 -10
  511. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts +0 -13
  512. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts.map +0 -1
  513. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.js +0 -14
  514. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +0 -50
  515. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +0 -1
  516. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +0 -47
  517. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts +0 -51
  518. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts.map +0 -1
  519. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.js +0 -93
  520. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts +0 -6
  521. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts.map +0 -1
  522. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.js +0 -23
  523. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts +0 -7
  524. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts.map +0 -1
  525. package/src/engine/graphics/particles/node-based/populateNodeRegistry.js +0 -48
  526. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts +0 -21
  527. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +0 -1
  528. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +0 -35
  529. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts +0 -20
  530. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts.map +0 -1
  531. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.js +0 -35
  532. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts +0 -14
  533. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts.map +0 -1
  534. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.js +0 -17
  535. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts +0 -5
  536. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts.map +0 -1
  537. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +0 -150
  538. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts +0 -55
  539. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +0 -1
  540. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +0 -105
  541. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts +0 -49
  542. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +0 -1
  543. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +0 -103
  544. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts +0 -4
  545. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts.map +0 -1
  546. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.js +0 -6
  547. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts +0 -83
  548. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +0 -1
  549. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +0 -188
  550. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts +0 -123
  551. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +0 -1
  552. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +0 -415
  553. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +0 -71
  554. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +0 -1
  555. package/src/engine/graphics/render/buffer/FrameBufferManager.js +0 -229
  556. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts +0 -22
  557. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts.map +0 -1
  558. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.js +0 -84
  559. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +0 -33
  560. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +0 -1
  561. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +0 -61
  562. package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +0 -155
  563. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts +0 -29
  564. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +0 -1
  565. package/src/engine/graphics/render/forward_plus/assign_cluster.js +0 -124
  566. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts +0 -7
  567. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts.map +0 -1
  568. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.js +0 -17
  569. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts +0 -7
  570. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts.map +0 -1
  571. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +0 -17
  572. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +0 -9
  573. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts.map +0 -1
  574. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +0 -29
  575. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts +0 -12
  576. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts.map +0 -1
  577. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.js +0 -43
  578. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts +0 -8
  579. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +0 -1
  580. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +0 -68
  581. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts +0 -4
  582. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts.map +0 -1
  583. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.js +0 -46
  584. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts +0 -14
  585. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts.map +0 -1
  586. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.js +0 -327
  587. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts +0 -2
  588. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts.map +0 -1
  589. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +0 -1
  590. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts +0 -2
  591. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts.map +0 -1
  592. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +0 -40
  593. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts +0 -2
  594. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts.map +0 -1
  595. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.js +0 -74
  596. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts +0 -2
  597. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts.map +0 -1
  598. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +0 -55
  599. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts +0 -2
  600. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts.map +0 -1
  601. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.js +0 -11
  602. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts +0 -2
  603. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts.map +0 -1
  604. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +0 -34
  605. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts +0 -7
  606. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts.map +0 -1
  607. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +0 -60
  608. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts +0 -7
  609. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts.map +0 -1
  610. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +0 -38
  611. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts +0 -7
  612. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts.map +0 -1
  613. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +0 -30
  614. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -51
  615. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +0 -1
  616. package/src/engine/graphics/render/forward_plus/model/Decal.js +0 -133
  617. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts +0 -16
  618. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts.map +0 -1
  619. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.js +0 -18
  620. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts +0 -7
  621. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts.map +0 -1
  622. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.js +0 -8
  623. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts +0 -10
  624. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts.map +0 -1
  625. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.js +0 -65
  626. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts +0 -7
  627. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts.map +0 -1
  628. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +0 -8
  629. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts +0 -11
  630. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts.map +0 -1
  631. package/src/engine/graphics/render/forward_plus/query/cube_mapping.js +0 -38
  632. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +0 -21
  633. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +0 -1
  634. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +0 -96
  635. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +0 -22
  636. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +0 -1
  637. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +0 -44
  638. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +0 -11
  639. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +0 -1
  640. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +0 -169
  641. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts +0 -9
  642. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts.map +0 -1
  643. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +0 -33
  644. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +0 -2
  645. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +0 -1
  646. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +0 -2
  647. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts +0 -9
  648. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts.map +0 -1
  649. package/src/engine/graphics/render/forward_plus/sort_decal_data.js +0 -102
  650. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts +0 -10
  651. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts.map +0 -1
  652. package/src/engine/graphics/render/forward_plus/testClusterEquality.js +0 -22
  653. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts +0 -19
  654. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts.map +0 -1
  655. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.js +0 -62
  656. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts +0 -18
  657. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts.map +0 -1
  658. package/src/engine/graphics/shaders/AlphaBlendShader.js +0 -42
  659. package/src/engine/graphics/shaders/ClearShader.d.ts +0 -8
  660. package/src/engine/graphics/shaders/ClearShader.d.ts.map +0 -1
  661. package/src/engine/graphics/shaders/ClearShader.js +0 -28
  662. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts +0 -13
  663. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts.map +0 -1
  664. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.js +0 -38
  665. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts +0 -7
  666. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts.map +0 -1
  667. package/src/engine/graphics/shaders/ScreenSpaceShader.js +0 -102
  668. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +0 -102
  669. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +0 -1
  670. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +0 -277
  671. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +0 -40
  672. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +0 -1
  673. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +0 -57
  674. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts +0 -8
  675. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts.map +0 -1
  676. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.js +0 -39
  677. package/src/engine/graphics/shadows/README.md +0 -6
  678. package/src/engine/graphics/shadows/vsm.glsl.d.ts +0 -3
  679. package/src/engine/graphics/shadows/vsm.glsl.d.ts.map +0 -1
  680. package/src/engine/graphics/shadows/vsm.glsl.js +0 -43
  681. package/src/engine/graphics/util/composeMatrix4.d.ts +0 -9
  682. package/src/engine/graphics/util/composeMatrix4.d.ts.map +0 -1
  683. package/src/engine/graphics/util/composeMatrix4.js +0 -13
  684. package/src/engine/graphics/util/threeUpdateMatrix.d.ts +0 -6
  685. package/src/engine/graphics/util/threeUpdateMatrix.d.ts.map +0 -1
  686. package/src/engine/graphics/util/threeUpdateMatrix.js +0 -14
  687. package/src/engine/graphics/util/threeUpdateTransform.d.ts +0 -6
  688. package/src/engine/graphics/util/threeUpdateTransform.d.ts.map +0 -1
  689. package/src/engine/graphics/util/threeUpdateTransform.js +0 -16
  690. package/src/engine/sound/ecs/SoundController.d.ts.map +0 -1
  691. package/src/engine/sound/ecs/SoundControllerSystem.d.ts +0 -23
  692. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +0 -1
  693. package/src/engine/sound/ecs/SoundControllerSystem.js +0 -103
  694. package/src/engine/sound/ecs/emitter/SoundAttenuationFunction.d.ts.map +0 -1
  695. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +0 -1
  696. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +0 -55
  697. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +0 -1
  698. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +0 -265
  699. package/src/engine/sound/ecs/emitter/SoundEmitterFlags.d.ts.map +0 -1
  700. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.d.ts.map +0 -1
  701. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +0 -88
  702. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +0 -1
  703. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -159
  704. package/src/engine/sound/ecs/emitter/SoundPanningModelType.d.ts.map +0 -1
  705. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +0 -1
  706. package/src/engine/sound/ecs/emitter/SoundTrackFlags.d.ts.map +0 -1
  707. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts +0 -8
  708. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts.map +0 -1
  709. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.js +0 -41
  710. package/src/shade/playground/FramePerformanceMonitor.d.ts +0 -114
  711. package/src/shade/playground/FramePerformanceMonitor.d.ts.map +0 -1
  712. package/src/shade/playground/FramePerformanceMonitor.js +0 -468
  713. package/src/shade/playground/add_random_lights.d.ts +0 -8
  714. package/src/shade/playground/add_random_lights.d.ts.map +0 -1
  715. package/src/shade/playground/add_random_lights.js +0 -50
  716. package/src/shade/playground/animation_prototype.d.ts +0 -24
  717. package/src/shade/playground/animation_prototype.d.ts.map +0 -1
  718. package/src/shade/playground/animation_prototype.js +0 -508
  719. package/src/shade/playground/animation_prototype_skinning.d.ts +0 -31
  720. package/src/shade/playground/animation_prototype_skinning.d.ts.map +0 -1
  721. package/src/shade/playground/animation_prototype_skinning.js +0 -647
  722. package/src/shade/playground/animation_prototype_stress.d.ts +0 -35
  723. package/src/shade/playground/animation_prototype_stress.d.ts.map +0 -1
  724. package/src/shade/playground/animation_prototype_stress.js +0 -765
  725. package/src/shade/playground/enable_picker.d.ts +0 -8
  726. package/src/shade/playground/enable_picker.d.ts.map +0 -1
  727. package/src/shade/playground/enable_picker.js +0 -60
  728. package/src/shade/playground/gltf_skinned_prototype.d.ts +0 -27
  729. package/src/shade/playground/gltf_skinned_prototype.d.ts.map +0 -1
  730. package/src/shade/playground/gltf_skinned_prototype.js +0 -560
  731. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts +0 -24
  732. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts.map +0 -1
  733. package/src/shade/playground/gltf_skinned_stress_prototype.js +0 -387
  734. package/src/shade/playground/gltf_viewer.d.ts +0 -2
  735. package/src/shade/playground/gltf_viewer.d.ts.map +0 -1
  736. package/src/shade/playground/gltf_viewer.js +0 -283
  737. package/src/shade/playground/main.d.ts.map +0 -1
  738. package/src/shade/playground/main.js +0 -2727
  739. package/src/shade/playground/make_animated_instances.d.ts +0 -9
  740. package/src/shade/playground/make_animated_instances.d.ts.map +0 -1
  741. package/src/shade/playground/make_animated_instances.js +0 -118
  742. package/src/shade/playground/prototype_virtual_texture.d.ts +0 -2
  743. package/src/shade/playground/prototype_virtual_texture.d.ts.map +0 -1
  744. package/src/shade/playground/prototype_virtual_texture.js +0 -274
  745. package/src/shade/playground/prototype_volumetrics_01.d.ts +0 -2
  746. package/src/shade/playground/prototype_volumetrics_01.d.ts.map +0 -1
  747. package/src/shade/playground/prototype_volumetrics_01.js +0 -206
  748. package/src/shade/playground/sample.d.ts +0 -2
  749. package/src/shade/playground/sample.d.ts.map +0 -1
  750. package/src/shade/playground/sample.js +0 -234
  751. package/src/shade/playground/sample_load_gltf.d.ts +0 -9
  752. package/src/shade/playground/sample_load_gltf.d.ts.map +0 -1
  753. package/src/shade/playground/sample_load_gltf.js +0 -103
  754. package/src/shade/playground/spread_node3d_grid.d.ts +0 -7
  755. package/src/shade/playground/spread_node3d_grid.d.ts.map +0 -1
  756. package/src/shade/playground/spread_node3d_grid.js +0 -20
  757. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts +0 -24
  758. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts.map +0 -1
  759. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.js +0 -88
  760. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts +0 -3
  761. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts.map +0 -1
  762. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.js +0 -49
  763. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts +0 -3
  764. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts.map +0 -1
  765. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.js +0 -93
  766. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts +0 -24
  767. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts.map +0 -1
  768. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.js +0 -119
  769. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts +0 -7
  770. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts.map +0 -1
  771. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.js +0 -235
  772. package/src/shade/renderer/gpu_primitive/sort/NOTES.md +0 -5
  773. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts +0 -7
  774. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts.map +0 -1
  775. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.js +0 -136
  776. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts +0 -18
  777. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts.map +0 -1
  778. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.js +0 -108
  779. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts +0 -35
  780. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts.map +0 -1
  781. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.js +0 -42
  782. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts +0 -13
  783. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts.map +0 -1
  784. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.js +0 -116
  785. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts +0 -3
  786. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts.map +0 -1
  787. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.js +0 -120
  788. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts +0 -3
  789. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts.map +0 -1
  790. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.js +0 -76
  791. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts +0 -3
  792. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts.map +0 -1
  793. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.js +0 -125
  794. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts +0 -3
  795. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts.map +0 -1
  796. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.js +0 -140
  797. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts +0 -3
  798. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts.map +0 -1
  799. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.js +0 -338
  800. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts +0 -7
  801. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts.map +0 -1
  802. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.js +0 -261
  803. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts +0 -3
  804. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts.map +0 -1
  805. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.js +0 -14
  806. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts +0 -25
  807. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts.map +0 -1
  808. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.js +0 -25
  809. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts +0 -15
  810. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts.map +0 -1
  811. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.js +0 -192
  812. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts +0 -5
  813. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts.map +0 -1
  814. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.js +0 -990
  815. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts +0 -5
  816. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts.map +0 -1
  817. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.js +0 -82
  818. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts +0 -3
  819. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts.map +0 -1
  820. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.js +0 -44
  821. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts +0 -5
  822. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts.map +0 -1
  823. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.js +0 -156
  824. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts +0 -6
  825. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts.map +0 -1
  826. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.js +0 -55
  827. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts +0 -14
  828. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts.map +0 -1
  829. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js +0 -110
  830. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts +0 -12
  831. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts.map +0 -1
  832. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.js +0 -74
  833. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts +0 -3
  834. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts.map +0 -1
  835. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.js +0 -125
  836. package/src/shade/renderer/scene/optimization/geometry/internal/bt_face_loop_helpers.d.ts +0 -32
  837. package/src/shade/renderer/scene/optimization/geometry/internal/bt_face_loop_helpers.d.ts.map +0 -1
  838. package/src/shade/renderer/scene/optimization/geometry/internal/bt_face_loop_helpers.js +0 -77
  839. package/src/shade/renderer/scene/optimization/geometry/internal/bt_find_edge_between.d.ts +0 -12
  840. package/src/shade/renderer/scene/optimization/geometry/internal/bt_find_edge_between.d.ts.map +0 -1
  841. package/src/shade/renderer/scene/optimization/geometry/internal/bt_find_edge_between.js +0 -35
  842. package/src/shade/renderer/scene/serialization/linear_to_pq.d.ts +0 -2
  843. package/src/shade/renderer/scene/serialization/linear_to_pq.d.ts.map +0 -1
  844. package/src/shade/renderer/scene/serialization/linear_to_pq.js +0 -14
  845. package/src/shade/renderer/scene/serialization/pq_to_linear.d.ts +0 -9
  846. package/src/shade/renderer/scene/serialization/pq_to_linear.d.ts.map +0 -1
  847. package/src/shade/renderer/scene/serialization/pq_to_linear.js +0 -30
  848. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
  849. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
  850. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
  851. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
  852. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
  853. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
  854. package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
  855. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
  856. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
  857. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
  858. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
  859. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
  860. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
  861. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
  862. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
  863. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
  864. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
  865. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
  866. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
  867. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
  868. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
  869. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
  870. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
  871. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
  872. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
  873. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
  874. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
  875. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
  876. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
  877. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
  878. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
  879. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
  880. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
  881. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
  882. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
  883. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
  884. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
  885. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
  886. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
  887. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
  888. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
  889. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
  890. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
  891. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
  892. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
  893. /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
@@ -1,15 +1,45 @@
1
1
  import { assert } from "../../../core/assert.js";
2
2
  import { BVH } from "../../../core/bvh2/bvh3/BVH.js";
3
- import { ebvh_optimize_treelet } from "../../../core/bvh2/bvh3/ebvh_optimize_treelet.js";
3
+ import { FrameGraph } from "../../../engine/graphics/render/frame_graph/FrameGraph.js";
4
+ import { BufferResourceDescriptor } from "../../device/graph/BufferResourceDescriptor.js";
5
+ import { ShadeGPUCommandContext } from "../../device/ShadeGPUCommandContext.js";
4
6
  import { ensure_buffer_capacity } from "../geometry/make_temp_gpu_buffer.js";
5
- import { BVH2_NODE_STRUCT } from "../shader/chunk/bvh/BVH2_NODE_STRUCT.js";
6
- import { bvh_to_gpu_buffer } from "../geometry/bvh/bvh_to_gpu_buffer.js";
7
+ import { BVH_BUILD_SETTINGS_STRUCT } from "../gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js";
8
+ import { bvh_buffer_size } from "../gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js";
9
+ import { graph_bvh_build_lbvh } from "../gpu_primitive/bvh/graph_bvh_build_lbvh.js";
10
+ import { shader_bvh_extract_instance_leaves } from "./shader_bvh_extract_instance_leaves.js";
11
+
12
+ /**
13
+ * `root = BVH_NULL_NODE` — an empty tree, in the four bytes every consumer already reads that way.
14
+ * @type {Uint32Array}
15
+ */
16
+ const EMPTY_TREE = Uint32Array.from([0xffffffff]);
17
+
18
+ /**
19
+ * The scene-bounds cell before anything has been merged into it: +inf for the three minima, -inf
20
+ * for the three maxima, so the first contribution wins on every axis.
21
+ *
22
+ * Written host-side as exact u32 bit patterns. A pool-cleared buffer holds zeroes, and zero is a
23
+ * perfectly good coordinate — a scene entirely in the positive octant would end up with bounds
24
+ * anchored at the origin and every Morton code crushed into a corner of the grid.
25
+ *
26
+ * @type {Uint32Array}
27
+ */
28
+ const SCENE_BOUNDS_SEED = Uint32Array.from([
29
+ 0x7F800000, 0x7F800000, 0x7F800000,
30
+ 0xFF800000, 0xFF800000, 0xFF800000,
31
+ ]);
7
32
 
8
33
  /**
9
34
  * Top-Level Acceleration Structure (TLAS)
10
35
  */
11
36
  export class GPUInstancesAccelerationStructure {
12
37
 
38
+ /**
39
+ * @type {GraphicsContext}
40
+ */
41
+ #graphics
42
+
13
43
  /**
14
44
  * @type {GPUDevice}
15
45
  */
@@ -17,6 +47,12 @@ export class GPUInstancesAccelerationStructure {
17
47
 
18
48
  #bvh = new BVH();
19
49
 
50
+ /**
51
+ * The CPU-side tree. Still maintained incrementally by the `instance_*` methods and still walked
52
+ * by CPU queries — {@link DirectionalLightShadowmap} runs `compute_tight_near_far_clipping_planes`
53
+ * against it per cascade per frame. What the GPU build retires is the per-frame treelet pass and
54
+ * the full flatten-and-upload, not the tree.
55
+ */
20
56
  get bvh() {
21
57
  return this.#bvh;
22
58
  }
@@ -24,6 +60,7 @@ export class GPUInstancesAccelerationStructure {
24
60
  clear() {
25
61
  this.#bvh.release_all();
26
62
  this.#node_mapping.clear();
63
+ this.#membership_version++;
27
64
  this.#version++;
28
65
  }
29
66
 
@@ -44,15 +81,48 @@ export class GPUInstancesAccelerationStructure {
44
81
  #version = 0;
45
82
 
46
83
  /**
84
+ * Bumped when the set of live rows changes — an add or a remove — and not when one merely moves.
85
+ * The rows list is uploaded only when this moves, so a scene in continuous motion re-uploads
86
+ * nothing.
87
+ *
88
+ * @type {number}
89
+ */
90
+ #membership_version = 0;
91
+
92
+ /**
93
+ * Membership version the {@link #rows_buffer} currently holds.
94
+ * @type {number}
95
+ */
96
+ #rows_gpu_version = -1;
97
+
98
+ /**
99
+ * Compact mirror of the live `meshes` rows, in insertion order. Rebuilt from
100
+ * {@link #node_mapping} when membership churns.
47
101
  *
48
- * @param {GPUDevice} device
102
+ * @type {Uint32Array}
49
103
  */
50
- constructor(device) {
51
- assert.defined(device, 'device');
104
+ #rows = new Uint32Array(0);
105
+
106
+ /**
107
+ * @type {GPUBuffer|undefined}
108
+ */
109
+ #rows_buffer
110
+
111
+ /**
112
+ *
113
+ * @param {GraphicsContext} graphics
114
+ */
115
+ constructor(graphics) {
116
+ assert.defined(graphics, 'graphics');
117
+ assert.equal(graphics.isGraphicsContext, true, 'graphics.isGraphicsContext !== true');
118
+
119
+ const device = graphics.device;
52
120
 
121
+ this.#graphics = graphics;
53
122
  this.#device = device;
54
123
 
55
124
  this.#buffer = device.createBuffer({
125
+ label: 'TLAS',
56
126
  size: 1024,
57
127
  usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC
58
128
  });
@@ -83,6 +153,7 @@ export class GPUInstancesAccelerationStructure {
83
153
 
84
154
  this.#node_mapping.set(index, node);
85
155
 
156
+ this.#membership_version++;
86
157
  this.#version++;
87
158
  }
88
159
 
@@ -107,6 +178,7 @@ export class GPUInstancesAccelerationStructure {
107
178
 
108
179
  this.#node_mapping.delete(index);
109
180
 
181
+ this.#membership_version++;
110
182
  this.#version++;
111
183
  }
112
184
 
@@ -126,47 +198,186 @@ export class GPUInstancesAccelerationStructure {
126
198
  this.#version++;
127
199
  }
128
200
 
129
- push_to_gpu() {
130
- console.log('TLAS#push_to_gpu');
201
+ /**
202
+ * Bring {@link #rows_buffer} in line with the live row set, if and only if membership changed.
203
+ *
204
+ * @returns {number} number of live rows
205
+ */
206
+ #refresh_rows() {
207
+ const count = this.#node_mapping.size;
208
+
209
+ if (this.#rows_gpu_version === this.#membership_version && this.#rows.length >= count) {
210
+ return count;
211
+ }
212
+
213
+ if (this.#rows.length < count) {
214
+ this.#rows = new Uint32Array(count);
215
+ }
216
+
217
+ let i = 0;
218
+ for (const row of this.#node_mapping.keys()) {
219
+ this.#rows[i] = row;
220
+ i++;
221
+ }
222
+
223
+ const byte_size = Math.max(4, count * Uint32Array.BYTES_PER_ELEMENT);
224
+
225
+ if (this.#rows_buffer === undefined) {
226
+ this.#rows_buffer = this.#device.createBuffer({
227
+ label: 'TLAS/rows',
228
+ size: Math.max(1024, byte_size),
229
+ usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC
230
+ });
231
+ } else {
232
+ this.#rows_buffer = ensure_buffer_capacity(this.#device, this.#rows_buffer, byte_size);
233
+ }
234
+
235
+ // Queue writes land in submission order ahead of command buffers submitted after them, so
236
+ // the build encoded below sees these rows. Offset and size are in elements of the source,
237
+ // per `GPUQueue.writeBuffer` — `#rows` can be longer than the live set.
238
+ this.#device.queue.writeBuffer(this.#rows_buffer, 0, this.#rows, 0, count);
131
239
 
132
- const tree = this.#bvh;
240
+ this.#rows_gpu_version = this.#membership_version;
241
+
242
+ return count;
243
+ }
244
+
245
+ /**
246
+ * Build the tree, from the world AABBs the scene database holds.
247
+ *
248
+ * @param {GPUBuffer} scene_database_buffer
249
+ */
250
+ #build(scene_database_buffer) {
251
+ assert.defined(scene_database_buffer, 'scene_database_buffer');
133
252
 
134
253
  const device = this.#device;
135
254
 
136
- ebvh_optimize_treelet(tree);
255
+ const element_count = this.#node_mapping.size;
137
256
 
257
+ // `ensure_buffer_capacity` can hand back a NEW buffer and destroy the old one. Consumers are
258
+ // safe because they read `tlas.buffer` per frame at pass-execute time — but the field has to
259
+ // be reassigned before the graph imports it.
138
260
  this.#buffer = ensure_buffer_capacity(
139
261
  device,
140
262
  this.#buffer,
141
- tree.node_capacity * BVH2_NODE_STRUCT.size + 4,
263
+ bvh_buffer_size(Math.max(1, element_count)),
142
264
  1024,
143
265
  1024,
144
266
  1.2
145
267
  );
146
268
 
147
- const tmp_buffer = bvh_to_gpu_buffer({
148
- device,
149
- bvh: tree,
150
- usage: GPUBufferUsage.COPY_SRC,
151
- label: 'TLAS/temp'
152
- });
269
+ if (element_count === 0) {
270
+ device.queue.writeBuffer(this.#buffer, 0, EMPTY_TREE);
271
+
272
+ return;
273
+ }
274
+
275
+ this.#refresh_rows();
153
276
 
154
- const encoder = device.createCommandEncoder();
277
+ const graph = new FrameGraph('TLAS build');
155
278
 
156
- encoder.copyBufferToBuffer(tmp_buffer, 0, this.#buffer, 0, tmp_buffer.size);
279
+ const rows = graph.import_resource(
280
+ "tlas/rows",
281
+ BufferResourceDescriptor.fromBuffer(this.#rows_buffer),
282
+ this.#rows_buffer
283
+ );
157
284
 
158
- device.queue.submit([encoder.finish()]);
285
+ const scene_database = graph.import_resource(
286
+ "scene database",
287
+ BufferResourceDescriptor.fromBuffer(scene_database_buffer),
288
+ scene_database_buffer
289
+ );
159
290
 
160
- tmp_buffer.destroy();
291
+ const nodes = graph.import_resource(
292
+ "tlas/nodes",
293
+ BufferResourceDescriptor.fromBuffer(this.#buffer),
294
+ this.#buffer
295
+ );
296
+
297
+ const extract_data = {};
298
+ const extract_pass = graph.add("tlas/extract instance leaves", extract_data, extract_execute);
299
+
300
+ extract_data.element_count = element_count;
301
+ extract_data.rows = extract_pass.read(rows);
302
+ extract_data.scene_database = extract_pass.read(scene_database);
303
+
304
+ extract_data.leaf_bounds = extract_pass.create("tlas/leaf bounds", BufferResourceDescriptor.from(
305
+ element_count * 6 * Float32Array.BYTES_PER_ELEMENT,
306
+ GPUBufferUsage.STORAGE
307
+ ));
308
+
309
+ extract_data.leaf_payload = extract_pass.create("tlas/leaf payload", BufferResourceDescriptor.from(
310
+ element_count * Uint32Array.BYTES_PER_ELEMENT,
311
+ GPUBufferUsage.STORAGE
312
+ ));
313
+
314
+ extract_data.scene_bounds = extract_pass.create("tlas/scene bounds", BufferResourceDescriptor.from(
315
+ SCENE_BOUNDS_SEED.byteLength,
316
+ GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
317
+ ));
318
+
319
+ graph_bvh_build_lbvh({
320
+ graph,
321
+ leaf_bounds: extract_data.leaf_bounds,
322
+ leaf_payload: extract_data.leaf_payload,
323
+ scene_bounds: extract_data.scene_bounds,
324
+ element_count,
325
+ nodes,
326
+ });
327
+
328
+ const cmd = ShadeGPUCommandContext.create(this.#graphics, 'TLAS/build');
329
+
330
+ cmd.encodeGraph(graph);
331
+ cmd.finish();
332
+ }
333
+
334
+ /**
335
+ * @param {GPUBuffer} scene_database_buffer the table the world AABBs are read from
336
+ */
337
+ push_to_gpu(scene_database_buffer) {
338
+ this.#build(scene_database_buffer);
161
339
 
162
340
  this.#gpu_version = this.#version;
163
341
  }
164
342
 
165
- update() {
343
+ /**
344
+ * @param {GPUBuffer} scene_database_buffer
345
+ */
346
+ update(scene_database_buffer) {
166
347
  if (this.#gpu_version === this.#version) {
167
348
  return;
168
349
  }
169
350
 
170
- this.push_to_gpu();
351
+ this.push_to_gpu(scene_database_buffer);
171
352
  }
172
- }
353
+ }
354
+
355
+ /**
356
+ * @param pass_data
357
+ * @param {FramePassResources} resources
358
+ * @param {GraphicsExecutionContext} context
359
+ */
360
+ function extract_execute(pass_data, resources, context) {
361
+ const encoder = context.encoder;
362
+
363
+ const scene_bounds = resources.get(pass_data.scene_bounds);
364
+
365
+ // Seeded rather than cleared: the merge is a min/max, and zero is not an identity for either.
366
+ encoder.writeBuffer(scene_bounds, 0, SCENE_BOUNDS_SEED.buffer, 0, SCENE_BOUNDS_SEED.byteLength);
367
+
368
+ shader_bvh_extract_instance_leaves.dispatchLinear({
369
+ encoder,
370
+ element_count: pass_data.element_count,
371
+ bindings: {
372
+ settings: encoder.allocateTransientValueBuffer(
373
+ BVH_BUILD_SETTINGS_STRUCT,
374
+ { element_count: pass_data.element_count }
375
+ ),
376
+ rows: resources.get(pass_data.rows),
377
+ scene_database: resources.get(pass_data.scene_database),
378
+ leaf_bounds: resources.get(pass_data.leaf_bounds),
379
+ leaf_payload: resources.get(pass_data.leaf_payload),
380
+ scene_bounds,
381
+ }
382
+ });
383
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"GPUSceneContext.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/GPUSceneContext.js"],"names":[],"mappings":"AA4DA;;GAEG;AACH;IAkJI;;;;OAIG;IACH,8CAFW,KAAK,EAiCf;IApLD;;;OAGG;IACH,aAFU,MAAM,CAEE;IAElB;;OAEG;IACH,+BAAW;IAEX;;OAEG;IACH,8BAAU;IAGV;;OAEG;IACH,sBAFU,cAAc,CAEH;IASrB;;;OAGG;IACH,mBAEC;IAOD,uCAEC;IAQD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,8CAEC;IAOD;;;OAGG;IACH,8CAEC;IAmBD;;;;;;;;;;;;;;OAcG;IACH,YAFU,IAAI,MAAM,EAAE,MAAM,CAAC,CAEN;IAgEvB;;OAEG;IACH,6CAEC;IAeD;;;OAGG;IACH,kCAEC;IAED;;;;;OAKG;IACH,uCAEC;IAED;;;;;;;;;;;;OAYG;IACH,uCAUC;IAED,+BAUC;IAuJD;;;;;;;;;;OAUG;IACH,2BAFa,MAAM,CAMlB;IAED;;;;;;;OAOG;IACH,gCAEC;IA+QD;;;;;;OAMG;IACH,cA4DC;IAED;;;OAGG;IACH,mCAsBC;IAED;;;;;;;;;;;;;OAaG;IACH,cAHW,sBAAsB,cACtB,MAAM,QAIhB;IAED,gBAQC;IAIL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;+BAz3B8B,iDAAiD;sBAI1D,YAAY;oCADE,uCAAuC;mCADxC,gCAAgC;oCAD/B,mDAAmD;kDAIrC,wCAAwC;oCAPtD,qCAAqC;4BAC7C,gCAAgC;uCAOrB,iDAAiD;uCATjD,wCAAwC"}
1
+ {"version":3,"file":"GPUSceneContext.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/GPUSceneContext.js"],"names":[],"mappings":"AA4DA;;GAEG;AACH;IAkJI;;;;OAIG;IACH,8CAFW,KAAK,EAiCf;IApLD;;;OAGG;IACH,aAFU,MAAM,CAEE;IAElB;;OAEG;IACH,+BAAW;IAEX;;OAEG;IACH,8BAAU;IAGV;;OAEG;IACH,sBAFU,cAAc,CAEH;IASrB;;;OAGG;IACH,mBAEC;IAOD,uCAEC;IAQD;;;OAGG;IACH,iCAEC;IAOD;;;OAGG;IACH,8CAEC;IAOD;;;OAGG;IACH,8CAEC;IAmBD;;;;;;;;;;;;;;OAcG;IACH,YAFU,IAAI,MAAM,EAAE,MAAM,CAAC,CAEN;IAgEvB;;OAEG;IACH,6CAEC;IAeD;;;OAGG;IACH,kCAEC;IAED;;;;;OAKG;IACH,uCAEC;IAED;;;;;;;;;;;;OAYG;IACH,uCAUC;IAED,+BAUC;IAkKD;;;;;;;;;;OAUG;IACH,2BAFa,MAAM,CAMlB;IAED;;;;;;;OAOG;IACH,gCAEC;IA+QD;;;;;;OAMG;IACH,cA4DC;IAED;;;OAGG;IACH,mCAuBC;IAED;;;;;;;;;;;;;OAaG;IACH,cAHW,sBAAsB,cACtB,MAAM,QAIhB;IAED,gBAQC;IAIL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;;CAN1C;+BAr4B8B,iDAAiD;sBAI1D,YAAY;oCADE,uCAAuC;mCADxC,gCAAgC;oCAD/B,mDAAmD;kDAIrC,wCAAwC;oCAPtD,qCAAqC;4BAC7C,gCAAgC;uCAOrB,iDAAiD;uCATjD,wCAAwC"}
@@ -223,7 +223,7 @@ export class GPUSceneContext {
223
223
  this.#device = device;
224
224
  this.#graphics = graphics;
225
225
 
226
- this.#tlas = new GPUInstancesAccelerationStructure(device);
226
+ this.#tlas = new GPUInstancesAccelerationStructure(graphics);
227
227
 
228
228
  // Pass `this` so the light collection (and its child shadow context) can use
229
229
  // this scene's GPUSceneContext when building its own ViewManager — avoids
@@ -457,6 +457,17 @@ export class GPUSceneContext {
457
457
  * @returns {object} the module-static record, valid until the next call
458
458
  */
459
459
  #write_mesh_record(mesh, transform_row) {
460
+ // A skinned mesh's world bounds are a property of its *skeleton*, and the skeleton is not
461
+ // in the mesh's own subtree — Michelle's joint root is the mesh node's next sibling, which
462
+ // is the shape every glTF character has. `Node3D.updateMatrices` walks pre-order, so when
463
+ // the mesh's own bounds pass ran the joints it reads had not been visited yet and it
464
+ // described where the character stood before the move; a second walk would catch up, and
465
+ // nothing calls one. Re-deriving here costs a matrix per joint on a mesh that just moved,
466
+ // and here every walk is over — which is the only point at which the answer is knowable.
467
+ if (mesh.isSkinnedMesh === true) {
468
+ mesh.updateBoundsBasic();
469
+ }
470
+
460
471
  // SkinnedMesh routes to its per-instance clone (allocated + cached by the skinning
461
472
  // context); regular meshes get the source's id. obtain_geometry_index handles both,
462
473
  // idempotent.
@@ -860,8 +871,9 @@ export class GPUSceneContext {
860
871
 
861
872
  this.build();
862
873
 
863
- // After the build, which is what feeds the TLAS this frame's arrivals, departures and moves.
864
- this.#tlas.update();
874
+ // After the build, which is what feeds the TLAS this frame's arrivals, departures and moves
875
+ // and, for the GPU build, writes the world AABBs it reads out of the `meshes` table.
876
+ this.#tlas.update(this.scene_database_buffer);
865
877
  }
866
878
 
867
879
  /**
@@ -20,25 +20,71 @@
20
20
  * vertex region — leaving every other instance pointed at the source
21
21
  * untouched. The skin matrices are computed per the glTF spec formula
22
22
  * `inverse(meshNode.worldMatrix) × jointNode.worldMatrix ×
23
- * inverseBindMatrix` so the SkinnedMesh's own `transform_global` is
24
- * the natural placement point in the scene graph — moving it (or
25
- * parenting it) moves the rendered character, exactly like a regular
26
- * Mesh. The `inverse(meshNode.worldMatrix)` factor is precomputed
27
- * CPU-side at skin registration; see {@link GPUAnimationManager#register_skin}.
23
+ * inverseBindMatrix`, and the rasterizer re-applies
24
+ * `mesh.transform_global` to the result so the mesh node's own
25
+ * transform cancels out of the rendered position exactly, which is what
26
+ * the glTF spec asks for. The leftmost factor is taken live from the
27
+ * mesh's own transforms row inside {@link shader_meshlet_apply_skinning};
28
+ * see {@link chunk_skin_blend_mesh_local} for why it goes into each
29
+ * matrix rather than onto the blended position.
28
30
  *
29
- * The mesh's skin association lives in {@link GPUMeshSkinningContext}
30
- * `SkinnedMesh` itself carries no GPU-side state. Bind the mesh to a
31
- * skin via `gpu_scene.skinning.bind(mesh, skin_id)`, or rely on
31
+ * The mesh's **skin id** a row in a GPU table lives in
32
+ * {@link GPUMeshSkinningContext} and nowhere else. The CPU-side
33
+ * {@link Skin} it was registered with is a different thing, pure data
34
+ * that knows nothing about the GPU, and this mesh holds a reference to
35
+ * it in {@link skin} so its bounds can be worked out without asking the
36
+ * GPU anything. Bind the mesh to a skin via
37
+ * `gpu_scene.skinning.bind(mesh, skin_id)`, or rely on
32
38
  * {@link GPUAnimationManager#register_skin} to do it for every entry
33
- * in `Skin.meshes`. Until bound, the clone routes through the
34
- * rendering path but its vertices stay at the source's bind-pose
35
- * values — useful as an intermediate verification state.
39
+ * in `Skin.meshes` which is also what populates {@link skin}. Until
40
+ * bound, the clone routes through the rendering path but its vertices
41
+ * stay at the source's bind-pose values — useful as an intermediate
42
+ * verification state, and the state in which this mesh bounds itself
43
+ * exactly like a regular {@link Mesh}.
44
+ *
45
+ * A note on which bounds to believe. {@link Mesh#bounding_box} here is
46
+ * derived from whatever pose the *CPU* can see, and for a character
47
+ * animated by the pose accumulator that is the rest pose — the joints
48
+ * are {@link TransformAuthority.GPU} and their `transform_global` is
49
+ * never advanced. It is the right size and in the right place, and it
50
+ * is what seeds the scene database's `meshes` row. The deformed world
51
+ * box, refreshed every frame from the vertices the skinning pass just
52
+ * moved, is that row — read it from there when the silhouette is what
53
+ * matters.
36
54
  */
37
55
  export class SkinnedMesh extends Mesh {
56
+ /**
57
+ * The skin whose formula places this mesh's vertices, or `null` while none does.
58
+ *
59
+ * Not "is the deformation running" — {@link GPUMeshSkinningContext#unbind} can stop the
60
+ * skinning pass without this changing, and a mesh whose pass has stopped still holds vertices
61
+ * the skin put there. So {@link GPUAnimationManager#register_skin} writes it and nothing
62
+ * clears it: once a skin has taken a mesh over, its formula stays the right basis for
63
+ * {@link updateBoundsBasic} whether or not a pass runs this frame. Clear it by hand to hand
64
+ * the mesh back to {@link Mesh}'s composition.
65
+ *
66
+ * CPU data throughout (see {@link Skin}). The GPU-side skin *id* is a table row and lives in
67
+ * {@link GPUMeshSkinningContext}; this does not expose it.
68
+ *
69
+ * Nothing refreshes derived state on assignment — set this and the bounds go on describing
70
+ * the previous basis until {@link updateMatrices} or {@link updateBoundsBasic} runs.
71
+ *
72
+ * A clone shares the reference, exactly as {@link Skin#copy} shares its joint and mesh
73
+ * references: retargeting a cloned character means replacing this alongside the skin's own
74
+ * arrays, which {@link instantiate_scene_bundle} gets for free by re-registering the
75
+ * corresponded skin.
76
+ *
77
+ * @type {Skin|null}
78
+ */
79
+ skin: Skin | null;
38
80
  /**
39
81
  * @returns {SkinnedMesh}
40
82
  */
41
83
  clone(): SkinnedMesh;
84
+ /**
85
+ * @param {SkinnedMesh} other
86
+ */
87
+ copy(other: SkinnedMesh): void;
42
88
  /**
43
89
  * @readonly
44
90
  * @type {boolean}
@@ -1 +1 @@
1
- {"version":3,"file":"SkinnedMesh.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/SkinnedMesh.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH;IAEI;;OAEG;IACH,SAFa,WAAW,CAMvB;IAGL;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CANlC;qBAhDoB,WAAW"}
1
+ {"version":3,"file":"SkinnedMesh.d.ts","sourceRoot":"","sources":["../../../../../src/shade/renderer/scene/SkinnedMesh.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH;IAEI;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAFU,OAAK,IAAI,CAEP;IAEZ;;OAEG;IACH,SAFa,WAAW,CAMvB;IAED;;OAEG;IACH,YAFW,WAAW,QAYrB;IA4CL;;;OAGG;IACH,wBAFU,OAAO,CAEkB;CANlC;qBAnJoB,WAAW"}
@@ -1,3 +1,4 @@
1
+ import { compute_skin_world_bounds } from "../animation/compute_skin_world_bounds.js";
1
2
  import { Mesh } from "./Mesh.js";
2
3
 
3
4
  /**
@@ -22,22 +23,65 @@ import { Mesh } from "./Mesh.js";
22
23
  * vertex region — leaving every other instance pointed at the source
23
24
  * untouched. The skin matrices are computed per the glTF spec formula
24
25
  * `inverse(meshNode.worldMatrix) × jointNode.worldMatrix ×
25
- * inverseBindMatrix` so the SkinnedMesh's own `transform_global` is
26
- * the natural placement point in the scene graph — moving it (or
27
- * parenting it) moves the rendered character, exactly like a regular
28
- * Mesh. The `inverse(meshNode.worldMatrix)` factor is precomputed
29
- * CPU-side at skin registration; see {@link GPUAnimationManager#register_skin}.
26
+ * inverseBindMatrix`, and the rasterizer re-applies
27
+ * `mesh.transform_global` to the result so the mesh node's own
28
+ * transform cancels out of the rendered position exactly, which is what
29
+ * the glTF spec asks for. The leftmost factor is taken live from the
30
+ * mesh's own transforms row inside {@link shader_meshlet_apply_skinning};
31
+ * see {@link chunk_skin_blend_mesh_local} for why it goes into each
32
+ * matrix rather than onto the blended position.
30
33
  *
31
- * The mesh's skin association lives in {@link GPUMeshSkinningContext}
32
- * `SkinnedMesh` itself carries no GPU-side state. Bind the mesh to a
33
- * skin via `gpu_scene.skinning.bind(mesh, skin_id)`, or rely on
34
+ * The mesh's **skin id** a row in a GPU table lives in
35
+ * {@link GPUMeshSkinningContext} and nowhere else. The CPU-side
36
+ * {@link Skin} it was registered with is a different thing, pure data
37
+ * that knows nothing about the GPU, and this mesh holds a reference to
38
+ * it in {@link skin} so its bounds can be worked out without asking the
39
+ * GPU anything. Bind the mesh to a skin via
40
+ * `gpu_scene.skinning.bind(mesh, skin_id)`, or rely on
34
41
  * {@link GPUAnimationManager#register_skin} to do it for every entry
35
- * in `Skin.meshes`. Until bound, the clone routes through the
36
- * rendering path but its vertices stay at the source's bind-pose
37
- * values — useful as an intermediate verification state.
42
+ * in `Skin.meshes` which is also what populates {@link skin}. Until
43
+ * bound, the clone routes through the rendering path but its vertices
44
+ * stay at the source's bind-pose values — useful as an intermediate
45
+ * verification state, and the state in which this mesh bounds itself
46
+ * exactly like a regular {@link Mesh}.
47
+ *
48
+ * A note on which bounds to believe. {@link Mesh#bounding_box} here is
49
+ * derived from whatever pose the *CPU* can see, and for a character
50
+ * animated by the pose accumulator that is the rest pose — the joints
51
+ * are {@link TransformAuthority.GPU} and their `transform_global` is
52
+ * never advanced. It is the right size and in the right place, and it
53
+ * is what seeds the scene database's `meshes` row. The deformed world
54
+ * box, refreshed every frame from the vertices the skinning pass just
55
+ * moved, is that row — read it from there when the silhouette is what
56
+ * matters.
38
57
  */
39
58
  export class SkinnedMesh extends Mesh {
40
59
 
60
+ /**
61
+ * The skin whose formula places this mesh's vertices, or `null` while none does.
62
+ *
63
+ * Not "is the deformation running" — {@link GPUMeshSkinningContext#unbind} can stop the
64
+ * skinning pass without this changing, and a mesh whose pass has stopped still holds vertices
65
+ * the skin put there. So {@link GPUAnimationManager#register_skin} writes it and nothing
66
+ * clears it: once a skin has taken a mesh over, its formula stays the right basis for
67
+ * {@link updateBoundsBasic} whether or not a pass runs this frame. Clear it by hand to hand
68
+ * the mesh back to {@link Mesh}'s composition.
69
+ *
70
+ * CPU data throughout (see {@link Skin}). The GPU-side skin *id* is a table row and lives in
71
+ * {@link GPUMeshSkinningContext}; this does not expose it.
72
+ *
73
+ * Nothing refreshes derived state on assignment — set this and the bounds go on describing
74
+ * the previous basis until {@link updateMatrices} or {@link updateBoundsBasic} runs.
75
+ *
76
+ * A clone shares the reference, exactly as {@link Skin#copy} shares its joint and mesh
77
+ * references: retargeting a cloned character means replacing this alongside the skin's own
78
+ * arrays, which {@link instantiate_scene_bundle} gets for free by re-registering the
79
+ * corresponded skin.
80
+ *
81
+ * @type {Skin|null}
82
+ */
83
+ skin = null;
84
+
41
85
  /**
42
86
  * @returns {SkinnedMesh}
43
87
  */
@@ -46,6 +90,62 @@ export class SkinnedMesh extends Mesh {
46
90
  r.copy(this);
47
91
  return r;
48
92
  }
93
+
94
+ /**
95
+ * @param {SkinnedMesh} other
96
+ */
97
+ copy(other) {
98
+
99
+ if (this === other) {
100
+ // special case
101
+ return;
102
+ }
103
+
104
+ super.copy(other);
105
+
106
+ this.skin = other.skin;
107
+ }
108
+
109
+ /**
110
+ * World bounds of the deformed mesh, in whatever pose {@link skin}'s joints currently hold.
111
+ *
112
+ * `Mesh`'s version puts the rest-pose geometry under `transform_global`, and for a skinned mesh
113
+ * that is the wrong composition rather than an imprecise one: the renderer *cancels*
114
+ * `transform_global` out of a skinned vertex's position (see the class docs), so applying it to
115
+ * the bounds applies a transform the vertices never see. On a glTF character whose root node
116
+ * carries the file's centimetre→metre scale — the shape every FBX-derived asset has, with
117
+ * vertex positions in metres and inverse-bind matrices in centimetres — the result is a box
118
+ * 100× too small, small enough that frustum culling and TLAS extraction see a point where a
119
+ * character stands.
120
+ *
121
+ * So a bound mesh goes through {@link compute_skin_world_bounds}, which composes the bound the
122
+ * same way the renderer composes the vertex. An unbound one keeps `Mesh`'s composition, because
123
+ * an unbound clone really is drawn as `transform_global × source vertices`. A skin with no
124
+ * joints deforms nothing and is treated the same way.
125
+ *
126
+ * **Reads the skeleton, so call it when the skeleton is settled.** The joints are outside this
127
+ * mesh's own subtree — a glTF character's joint root is the mesh node's sibling — and
128
+ * {@link Node3D#updateMatrices} walks pre-order, so the inherited call this gets mid-walk can
129
+ * read joints that have not been visited yet and land the mesh where the character was before
130
+ * the move. That is why {@link GPUSceneContext} re-derives it on the way to writing the
131
+ * `meshes` row, which is where the value is actually consumed and where every walk is over.
132
+ */
133
+ updateBoundsBasic() {
134
+ const skin = this.skin;
135
+
136
+ if (skin === null || skin.joints.length === 0) {
137
+ super.updateBoundsBasic();
138
+ return;
139
+ }
140
+
141
+ const geometry = this.geometry;
142
+
143
+ compute_skin_world_bounds(
144
+ skin,
145
+ geometry.bounding_box, geometry.bounding_sphere,
146
+ this.bounding_box, this.bounding_sphere
147
+ );
148
+ }
49
149
  }
50
150
 
51
151
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"anchor_grow_topological.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js"],"names":[],"mappings":"AAWA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAX0B,UAAU;IACV,UAAU;IACJ,UAAU;IACV,UAAU;IACL,6BAA6B,EAAvD,IAAI,MAAM,EAAE,MAAM,CAAC;IACN,WAAW,EAAxB,MAAM;IACO,WAAW,EAAxB,MAAM;IACO,gBAAgB,EAA7B,MAAM;IACQ,cAAc,GAA5B,MAAM;IACJ,UAAU,GAAG,IAAI,CAsI7B;;;;;;;;aAhKa,MAAM,EAAE;;;;aACR,MAAM,EAAE;;;;2BACR,IAAI,MAAM,EAAE,MAAM,CAAC;;;;yBACnB,IAAI,MAAM,EAAE,MAAM,CAAC;;;;eACnB,OAAO,qDAAqD,EAAE,SAAS"}
1
+ {"version":3,"file":"anchor_grow_topological.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shade/renderer/scene/optimization/geometry/internal/anchor_grow_topological.js"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IAX0B,UAAU;IACV,UAAU;IACJ,UAAU;IACV,UAAU;IACL,6BAA6B,EAAvD,IAAI,MAAM,EAAE,MAAM,CAAC;IACN,WAAW,EAAxB,MAAM;IACO,WAAW,EAAxB,MAAM;IACO,gBAAgB,EAA7B,MAAM;IACQ,cAAc,GAA5B,MAAM;IACJ,UAAU,GAAG,IAAI,CA8I7B;;;;;;;;aAxKa,MAAM,EAAE;;;;aACR,MAAM,EAAE;;;;2BACR,IAAI,MAAM,EAAE,MAAM,CAAC;;;;yBACnB,IAAI,MAAM,EAAE,MAAM,CAAC;;;;eACnB,OAAO,qDAAqD,EAAE,SAAS"}
@@ -1,9 +1,10 @@
1
1
  import { NULL_POINTER } from "../../../../../../core/geom/3d/topology/struct/binary/BinaryTopology.js";
2
+ import { bt_edge_get } from "../../../../../../core/geom/3d/topology/struct/binary/query/bt_edge_get.js";
3
+ import { bt_edge_other_face } from "../../../../../../core/geom/3d/topology/struct/binary/query/bt_edge_other_face.js";
4
+ import { bt_face_third_vertex } from "../../../../../../core/geom/3d/topology/struct/binary/query/bt_face_third_vertex.js";
2
5
  import Vector3 from "../../../../../../core/geom/Vector3.js";
3
6
  import { Transform } from "../../../../../../engine/ecs/transform/Transform.js";
4
7
  import { StandardAttributes } from "../../../../geometry/StandardAttributes.js";
5
- import { bt_edge_other_face, bt_face_third_vertex } from "./bt_face_loop_helpers.js";
6
- import { bt_find_edge_between } from "./bt_find_edge_between.js";
7
8
  import { apply_match_transform, match_solve_transform } from "./match_solve_transform.js";
8
9
  import { vertex_attribute_pairs, vertex_attributes_match } from "./vertex_attributes_equal.js";
9
10
 
@@ -98,6 +99,14 @@ export function anchor_grow_topological(args) {
98
99
  continue;
99
100
  }
100
101
 
102
+ if (ev1_b === ev2_b) {
103
+ // Nothing constrains the correspondence to be injective, so an edge of A can arrive with
104
+ // both of its endpoints mapped onto a single vertex of B. There is no edge to cross
105
+ // there, and bt_edge_get asked for an edge between a vertex and itself answers with an
106
+ // arbitrary edge of that vertex's disk rather than with NULL_POINTER.
107
+ continue;
108
+ }
109
+
101
110
  // Identify face_a' on the other side of edge_a from any matched face on this edge
102
111
  // Find a matched face on this edge
103
112
  const loop_a = topology_a.edge_read_loop(edge_a);
@@ -121,7 +130,7 @@ export function anchor_grow_topological(args) {
121
130
  if (matched_faces_a.has(face_a_prime)) continue;
122
131
 
123
132
  // Find edge_b connecting (ev1_b, ev2_b)
124
- const edge_b = bt_find_edge_between(topology_b, ev1_b, ev2_b);
133
+ const edge_b = bt_edge_get(topology_b, ev1_b, ev2_b);
125
134
  if (edge_b === NULL_POINTER) continue;
126
135
 
127
136
  const face_b_inside = f_b_for_a.get(any_matched_face_a);