@woosh/meep-engine 3.3.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (886) hide show
  1. package/editor/process/SymbolicDisplayProcess.js +106 -106
  2. package/editor/process/symbolic/{SoundEmitterSymbolicDisplay.js → AudioEmitterSymbolicDisplay.js} +67 -57
  3. package/package.json +94 -94
  4. package/src/DUPLICATION_AUDIT_2026_08_07/F_sound.md +110 -102
  5. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts +54 -0
  6. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.d.ts.map +1 -1
  7. package/src/core/bvh2/bvh3/ebvh_build_hierarchy_radix.js +10 -3
  8. package/src/engine/Engine.js +2 -2
  9. package/src/engine/EntityCreator.d.ts +19 -11
  10. package/src/engine/EntityCreator.d.ts.map +1 -1
  11. package/src/engine/EntityCreator.js +116 -94
  12. package/src/engine/achievements/AchievementManager.d.ts.map +1 -1
  13. package/src/engine/achievements/AchievementManager.js +437 -433
  14. package/src/engine/animation/AnimatedActions.d.ts +6 -1
  15. package/src/engine/animation/AnimatedActions.d.ts.map +1 -1
  16. package/src/engine/animation/AnimatedActions.js +111 -81
  17. package/src/engine/animation/AnimationUtils.d.ts.map +1 -1
  18. package/src/engine/animation/AnimationUtils.js +234 -252
  19. package/src/engine/ecs/storage/binary/SERIALIZATION_COVERAGE.md +275 -269
  20. package/src/engine/ecs/storage/populateEngineSerializationRegistry.d.ts.map +1 -1
  21. package/src/engine/ecs/storage/populateEngineSerializationRegistry.js +26 -5
  22. package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +1 -1
  23. package/src/engine/ecs/util/hideEntityGracefully.js +196 -208
  24. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +1 -1
  25. package/src/engine/graphics3/GraphicsEngine3.d.ts +7 -0
  26. package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
  27. package/src/engine/graphics3/GraphicsEngine3.js +9 -0
  28. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -1
  29. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  30. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +4 -2
  31. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  32. package/src/engine/sound/SOUND_EMITTER_RETIREMENT_PLAN.md +536 -0
  33. package/src/engine/sound/SoundEngine.d.ts +2 -2
  34. package/src/engine/sound/SoundEngine.js +124 -124
  35. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts +20 -0
  36. package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
  37. package/src/engine/sound/ecs/audio/AudioEmitter.js +25 -2
  38. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts +6 -6
  39. package/src/engine/sound/ecs/audio/AudioEmitterSystem.d.ts.map +1 -1
  40. package/src/engine/sound/ecs/audio/AudioEmitterSystem.js +338 -314
  41. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts +143 -0
  42. package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -0
  43. package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +191 -0
  44. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts +33 -0
  45. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.d.ts.map +1 -0
  46. package/src/engine/sound/ecs/trigger/AudioEventTriggerSerializationAdapter.js +81 -0
  47. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts +65 -0
  48. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.d.ts.map +1 -0
  49. package/src/engine/sound/ecs/trigger/AudioEventTriggerSystem.js +184 -0
  50. package/src/engine/sound/sopra/IMPLEMENTATION_PLAN.md +999 -993
  51. package/src/engine/sound/sopra/README.md +644 -643
  52. package/src/engine/sound/sopra/SopraEngine.d.ts +2 -2
  53. package/src/engine/sound/sopra/SopraEngine.js +432 -432
  54. package/src/engine/sound/sopra/legacy/SoundAttenuationFunction.d.ts.map +1 -0
  55. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.d.ts +3 -3
  56. package/src/engine/sound/sopra/legacy/SoundController.d.ts.map +1 -0
  57. package/src/engine/sound/{ecs → sopra/legacy}/SoundController.js +176 -176
  58. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.d.ts +11 -27
  59. package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -0
  60. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitter.js +352 -382
  61. package/src/engine/sound/sopra/legacy/SoundEmitterFlags.d.ts.map +1 -0
  62. package/src/engine/sound/sopra/legacy/SoundEmitterSerializationAdapter.d.ts.map +1 -0
  63. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts.map +1 -1
  64. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts.map +1 -1
  65. package/src/engine/sound/sopra/legacy/SoundPanningModelType.d.ts.map +1 -0
  66. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.d.ts +11 -55
  67. package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -0
  68. package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrack.js +278 -357
  69. package/src/engine/sound/sopra/legacy/SoundTrackFlags.d.ts.map +1 -0
  70. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts +34 -0
  71. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.d.ts.map +1 -0
  72. package/src/engine/sound/sopra/legacy/convertLegacySoundComponents.js +279 -0
  73. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts +3 -3
  74. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.d.ts.map +1 -1
  75. package/src/engine/sound/sopra/legacy/soundEmitterToEventDescription.js +122 -122
  76. package/src/shade/device/mock/SoftwareGPUDevice.d.ts.map +1 -1
  77. package/src/shade/device/mock/SoftwareGPUDevice.js +7 -1
  78. package/src/shade/device/timing/GPUTimerArray.d.ts.map +1 -1
  79. package/src/shade/device/timing/GPUTimerArray.js +10 -0
  80. package/src/shade/playground/add_random_meshes.d.ts +19 -3
  81. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  82. package/src/shade/playground/add_random_meshes.js +132 -84
  83. package/src/shade/playground/bvh_repro/README.md +57 -0
  84. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts +33 -0
  85. package/src/shade/playground/bvh_repro/bvh_repro_device.d.ts.map +1 -0
  86. package/src/shade/playground/bvh_repro/bvh_repro_device.js +90 -0
  87. package/src/shade/playground/bvh_repro/index.html +124 -0
  88. package/src/shade/playground/bvh_repro/main.d.ts.map +1 -0
  89. package/src/shade/playground/bvh_repro/main.js +254 -0
  90. package/src/shade/playground/load_default_environment.d.ts +10 -1
  91. package/src/shade/playground/load_default_environment.d.ts.map +1 -1
  92. package/src/shade/playground/load_default_environment.js +44 -20
  93. package/src/shade/playground/make_playground_asset_manager.d.ts +16 -0
  94. package/src/shade/playground/make_playground_asset_manager.d.ts.map +1 -0
  95. package/src/shade/playground/make_playground_asset_manager.js +33 -0
  96. package/src/shade/playground/skinned_blas_refit/README.md +126 -0
  97. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +47 -0
  98. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -0
  99. package/src/shade/playground/skinned_blas_refit/add_floor.js +71 -0
  100. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts +28 -0
  101. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.d.ts.map +1 -0
  102. package/src/shade/playground/skinned_blas_refit/diff_traced_against_rasterized.js +745 -0
  103. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts +30 -0
  104. package/src/shade/playground/skinned_blas_refit/flat_environment.d.ts.map +1 -0
  105. package/src/shade/playground/skinned_blas_refit/flat_environment.js +67 -0
  106. package/src/shade/playground/skinned_blas_refit/index.html +168 -0
  107. package/src/shade/playground/skinned_blas_refit/main.d.ts +8 -0
  108. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -0
  109. package/src/shade/playground/skinned_blas_refit/main.js +502 -0
  110. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +82 -0
  111. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -0
  112. package/src/shade/playground/skinned_blas_refit/place_character.js +117 -0
  113. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts +21 -0
  114. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.d.ts.map +1 -0
  115. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_leaf_triangles.js +104 -0
  116. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts +23 -0
  117. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.d.ts.map +1 -0
  118. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_points.js +94 -0
  119. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts +26 -0
  120. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.d.ts.map +1 -0
  121. package/src/shade/playground/skinned_blas_refit/shader_blas_audit_visibility.js +134 -0
  122. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +40 -0
  123. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -0
  124. package/src/shade/playground/skinned_blas_refit/sweep_views.js +135 -0
  125. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts +31 -0
  126. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -0
  127. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +240 -0
  128. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts +20 -0
  129. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.d.ts.map +1 -0
  130. package/src/shade/playground/skinned_blas_refit/verify_leaf_triangles.js +202 -0
  131. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +50 -0
  132. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -0
  133. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +366 -0
  134. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +17 -0
  135. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -0
  136. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +249 -0
  137. package/src/shade/playground/sponza_path_trace/README.md +57 -0
  138. package/src/shade/playground/sponza_path_trace/index.html +164 -0
  139. package/src/shade/playground/sponza_path_trace/main.d.ts +8 -0
  140. package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -0
  141. package/src/shade/playground/sponza_path_trace/main.js +363 -0
  142. package/src/shade/renderer/Renderer.d.ts +16 -0
  143. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  144. package/src/shade/renderer/Renderer.js +23 -4
  145. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +5 -1
  146. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  147. package/src/shade/renderer/animation/GPUAnimationManager.js +28 -3
  148. package/src/shade/renderer/animation/Skin.d.ts +9 -7
  149. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  150. package/src/shade/renderer/animation/Skin.js +9 -7
  151. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts +35 -0
  152. package/src/shade/renderer/animation/compute_skin_world_bounds.d.ts.map +1 -0
  153. package/src/shade/renderer/animation/compute_skin_world_bounds.js +146 -0
  154. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  155. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +41 -0
  156. package/src/shade/renderer/geometry/GPUGeometryManager.d.ts.map +1 -1
  157. package/src/shade/renderer/geometry/GPUGeometryManager.js +65 -15
  158. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts +78 -7
  159. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  160. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +302 -77
  161. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts +18 -6
  162. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.d.ts.map +1 -1
  163. package/src/shade/renderer/geometry/bvh/GPUGeometryMeshletsBVH.js +19 -6
  164. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts +51 -0
  165. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.d.ts.map +1 -0
  166. package/src/shade/renderer/geometry/bvh/bvh2_check_bounds.js +260 -0
  167. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts +23 -0
  168. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.d.ts.map +1 -0
  169. package/src/shade/renderer/geometry/bvh/bvh2_derive_topology.js +82 -0
  170. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts +25 -0
  171. package/src/shade/renderer/geometry/bvh/record_blas_refit.d.ts.map +1 -0
  172. package/src/shade/renderer/geometry/bvh/record_blas_refit.js +102 -0
  173. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts +30 -0
  174. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.d.ts.map +1 -0
  175. package/src/shade/renderer/geometry/bvh/shader_blas_refit_leaf_bounds.js +122 -0
  176. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts +55 -0
  177. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.d.ts.map +1 -0
  178. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUFFER_LAYOUT.js +70 -0
  179. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts +37 -0
  180. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.d.ts.map +1 -0
  181. package/src/shade/renderer/gpu_primitive/bvh/BVH_BUILD_SETTINGS_STRUCT.js +45 -0
  182. package/src/shade/renderer/gpu_primitive/bvh/GPU_BVH_BUILD_PLAN.md +1115 -0
  183. package/src/shade/renderer/gpu_primitive/bvh/PHASE1_HANDOVER.md +201 -0
  184. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts +88 -0
  185. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.d.ts.map +1 -0
  186. package/src/shade/renderer/gpu_primitive/bvh/check_bvh_structure.js +233 -0
  187. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts +18 -0
  188. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.d.ts.map +1 -0
  189. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_delta.js +38 -0
  190. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts +16 -0
  191. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.d.ts.map +1 -0
  192. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_determine_range.js +79 -0
  193. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts +16 -0
  194. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.d.ts.map +1 -0
  195. package/src/shade/renderer/gpu_primitive/bvh/chunk_bvh_find_split.js +49 -0
  196. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts +43 -0
  197. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.d.ts.map +1 -0
  198. package/src/shade/renderer/gpu_primitive/bvh/graph_bvh_build_lbvh.js +217 -0
  199. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts +24 -0
  200. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.d.ts.map +1 -0
  201. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_emit_hierarchy.js +143 -0
  202. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts +17 -0
  203. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.d.ts.map +1 -0
  204. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_morton.js +83 -0
  205. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts +24 -0
  206. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.d.ts.map +1 -0
  207. package/src/shade/renderer/gpu_primitive/bvh/shader_bvh_refit.js +141 -0
  208. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts +31 -0
  209. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.d.ts.map +1 -0
  210. package/src/shade/renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js +422 -0
  211. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.d.ts.map +1 -1
  212. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/test_prefix_sum.js +1 -2
  213. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts +9 -0
  214. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.d.ts.map +1 -0
  215. package/src/shade/renderer/gpu_primitive/sort/SORT_PASS_SETTINGS_STRUCT.js +23 -0
  216. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts +18 -0
  217. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.d.ts.map +1 -0
  218. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_digit.js +32 -0
  219. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts +27 -0
  220. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.d.ts.map +1 -0
  221. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_rank.js +41 -0
  222. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts +25 -0
  223. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.d.ts.map +1 -0
  224. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_workgroup_scan.js +74 -0
  225. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts +71 -0
  226. package/src/shade/renderer/gpu_primitive/sort/defs.d.ts.map +1 -0
  227. package/src/shade/renderer/gpu_primitive/sort/defs.js +79 -0
  228. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts +37 -0
  229. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.d.ts.map +1 -0
  230. package/src/shade/renderer/gpu_primitive/sort/graph_radix_sort.js +197 -0
  231. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts +16 -0
  232. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.d.ts.map +1 -0
  233. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_histogram.js +85 -0
  234. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts +15 -0
  235. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.d.ts.map +1 -0
  236. package/src/shade/renderer/gpu_primitive/sort/shader_radix_sort_scatter.js +192 -0
  237. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts +12 -0
  238. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.d.ts.map +1 -0
  239. package/src/shade/renderer/gpu_primitive/sort/verify_radix_sort.js +188 -0
  240. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +16 -4
  241. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  242. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +235 -24
  243. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  244. package/src/shade/renderer/scene/GPUSceneContext.js +15 -3
  245. package/src/shade/renderer/scene/SkinnedMesh.d.ts +57 -11
  246. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  247. package/src/shade/renderer/scene/SkinnedMesh.js +111 -11
  248. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts +22 -0
  249. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.d.ts.map +1 -0
  250. package/src/shade/renderer/scene/shader_bvh_extract_instance_leaves.js +145 -0
  251. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts +18 -0
  252. package/src/shade/renderer/scene/verify_gpu_tlas_build.d.ts.map +1 -0
  253. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +364 -0
  254. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts +9 -1
  255. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.d.ts.map +1 -1
  256. package/src/shade/renderer/shader/chunk/binary/chunk_split_by_3.js +29 -21
  257. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts +22 -0
  258. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.d.ts.map +1 -0
  259. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_v3_morton_encode.js +31 -0
  260. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.d.ts.map +1 -1
  261. package/src/shade/renderer/shader/chunk/geometry/aabb3/chunk_aabb3_intersects_ray.js +87 -39
  262. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts +17 -0
  263. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.d.ts.map +1 -0
  264. package/src/shade/renderer/shader/chunk/geometry/format/chunk_geometry_read_triangle_bounds.js +40 -0
  265. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts +15 -0
  266. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.d.ts.map +1 -0
  267. package/src/shade/renderer/shader/chunk/geometry/meshlet/chunk_read_meshlet_triangle_bounds.js +52 -0
  268. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts +9 -0
  269. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.d.ts.map +1 -1
  270. package/src/shade/renderer/shader/chunk/geometry/ray/RAY_STRUCT.js +9 -0
  271. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts +20 -0
  272. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.d.ts.map +1 -1
  273. package/src/shade/renderer/shader/chunk/geometry/ray/chunk_ray_transform_m4.js +52 -34
  274. package/src/shade/renderer/texture/virtual/README.md +255 -276
  275. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
  276. package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +66 -2
  277. package/src/shade/wgsl/emulator/WGSLLanguageCore.d.ts.map +1 -1
  278. package/src/shade/wgsl/emulator/WGSLLanguageCore.js +83 -0
  279. package/src/view/graphics/{WebGLContextFailureView.d.ts → GraphicsContextFailureView.d.ts} +2 -2
  280. package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -0
  281. package/src/view/graphics/{WebGLContextFailureView.js → GraphicsContextFailureView.js} +1 -1
  282. package/src/view/interaction/InterfaceCommand.d.ts +8 -8
  283. package/src/view/interaction/InterfaceCommand.d.ts.map +1 -1
  284. package/src/view/interaction/InterfaceCommand.js +146 -146
  285. package/src/view/interaction/createInterfaceCommandButton.d.ts.map +1 -1
  286. package/src/view/interaction/createInterfaceCommandButton.js +115 -124
  287. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts +0 -7
  288. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts.map +0 -1
  289. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.js +0 -18
  290. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts +0 -7
  291. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts.map +0 -1
  292. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +0 -7
  293. package/src/engine/ecs/components/Timer.d.ts +0 -50
  294. package/src/engine/ecs/components/Timer.d.ts.map +0 -1
  295. package/src/engine/ecs/components/Timer.js +0 -80
  296. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts +0 -22
  297. package/src/engine/ecs/evaluation/PointFitnessBinary.d.ts.map +0 -1
  298. package/src/engine/ecs/evaluation/PointFitnessBinary.js +0 -33
  299. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts +0 -12
  300. package/src/engine/ecs/evaluation/PointFitnessConstant.d.ts.map +0 -1
  301. package/src/engine/ecs/evaluation/PointFitnessConstant.js +0 -27
  302. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts +0 -17
  303. package/src/engine/ecs/evaluation/PointFitnessFunction.d.ts.map +0 -1
  304. package/src/engine/ecs/evaluation/PointFitnessFunction.js +0 -20
  305. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts +0 -12
  306. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.d.ts.map +0 -1
  307. package/src/engine/ecs/evaluation/arithmetic/PointFitnessAdd.js +0 -27
  308. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts +0 -12
  309. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.d.ts.map +0 -1
  310. package/src/engine/ecs/evaluation/arithmetic/PointFitnessMultiply.js +0 -28
  311. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts +0 -50
  312. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.d.ts.map +0 -1
  313. package/src/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +0 -176
  314. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts +0 -7
  315. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.d.ts.map +0 -1
  316. package/src/engine/ecs/evaluation/json/deserializeFromJSON_PointFitnessFunction.js +0 -68
  317. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts +0 -7
  318. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.d.ts.map +0 -1
  319. package/src/engine/ecs/evaluation/json/serializeToJSON_PointFitnessFunction.js +0 -89
  320. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts +0 -17
  321. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.d.ts.map +0 -1
  322. package/src/engine/ecs/evaluation/world/ReadTerrainLayerWeightPointFitness.js +0 -60
  323. package/src/engine/ecs/systems/TimerSystem.d.ts +0 -10
  324. package/src/engine/ecs/systems/TimerSystem.d.ts.map +0 -1
  325. package/src/engine/ecs/systems/TimerSystem.js +0 -86
  326. package/src/engine/ecs/transform/copy_three_transform.d.ts +0 -7
  327. package/src/engine/ecs/transform/copy_three_transform.d.ts.map +0 -1
  328. package/src/engine/ecs/transform/copy_three_transform.js +0 -15
  329. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts +0 -13
  330. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.d.ts.map +0 -1
  331. package/src/engine/graphics/FULL_SCREEN_QUAD_VERTEX_SHADER.js +0 -14
  332. package/src/engine/graphics/StandardFrameBuffers.d.ts +0 -7
  333. package/src/engine/graphics/StandardFrameBuffers.d.ts.map +0 -1
  334. package/src/engine/graphics/StandardFrameBuffers.js +0 -9
  335. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts +0 -7
  336. package/src/engine/graphics/copy_transform_to_threejs_object.d.ts.map +0 -1
  337. package/src/engine/graphics/copy_transform_to_threejs_object.js +0 -12
  338. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts +0 -42
  339. package/src/engine/graphics/ecs/light/binding/LightBinding.d.ts.map +0 -1
  340. package/src/engine/graphics/ecs/light/binding/LightBinding.js +0 -133
  341. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts +0 -25
  342. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.d.ts.map +0 -1
  343. package/src/engine/graphics/ecs/light/binding/fp/FPLightBinding.js +0 -90
  344. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts +0 -7
  345. package/src/engine/graphics/ecs/light/binding/three/applyRotation.d.ts.map +0 -1
  346. package/src/engine/graphics/ecs/light/binding/three/applyRotation.js +0 -24
  347. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts +0 -7
  348. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.d.ts.map +0 -1
  349. package/src/engine/graphics/ecs/light/binding/three/threeEnsureLightObject.js +0 -12
  350. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts +0 -8
  351. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.d.ts.map +0 -1
  352. package/src/engine/graphics/ecs/light/binding/three/threeMakeLight.js +0 -41
  353. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts +0 -4
  354. package/src/engine/graphics/ecs/light/shadow/LightShadow.d.ts.map +0 -1
  355. package/src/engine/graphics/ecs/light/shadow/LightShadow.js +0 -4
  356. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts +0 -27
  357. package/src/engine/graphics/ecs/light/shadow/ShadowManager.d.ts.map +0 -1
  358. package/src/engine/graphics/ecs/light/shadow/ShadowManager.js +0 -53
  359. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts +0 -8
  360. package/src/engine/graphics/ecs/light/shadow/ShadowMap.d.ts.map +0 -1
  361. package/src/engine/graphics/ecs/light/shadow/ShadowMap.js +0 -7
  362. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts +0 -14
  363. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.d.ts.map +0 -1
  364. package/src/engine/graphics/ecs/light/shadow/compute_view_frustum_aabb_in_space.js +0 -62
  365. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts +0 -30
  366. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.d.ts.map +0 -1
  367. package/src/engine/graphics/ecs/light/shadow/extend_shadow_camera_near_for_casters.js +0 -77
  368. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts +0 -13
  369. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.d.ts.map +0 -1
  370. package/src/engine/graphics/ecs/light/shadow/setShadowCameraDimensionsDiscrete.js +0 -43
  371. package/src/engine/graphics/ecs/light/three/light2type.d.ts +0 -8
  372. package/src/engine/graphics/ecs/light/three/light2type.d.ts.map +0 -1
  373. package/src/engine/graphics/ecs/light/three/light2type.js +0 -20
  374. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts +0 -7
  375. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.d.ts.map +0 -1
  376. package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +0 -13
  377. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts +0 -48
  378. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts.map +0 -1
  379. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.js +0 -88
  380. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts +0 -63
  381. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts.map +0 -1
  382. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js +0 -314
  383. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts +0 -67
  384. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts.map +0 -1
  385. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js +0 -130
  386. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts +0 -42
  387. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts.map +0 -1
  388. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.js +0 -71
  389. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts +0 -20
  390. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts.map +0 -1
  391. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +0 -123
  392. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts +0 -8
  393. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts.map +0 -1
  394. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +0 -55
  395. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts +0 -12
  396. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts.map +0 -1
  397. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.js +0 -31
  398. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts +0 -20
  399. package/src/engine/graphics/particles/node-based/codegen/CodeContext.d.ts.map +0 -1
  400. package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +0 -47
  401. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts +0 -12
  402. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.d.ts.map +0 -1
  403. package/src/engine/graphics/particles/node-based/codegen/CodeGenerator.js +0 -19
  404. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts +0 -18
  405. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.d.ts.map +0 -1
  406. package/src/engine/graphics/particles/node-based/codegen/glsl/GLSLCodeGenerator.js +0 -249
  407. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts +0 -7
  408. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.d.ts.map +0 -1
  409. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeInputName.js +0 -8
  410. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts +0 -7
  411. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.d.ts.map +0 -1
  412. package/src/engine/graphics/particles/node-based/codegen/glsl/genAttributeOutputName.js +0 -8
  413. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts +0 -14
  414. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.d.ts.map +0 -1
  415. package/src/engine/graphics/particles/node-based/codegen/glsl/getTypeByteSize.js +0 -20
  416. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts +0 -3
  417. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.d.ts.map +0 -1
  418. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_curlNoise.js +0 -58
  419. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts +0 -3
  420. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.d.ts.map +0 -1
  421. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/curl/glslm_snoiseVector3.js +0 -44
  422. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts +0 -3
  423. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.d.ts.map +0 -1
  424. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v3.js +0 -28
  425. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts +0 -3
  426. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.d.ts.map +0 -1
  427. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_mod289_v4.js +0 -28
  428. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts +0 -3
  429. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.d.ts.map +0 -1
  430. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_permute.js +0 -39
  431. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts +0 -3
  432. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.d.ts.map +0 -1
  433. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_snoise.js +0 -124
  434. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts +0 -3
  435. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.d.ts.map +0 -1
  436. package/src/engine/graphics/particles/node-based/codegen/glsl/modules/noise/simplex/3d/glslm_tylorInvSqrt.js +0 -30
  437. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts +0 -64
  438. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.d.ts.map +0 -1
  439. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModule.js +0 -131
  440. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts +0 -32
  441. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.d.ts.map +0 -1
  442. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleReference.js +0 -62
  443. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts +0 -46
  444. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.d.ts.map +0 -1
  445. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionModuleRegistry.js +0 -272
  446. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts +0 -28
  447. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.d.ts.map +0 -1
  448. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionParameterSpecification.js +0 -57
  449. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts +0 -32
  450. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.d.ts.map +0 -1
  451. package/src/engine/graphics/particles/node-based/codegen/modules/FunctionSignature.js +0 -55
  452. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts +0 -34
  453. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.d.ts.map +0 -1
  454. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +0 -178
  455. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts +0 -7
  456. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.d.ts.map +0 -1
  457. package/src/engine/graphics/particles/node-based/nodes/FloatConstant.js +0 -31
  458. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts +0 -13
  459. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.d.ts.map +0 -1
  460. package/src/engine/graphics/particles/node-based/nodes/ParticleDataTypes.js +0 -13
  461. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts +0 -7
  462. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.d.ts.map +0 -1
  463. package/src/engine/graphics/particles/node-based/nodes/ReadFloatUniform.js +0 -26
  464. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts +0 -4
  465. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.d.ts.map +0 -1
  466. package/src/engine/graphics/particles/node-based/nodes/ReadPosition.js +0 -5
  467. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts +0 -6
  468. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.d.ts.map +0 -1
  469. package/src/engine/graphics/particles/node-based/nodes/ReadVelocity.js +0 -14
  470. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts +0 -37
  471. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.d.ts.map +0 -1
  472. package/src/engine/graphics/particles/node-based/nodes/ShaderNode.js +0 -73
  473. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts +0 -7
  474. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.d.ts.map +0 -1
  475. package/src/engine/graphics/particles/node-based/nodes/Vector3Constant.js +0 -30
  476. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts +0 -7
  477. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.d.ts.map +0 -1
  478. package/src/engine/graphics/particles/node-based/nodes/Vector3Merge.js +0 -30
  479. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts +0 -7
  480. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.d.ts.map +0 -1
  481. package/src/engine/graphics/particles/node-based/nodes/Vector3Split.js +0 -32
  482. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts +0 -6
  483. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.d.ts.map +0 -1
  484. package/src/engine/graphics/particles/node-based/nodes/WriteVelocity.js +0 -15
  485. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts +0 -7
  486. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.d.ts.map +0 -1
  487. package/src/engine/graphics/particles/node-based/nodes/attribute/ReadVector3Attribute.js +0 -27
  488. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts +0 -7
  489. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.d.ts.map +0 -1
  490. package/src/engine/graphics/particles/node-based/nodes/attribute/WriteVector3Attribute.js +0 -25
  491. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts +0 -7
  492. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.d.ts.map +0 -1
  493. package/src/engine/graphics/particles/node-based/nodes/math/AddFloatNode.js +0 -26
  494. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts +0 -7
  495. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.d.ts.map +0 -1
  496. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Add.js +0 -25
  497. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts +0 -7
  498. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.d.ts.map +0 -1
  499. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Divide.js +0 -25
  500. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts +0 -7
  501. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.d.ts.map +0 -1
  502. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Multiply.js +0 -25
  503. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts +0 -7
  504. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.d.ts.map +0 -1
  505. package/src/engine/graphics/particles/node-based/nodes/math/Vector3Subtract.js +0 -25
  506. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts +0 -7
  507. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.d.ts.map +0 -1
  508. package/src/engine/graphics/particles/node-based/nodes/noise/CurlNoiseNode.js +0 -39
  509. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts +0 -39
  510. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.d.ts.map +0 -1
  511. package/src/engine/graphics/particles/node-based/nodes/particle_data_type_component_count.js +0 -45
  512. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts +0 -9
  513. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.d.ts.map +0 -1
  514. package/src/engine/graphics/particles/node-based/particle/GeometryAttributes.js +0 -10
  515. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts +0 -13
  516. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.d.ts.map +0 -1
  517. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeBinding.js +0 -14
  518. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts +0 -50
  519. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.d.ts.map +0 -1
  520. package/src/engine/graphics/particles/node-based/particle/ParticleAttributeSpecification.js +0 -47
  521. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts +0 -51
  522. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.d.ts.map +0 -1
  523. package/src/engine/graphics/particles/node-based/particle/ParticleSpecification.js +0 -93
  524. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts +0 -6
  525. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.d.ts.map +0 -1
  526. package/src/engine/graphics/particles/node-based/populateFunctionModuleRegistry.js +0 -23
  527. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts +0 -7
  528. package/src/engine/graphics/particles/node-based/populateNodeRegistry.d.ts.map +0 -1
  529. package/src/engine/graphics/particles/node-based/populateNodeRegistry.js +0 -48
  530. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts +0 -21
  531. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.d.ts.map +0 -1
  532. package/src/engine/graphics/particles/node-based/rendering/AbstractParticleRenderer.js +0 -35
  533. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts +0 -20
  534. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.d.ts.map +0 -1
  535. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderCommand.js +0 -35
  536. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts +0 -14
  537. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.d.ts.map +0 -1
  538. package/src/engine/graphics/particles/node-based/rendering/ParticleRenderSpecification.js +0 -17
  539. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts +0 -5
  540. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.d.ts.map +0 -1
  541. package/src/engine/graphics/particles/node-based/rendering/billboard/ParticleBillboardShader.js +0 -150
  542. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts +0 -55
  543. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.d.ts.map +0 -1
  544. package/src/engine/graphics/particles/node-based/simulation/EmitterAttributeData.js +0 -105
  545. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts +0 -49
  546. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.d.ts.map +0 -1
  547. package/src/engine/graphics/particles/node-based/simulation/GLDataBuffer.js +0 -103
  548. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts +0 -4
  549. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.d.ts.map +0 -1
  550. package/src/engine/graphics/particles/node-based/simulation/GLSLParticleSimulator.js +0 -6
  551. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts +0 -83
  552. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.d.ts.map +0 -1
  553. package/src/engine/graphics/particles/node-based/simulation/GLSLSimulationShader.js +0 -188
  554. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts +0 -123
  555. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.d.ts.map +0 -1
  556. package/src/engine/graphics/particles/node-based/simulation/TransformFeedback.js +0 -415
  557. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts +0 -71
  558. package/src/engine/graphics/render/buffer/FrameBufferManager.d.ts.map +0 -1
  559. package/src/engine/graphics/render/buffer/FrameBufferManager.js +0 -229
  560. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts +0 -22
  561. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.d.ts.map +0 -1
  562. package/src/engine/graphics/render/buffer/simple-fx/taa/TemporalSupersamplingRenderPlugin.js +0 -84
  563. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts +0 -33
  564. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.d.ts.map +0 -1
  565. package/src/engine/graphics/render/forward_plus/LightRenderMetadata.js +0 -61
  566. package/src/engine/graphics/render/forward_plus/SPECIFICATION.md +0 -155
  567. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts +0 -29
  568. package/src/engine/graphics/render/forward_plus/assign_cluster.d.ts.map +0 -1
  569. package/src/engine/graphics/render/forward_plus/assign_cluster.js +0 -124
  570. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts +0 -7
  571. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.d.ts.map +0 -1
  572. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash.js +0 -17
  573. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts +0 -7
  574. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.d.ts.map +0 -1
  575. package/src/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +0 -17
  576. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts +0 -9
  577. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.d.ts.map +0 -1
  578. package/src/engine/graphics/render/forward_plus/cluster/read_plane_pair.js +0 -29
  579. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts +0 -12
  580. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.d.ts.map +0 -1
  581. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.js +0 -43
  582. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts +0 -8
  583. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.d.ts.map +0 -1
  584. package/src/engine/graphics/render/forward_plus/computeFrustumCorners.js +0 -68
  585. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts +0 -4
  586. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.d.ts.map +0 -1
  587. package/src/engine/graphics/render/forward_plus/debug/createLayerSwitcher.js +0 -46
  588. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts +0 -14
  589. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.d.ts.map +0 -1
  590. package/src/engine/graphics/render/forward_plus/debug/createScreenGrid.js +0 -327
  591. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts +0 -2
  592. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.d.ts.map +0 -1
  593. package/src/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +0 -1
  594. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts +0 -2
  595. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.d.ts.map +0 -1
  596. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +0 -40
  597. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts +0 -2
  598. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.d.ts.map +0 -1
  599. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_APPLY_DECALS.js +0 -74
  600. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts +0 -2
  601. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.d.ts.map +0 -1
  602. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +0 -55
  603. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts +0 -2
  604. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.d.ts.map +0 -1
  605. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_LOAD_METADATA.js +0 -11
  606. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts +0 -2
  607. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.d.ts.map +0 -1
  608. package/src/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +0 -34
  609. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts +0 -7
  610. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.d.ts.map +0 -1
  611. package/src/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +0 -60
  612. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts +0 -7
  613. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.d.ts.map +0 -1
  614. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +0 -38
  615. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts +0 -7
  616. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.d.ts.map +0 -1
  617. package/src/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +0 -30
  618. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts +0 -51
  619. package/src/engine/graphics/render/forward_plus/model/Decal.d.ts.map +0 -1
  620. package/src/engine/graphics/render/forward_plus/model/Decal.js +0 -133
  621. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts +0 -16
  622. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.d.ts.map +0 -1
  623. package/src/engine/graphics/render/forward_plus/plugin/forwardPlusMaterialMarker.js +0 -18
  624. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts +0 -7
  625. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.d.ts.map +0 -1
  626. package/src/engine/graphics/render/forward_plus/plugin/isLitMaterial.js +0 -8
  627. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts +0 -10
  628. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.d.ts.map +0 -1
  629. package/src/engine/graphics/render/forward_plus/query/analytical_biplanar_corner_mapping.js +0 -65
  630. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts +0 -7
  631. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.d.ts.map +0 -1
  632. package/src/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +0 -8
  633. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts +0 -11
  634. package/src/engine/graphics/render/forward_plus/query/cube_mapping.d.ts.map +0 -1
  635. package/src/engine/graphics/render/forward_plus/query/cube_mapping.js +0 -38
  636. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts +0 -21
  637. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.d.ts.map +0 -1
  638. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +0 -96
  639. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts +0 -22
  640. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.d.ts.map +0 -1
  641. package/src/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +0 -44
  642. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts +0 -11
  643. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.d.ts.map +0 -1
  644. package/src/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +0 -169
  645. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts +0 -9
  646. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.d.ts.map +0 -1
  647. package/src/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +0 -33
  648. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts +0 -2
  649. package/src/engine/graphics/render/forward_plus/read_frustum_corner.d.ts.map +0 -1
  650. package/src/engine/graphics/render/forward_plus/read_frustum_corner.js +0 -2
  651. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts +0 -9
  652. package/src/engine/graphics/render/forward_plus/sort_decal_data.d.ts.map +0 -1
  653. package/src/engine/graphics/render/forward_plus/sort_decal_data.js +0 -102
  654. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts +0 -10
  655. package/src/engine/graphics/render/forward_plus/testClusterEquality.d.ts.map +0 -1
  656. package/src/engine/graphics/render/forward_plus/testClusterEquality.js +0 -22
  657. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts +0 -19
  658. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.d.ts.map +0 -1
  659. package/src/engine/graphics/render/frame_graph/webgl/WebGLRenderContext.js +0 -62
  660. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts +0 -18
  661. package/src/engine/graphics/shaders/AlphaBlendShader.d.ts.map +0 -1
  662. package/src/engine/graphics/shaders/AlphaBlendShader.js +0 -42
  663. package/src/engine/graphics/shaders/ClearShader.d.ts +0 -8
  664. package/src/engine/graphics/shaders/ClearShader.d.ts.map +0 -1
  665. package/src/engine/graphics/shaders/ClearShader.js +0 -28
  666. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts +0 -13
  667. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.d.ts.map +0 -1
  668. package/src/engine/graphics/shaders/ScreenSpaceQuadShader.js +0 -38
  669. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts +0 -7
  670. package/src/engine/graphics/shaders/ScreenSpaceShader.d.ts.map +0 -1
  671. package/src/engine/graphics/shaders/ScreenSpaceShader.js +0 -102
  672. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts +0 -102
  673. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.d.ts.map +0 -1
  674. package/src/engine/graphics/shaders/chunks/glsl_octahedral_impostor.js +0 -277
  675. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts +0 -40
  676. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.d.ts.map +0 -1
  677. package/src/engine/graphics/shaders/chunks/glsl_voxel_impostor_splat.js +0 -57
  678. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts +0 -8
  679. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.d.ts.map +0 -1
  680. package/src/engine/graphics/shaders/glsl_gen_swizzled_read.js +0 -39
  681. package/src/engine/graphics/shadows/README.md +0 -6
  682. package/src/engine/graphics/shadows/vsm.glsl.d.ts +0 -3
  683. package/src/engine/graphics/shadows/vsm.glsl.d.ts.map +0 -1
  684. package/src/engine/graphics/shadows/vsm.glsl.js +0 -43
  685. package/src/engine/graphics/util/composeMatrix4.d.ts +0 -9
  686. package/src/engine/graphics/util/composeMatrix4.d.ts.map +0 -1
  687. package/src/engine/graphics/util/composeMatrix4.js +0 -13
  688. package/src/engine/graphics/util/threeUpdateMatrix.d.ts +0 -6
  689. package/src/engine/graphics/util/threeUpdateMatrix.d.ts.map +0 -1
  690. package/src/engine/graphics/util/threeUpdateMatrix.js +0 -14
  691. package/src/engine/graphics/util/threeUpdateTransform.d.ts +0 -6
  692. package/src/engine/graphics/util/threeUpdateTransform.d.ts.map +0 -1
  693. package/src/engine/graphics/util/threeUpdateTransform.js +0 -16
  694. package/src/engine/sound/ecs/SoundController.d.ts.map +0 -1
  695. package/src/engine/sound/ecs/SoundControllerSystem.d.ts +0 -23
  696. package/src/engine/sound/ecs/SoundControllerSystem.d.ts.map +0 -1
  697. package/src/engine/sound/ecs/SoundControllerSystem.js +0 -103
  698. package/src/engine/sound/ecs/emitter/SoundAttenuationFunction.d.ts.map +0 -1
  699. package/src/engine/sound/ecs/emitter/SoundEmitter.d.ts.map +0 -1
  700. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts +0 -55
  701. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.d.ts.map +0 -1
  702. package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +0 -265
  703. package/src/engine/sound/ecs/emitter/SoundEmitterFlags.d.ts.map +0 -1
  704. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.d.ts.map +0 -1
  705. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts +0 -88
  706. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.d.ts.map +0 -1
  707. package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +0 -159
  708. package/src/engine/sound/ecs/emitter/SoundPanningModelType.d.ts.map +0 -1
  709. package/src/engine/sound/ecs/emitter/SoundTrack.d.ts.map +0 -1
  710. package/src/engine/sound/ecs/emitter/SoundTrackFlags.d.ts.map +0 -1
  711. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts +0 -8
  712. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.d.ts.map +0 -1
  713. package/src/engine/sound/ecs/emitter/loadSoundTrackAsset.js +0 -41
  714. package/src/shade/playground/FramePerformanceMonitor.d.ts +0 -114
  715. package/src/shade/playground/FramePerformanceMonitor.d.ts.map +0 -1
  716. package/src/shade/playground/FramePerformanceMonitor.js +0 -468
  717. package/src/shade/playground/add_random_lights.d.ts +0 -8
  718. package/src/shade/playground/add_random_lights.d.ts.map +0 -1
  719. package/src/shade/playground/add_random_lights.js +0 -50
  720. package/src/shade/playground/animation_prototype.d.ts +0 -24
  721. package/src/shade/playground/animation_prototype.d.ts.map +0 -1
  722. package/src/shade/playground/animation_prototype.js +0 -508
  723. package/src/shade/playground/animation_prototype_skinning.d.ts +0 -31
  724. package/src/shade/playground/animation_prototype_skinning.d.ts.map +0 -1
  725. package/src/shade/playground/animation_prototype_skinning.js +0 -647
  726. package/src/shade/playground/animation_prototype_stress.d.ts +0 -35
  727. package/src/shade/playground/animation_prototype_stress.d.ts.map +0 -1
  728. package/src/shade/playground/animation_prototype_stress.js +0 -765
  729. package/src/shade/playground/enable_picker.d.ts +0 -8
  730. package/src/shade/playground/enable_picker.d.ts.map +0 -1
  731. package/src/shade/playground/enable_picker.js +0 -60
  732. package/src/shade/playground/gltf_skinned_prototype.d.ts +0 -27
  733. package/src/shade/playground/gltf_skinned_prototype.d.ts.map +0 -1
  734. package/src/shade/playground/gltf_skinned_prototype.js +0 -560
  735. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts +0 -24
  736. package/src/shade/playground/gltf_skinned_stress_prototype.d.ts.map +0 -1
  737. package/src/shade/playground/gltf_skinned_stress_prototype.js +0 -387
  738. package/src/shade/playground/gltf_viewer.d.ts +0 -2
  739. package/src/shade/playground/gltf_viewer.d.ts.map +0 -1
  740. package/src/shade/playground/gltf_viewer.js +0 -283
  741. package/src/shade/playground/main.d.ts.map +0 -1
  742. package/src/shade/playground/main.js +0 -2727
  743. package/src/shade/playground/make_animated_instances.d.ts +0 -9
  744. package/src/shade/playground/make_animated_instances.d.ts.map +0 -1
  745. package/src/shade/playground/make_animated_instances.js +0 -118
  746. package/src/shade/playground/prototype_virtual_texture.d.ts +0 -2
  747. package/src/shade/playground/prototype_virtual_texture.d.ts.map +0 -1
  748. package/src/shade/playground/prototype_virtual_texture.js +0 -274
  749. package/src/shade/playground/prototype_volumetrics_01.d.ts +0 -2
  750. package/src/shade/playground/prototype_volumetrics_01.d.ts.map +0 -1
  751. package/src/shade/playground/prototype_volumetrics_01.js +0 -206
  752. package/src/shade/playground/sample.d.ts +0 -2
  753. package/src/shade/playground/sample.d.ts.map +0 -1
  754. package/src/shade/playground/sample.js +0 -234
  755. package/src/shade/playground/sample_load_gltf.d.ts +0 -9
  756. package/src/shade/playground/sample_load_gltf.d.ts.map +0 -1
  757. package/src/shade/playground/sample_load_gltf.js +0 -103
  758. package/src/shade/playground/spread_node3d_grid.d.ts +0 -7
  759. package/src/shade/playground/spread_node3d_grid.d.ts.map +0 -1
  760. package/src/shade/playground/spread_node3d_grid.js +0 -20
  761. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts +0 -24
  762. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.d.ts.map +0 -1
  763. package/src/shade/renderer/geometry/bvh/GPUGeometryBVH.js +0 -88
  764. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts +0 -3
  765. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.d.ts.map +0 -1
  766. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_scan_add.js +0 -49
  767. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts +0 -3
  768. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.d.ts.map +0 -1
  769. package/src/shade/renderer/gpu_primitive/prefix_sum/v0/shader_exclusive_prefix_sum_scan.js +0 -93
  770. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts +0 -24
  771. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.d.ts.map +0 -1
  772. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/graph_prefix_scan_csdl.js +0 -119
  773. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts +0 -7
  774. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.d.ts.map +0 -1
  775. package/src/shade/renderer/gpu_primitive/prefix_sum/v1/shader_one_sweep_prefix_scan.js +0 -235
  776. package/src/shade/renderer/gpu_primitive/sort/NOTES.md +0 -5
  777. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts +0 -7
  778. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.d.ts.map +0 -1
  779. package/src/shade/renderer/gpu_primitive/sort/chunk_sort_common.js +0 -136
  780. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts +0 -18
  781. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.d.ts.map +0 -1
  782. package/src/shade/renderer/gpu_primitive/sort/ffx/chunk_safe_load_uint4_umax.js +0 -108
  783. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts +0 -35
  784. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.d.ts.map +0 -1
  785. package/src/shade/renderer/gpu_primitive/sort/ffx/defs.js +0 -42
  786. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts +0 -13
  787. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.d.ts.map +0 -1
  788. package/src/shade/renderer/gpu_primitive/sort/ffx/graph_radix_sort.js +0 -116
  789. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts +0 -3
  790. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.d.ts.map +0 -1
  791. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_bit_histogram.js +0 -120
  792. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts +0 -3
  793. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.d.ts.map +0 -1
  794. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_distribute_part_sum_int4.js +0 -76
  795. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts +0 -3
  796. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.d.ts.map +0 -1
  797. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_partial.js +0 -125
  798. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts +0 -3
  799. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.d.ts.map +0 -1
  800. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scan_exclusive_uint4.js +0 -140
  801. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts +0 -3
  802. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.d.ts.map +0 -1
  803. package/src/shade/renderer/gpu_primitive/sort/ffx/shader_scatter_keys_and_values.js +0 -338
  804. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts +0 -7
  805. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.d.ts.map +0 -1
  806. package/src/shade/renderer/gpu_primitive/sort/gaussian_splatting/x.js +0 -261
  807. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts +0 -3
  808. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.d.ts.map +0 -1
  809. package/src/shade/renderer/gpu_primitive/sort/one_sweep/chunk_extract_digit.js +0 -14
  810. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts +0 -25
  811. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.d.ts.map +0 -1
  812. package/src/shade/renderer/gpu_primitive/sort/one_sweep/defs.js +0 -25
  813. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts +0 -15
  814. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.d.ts.map +0 -1
  815. package/src/shade/renderer/gpu_primitive/sort/one_sweep/graph_radix_sort.js +0 -192
  816. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts +0 -5
  817. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.d.ts.map +0 -1
  818. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_digit_binning_pass_pairs.js +0 -990
  819. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts +0 -5
  820. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.d.ts.map +0 -1
  821. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_global_histogram.js +0 -82
  822. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts +0 -3
  823. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.d.ts.map +0 -1
  824. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_init_sweep.js +0 -44
  825. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts +0 -5
  826. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.d.ts.map +0 -1
  827. package/src/shade/renderer/gpu_primitive/sort/one_sweep/shader_scan.js +0 -156
  828. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts +0 -6
  829. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.d.ts.map +0 -1
  830. package/src/shade/renderer/gpu_primitive/sort/one_sweep/test_radix_sort.js +0 -55
  831. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts +0 -14
  832. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.d.ts.map +0 -1
  833. package/src/shade/renderer/gpu_primitive/sort/one_sweep/verify_radix_sort_one_sweep.js +0 -110
  834. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts +0 -12
  835. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.d.ts.map +0 -1
  836. package/src/shade/renderer/gpu_primitive/sort/v4/graph_radix_sort.js +0 -74
  837. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts +0 -3
  838. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.d.ts.map +0 -1
  839. package/src/shade/renderer/gpu_primitive/sort/v4/shader_radix_sort.js +0 -125
  840. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts +0 -7
  841. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.d.ts.map +0 -1
  842. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_calculate_morton_code.js +0 -36
  843. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts +0 -7
  844. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.d.ts.map +0 -1
  845. package/src/shade/renderer/shader/chunk/bvh/morton/chunk_get_morton_codes_from_unit_coord.js +0 -54
  846. package/src/shade/renderer/shader/chunk/bvh/packed/NOTES.md +0 -19
  847. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts +0 -3
  848. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.d.ts.map +0 -1
  849. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_STRUCT.js +0 -9
  850. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts +0 -6
  851. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.d.ts.map +0 -1
  852. package/src/shade/renderer/shader/chunk/bvh/packed/PACKED_BVH_NODE_WORD_COUNT.js +0 -5
  853. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts +0 -8
  854. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.d.ts.map +0 -1
  855. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_make_f32_interval_f16_safe.js +0 -17
  856. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts +0 -3
  857. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.d.ts.map +0 -1
  858. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_pack_f32_interval_to_u32.js +0 -14
  859. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts +0 -3
  860. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.d.ts.map +0 -1
  861. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_from_unpacked_node.js +0 -27
  862. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts +0 -3
  863. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.d.ts.map +0 -1
  864. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_read_node.js +0 -31
  865. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts +0 -3
  866. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.d.ts.map +0 -1
  867. package/src/shade/renderer/shader/chunk/bvh/packed/chunk_packed_bvh_write_node.js +0 -25
  868. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts +0 -3
  869. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.d.ts.map +0 -1
  870. package/src/shade/renderer/shader/chunk/bvh/packed/shader_pack_blas.js +0 -42
  871. package/src/view/graphics/WebGLContextFailureView.d.ts.map +0 -1
  872. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.d.ts +0 -0
  873. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundAttenuationFunction.js +0 -0
  874. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.d.ts +0 -0
  875. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterFlags.js +0 -0
  876. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.d.ts +0 -0
  877. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationAdapter.js +0 -0
  878. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.d.ts +0 -0
  879. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_0_1.js +0 -0
  880. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.d.ts +0 -0
  881. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundEmitterSerializationUpgrader_1_2.js +0 -0
  882. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.d.ts +0 -0
  883. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundPanningModelType.js +0 -0
  884. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.d.ts +0 -0
  885. /package/src/engine/sound/{ecs/emitter → sopra/legacy}/SoundTrackFlags.js +0 -0
  886. /package/src/shade/playground/{main.d.ts → bvh_repro/main.d.ts} +0 -0
@@ -0,0 +1,254 @@
1
+ import { verify_gpu_bvh_build } from "../../renderer/gpu_primitive/bvh/verify_gpu_bvh_build.js";
2
+ import { verify_radix_sort } from "../../renderer/gpu_primitive/sort/verify_radix_sort.js";
3
+ import { verify_gpu_tlas_build } from "../../renderer/scene/verify_gpu_tlas_build.js";
4
+ import { bvh_repro_device, describe_device } from "./bvh_repro_device.js";
5
+
6
+ /**
7
+ * Driver for the standalone GPU BVH repro page.
8
+ *
9
+ * The harnesses it runs report through `console`, which is where they report from the main
10
+ * playground too — so rather than giving them a second output channel, this mirrors the console
11
+ * into the page while a run is in flight. That keeps one implementation of each check and makes the
12
+ * page useful to someone who has devtools closed.
13
+ */
14
+
15
+ const log_element = document.getElementById('log');
16
+ const status_element = document.getElementById('status');
17
+ const device_element = document.getElementById('device');
18
+ const buttons = [...document.querySelectorAll('button[data-run]')];
19
+
20
+ /** @type {{graphics: GraphicsContext, device: GPUDevice, adapter: GPUAdapter}|undefined} */
21
+ let context;
22
+
23
+ /**
24
+ * @param {string} text
25
+ * @param {string} [kind] one of 'pass', 'fail', 'warn', 'note'
26
+ */
27
+ function append(text, kind = '') {
28
+ const line = document.createElement('div');
29
+
30
+ line.className = `line ${kind}`;
31
+ line.textContent = text;
32
+
33
+ log_element.appendChild(line);
34
+ log_element.scrollTop = log_element.scrollHeight;
35
+ }
36
+
37
+ /**
38
+ * The harnesses format their PASS lines with `%c` and a CSS string, which is console syntax and
39
+ * nothing else. Strip the directives and drop the style arguments that went with them.
40
+ *
41
+ * @param {any[]} args
42
+ * @returns {string}
43
+ */
44
+ function flatten_console_args(args) {
45
+ if (args.length === 0) {
46
+ return '';
47
+ }
48
+
49
+ const [first, ...rest] = args;
50
+
51
+ if (typeof first !== 'string' || !first.includes('%c')) {
52
+ return args.map(value => (typeof value === 'string' ? value : String(value))).join(' ');
53
+ }
54
+
55
+ const directives = (first.match(/%c/g) ?? []).length;
56
+
57
+ return [first.replaceAll('%c', ''), ...rest.slice(directives)]
58
+ .map(value => (typeof value === 'string' ? value : String(value)))
59
+ .join(' ');
60
+ }
61
+
62
+ /**
63
+ * Run `body` with the console mirrored into the page.
64
+ *
65
+ * @param {function(): (void|Promise<void>)} body
66
+ * @returns {Promise<void>}
67
+ */
68
+ async function with_mirrored_console(body) {
69
+ const original = {
70
+ log: console.log,
71
+ warn: console.warn,
72
+ error: console.error,
73
+ table: console.table,
74
+ };
75
+
76
+ console.log = (...args) => {
77
+ original.log(...args);
78
+
79
+ const text = flatten_console_args(args);
80
+
81
+ append(text, /\bPASS\b/.test(text) ? 'pass' : '');
82
+ };
83
+
84
+ console.warn = (...args) => {
85
+ original.warn(...args);
86
+ append(flatten_console_args(args), 'warn');
87
+ };
88
+
89
+ console.error = (...args) => {
90
+ original.error(...args);
91
+ append(flatten_console_args(args), 'fail');
92
+ };
93
+
94
+ console.table = rows => {
95
+ original.table(rows);
96
+
97
+ if (!Array.isArray(rows)) {
98
+ return;
99
+ }
100
+
101
+ for (const row of rows) {
102
+ append(` ${String(row.label).padEnd(34)} ${Number(row.duration_ms).toFixed(4)} ms`, 'note');
103
+ }
104
+ };
105
+
106
+ try {
107
+ await body();
108
+ } finally {
109
+ Object.assign(console, original);
110
+ }
111
+ }
112
+
113
+ /**
114
+ * Wait until the device has finished the work that was submitted, and until the readback promises
115
+ * chained off it have had a chance to resolve and report.
116
+ *
117
+ * The harnesses are fire-and-forget by design (`graph_inspect_gpu_buffer` calls back from a
118
+ * `mapAsync` promise), so there is nothing to await directly. `onSubmittedWorkDone` covers the
119
+ * device side; the turns after it are what let the mapping promises and their `.then` chains run.
120
+ *
121
+ * @param {GPUDevice} device
122
+ * @returns {Promise<void>}
123
+ */
124
+ async function drain(device) {
125
+ await device.queue.onSubmittedWorkDone();
126
+
127
+ for (let i = 0; i < 8; i++) {
128
+ await new Promise(resolve => setTimeout(resolve, 0));
129
+ }
130
+ }
131
+
132
+ /**
133
+ * @param {boolean} enabled
134
+ */
135
+ function set_enabled(enabled) {
136
+ for (const button of buttons) {
137
+ button.disabled = !enabled;
138
+ }
139
+ }
140
+
141
+ /**
142
+ * @param {string} text
143
+ * @param {string} [kind]
144
+ */
145
+ function set_status(text, kind = '') {
146
+ status_element.textContent = text;
147
+ status_element.className = kind;
148
+ }
149
+
150
+ /**
151
+ * @returns {Promise<{graphics: GraphicsContext, device: GPUDevice, adapter: GPUAdapter}>}
152
+ */
153
+ async function obtain_context() {
154
+ if (context !== undefined) {
155
+ return context;
156
+ }
157
+
158
+ set_status('acquiring a device…');
159
+
160
+ context = await bvh_repro_device();
161
+
162
+ device_element.innerHTML = '';
163
+
164
+ for (const { label, value } of describe_device(context.adapter, context.device)) {
165
+ const row = document.createElement('div');
166
+
167
+ const name = document.createElement('span');
168
+ name.className = 'key';
169
+ name.textContent = label;
170
+
171
+ const text = document.createElement('span');
172
+ text.textContent = value;
173
+
174
+ row.append(name, text);
175
+ device_element.appendChild(row);
176
+ }
177
+
178
+ // An uncaptured validation error is the single most useful thing this page can surface: the
179
+ // harnesses check bytes, and a shader that failed to create says nothing about bytes at all.
180
+ context.device.addEventListener('uncapturederror', event => {
181
+ append(`[device] ${event.error.constructor.name}: ${event.error.message}`, 'fail');
182
+ });
183
+
184
+ context.device.lost.then(info => {
185
+ append(`[device] LOST (${info.reason}): ${info.message}`, 'fail');
186
+ set_status('device lost', 'fail');
187
+ });
188
+
189
+ return context;
190
+ }
191
+
192
+ const RUNS = {
193
+ sort: {
194
+ title: 'radix sort',
195
+ run: graphics => verify_radix_sort(graphics),
196
+ },
197
+ bvh: {
198
+ title: 'GPU BVH build',
199
+ run: graphics => verify_gpu_bvh_build(graphics),
200
+ },
201
+ tlas: {
202
+ title: 'TLAS end to end',
203
+ run: graphics => verify_gpu_tlas_build(graphics),
204
+ },
205
+ };
206
+
207
+ /**
208
+ * @param {string} name
209
+ */
210
+ async function run(name) {
211
+ set_enabled(false);
212
+
213
+ try {
214
+ const { graphics, device } = await obtain_context();
215
+
216
+ const names = name === 'all' ? Object.keys(RUNS) : [name];
217
+
218
+ for (const key of names) {
219
+ const { title, run: body } = RUNS[key];
220
+
221
+ append('', '');
222
+ append(`── ${title} ──`, 'note');
223
+
224
+ set_status(`running ${title}…`);
225
+
226
+ const started = performance.now();
227
+
228
+ await with_mirrored_console(async () => {
229
+ await body(graphics);
230
+ await drain(device);
231
+ });
232
+
233
+ append(` ${title} finished in ${(performance.now() - started).toFixed(0)} ms (wall clock)`, 'note');
234
+ }
235
+
236
+ set_status('done — read the log for PASS/FAIL', 'pass');
237
+ } catch (error) {
238
+ append(String(error?.stack ?? error), 'fail');
239
+ set_status('failed to run — see the log', 'fail');
240
+ } finally {
241
+ set_enabled(true);
242
+ }
243
+ }
244
+
245
+ for (const button of buttons) {
246
+ button.addEventListener('click', () => run(button.dataset.run));
247
+ }
248
+
249
+ document.getElementById('clear').addEventListener('click', () => {
250
+ log_element.innerHTML = '';
251
+ set_status('');
252
+ });
253
+
254
+ set_status('ready — pick a check');
@@ -1,6 +1,15 @@
1
1
  /**
2
+ * Image-based lighting for a playground scene, if the asset is there.
3
+ *
4
+ * The map is optional by design: `test_assets/` is gitignored, so a fresh checkout has none, and a
5
+ * scene still renders by whatever direct light it carries. A miss is therefore a warning rather
6
+ * than a throw — and a *handled* one, so a caller that ignores the result is not sitting on an
7
+ * unhandled rejection. The promise comes back for callers that want to wait, or to repaint once
8
+ * the sky lands.
2
9
  *
3
10
  * @param {Scene} scene
11
+ * @param {string} [url] an octahedral `.hdr`
12
+ * @returns {Promise<boolean>} whether the environment was applied
4
13
  */
5
- export function load_default_environment(scene: Scene): void;
14
+ export function load_default_environment(scene: Scene, url?: string): Promise<boolean>;
6
15
  //# sourceMappingURL=load_default_environment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"load_default_environment.d.ts","sourceRoot":"","sources":["../../../../src/shade/playground/load_default_environment.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,6DAaC"}
1
+ {"version":3,"file":"load_default_environment.d.ts","sourceRoot":"","sources":["../../../../src/shade/playground/load_default_environment.js"],"names":[],"mappings":"AAeA;;;;;;;;;;;;GAYG;AACH,6DAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAiB5B"}
@@ -1,20 +1,44 @@
1
- import { load_environment_map, ProjectionMappingType } from "../renderer/light/environment/rgbe/load_environment_map.js";
2
-
3
- /**
4
- *
5
- * @param {Scene} scene
6
- */
7
- export function load_default_environment(scene) {
8
- const env_map = "environments/octahedral/venice_sunset_2k.hdr";
9
- // const env_map = "environments/octahedral/moonless_golf_4k.hdr";
10
- // const env_map = "environments/octahedral/rustig_koppie_puresky_2k.hdr";
11
- // const env_map = "environments/test4_16.hdr";
12
- load_environment_map(env_map, ProjectionMappingType.Octahedral).then(texture => {
13
-
14
- scene.lights.environment = texture;
15
-
16
- // renderer.indicate_view_change();
17
-
18
- });
19
-
20
- }
1
+ import { load_environment_map, ProjectionMappingType } from "../renderer/light/environment/rgbe/load_environment_map.js";
2
+
3
+ /**
4
+ * The sky a playground page lights itself with when it has none of its own.
5
+ *
6
+ * Root-relative, and under `test_assets/`. It used to be page-relative (`environments/…`), which
7
+ * the browser resolves against the *page's* directory — `/src/shade/playground/<page>/` under the
8
+ * dev server — so it only ever found the file for a page served from the server root, and 404'd for
9
+ * every page that actually exists. `test_assets/README.md` has how the file gets there; the sibling
10
+ * asset repo's `environments/octahedral/` holds several others if a different sky is wanted.
11
+ *
12
+ * @type {string}
13
+ */
14
+ const DEFAULT_ENVIRONMENT_URL = '/test_assets/environments/octahedral/rustig_koppie_puresky_2k.hdr';
15
+
16
+ /**
17
+ * Image-based lighting for a playground scene, if the asset is there.
18
+ *
19
+ * The map is optional by design: `test_assets/` is gitignored, so a fresh checkout has none, and a
20
+ * scene still renders by whatever direct light it carries. A miss is therefore a warning rather
21
+ * than a throw — and a *handled* one, so a caller that ignores the result is not sitting on an
22
+ * unhandled rejection. The promise comes back for callers that want to wait, or to repaint once
23
+ * the sky lands.
24
+ *
25
+ * @param {Scene} scene
26
+ * @param {string} [url] an octahedral `.hdr`
27
+ * @returns {Promise<boolean>} whether the environment was applied
28
+ */
29
+ export function load_default_environment(scene, url = DEFAULT_ENVIRONMENT_URL) {
30
+
31
+ return load_environment_map(url, ProjectionMappingType.Octahedral)
32
+ .then(texture => {
33
+
34
+ scene.lights.environment = texture;
35
+
36
+ return true;
37
+ })
38
+ .catch(error => {
39
+
40
+ console.warn(`no environment map at ${url} — the scene is lit by its own lights alone`, error);
41
+
42
+ return false;
43
+ });
44
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The smallest {@link AssetManager} a glTF load needs.
3
+ *
4
+ * `load_gltf` reaches every byte through the asset framework rather than through `fetch` — which is
5
+ * what makes a texture two models share cost one download and one decode — so it needs a manager,
6
+ * and a manager only serves the types something has registered a loader for. `TinyGltf` asks for
7
+ * exactly two: `ArrayBuffer` for the container and its `.bin` buffers, `ImageBitmap` for textures.
8
+ *
9
+ * A playground page is not an `Engine`, which is where a fully-populated manager normally comes
10
+ * from, so this is the two-loader subset that gets a model on screen and nothing else.
11
+ *
12
+ * @returns {Promise<AssetManager>}
13
+ */
14
+ export function make_playground_asset_manager(): Promise<AssetManager<any>>;
15
+ import { AssetManager } from "../../engine/asset/AssetManager.js";
16
+ //# sourceMappingURL=make_playground_asset_manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make_playground_asset_manager.d.ts","sourceRoot":"","sources":["../../../../src/shade/playground/make_playground_asset_manager.js"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,iDAFa,0BAAqB,CAejC;6BA/B4B,oCAAoC"}
@@ -0,0 +1,33 @@
1
+ import ConcurrentExecutor from "../../core/process/executor/ConcurrentExecutor.js";
2
+ import { AssetManager } from "../../engine/asset/AssetManager.js";
3
+ import { GameAssetType } from "../../engine/asset/GameAssetType.js";
4
+ import { ArrayBufferLoader } from "../../engine/asset/loaders/ArrayBufferLoader.js";
5
+ import { ImageBitmapAssetLoader } from "../../engine/asset/loaders/image/ImageBitmapAssetLoader.js";
6
+
7
+ /**
8
+ * The smallest {@link AssetManager} a glTF load needs.
9
+ *
10
+ * `load_gltf` reaches every byte through the asset framework rather than through `fetch` — which is
11
+ * what makes a texture two models share cost one download and one decode — so it needs a manager,
12
+ * and a manager only serves the types something has registered a loader for. `TinyGltf` asks for
13
+ * exactly two: `ArrayBuffer` for the container and its `.bin` buffers, `ImageBitmap` for textures.
14
+ *
15
+ * A playground page is not an `Engine`, which is where a fully-populated manager normally comes
16
+ * from, so this is the two-loader subset that gets a model on screen and nothing else.
17
+ *
18
+ * @returns {Promise<AssetManager>}
19
+ */
20
+ export async function make_playground_asset_manager() {
21
+
22
+ const manager = new AssetManager({
23
+ context: {},
24
+ executor: new ConcurrentExecutor(),
25
+ });
26
+
27
+ await manager.registerLoader(GameAssetType.ArrayBuffer, new ArrayBufferLoader());
28
+ await manager.registerLoader(GameAssetType.ImageBitmap, new ImageBitmapAssetLoader());
29
+
30
+ manager.startup();
31
+
32
+ return manager;
33
+ }
@@ -0,0 +1,126 @@
1
+ # skinned BLAS refit — prototype
2
+
3
+ A dancing character under the path tracer. This is the browser tier for the per-frame BLAS refit
4
+ (`GPU_BVH_BUILD_PLAN.md` §5.2, phase 3a): the one tier that runs the shaders on a real device.
5
+
6
+ ```bash
7
+ npm run dev
8
+ ```
9
+
10
+ then open `/src/shade/playground/skinned_blas_refit/index.html`.
11
+
12
+ Add `?count=N` for N dancers, up to 64. Each is a clone with a vertex region and a BLAS of its own,
13
+ refit every frame — so more of them is more refits, not a bigger one.
14
+
15
+ ## What it is for
16
+
17
+ A skinned mesh renders against a per-instance clone of its geometry whose vertices are deformed
18
+ every frame. The rasterizer reads those vertices directly. A ray does not: it walks the clone's
19
+ BLAS. Without a refit that tree keeps the bind pose's boxes, and the character is traced as the
20
+ shape she was standing in when the scene loaded.
21
+
22
+ The page puts both readings of the same geometry in front of you. Toggle the tracer while she
23
+ dances:
24
+
25
+ - **working** — the two silhouettes are the same silhouette, and toggling changes the lighting and
26
+ nothing else.
27
+ - **stale** — the traced figure stands in bind pose while the rasterized one moves, and the floor
28
+ carries a shadow cast by a body that is not there.
29
+
30
+ Freeze the pose to let the accumulator settle into a clean image; it resets on every frame the
31
+ animation advances.
32
+
33
+ ## The numeric version
34
+
35
+ Looking at it is not always possible — a browser stops calling `requestAnimationFrame` for a page
36
+ it is not compositing, so a hidden tab renders no frames to look at. `verify()` in the console
37
+ answers a sharper form of the same question without needing to be watched:
38
+
39
+ ```js
40
+ await verify()
41
+ ```
42
+
43
+ It drives frames by hand and compares two **independent** GPU computations of one quantity:
44
+
45
+ - `shader_meshlet_bounds_reduce` merges every deformed vertex into the clone's geometry-metadata
46
+ bounding box. It exists for the rasterizer's culling and knows nothing about trees.
47
+ - `record_blas_refit` takes each leaf triangle's box and climbs the tree, so the root node ends up
48
+ bounding every triangle.
49
+
50
+ Same vertices, same frame, no shared code. `min` and `max` are exact in floating point, so the two
51
+ should agree to the bit; a stale BLAS cannot make them, because the metadata box tracks the pose
52
+ while the root holds the bind pose.
53
+
54
+ It takes two samples a third of a second apart. Agreement at each is one half of the answer; the
55
+ box having *moved* between them is the other, and it is what catches a refit that runs but reads
56
+ the source's rest-pose vertices — those boxes would agree at every sample and never move.
57
+
58
+ Then it reads the clone's whole node region back and holds every internal node against its own two
59
+ children. The root agreeing says the climb reached the top with the right answer; it says nothing
60
+ about the nodes underneath, and traversal descends through *those* — a subtree whose box is too
61
+ small is a hole rays fall through however right the root is. The property the climb establishes is
62
+ local and exact, so this is bit equality rather than a tolerance.
63
+
64
+ Measured on an NVIDIA Lovelace device: root box bit-identical to the metadata box at every sample,
65
+ moving 0.39–0.80 of its own span between poses, all 28 105 internal nodes exactly their children's
66
+ union, and each clone at its own arena address on a uniform stride.
67
+
68
+ ## Assets
69
+
70
+ `/test_assets/Michelle.glb`, which is gitignored and unpublished — see `test_assets/README.md`.
71
+
72
+ ## What the floor disagreement turned out to be
73
+
74
+ For a while the two images disagreed about where the floor ends: a smooth band along its far edge
75
+ that the rasterizer drew and the tracer did not, several thousand pixels at an ordinary camera and
76
+ growing as the camera approached the edge. It read like a hole in a tree, and it was not one.
77
+
78
+ The slab was placed by writing `Node3D.transform_global`, which is **derived** — the doc comment on
79
+ it says so. Its two consumers take placement from opposite ends: `Mesh.updateBoundsBasic` reads
80
+ `transform_global` and publishes the result as the mesh's `meshes` row, and the GPU's `transforms`
81
+ row carries the node's *local* TRS for the hierarchy pass to compose `node.global` from. Writing
82
+ only the first left the second at identity, 0.208 m away:
83
+
84
+ - the rasterizer multiplied positions by `node.global` and drew the slab at the geometry's own
85
+ origin, its far edge ten rows higher up the screen than the floor actually ends;
86
+ - the tracer tested each ray against the *translated* published box before traversing the
87
+ *untranslated* geometry, so rays that would have struck the slab near its far edge were turned
88
+ away by a box that was not around it.
89
+
90
+ Neither renderer was wrong about the data it was given. Padding the published box shrank the band
91
+ because it widened the interval the TLAS test allows — not because anything was tangent, which is
92
+ why a few per cent of pad did what a rounding-scale slack could not.
93
+
94
+ The invariant is in `add_floor.spec.js` and needs no device: published bounds must survive
95
+ `updateMatrices`, because that is the walk which recomputes `transform_global` from the local
96
+ transform. `chunk_ray_query_nearest.spec.js` holds the traversal itself against closed-form slab
97
+ arithmetic in the emulator, including the case where the instance box and the node transform
98
+ disagree.
99
+
100
+ ## The quieter version of the same bug: `?count=N`
101
+
102
+ The dancers were placed the same way — by writing `transform_global` — and stacked at the origin
103
+ rather than spreading over a grid. Both renderers agreed about it, so there was no picture to look
104
+ at; the only symptom was that the characters did not go where they were put.
105
+
106
+ They also could not have been fixed by copying the floor's fix, because a skinned mesh's own node
107
+ is not its placement point at all. A skinned vertex lands at
108
+
109
+ ```
110
+ mesh.global × inverse(mesh.global) × joint.global × inverse_bind × v
111
+ ```
112
+
113
+ — `chunk_skin_blend_mesh_local` folds the leftmost inverse into each joint matrix and the rasterizer
114
+ re-applies `mesh.global`, so the mesh node's transform **cancels exactly**, and
115
+ `compute_skin_world_bounds` composes the published box out of joints without reading it either.
116
+ Michelle's file makes the point structurally: her mesh node `Ch03` carries no local transform, the
117
+ 0.01 centimetre scale and the up-axis rotation sit on the root above it, and the joint root
118
+ `mixamorig:Hips` is the mesh node's *sibling*. Nothing under `Ch03` drives a joint.
119
+
120
+ `place_character` therefore hangs each character's roots under a fresh parent whose whole transform
121
+ is the grid offset. That reaches the joints, leaves the file's own transform untouched below it, and
122
+ — because the offset is a *local* transform — survives the walk that recomputes `transform_global`.
123
+
124
+ `place_character.spec.js` holds the invariant the floor's cannot see: **published bounds must move
125
+ by the offset the character was placed at.** Its negative control is the bug itself — writing either
126
+ transform on the mesh node and watching the box not move.
@@ -0,0 +1,47 @@
1
+ /**
2
+ * A floor, so the traced image has something for the character to cast onto.
3
+ *
4
+ * Shadows are the loudest reading of a stale BLAS: a body in the wrong pose still shades roughly
5
+ * like a body, but the shadow it throws is unmistakably a different shape from the one standing
6
+ * over it.
7
+ *
8
+ * ## Where it is placed, and why that is the whole of it
9
+ *
10
+ * The slab is placed by its **local** transform. `Node3D.transform_global` is derived — the doc
11
+ * comment on it says so — and the two consumers of a mesh's placement take it from opposite ends:
12
+ *
13
+ * - `Mesh.updateBoundsBasic` reads `transform_global`, and its result is the box published to the
14
+ * `meshes` table, which is the TLAS leaf the path tracer tests a ray against before it reaches
15
+ * any triangle;
16
+ * - the GPU's `transforms` row carries the node's local TRS, and the hierarchy pass composes
17
+ * `node.global` from it — which is the matrix *both* the rasterizer's vertex stage and the ray
18
+ * query's geometry-space transform use.
19
+ *
20
+ * Setting `transform_global` and nothing else satisfies the first and leaves the second at
21
+ * identity, which is exactly what this function used to do. The result is a mesh whose published
22
+ * box is around one place and whose geometry is drawn in another, 0.208 m apart here:
23
+ *
24
+ * - the **rasterizer** drew the slab at the geometry's own origin, its far edge ten rows higher up
25
+ * the screen than the floor actually ends;
26
+ * - the **path tracer** tested each ray against the translated box first and only then traversed
27
+ * the untranslated geometry, so rays that would have struck the slab near its far edge were
28
+ * turned away by a box that was not around it — a smooth band of floor the rasterizer drew and
29
+ * the tracer did not, growing as the camera approached the edge.
30
+ *
31
+ * Neither renderer was wrong about the data it was given; the two halves of the record disagreed.
32
+ * Padding the published box (the old `?inflate=1` handle) shrank the band because it widened the
33
+ * interval the TLAS test allows — which is why a 5% pad did what a 1e-5 rounding slack could not,
34
+ * and it was never evidence of tangency.
35
+ *
36
+ * The invariant that catches this without a GPU or a picture: a mesh's published bounds must
37
+ * survive `updateMatrices`, because that is the walk which recomputes `transform_global` from the
38
+ * local transform. `add_floor.spec.js` holds it to that.
39
+ *
40
+ * @param {Scene} scene
41
+ * @param {number} extent width of the slab
42
+ * @param {number} top world height its upper face sits at
43
+ * @returns {Mesh}
44
+ */
45
+ export function add_floor(scene: Scene, extent: number, top: number): Mesh;
46
+ import { Mesh } from "../../renderer/scene/Mesh.js";
47
+ //# sourceMappingURL=add_floor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add_floor.d.ts","sourceRoot":"","sources":["../../../../../src/shade/playground/skinned_blas_refit/add_floor.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,gDAJW,MAAM,OACN,MAAM,GACJ,IAAI,CAwBhB;qBApEoB,8BAA8B"}
@@ -0,0 +1,71 @@
1
+ import { BoxGeometry } from "../../renderer/geometry/BoxGeometry.js";
2
+ import { StandardShadeMaterial } from "../../renderer/material/StandardShadeMaterial.js";
3
+ import { Mesh } from "../../renderer/scene/Mesh.js";
4
+
5
+ /**
6
+ * A floor, so the traced image has something for the character to cast onto.
7
+ *
8
+ * Shadows are the loudest reading of a stale BLAS: a body in the wrong pose still shades roughly
9
+ * like a body, but the shadow it throws is unmistakably a different shape from the one standing
10
+ * over it.
11
+ *
12
+ * ## Where it is placed, and why that is the whole of it
13
+ *
14
+ * The slab is placed by its **local** transform. `Node3D.transform_global` is derived — the doc
15
+ * comment on it says so — and the two consumers of a mesh's placement take it from opposite ends:
16
+ *
17
+ * - `Mesh.updateBoundsBasic` reads `transform_global`, and its result is the box published to the
18
+ * `meshes` table, which is the TLAS leaf the path tracer tests a ray against before it reaches
19
+ * any triangle;
20
+ * - the GPU's `transforms` row carries the node's local TRS, and the hierarchy pass composes
21
+ * `node.global` from it — which is the matrix *both* the rasterizer's vertex stage and the ray
22
+ * query's geometry-space transform use.
23
+ *
24
+ * Setting `transform_global` and nothing else satisfies the first and leaves the second at
25
+ * identity, which is exactly what this function used to do. The result is a mesh whose published
26
+ * box is around one place and whose geometry is drawn in another, 0.208 m apart here:
27
+ *
28
+ * - the **rasterizer** drew the slab at the geometry's own origin, its far edge ten rows higher up
29
+ * the screen than the floor actually ends;
30
+ * - the **path tracer** tested each ray against the translated box first and only then traversed
31
+ * the untranslated geometry, so rays that would have struck the slab near its far edge were
32
+ * turned away by a box that was not around it — a smooth band of floor the rasterizer drew and
33
+ * the tracer did not, growing as the camera approached the edge.
34
+ *
35
+ * Neither renderer was wrong about the data it was given; the two halves of the record disagreed.
36
+ * Padding the published box (the old `?inflate=1` handle) shrank the band because it widened the
37
+ * interval the TLAS test allows — which is why a 5% pad did what a 1e-5 rounding slack could not,
38
+ * and it was never evidence of tangency.
39
+ *
40
+ * The invariant that catches this without a GPU or a picture: a mesh's published bounds must
41
+ * survive `updateMatrices`, because that is the walk which recomputes `transform_global` from the
42
+ * local transform. `add_floor.spec.js` holds it to that.
43
+ *
44
+ * @param {Scene} scene
45
+ * @param {number} extent width of the slab
46
+ * @param {number} top world height its upper face sits at
47
+ * @returns {Mesh}
48
+ */
49
+ export function add_floor(scene, extent, top) {
50
+ const thickness = extent * 0.02;
51
+
52
+ const floor = new Mesh();
53
+
54
+ floor.geometry = new BoxGeometry(extent, thickness, extent);
55
+ floor.material = new StandardShadeMaterial();
56
+
57
+ // `Transform64` keeps its matrix by hand: setting a component leaves the matrix holding what it
58
+ // held before, so the write is only real after `updateMatrix`.
59
+ floor.transform_local.setTranslation(0, top - thickness * 0.5, 0);
60
+ floor.transform_local.updateMatrix();
61
+
62
+ // Derive `transform_global` from the local transform, and the world bounds from that. Nothing
63
+ // else will: the scene's pre-order walk updates bounds for nodes it visits as part of a
64
+ // hierarchy, and a mesh added on its own is never visited that way — so the row it seeds the
65
+ // `meshes` table with would stay the default, which is a zero-sized box at the origin.
66
+ floor.updateMatrices();
67
+
68
+ scene.add(floor);
69
+
70
+ return floor;
71
+ }