@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
@@ -0,0 +1,502 @@
1
+ import Vector3 from "../../../core/geom/Vector3.js";
2
+ import { DEG_TO_RAD } from "../../../core/math/DEG_TO_RAD.js";
3
+ import { AnimationClipFlags } from "../../renderer/animation/AnimationClipFlags.js";
4
+ import { camera_frame_sphere } from "../../renderer/camera/camera_frame_sphere.js";
5
+ import { OrbitalCameraController } from "../../renderer/camera/OrbitalCameraController.js";
6
+ import { PerspectiveCamera } from "../../renderer/camera/PerspectiveCamera.js";
7
+ import { create_frame_loop } from "../../renderer/create_frame_loop.js";
8
+ import { make_sunlight } from "../../renderer/light/make_sunlight.js";
9
+ import { load_gltf } from "../../renderer/loader/gltf/load_gltf.js";
10
+ import { Renderer } from "../../renderer/Renderer.js";
11
+ import { Scene } from "../../renderer/scene/Scene.js";
12
+ import { load_default_environment } from "../load_default_environment.js";
13
+ import { make_playground_asset_manager } from "../make_playground_asset_manager.js";
14
+ import { add_floor } from "./add_floor.js";
15
+ import { grid_position, place_character } from "./place_character.js";
16
+
17
+ /**
18
+ * A dancing character under the path tracer — the browser tier for the per-frame BLAS refit.
19
+ *
20
+ * Every device-free tier can say the refit is *recorded*: the right dispatches, the right offsets,
21
+ * the counters cleared. None of them can say the tree that comes out is the shape of the mesh,
22
+ * because none of them run a shader. This page is where that question gets answered, and it answers
23
+ * it by putting two readings of the same geometry side by side.
24
+ *
25
+ * Rasterization reads the clone's deformed vertices directly. The path tracer reads the clone's
26
+ * BLAS. If the refit works the two silhouettes are the same silhouette, and toggling between them
27
+ * changes the lighting and nothing else. If it does not, the traced figure stands in bind pose
28
+ * while the rasterized one dances — and casts shadows from a body that is not there, which is the
29
+ * more legible half of the failure.
30
+ *
31
+ * Runs under the dev server (`npm run dev`), which serves `test_assets/` and resolves the one bare
32
+ * specifier the renderer reaches for.
33
+ */
34
+
35
+ /**
36
+ * Served by the dev server out of `test_assets/`, which is gitignored and unpublished. See
37
+ * `test_assets/README.md`.
38
+ *
39
+ * A Mixamo character with one skin and a looping dance — which is the whole requirement: joints
40
+ * that move far enough, fast enough, that a tree fitted to the bind pose is visibly the wrong tree.
41
+ *
42
+ * @type {string}
43
+ */
44
+ const CHARACTER_URL = '/test_assets/Michelle.glb';
45
+
46
+ /**
47
+ * How far apart dancers stand, in character heights.
48
+ *
49
+ * @type {number}
50
+ */
51
+ const SPACING = 1.1;
52
+
53
+ /**
54
+ * A frame-time readout, kept as a rolling mean so the number is readable rather than jittering.
55
+ */
56
+ class FrameTimer {
57
+ #samples = new Float64Array(60);
58
+ #count = 0;
59
+ #cursor = 0;
60
+
61
+ /**
62
+ * @param {number} seconds
63
+ */
64
+ add(seconds) {
65
+ this.#samples[this.#cursor] = seconds * 1000;
66
+ this.#cursor = (this.#cursor + 1) % this.#samples.length;
67
+ this.#count = Math.min(this.#count + 1, this.#samples.length);
68
+ }
69
+
70
+ reset() {
71
+ this.#count = 0;
72
+ this.#cursor = 0;
73
+ }
74
+
75
+ /**
76
+ * @returns {number} mean frame time in milliseconds, or 0 before there is anything to average
77
+ */
78
+ get mean_ms() {
79
+ if (this.#count === 0) {
80
+ return 0;
81
+ }
82
+
83
+ let total = 0;
84
+ for (let i = 0; i < this.#count; i++) {
85
+ total += this.#samples[i];
86
+ }
87
+
88
+ return total / this.#count;
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Every {@link SkinnedMesh} a bundle's skins deform.
94
+ *
95
+ * Off the skins rather than by walking the scene roots: a skin already lists exactly the meshes
96
+ * that bind to it, which is what `register_skin` uses, so this cannot disagree with what actually
97
+ * gets deformed.
98
+ *
99
+ * @param {SceneBundle} bundle
100
+ * @returns {SkinnedMesh[]}
101
+ */
102
+ function skinned_meshes_of(bundle) {
103
+ const meshes = new Set();
104
+
105
+ for (const skin of bundle.skins) {
106
+ for (const mesh of skin.meshes) {
107
+ meshes.add(mesh);
108
+ }
109
+ }
110
+
111
+ return [...meshes];
112
+ }
113
+
114
+ /**
115
+ * Load one dancer, place it, and set it going.
116
+ *
117
+ * A whole load per dancer rather than one load and N instances: a second dancer needs a second
118
+ * joint hierarchy to pose, and those are scene nodes. The asset framework caches the bytes, so the
119
+ * repeat is parse work rather than transfer.
120
+ *
121
+ * @param {Scene} scene
122
+ * @param {GPUSceneContext} scene_context
123
+ * @param {AssetManager} asset_manager
124
+ * @param {number} index which dancer this is, used to place it
125
+ * @param {number} count how many there are in total
126
+ * @returns {Promise<SkinnedMesh[]>}
127
+ */
128
+ async function add_dancer(scene, scene_context, asset_manager, index, count) {
129
+ const bundle = await load_gltf(CHARACTER_URL, { assetManager: asset_manager });
130
+
131
+ const meshes = skinned_meshes_of(bundle);
132
+
133
+ if (meshes.length === 0) {
134
+ throw new Error(`${CHARACTER_URL} has no skinned mesh — nothing here has a BLAS to refit`);
135
+ }
136
+
137
+ // A grid, centred on the origin. The offset goes on a fresh parent above the character's own
138
+ // roots rather than on the mesh node: a skinned mesh's own transform cancels out of both the
139
+ // vertex the renderer draws and the box it publishes, so the joints are what has to move. See
140
+ // `place_character`.
141
+ const { x, z } = grid_position(index, count, SPACING);
142
+
143
+ place_character(scene, bundle, x, z);
144
+
145
+ const animations = scene_context.animation_manager;
146
+
147
+ for (const skin of bundle.skins) {
148
+ animations.register_skin(skin);
149
+ }
150
+
151
+ // One clip, looping, at full weight. The pose accumulator sums every *bound* clip whatever its
152
+ // weight, so binding the T-pose alongside the dance would blend the two rather than leave the
153
+ // dance alone — only what should play is registered.
154
+ const clip = bundle.clips.find(candidate => /samba|dance/i.test(candidate.name ?? ''))
155
+ ?? bundle.clips[0];
156
+
157
+ if (clip !== undefined) {
158
+ const clip_id = animations.register_clip(clip);
159
+
160
+ animations.set_playback_weight(clip_id, 1);
161
+ animations.set_flags(clip_id, AnimationClipFlags.Loop);
162
+ animations.start(clip_id);
163
+ }
164
+
165
+ return meshes;
166
+ }
167
+
168
+ /**
169
+ * The world-space box the renderer itself culls and traces this mesh by.
170
+ *
171
+ * Not `mesh.bounding_box`, which is the CPU-side box of the *source* geometry under the mesh
172
+ * transform — the rest pose, and for a glTF character whose node carries the file's centimetre
173
+ * scale, a box a couple of centimetres across. Framing a camera on that puts it inside the
174
+ * character, where a rasterized image and a traced one have no reason to look alike and neither
175
+ * says anything about the tree.
176
+ *
177
+ * The `meshes` table row is the deformed box: the skinning pass's bounds-refresh chain rewrites it
178
+ * every frame from the vertices it just moved. It is only right once that chain has run, so this
179
+ * is worth nothing before a few frames have gone by.
180
+ *
181
+ * @param {GPUSceneContext} scene_context
182
+ * @param {Mesh} mesh
183
+ * @returns {Promise<{low: Vector3, high: Vector3, radius: number}>}
184
+ */
185
+ async function world_bounds_of(scene_context, mesh) {
186
+ const row = scene_context.mesh_row_of(mesh);
187
+
188
+ const record = await scene_context.scene_database.debug_table_read_element('meshes', row);
189
+
190
+ const box = record.bounding_box;
191
+
192
+ const low = new Vector3(box[0], box[1], box[2]);
193
+ const high = new Vector3(box[3], box[4], box[5]);
194
+
195
+ return {
196
+ low,
197
+ high,
198
+ radius: Math.hypot(high.x - low.x, high.y - low.y, high.z - low.z) * 0.5,
199
+ };
200
+ }
201
+
202
+ /**
203
+ * Stand the prototype up. Called by the page rather than run on import, so that nothing here
204
+ * touches the DOM until there is one.
205
+ *
206
+ * @returns {Promise<void>}
207
+ */
208
+ export async function start() {
209
+
210
+ const element = id => document.getElementById(id);
211
+
212
+ const status_element = element('status');
213
+ const stats_element = element('stats');
214
+
215
+ /**
216
+ * @param {string} text
217
+ * @param {string} [kind]
218
+ */
219
+ function set_status(text, kind = '') {
220
+ status_element.textContent = text;
221
+ status_element.className = kind;
222
+ }
223
+
224
+ const canvas = element('view');
225
+
226
+ const context = canvas.getContext('webgpu');
227
+
228
+ if (context === null) {
229
+ set_status('no WebGPU context — this browser has none, or the page is not a secure context', 'fail');
230
+ return;
231
+ }
232
+
233
+ const renderer = new Renderer();
234
+
235
+ set_status('acquiring a device…');
236
+
237
+ await renderer.initialize({ context });
238
+
239
+ if (!renderer.graphics.device.features.has('subgroups')) {
240
+ set_status('device has no `subgroups`, which this engine takes as a baseline', 'warn');
241
+ }
242
+
243
+ const camera = new PerspectiveCamera();
244
+
245
+ camera.near = 0.01;
246
+ camera.far = 200;
247
+ camera.fov = 50 * DEG_TO_RAD;
248
+ camera.aspect = renderer.aspect_ratio;
249
+
250
+ const scene = new Scene();
251
+
252
+ // document.body rather than the canvas: the controller starts a keyboard device, and only a
253
+ // focusable element can receive key events — body carries tabindex for exactly that.
254
+ const controller = new OrbitalCameraController(camera, document.body);
255
+
256
+ // handy from the console
257
+ globalThis.renderer = renderer;
258
+ globalThis.scene = scene;
259
+ globalThis.camera = camera;
260
+ globalThis.controller = controller;
261
+
262
+ // The numeric half of what this page checks by eye: `verify()` in the console holds the tree's
263
+ // root box against the bounds-refresh chain's box over the same deformed vertices. Useful when
264
+ // the page cannot be looked at — a browser stops calling `requestAnimationFrame` for a page it
265
+ // is not compositing, so a hidden tab renders no frames to look at in the first place.
266
+ globalThis.verify = async () => {
267
+ const { verify_skinned_blas_refit } = await import('./verify_skinned_blas_refit.js');
268
+
269
+ return verify_skinned_blas_refit({ renderer, camera, scene, mesh: globalThis.dancers[0] });
270
+ };
271
+
272
+ // The half `verify()` is blind to: whether each leaf's box belongs to the triangle that leaf
273
+ // names. Run against the character's *source* geometry — skinning deforms the clone's vertex
274
+ // region and leaves the source's alone, so the tree the builder wrote for it is still the right
275
+ // answer and is there to compare against.
276
+ globalThis.verify_leaves = async () => {
277
+ const { verify_leaf_correspondence } = await import('./verify_skinned_blas_refit.js');
278
+
279
+ return verify_leaf_correspondence({ renderer, geometry: globalThis.dancers[0].geometry });
280
+ };
281
+
282
+ const frame_timer = new FrameTimer();
283
+
284
+ // Tracing by default — it is the reading of the scene this page exists to check.
285
+ renderer.feature_path_tracing_enabled = element('path_tracing').checked;
286
+ renderer.feature_taa_enabled = element('taa').checked;
287
+
288
+ element('path_tracing').addEventListener('change', event => {
289
+ renderer.feature_path_tracing_enabled = event.target.checked;
290
+
291
+ // Two temporal filters over one image is nonsense; the tracer accumulates on its own.
292
+ if (event.target.checked) {
293
+ element('taa').checked = false;
294
+ renderer.feature_taa_enabled = false;
295
+ }
296
+
297
+ renderer.indicate_view_change();
298
+ frame_timer.reset();
299
+ });
300
+
301
+ element('taa').addEventListener('change', event => {
302
+ renderer.feature_taa_enabled = event.target.checked;
303
+ renderer.indicate_view_change();
304
+ });
305
+
306
+ let animating = true;
307
+
308
+ element('animation').addEventListener('click', () => {
309
+ animating = !animating;
310
+
311
+ element('animation').textContent = animating ? 'Freeze pose' : 'Resume dance';
312
+
313
+ renderer.path_tracer.clear_history = true;
314
+ renderer.indicate_view_change();
315
+ });
316
+
317
+ let diff_showing = false;
318
+
319
+ // Held while the diff captures. The frame loop draws to the same canvas the capture reads back
320
+ // from, and a frame presented between a render and its `drawImage` leaves the read with an
321
+ // empty bitmap — a comparison of two blanks, which agrees with itself perfectly.
322
+ let frame_loop_suspended = false;
323
+
324
+ element('diff').addEventListener('click', async () => {
325
+ const { clear_diff_overlay, diff_traced_against_rasterized } =
326
+ await import('./diff_traced_against_rasterized.js');
327
+
328
+ if (diff_showing) {
329
+ clear_diff_overlay();
330
+
331
+ diff_showing = false;
332
+
333
+ set_status('diff cleared', '');
334
+
335
+ return;
336
+ }
337
+
338
+ set_status('rendering both ways…');
339
+
340
+ try {
341
+ const result = await diff_traced_against_rasterized({
342
+ renderer,
343
+ camera,
344
+ scene,
345
+ suspend: held => {
346
+ frame_loop_suspended = held;
347
+ },
348
+ });
349
+
350
+ diff_showing = true;
351
+
352
+ set_status(result.verdict, result.verdict.startsWith('edge') ? 'pass' : 'fail');
353
+ } catch (error) {
354
+ set_status(error.message, 'fail');
355
+
356
+ console.error(error);
357
+ }
358
+ });
359
+
360
+ element('reset_accumulation').addEventListener('click', () => {
361
+ renderer.path_tracer.clear_history = true;
362
+ renderer.indicate_view_change();
363
+ frame_timer.reset();
364
+ });
365
+
366
+ const parameters = new URLSearchParams(location.search);
367
+
368
+ const count = Math.min(64, Math.max(1, Number.parseInt(parameters.get('count'), 10) || 1));
369
+
370
+ element('character_count').value = String(count);
371
+
372
+ // A Scene has no teardown, so changing the cast reloads the page rather than emptying one in
373
+ // place.
374
+ element('respawn').addEventListener('click', () => {
375
+ const next = new URLSearchParams(location.search);
376
+
377
+ next.set('count', element('character_count').value);
378
+
379
+ location.search = next.toString();
380
+ });
381
+
382
+ // ---- the scene ------------------------------------------------------------------------
383
+
384
+ set_status(`loading ${count} × ${CHARACTER_URL} …`);
385
+
386
+ const scene_context = renderer.scenes.obtain(scene);
387
+
388
+ /** @type {SkinnedMesh[]} */
389
+ const dancers = [];
390
+
391
+ try {
392
+ const asset_manager = await make_playground_asset_manager();
393
+
394
+ for (let i = 0; i < count; i++) {
395
+ dancers.push(...await add_dancer(scene, scene_context, asset_manager, i, count));
396
+ }
397
+ } catch (error) {
398
+ set_status(
399
+ `could not load the character (${error.message}). Put it under test_assets/ — `
400
+ + `see test_assets/README.md.`,
401
+ 'fail'
402
+ );
403
+ console.error(error);
404
+ return;
405
+ }
406
+
407
+ if (!scene.lights.elements.some(light => light.isDirectionalLight)) {
408
+ // a glTF character carries no light of its own
409
+ scene.lights.add(make_sunlight({ intensity: 6 }));
410
+ }
411
+
412
+ // Frames enough for skinning to run and its bounds-refresh chain to publish a deformed box,
413
+ // which is the only box worth framing on — see `world_bounds_of`. The camera is parked at the
414
+ // origin until then, so nothing is worth looking at yet either.
415
+ for (let i = 0; i < 8; i++) {
416
+ renderer.render(camera, scene, 1 / 60);
417
+
418
+ await renderer.graphics.device.queue.onSubmittedWorkDone();
419
+ }
420
+
421
+ // union over every dancer, so a crowd is framed rather than whoever loaded first
422
+ let low = null;
423
+ let high = null;
424
+
425
+ for (const dancer of dancers) {
426
+ const bounds = await world_bounds_of(scene_context, dancer);
427
+
428
+ low = low === null ? bounds.low : new Vector3(
429
+ Math.min(low.x, bounds.low.x), Math.min(low.y, bounds.low.y), Math.min(low.z, bounds.low.z)
430
+ );
431
+
432
+ high = high === null ? bounds.high : new Vector3(
433
+ Math.max(high.x, bounds.high.x), Math.max(high.y, bounds.high.y), Math.max(high.z, bounds.high.z)
434
+ );
435
+ }
436
+
437
+ const span = new Vector3(high.x - low.x, high.y - low.y, high.z - low.z);
438
+
439
+ globalThis.floor = add_floor(scene, Math.max(span.x, span.z) * 6, low.y);
440
+
441
+ const radius = Math.hypot(span.x, span.y, span.z) * 0.5;
442
+
443
+ camera_frame_sphere(
444
+ controller,
445
+ radius,
446
+ new Vector3((low.x + high.x) / 2, (low.y + high.y) / 2, (low.z + high.z) / 2)
447
+ );
448
+
449
+ controller.movement_speed_scale = radius * 0.2;
450
+
451
+ // a metre-scale subject, so the default 0.01 near plane is far too tight to be worth keeping
452
+ camera.near = radius * 0.01;
453
+ camera.far = radius * 400;
454
+
455
+ load_default_environment(scene).then(applied => {
456
+ if (applied) {
457
+ renderer.indicate_view_change();
458
+ }
459
+ });
460
+
461
+ // the controller's keyboard device listens on body, and only a focused element gets key events
462
+ document.body.focus();
463
+
464
+ globalThis.dancers = dancers;
465
+
466
+ set_status(`loaded — ${count} dancing, ${scene.instances.instances.length} instances`, 'pass');
467
+
468
+ renderer.indicate_view_change();
469
+
470
+ // ---- frame loop -----------------------------------------------------------------------
471
+
472
+ const FRAME_RATE_LIMIT = 60;
473
+
474
+ create_frame_loop(time_delta_s => {
475
+ if (frame_loop_suspended) {
476
+ // the diff owns the canvas until it has both captures
477
+ return;
478
+ }
479
+
480
+ const width = window.innerWidth;
481
+ const height = window.innerHeight;
482
+
483
+ renderer.resize(width, height);
484
+ renderer.pixel_ratio = window.devicePixelRatio;
485
+ camera.aspect = width / height;
486
+
487
+ controller.update();
488
+
489
+ // A frozen pose is a still scene, which is the only condition under which the accumulator
490
+ // converges — so time stops rather than the frame loop stopping, and the camera stays live.
491
+ renderer.render(camera, scene, animating ? time_delta_s : 0);
492
+
493
+ frame_timer.add(time_delta_s);
494
+
495
+ const mean = frame_timer.mean_ms;
496
+
497
+ stats_element.textContent =
498
+ `${mean.toFixed(1)} ms · ${mean > 0 ? (1000 / mean).toFixed(0) : '0'} fps · `
499
+ + `${count} dancer${count === 1 ? '' : 's'}`
500
+ + `${renderer.feature_path_tracing_enabled ? ' · path traced' : ' · rasterized'}`;
501
+ }, FRAME_RATE_LIMIT);
502
+ }
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Stand one loaded character on the floor at `(x, 0, z)`.
3
+ *
4
+ * ## Why the mesh node is not the placement point
5
+ *
6
+ * It is tempting, and it is what this page used to do: the mesh is the visible thing, so move the
7
+ * mesh. For a {@link SkinnedMesh} that is a no-op, and the reason is the glTF skinning formula
8
+ * itself. A skinned vertex lands at
9
+ *
10
+ * ```
11
+ * mesh.global × inverse(mesh.global) × joint.global × inverse_bind × v
12
+ * ```
13
+ *
14
+ * — `chunk_skin_blend_mesh_local` folds the leftmost inverse into each joint matrix and the
15
+ * rasterizer re-applies `mesh.global` afterwards, so the mesh node's own transform **cancels
16
+ * exactly** and the vertex is at `joint.global × inverse_bind × v`. `compute_skin_world_bounds`
17
+ * composes the published box the same way and does not read the mesh node either. So a skinned
18
+ * character is placed by its **joints**, and the only thing that moves them is an ancestor they
19
+ * actually sit under.
20
+ *
21
+ * Michelle is the shape that makes this concrete. Her file is one root carrying the centimetre
22
+ * scale and the Z-up rotation, with the mesh node and the joint root as *siblings* beneath it:
23
+ *
24
+ * ```
25
+ * "Character" R=(0.70711, 0, 0, 0.70711) S=(0.01, 0.01, 0.01)
26
+ * ├── "Ch03" mesh 0, skin 0 — no local transform of its own
27
+ * └── "mixamorig:Hips" the joint root
28
+ * ```
29
+ *
30
+ * Nothing under `Ch03` drives a joint, so writing a grid offset there — to either transform —
31
+ * moves nothing at all.
32
+ *
33
+ * ## Why a placement node rather than the character's own root
34
+ *
35
+ * `"Character"`'s local transform is the file's, and it is load-bearing twice over: the 0.01 scale
36
+ * is what makes the inverse-bind matrices agree with the vertex positions, and a `Transform64`
37
+ * composes as `T · R · S`, so a translation written there is *not* the world offset — it is an
38
+ * offset the file's own rotation and scale then act on. A fresh parent keeps the two apart: the
39
+ * grid offset is this node's whole transform, the file's is untouched below it, and the
40
+ * composition happens where it always happens.
41
+ *
42
+ * A node under {@link TransformAuthority.GPU} still follows a CPU-driven parent — the hierarchy
43
+ * pass composes `global` from the node's own TRS and the parent chain — so the joints the pose
44
+ * accumulator owns are carried by this without anyone writing to their rows.
45
+ *
46
+ * ## Why the local transform
47
+ *
48
+ * The same reason the floor is placed that way, and it is worth restating because this page has
49
+ * now been bitten by it twice. `Node3D.transform_global` is **derived** — its doc comment says so
50
+ * — and `updateMatrices` recomputes it from the local transform and the parent chain. The GPU is
51
+ * handed the node's local TRS and composes `node.global` from it, so a placement that only ever
52
+ * reached `transform_global` is discarded at both ends. See `add_floor` for the version of this
53
+ * where the two ends disagreed and produced two different pictures; here they agreed on the wrong
54
+ * answer, which is quieter and took longer to see.
55
+ *
56
+ * @param {Scene} scene
57
+ * @param {SceneBundle} bundle a freshly loaded character — its roots must not be parented yet
58
+ * @param {number} x
59
+ * @param {number} z
60
+ * @returns {Node3D} the placement node, now the parent of every root in `bundle.scenes`
61
+ */
62
+ export function place_character(scene: Scene, bundle: SceneBundle, x: number, z: number): Node3D;
63
+ /**
64
+ * Where the `index`-th of `count` characters stands: a square-ish grid centred on the origin, laid
65
+ * out in rows along +x.
66
+ *
67
+ * Centred rather than growing from the origin so that `?count=N` frames the same way for every N —
68
+ * the camera is aimed at the union of the cast, and a grid that walks away from the origin as it
69
+ * grows pushes that union off with it.
70
+ *
71
+ * @param {number} index
72
+ * @param {number} count
73
+ * @param {number} spacing distance between neighbours
74
+ * @returns {{x: number, z: number}}
75
+ */
76
+ export function grid_position(index: number, count: number, spacing: number): {
77
+ x: number;
78
+ z: number;
79
+ };
80
+ import { Node3D } from "../../renderer/scene/Node3D.js";
81
+ //# sourceMappingURL=place_character.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"place_character.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/place_character.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,sEAJW,MAAM,KACN,MAAM,GACJ,MAAM,CA+BlB;AAED;;;;;;;;;;;;GAYG;AACH,qCALW,MAAM,SACN,MAAM,WACN,MAAM,GACJ;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,CAUlC;uBAnHsB,gCAAgC"}