@woosh/meep-engine 3.23.0 → 3.24.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 (522) hide show
  1. package/editor/entity_world_bounds.d.ts +9 -3
  2. package/editor/entity_world_bounds.d.ts.map +1 -1
  3. package/editor/entity_world_bounds.js +61 -4
  4. package/package.json +1 -1
  5. package/src/core/binary/allocator/OffsetAllocator.d.ts +40 -2
  6. package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
  7. package/src/core/binary/allocator/OffsetAllocator.js +124 -29
  8. package/src/core/collection/map/u32_index.d.ts +83 -0
  9. package/src/core/collection/map/u32_index.d.ts.map +1 -0
  10. package/src/core/collection/map/u32_index.js +247 -0
  11. package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.d.ts +2 -2
  12. package/src/engine/asset/loaders/GLTFSceneBundleAssetLoader.js +2 -2
  13. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts +1 -2
  14. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.d.ts.map +1 -1
  15. package/src/engine/asset/loaders/USDSceneBundleAssetLoader.js +4 -12
  16. package/src/engine/ecs/gpu/GPUStateAuthority.d.ts +55 -0
  17. package/src/engine/ecs/gpu/GPUStateAuthority.d.ts.map +1 -0
  18. package/src/engine/ecs/gpu/GPUStateAuthority.js +72 -0
  19. package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts +40 -0
  20. package/src/engine/ecs/gpu/GPUStateAuthorityFlags.d.ts.map +1 -0
  21. package/src/engine/ecs/gpu/GPUStateAuthorityFlags.js +79 -0
  22. package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts +18 -0
  23. package/src/engine/ecs/gpu/gpu_authority_assert_cpu.d.ts.map +1 -0
  24. package/src/engine/ecs/gpu/gpu_authority_assert_cpu.js +27 -0
  25. package/src/engine/ecs/gpu/gpu_authority_declare.d.ts +23 -0
  26. package/src/engine/ecs/gpu/gpu_authority_declare.d.ts.map +1 -0
  27. package/src/engine/ecs/gpu/gpu_authority_declare.js +39 -0
  28. package/src/engine/ecs/gpu/gpu_authority_grant.d.ts +15 -0
  29. package/src/engine/ecs/gpu/gpu_authority_grant.d.ts.map +1 -0
  30. package/src/engine/ecs/gpu/gpu_authority_grant.js +38 -0
  31. package/src/engine/ecs/gpu/gpu_authority_has.d.ts +18 -0
  32. package/src/engine/ecs/gpu/gpu_authority_has.d.ts.map +1 -0
  33. package/src/engine/ecs/gpu/gpu_authority_has.js +28 -0
  34. package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts +24 -0
  35. package/src/engine/ecs/gpu/gpu_authority_revoke.d.ts.map +1 -0
  36. package/src/engine/ecs/gpu/gpu_authority_revoke.js +49 -0
  37. package/src/engine/ecs/ik/IKProblem.d.ts +14 -0
  38. package/src/engine/ecs/ik/IKProblem.d.ts.map +1 -1
  39. package/src/engine/ecs/ik/IKProblem.js +16 -0
  40. package/src/engine/ecs/ik/InverseKinematicsSystem.d.ts.map +1 -1
  41. package/src/engine/ecs/ik/InverseKinematicsSystem.js +19 -0
  42. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
  43. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
  44. package/src/engine/ecs/ik/ik_bone_chain.d.ts +11 -2
  45. package/src/engine/ecs/ik/ik_bone_chain.d.ts.map +1 -1
  46. package/src/engine/ecs/ik/ik_bone_chain.js +47 -2
  47. package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
  48. package/src/engine/ecs/ik/ik_write_local_rotation.js +6 -0
  49. package/src/engine/ecs/speaker/VoiceSystem.d.ts.map +1 -1
  50. package/src/engine/ecs/speaker/VoiceSystem.js +6 -0
  51. package/src/engine/ecs/transform/T64WorldCache.d.ts +50 -0
  52. package/src/engine/ecs/transform/T64WorldCache.d.ts.map +1 -0
  53. package/src/engine/ecs/transform/T64WorldCache.js +139 -0
  54. package/src/engine/ecs/transform/t64_evaluate_world.d.ts +31 -0
  55. package/src/engine/ecs/transform/t64_evaluate_world.d.ts.map +1 -0
  56. package/src/engine/ecs/transform/t64_evaluate_world.js +126 -0
  57. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts +8 -0
  58. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
  59. package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +59 -30
  60. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.d.ts.map +1 -1
  61. package/src/engine/graphics/ecs/highlight/system/ShadedGeometryHighlightSystem.js +4 -11
  62. package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts +14 -0
  63. package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.d.ts.map +1 -0
  64. package/src/engine/graphics/ecs/mesh-v2/SHADED_GEOMETRY_EVENT_CHANGE.js +13 -0
  65. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +2 -14
  66. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts.map +1 -1
  67. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +11 -21
  68. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.d.ts +1 -0
  69. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +7 -0
  70. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts +5 -6
  71. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.d.ts.map +1 -1
  72. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshHighlightSystem.js +13 -11
  73. package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts +14 -0
  74. package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.d.ts.map +1 -0
  75. package/src/engine/graphics/ecs/mesh-v2/shaded_geometry_announce_change.js +21 -0
  76. package/src/engine/graphics/ecs/particles/ParticleEffect.d.ts +1 -1
  77. package/src/engine/graphics/ecs/particles/ParticleEffect.js +1 -1
  78. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.d.ts +1 -1
  79. package/src/engine/graphics/sh3/path_tracer/populate_path_traced_scene_from_ecd.js +1 -1
  80. package/src/engine/graphics3/AnimationGraphSystem.js +3 -3
  81. package/src/engine/graphics3/AnimationSystem.js +2 -2
  82. package/src/engine/graphics3/DebugDrawSystem.d.ts.map +1 -1
  83. package/src/engine/graphics3/DebugDrawSystem.js +2 -4
  84. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts +34 -27
  85. package/src/engine/graphics3/GPUParticleEmitterSystem.d.ts.map +1 -1
  86. package/src/engine/graphics3/GPUParticleEmitterSystem.js +185 -85
  87. package/src/engine/graphics3/HighlightOutlineSystem.d.ts +4 -3
  88. package/src/engine/graphics3/HighlightOutlineSystem.d.ts.map +1 -1
  89. package/src/engine/graphics3/HighlightOutlineSystem.js +7 -9
  90. package/src/engine/graphics3/LightSystem.d.ts +7 -5
  91. package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
  92. package/src/engine/graphics3/LightSystem.js +36 -22
  93. package/src/engine/graphics3/MeshSystem.d.ts +43 -39
  94. package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
  95. package/src/engine/graphics3/MeshSystem.js +324 -331
  96. package/src/engine/graphics3/PathDisplaySystem.d.ts.map +1 -1
  97. package/src/engine/graphics3/PathDisplaySystem.js +2 -4
  98. package/src/engine/graphics3/PickingQuery.d.ts +15 -21
  99. package/src/engine/graphics3/PickingQuery.d.ts.map +1 -1
  100. package/src/engine/graphics3/PickingQuery.js +21 -25
  101. package/src/engine/graphics3/PickingSystem.d.ts +60 -31
  102. package/src/engine/graphics3/PickingSystem.d.ts.map +1 -1
  103. package/src/engine/graphics3/PickingSystem.js +416 -273
  104. package/src/engine/graphics3/ShadedGeometrySystem.d.ts +22 -12
  105. package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
  106. package/src/engine/graphics3/ShadedGeometrySystem.js +309 -174
  107. package/src/engine/graphics3/TerrainSystem.d.ts +19 -11
  108. package/src/engine/graphics3/TerrainSystem.d.ts.map +1 -1
  109. package/src/engine/graphics3/TerrainSystem.js +102 -53
  110. package/src/engine/graphics3/TooltipComponentSystem.d.ts.map +1 -1
  111. package/src/engine/graphics3/TooltipComponentSystem.js +2 -14
  112. package/src/engine/graphics3/Trail3DSystem.d.ts.map +1 -1
  113. package/src/engine/graphics3/Trail3DSystem.js +2 -4
  114. package/src/engine/graphics3/animation/ClipListPlayer.d.ts +4 -4
  115. package/src/engine/graphics3/animation/ClipListPlayer.d.ts.map +1 -1
  116. package/src/engine/graphics3/animation/ClipListPlayer.js +2 -2
  117. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts +9 -11
  118. package/src/engine/graphics3/highlight/pack_highlight_table.d.ts.map +1 -1
  119. package/src/engine/graphics3/highlight/pack_highlight_table.js +11 -18
  120. package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts +4 -3
  121. package/src/engine/graphics3/pose/query_entity_node_world_pose.d.ts.map +1 -1
  122. package/src/engine/graphics3/pose/query_entity_node_world_pose.js +75 -74
  123. package/src/engine/graphics3/prefab/Prefab.d.ts +130 -0
  124. package/src/engine/graphics3/prefab/Prefab.d.ts.map +1 -0
  125. package/src/engine/graphics3/prefab/Prefab.js +162 -0
  126. package/src/engine/graphics3/prefab/PrefabInstance.d.ts +72 -0
  127. package/src/engine/graphics3/prefab/PrefabInstance.d.ts.map +1 -0
  128. package/src/engine/graphics3/prefab/PrefabInstance.js +80 -0
  129. package/src/engine/graphics3/prefab/prefab_compile.d.ts +23 -0
  130. package/src/engine/graphics3/prefab/prefab_compile.d.ts.map +1 -0
  131. package/src/engine/graphics3/prefab/prefab_compile.js +334 -0
  132. package/src/engine/graphics3/prefab/prefab_instantiate.d.ts +46 -0
  133. package/src/engine/graphics3/prefab/prefab_instantiate.d.ts.map +1 -0
  134. package/src/engine/graphics3/prefab/prefab_instantiate.js +230 -0
  135. package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts +70 -0
  136. package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.d.ts.map +1 -0
  137. package/src/engine/graphics3/prefab/prefab_normalize_skin_frames.js +210 -0
  138. package/src/engine/graphics3/prefab/prefab_place.d.ts +60 -0
  139. package/src/engine/graphics3/prefab/prefab_place.d.ts.map +1 -0
  140. package/src/engine/graphics3/prefab/prefab_place.js +130 -0
  141. package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts +60 -0
  142. package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.d.ts.map +1 -0
  143. package/src/engine/graphics3/prefab/prefab_skin_clip_scale_conflicts.js +128 -0
  144. package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts +40 -0
  145. package/src/engine/graphics3/prefab/prefab_skin_frame.d.ts.map +1 -0
  146. package/src/engine/graphics3/prefab/prefab_skin_frame.js +116 -0
  147. package/src/engine/graphics3/preview/make_model_preview_scene.d.ts +16 -14
  148. package/src/engine/graphics3/preview/make_model_preview_scene.d.ts.map +1 -1
  149. package/src/engine/graphics3/preview/make_model_preview_scene.js +126 -154
  150. package/src/engine/graphics3/preview/make_model_thumbnail.js +1 -1
  151. package/src/engine/graphics3/register_instance_animation.d.ts +6 -6
  152. package/src/engine/graphics3/register_instance_animation.d.ts.map +1 -1
  153. package/src/engine/graphics3/register_instance_animation.js +4 -4
  154. package/src/engine/graphics3/shade_bundle_bounds.d.ts +2 -6
  155. package/src/engine/graphics3/shade_bundle_bounds.d.ts.map +1 -1
  156. package/src/engine/graphics3/shade_bundle_bounds.js +47 -55
  157. package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts +11 -18
  158. package/src/engine/graphics3/terrain/pack_terrain_row_table.d.ts.map +1 -1
  159. package/src/engine/graphics3/terrain/pack_terrain_row_table.js +48 -53
  160. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts +17 -2
  161. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.d.ts.map +1 -1
  162. package/src/engine/physics/cloth/build/cloth_proxy_from_joints.js +284 -256
  163. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts +13 -15
  164. package/src/engine/physics/cloth/ecs/ClothInstance.d.ts.map +1 -1
  165. package/src/engine/physics/cloth/ecs/ClothInstance.js +12 -14
  166. package/src/engine/physics/cloth/ecs/ClothRig.d.ts +7 -8
  167. package/src/engine/physics/cloth/ecs/ClothRig.d.ts.map +1 -1
  168. package/src/engine/physics/cloth/ecs/ClothRig.js +7 -8
  169. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts +5 -4
  170. package/src/engine/physics/cloth/ecs/ClothSystem.d.ts.map +1 -1
  171. package/src/engine/physics/cloth/ecs/ClothSystem.js +11 -12
  172. package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts +19 -23
  173. package/src/engine/physics/cloth/ecs/cloth_seed_rig.d.ts.map +1 -1
  174. package/src/engine/physics/cloth/ecs/cloth_seed_rig.js +201 -199
  175. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.d.ts.map +1 -1
  176. package/src/engine/physics/cloth/ecs/cloth_seed_subtree.js +8 -0
  177. package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts +18 -34
  178. package/src/engine/physics/cloth/ecs/cloth_write_back_rig.d.ts.map +1 -1
  179. package/src/engine/physics/cloth/ecs/cloth_write_back_rig.js +58 -115
  180. package/src/engine/physics/cloth/playground/README.md +11 -11
  181. package/src/engine/physics/cloth/playground/garment_build.d.ts +0 -1
  182. package/src/engine/physics/cloth/playground/garment_build.d.ts.map +1 -1
  183. package/src/engine/physics/cloth/playground/garment_build.js +64 -58
  184. package/src/engine/physics/cloth/playground/garment_main.js +59 -33
  185. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  186. package/src/shade/RENDERER_CONTRACT.md +85 -53
  187. package/src/shade/device/ShadeGPUCommandContext.d.ts +23 -0
  188. package/src/shade/device/ShadeGPUCommandContext.d.ts.map +1 -1
  189. package/src/shade/device/ShadeGPUCommandContext.js +36 -0
  190. package/src/shade/playground/add_random_meshes.d.ts +4 -4
  191. package/src/shade/playground/add_random_meshes.d.ts.map +1 -1
  192. package/src/shade/playground/add_random_meshes.js +20 -16
  193. package/src/shade/playground/avboit/main.d.ts +1 -0
  194. package/src/shade/playground/avboit/main.d.ts.map +1 -1
  195. package/src/shade/playground/avboit/main.js +916 -875
  196. package/src/shade/playground/basis_textures/main.d.ts.map +1 -1
  197. package/src/shade/playground/basis_textures/main.js +22 -8
  198. package/src/shade/playground/basis_textures/texture_inventory.d.ts +2 -2
  199. package/src/shade/playground/basis_textures/texture_inventory.d.ts.map +1 -1
  200. package/src/shade/playground/basis_textures/texture_inventory.js +6 -7
  201. package/src/shade/playground/ground_seam/main.d.ts.map +1 -1
  202. package/src/shade/playground/ground_seam/main.js +13 -4
  203. package/src/shade/playground/ground_seam/make_ground.d.ts +13 -4
  204. package/src/shade/playground/ground_seam/make_ground.d.ts.map +1 -1
  205. package/src/shade/playground/ground_seam/make_ground.js +21 -16
  206. package/src/shade/playground/particle_ecs/bonfire_editor.js +3 -3
  207. package/src/shade/playground/particle_system/main.js +11 -10
  208. package/src/shade/playground/particle_system/particle_prototype.d.ts +15 -10
  209. package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
  210. package/src/shade/playground/particle_system/particle_prototype.js +56 -15
  211. package/src/shade/playground/particle_system/particle_scene.d.ts +68 -28
  212. package/src/shade/playground/particle_system/particle_scene.d.ts.map +1 -1
  213. package/src/shade/playground/particle_system/particle_scene.js +149 -53
  214. package/src/shade/playground/readback_crossover/index.html +41 -0
  215. package/src/shade/playground/readback_crossover/main.d.ts +2 -0
  216. package/src/shade/playground/readback_crossover/main.d.ts.map +1 -0
  217. package/src/shade/playground/readback_crossover/main.js +372 -0
  218. package/src/shade/playground/skinned_blas_refit/README.md +11 -7
  219. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts +13 -44
  220. package/src/shade/playground/skinned_blas_refit/add_floor.d.ts.map +1 -1
  221. package/src/shade/playground/skinned_blas_refit/add_floor.js +19 -59
  222. package/src/shade/playground/skinned_blas_refit/main.d.ts.map +1 -1
  223. package/src/shade/playground/skinned_blas_refit/main.js +67 -58
  224. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +40 -54
  225. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -1
  226. package/src/shade/playground/skinned_blas_refit/place_character.js +47 -74
  227. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts +3 -3
  228. package/src/shade/playground/skinned_blas_refit/sweep_views.d.ts.map +1 -1
  229. package/src/shade/playground/skinned_blas_refit/sweep_views.js +4 -3
  230. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts +3 -3
  231. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.d.ts.map +1 -1
  232. package/src/shade/playground/skinned_blas_refit/verify_clone_leaves.js +11 -4
  233. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.d.ts.map +1 -1
  234. package/src/shade/playground/skinned_blas_refit/verify_instance_bounds.js +38 -9
  235. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts +3 -3
  236. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.d.ts.map +1 -1
  237. package/src/shade/playground/skinned_blas_refit/verify_skinned_blas_refit.js +9 -6
  238. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts +3 -3
  239. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.d.ts.map +1 -1
  240. package/src/shade/playground/skinned_blas_refit/verify_traversal_reachability.js +3 -3
  241. package/src/shade/playground/skinned_mesh_soup/README.md +6 -6
  242. package/src/shade/playground/skinned_mesh_soup/main.d.ts.map +1 -1
  243. package/src/shade/playground/skinned_mesh_soup/main.js +44 -102
  244. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts +5 -5
  245. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.d.ts.map +1 -1
  246. package/src/shade/playground/skinned_mesh_soup/verify_clone_vertices.js +42 -33
  247. package/src/shade/playground/sponza_path_trace/main.d.ts +1 -0
  248. package/src/shade/playground/sponza_path_trace/main.d.ts.map +1 -1
  249. package/src/shade/playground/sponza_path_trace/main.js +393 -363
  250. package/src/shade/playground/ssr_reprojection/main.js +11 -9
  251. package/src/shade/playground/ssr_reprojection/scene.d.ts +15 -4
  252. package/src/shade/playground/ssr_reprojection/scene.d.ts.map +1 -1
  253. package/src/shade/playground/ssr_reprojection/scene.js +32 -11
  254. package/src/shade/playground/ssr_variance/main.js +1 -1
  255. package/src/shade/playground/ssr_variance/scene.d.ts +10 -4
  256. package/src/shade/playground/ssr_variance/scene.d.ts.map +1 -1
  257. package/src/shade/playground/ssr_variance/scene.js +39 -15
  258. package/src/shade/playground/vgeo_viewer/main.js +6 -2
  259. package/src/shade/playground/volumetrics_froxel/main.d.ts.map +1 -1
  260. package/src/shade/playground/volumetrics_froxel/main.js +936 -922
  261. package/src/shade/renderer/GraphicsContext.d.ts +7 -0
  262. package/src/shade/renderer/GraphicsContext.d.ts.map +1 -1
  263. package/src/shade/renderer/GraphicsContext.js +11 -0
  264. package/src/shade/renderer/Renderer.d.ts +3 -2
  265. package/src/shade/renderer/Renderer.d.ts.map +1 -1
  266. package/src/shade/renderer/Renderer.js +3 -2
  267. package/src/shade/renderer/animation/GPUAnimationManager.d.ts +39 -47
  268. package/src/shade/renderer/animation/GPUAnimationManager.d.ts.map +1 -1
  269. package/src/shade/renderer/animation/GPUAnimationManager.js +319 -256
  270. package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts +26 -22
  271. package/src/shade/renderer/animation/ShadeAnimationChannel.d.ts.map +1 -1
  272. package/src/shade/renderer/animation/ShadeAnimationChannel.js +28 -23
  273. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts +14 -6
  274. package/src/shade/renderer/animation/ShadeAnimationClip.d.ts.map +1 -1
  275. package/src/shade/renderer/animation/ShadeAnimationClip.js +20 -8
  276. package/src/shade/renderer/animation/Skin.d.ts +19 -19
  277. package/src/shade/renderer/animation/Skin.d.ts.map +1 -1
  278. package/src/shade/renderer/animation/Skin.js +15 -13
  279. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts +6 -5
  280. package/src/shade/renderer/animation/pose/pose_evaluate_local.d.ts.map +1 -1
  281. package/src/shade/renderer/animation/pose/pose_evaluate_local.js +9 -9
  282. package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts +5 -59
  283. package/src/shade/renderer/animation/skin_clip_scale_conflicts.d.ts.map +1 -1
  284. package/src/shade/renderer/animation/skin_clip_scale_conflicts.js +8 -132
  285. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts +65 -62
  286. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.d.ts.map +1 -1
  287. package/src/shade/renderer/animation/skinning/GPUMeshSkinningContext.js +148 -194
  288. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.d.ts.map +1 -1
  289. package/src/shade/renderer/animation/skinning/SKINNING_BINDING_STRUCT.js +4 -7
  290. package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.d.ts +2 -2
  291. package/src/shade/renderer/animation/skinning/chunk_skin_blend_mesh_local.js +2 -2
  292. package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts +74 -0
  293. package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.d.ts.map +1 -0
  294. package/src/shade/renderer/buffer/GPUBufferReadbackAllocator.js +240 -0
  295. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts +14 -0
  296. package/src/shade/renderer/buffer/table/GPUDatabase.d.ts.map +1 -1
  297. package/src/shade/renderer/buffer/table/GPUDatabase.js +64 -6
  298. package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts +190 -0
  299. package/src/shade/renderer/buffer/table/GPUDatabaseReadback.d.ts.map +1 -0
  300. package/src/shade/renderer/buffer/table/GPUDatabaseReadback.js +1323 -0
  301. package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts +10 -0
  302. package/src/shade/renderer/buffer/table/GPUPageMetadata.d.ts.map +1 -1
  303. package/src/shade/renderer/buffer/table/GPUPageMetadata.js +12 -0
  304. package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts +96 -0
  305. package/src/shade/renderer/buffer/table/GPUReadbackStagingRing.d.ts.map +1 -0
  306. package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts +15 -0
  307. package/src/shade/renderer/buffer/table/GPUReadbackStatus.d.ts.map +1 -0
  308. package/src/shade/renderer/buffer/table/GPUReadbackStatus.js +34 -0
  309. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts +75 -7
  310. package/src/shade/renderer/buffer/table/GPUTypedTable.d.ts.map +1 -1
  311. package/src/shade/renderer/buffer/table/GPUTypedTable.js +518 -135
  312. package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts +19 -0
  313. package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.d.ts.map +1 -0
  314. package/src/shade/renderer/buffer/table/GPU_TABLE_GATHER_DESCRIPTOR_WORDS.js +18 -0
  315. package/src/shade/renderer/buffer/table/WordViews.d.ts +39 -0
  316. package/src/shade/renderer/buffer/table/WordViews.d.ts.map +1 -0
  317. package/src/shade/renderer/buffer/table/WordViews.js +62 -0
  318. package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts +27 -0
  319. package/src/shade/renderer/buffer/table/gpu_table_gather_shader.d.ts.map +1 -0
  320. package/src/shade/renderer/buffer/table/gpu_table_gather_shader.js +117 -0
  321. package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts +121 -0
  322. package/src/shade/renderer/buffer/table/serde/generate_record_writer.d.ts.map +1 -0
  323. package/src/shade/renderer/buffer/table/serde/generate_record_writer.js +395 -0
  324. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.d.ts.map +1 -1
  325. package/src/shade/renderer/buffer/table/single/GPUSingleTypeTable.js +70 -20
  326. package/src/shade/renderer/dynamic/GPUDynamicMeshResidency.js +1 -1
  327. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.d.ts.map +1 -1
  328. package/src/shade/renderer/geometry/bvh/GPUGeometryBVHManager.js +6 -5
  329. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts +3 -3
  330. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.d.ts.map +1 -1
  331. package/src/shade/renderer/geometry/meshlet/GPUMeshletManager.js +15 -11
  332. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.d.ts +1 -1
  333. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_bake_for_scene.js +4 -4
  334. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts +1 -3
  335. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.d.ts.map +1 -1
  336. package/src/shade/renderer/global_illumination/brick4/cpu/brick4_generate_tree_from_scene.js +5 -4
  337. package/src/shade/renderer/global_illumination/brick4/gpu/bake/brick4_bake_basic.js +1 -1
  338. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.d.ts.map +1 -1
  339. package/src/shade/renderer/global_illumination/lpv/bake/GPULightProbeVolumeRenderer.js +1 -4
  340. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts +8 -3
  341. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.d.ts.map +1 -1
  342. package/src/shade/renderer/global_illumination/lpv/lpv_visualise_probes.js +19 -14
  343. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.d.ts.map +1 -1
  344. package/src/shade/renderer/global_illumination/lpv/placement/graph_generate_probe_locations.js +9 -1
  345. package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts +3 -3
  346. package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.d.ts.map +1 -1
  347. package/src/shade/renderer/global_illumination/lpv/placement/software/lpv_generate_probe_locations2.js +12 -5
  348. package/src/shade/renderer/global_illumination/probe/octahedral/GPUProbeAtlas.js +1 -1
  349. package/src/shade/renderer/light/GPULightCollection.d.ts +29 -0
  350. package/src/shade/renderer/light/GPULightCollection.d.ts.map +1 -1
  351. package/src/shade/renderer/light/GPULightCollection.js +444 -329
  352. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.d.ts.map +1 -1
  353. package/src/shade/renderer/light/LIGHT_DATABASE_SPEC.js +7 -1
  354. package/src/shade/renderer/light/LightCollection.d.ts +29 -1
  355. package/src/shade/renderer/light/LightCollection.d.ts.map +1 -1
  356. package/src/shade/renderer/light/LightCollection.js +50 -1
  357. package/src/shade/renderer/light/make_sunlight.js +2 -2
  358. package/src/shade/renderer/light/model/Light.d.ts +29 -2
  359. package/src/shade/renderer/light/model/Light.d.ts.map +1 -1
  360. package/src/shade/renderer/light/model/Light.js +30 -2
  361. package/src/shade/renderer/light/model/io/light_record_directional.d.ts +3 -1
  362. package/src/shade/renderer/light/model/io/light_record_directional.d.ts.map +1 -1
  363. package/src/shade/renderer/light/model/io/light_record_directional.js +8 -5
  364. package/src/shade/renderer/light/model/io/light_record_point.d.ts +3 -1
  365. package/src/shade/renderer/light/model/io/light_record_point.d.ts.map +1 -1
  366. package/src/shade/renderer/light/model/io/light_record_point.js +5 -2
  367. package/src/shade/renderer/light/model/io/light_record_spot.d.ts +4 -1
  368. package/src/shade/renderer/light/model/io/light_record_spot.d.ts.map +1 -1
  369. package/src/shade/renderer/light/model/io/light_record_spot.js +10 -6
  370. package/src/shade/renderer/light/place_light.d.ts +16 -0
  371. package/src/shade/renderer/light/place_light.d.ts.map +1 -0
  372. package/src/shade/renderer/light/place_light.js +36 -0
  373. package/src/shade/renderer/light/shader_refresh_light_poses.d.ts +44 -0
  374. package/src/shade/renderer/light/shader_refresh_light_poses.d.ts.map +1 -0
  375. package/src/shade/renderer/light/shader_refresh_light_poses.js +154 -0
  376. package/src/shade/renderer/lightmap/GPULightMap.js +1 -1
  377. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.d.ts.map +1 -1
  378. package/src/shade/renderer/lightmap/bake/raster/graph_draw_lightmap_viz_buffer.js +12 -14
  379. package/src/shade/renderer/loader/SceneBundle.d.ts +53 -28
  380. package/src/shade/renderer/loader/SceneBundle.d.ts.map +1 -1
  381. package/src/shade/renderer/loader/SceneBundle.js +111 -56
  382. package/src/shade/renderer/loader/SceneNode.d.ts +81 -0
  383. package/src/shade/renderer/loader/SceneNode.d.ts.map +1 -0
  384. package/src/shade/renderer/loader/SceneNode.js +114 -0
  385. package/src/shade/renderer/loader/gltf/load_gltf.d.ts +3 -2
  386. package/src/shade/renderer/loader/gltf/load_gltf.d.ts.map +1 -1
  387. package/src/shade/renderer/loader/gltf/load_gltf.js +110 -142
  388. package/src/shade/renderer/loader/gltf/tiny-gltf.d.ts +1 -1
  389. package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts +4 -4
  390. package/src/shade/renderer/loader/usd/UsdExtensionRegistry.d.ts.map +1 -1
  391. package/src/shade/renderer/loader/usd/UsdExtensionRegistry.js +2 -2
  392. package/src/shade/renderer/loader/usd/load_usd.d.ts +3 -2
  393. package/src/shade/renderer/loader/usd/load_usd.d.ts.map +1 -1
  394. package/src/shade/renderer/loader/usd/load_usd.js +4 -5
  395. package/src/shade/renderer/loader/usd/usd_build_scene.d.ts +3 -3
  396. package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
  397. package/src/shade/renderer/loader/usd/usd_build_scene.js +47 -55
  398. package/src/shade/renderer/material/GPUMaterialManager.js +1 -1
  399. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts +5 -4
  400. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.d.ts.map +1 -1
  401. package/src/shade/renderer/material/resident/GPUResidentMaterialContext.js +8 -15
  402. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts +15 -13
  403. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.d.ts.map +1 -1
  404. package/src/shade/renderer/object_property/shader_refresh_all_mesh_bounds.js +40 -21
  405. package/src/shade/renderer/particles/DESIGN.md +53 -50
  406. package/src/shade/renderer/particles/GPUParticleSystem.d.ts +31 -17
  407. package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
  408. package/src/shade/renderer/particles/GPUParticleSystem.js +54 -91
  409. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +12 -11
  410. package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
  411. package/src/shade/renderer/particles/runtime/EmitterRegistry.js +12 -11
  412. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +13 -19
  413. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -1
  414. package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +19 -25
  415. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +34 -24
  416. package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
  417. package/src/shade/renderer/particles/runtime/ParticleEmitter.js +53 -40
  418. package/src/shade/renderer/path_tracer/accumulating/AccumulatingPathTracer.js +1 -1
  419. package/src/shade/renderer/path_tracer/graph_path_trace_scene.js +1 -1
  420. package/src/shade/renderer/postprocess/nss/NSS.d.ts +1 -1
  421. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.d.ts.map +1 -1
  422. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_meshes_classify_buckets.js +2 -1
  423. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.d.ts.map +1 -1
  424. package/src/shade/renderer/rasterize/expand/bucket/mesh/graph_scene_meshes_cull_and_classify_buckets.js +5 -2
  425. package/src/shade/renderer/rasterize/fast/graph_rasterize_scene_fast.js +1 -1
  426. package/src/shade/renderer/rasterize/native/avboit/graph_rasterize_meshes_transparent_avboit.js +1 -1
  427. package/src/shade/renderer/rasterize/native/graph_rasterize_meshes_alpha_tested.js +1 -1
  428. package/src/shade/renderer/rasterize/native/oit/graph_rasterize_meshes_transparent_oit.js +1 -1
  429. package/src/shade/renderer/rasterize/standard/graph_rasterize_scene.js +1 -1
  430. package/src/shade/renderer/scene/DynamicMesh.d.ts +13 -4
  431. package/src/shade/renderer/scene/DynamicMesh.d.ts.map +1 -1
  432. package/src/shade/renderer/scene/DynamicMesh.js +14 -4
  433. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts +38 -18
  434. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.d.ts.map +1 -1
  435. package/src/shade/renderer/scene/GPUInstancesAccelerationStructure.js +112 -60
  436. package/src/shade/renderer/scene/GPUSceneContext.d.ts +55 -48
  437. package/src/shade/renderer/scene/GPUSceneContext.d.ts.map +1 -1
  438. package/src/shade/renderer/scene/GPUSceneContext.js +594 -928
  439. package/src/shade/renderer/scene/NODE3D_STRUCT.d.ts +5 -5
  440. package/src/shade/renderer/scene/NODE3D_STRUCT.js +5 -5
  441. package/src/shade/renderer/scene/Node3D.d.ts +27 -8
  442. package/src/shade/renderer/scene/Node3D.d.ts.map +1 -1
  443. package/src/shade/renderer/scene/Node3DDirtyList.d.ts +59 -0
  444. package/src/shade/renderer/scene/Node3DDirtyList.d.ts.map +1 -0
  445. package/src/shade/renderer/scene/Scene.d.ts +18 -60
  446. package/src/shade/renderer/scene/Scene.d.ts.map +1 -1
  447. package/src/shade/renderer/scene/Scene.js +53 -146
  448. package/src/shade/renderer/scene/SkinnedMesh.d.ts +10 -93
  449. package/src/shade/renderer/scene/SkinnedMesh.d.ts.map +1 -1
  450. package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts +24 -3
  451. package/src/shade/renderer/scene/bvh/StaticSceneBVH.d.ts.map +1 -1
  452. package/src/shade/renderer/scene/bvh/StaticSceneBVH.js +53 -13
  453. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts +5 -6
  454. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.d.ts.map +1 -1
  455. package/src/shade/renderer/scene/hierarchy/graph_scene_update_transform_hierarchy.js +5 -6
  456. package/src/shade/renderer/scene/optimization/scene_optimize.d.ts +10 -2
  457. package/src/shade/renderer/scene/optimization/scene_optimize.d.ts.map +1 -1
  458. package/src/shade/renderer/scene/optimization/scene_optimize.js +266 -230
  459. package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts +53 -0
  460. package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.d.ts.map +1 -0
  461. package/src/shade/renderer/scene/rows/GPUEntityBoundsReadback.js +144 -0
  462. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts +227 -0
  463. package/src/shade/renderer/scene/rows/GPUSceneRows.d.ts.map +1 -0
  464. package/src/shade/renderer/scene/rows/GPUSceneRows.js +1136 -0
  465. package/src/shade/renderer/scene/rows/place_primitive.d.ts +48 -0
  466. package/src/shade/renderer/scene/rows/place_primitive.d.ts.map +1 -0
  467. package/src/shade/renderer/scene/rows/place_primitive.js +98 -0
  468. package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts +10 -8
  469. package/src/shade/renderer/scene/serialization/deserialize_scene.d.ts.map +1 -1
  470. package/src/shade/renderer/scene/serialization/deserialize_scene.js +24 -27
  471. package/src/shade/renderer/scene/serialization/serialize_scene.d.ts +9 -2
  472. package/src/shade/renderer/scene/serialization/serialize_scene.d.ts.map +1 -1
  473. package/src/shade/renderer/scene/serialization/serialize_scene.js +25 -4
  474. package/src/shade/renderer/scene/verify_gpu_tlas_build.js +2 -2
  475. package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.d.ts.map +1 -1
  476. package/src/shade/renderer/shader/chunk/light/DIRECTIONAL_LIGHT_STRUCT.js +5 -0
  477. package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.d.ts.map +1 -1
  478. package/src/shade/renderer/shader/chunk/light/POINT_LIGHT_STRUCT.js +5 -0
  479. package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.d.ts.map +1 -1
  480. package/src/shade/renderer/shader/chunk/light/SPOT_LIGHT_STRUCT.js +5 -0
  481. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts +39 -0
  482. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  483. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +112 -64
  484. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts +7 -0
  485. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.d.ts.map +1 -1
  486. package/src/shade/renderer/shadow/map/GPUSceneShadowmapContext.js +1541 -1352
  487. package/src/shade/renderer/shadow/map/PointLightShadowmap.js +1 -1
  488. package/src/shade/renderer/shadow/map/SpotLightShadowmap.js +1 -1
  489. package/src/shade/renderer/shadow/map/TetrahedronPointLightShadowmap.js +1 -1
  490. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts +29 -0
  491. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.d.ts.map +1 -0
  492. package/src/shade/renderer/shadow/map/csm/CSM_CASTER_RANGE_STRUCT.js +43 -0
  493. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts +13 -0
  494. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.d.ts.map +1 -0
  495. package/src/shade/renderer/shadow/map/csm/SHADOWMAP_CSM_CASTER_RANGE_MARGIN_FRACTION.js +12 -0
  496. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts +49 -0
  497. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.d.ts.map +1 -0
  498. package/src/shade/renderer/shadow/map/csm/shader/shader_csm_caster_range.js +194 -0
  499. package/src/shade/renderer/shadow/map/csm_debug_draw_preview.js +1 -1
  500. package/src/shade/renderer/shadow/map/shadowmap_update_score.js +1 -1
  501. package/src/shade/renderer/shadow/ray/RTXShadows.js +1 -1
  502. package/src/shade/renderer/shadow/ray/staged/trace/graph_trace_rays.js +1 -1
  503. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.d.ts.map +1 -1
  504. package/src/shade/renderer/shadow/sdf/cascade/CascadedSceneSDF.js +3 -1
  505. package/src/shade/renderer/texture/bindless/GPUBindlessTextureManager.js +8 -8
  506. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.d.ts.map +1 -1
  507. package/src/shade/renderer/volumetrics/GPUViewVolumetrics.js +4 -3
  508. package/src/engine/graphics3/instantiate_scene_bundle.js +0 -164
  509. package/src/engine/graphics3/shade_node_to_entity_composition.js +0 -88
  510. package/src/shade/renderer/animation/compute_skin_world_bounds.js +0 -146
  511. package/src/shade/renderer/animation/compute_skinned_mesh_clip_bounding_sphere.js +0 -531
  512. package/src/shade/renderer/animation/pose/pose_evaluate_world.js +0 -76
  513. package/src/shade/renderer/animation/skin_bind_transform.js +0 -33
  514. package/src/shade/renderer/animation/skin_frame_defect.js +0 -132
  515. package/src/shade/renderer/animation/skin_joint_matrix.js +0 -46
  516. package/src/shade/renderer/animation/skin_normalize_mesh_frame.js +0 -216
  517. package/src/shade/renderer/scene/InstanceBatch.js +0 -235
  518. package/src/shade/renderer/scene/Mesh.js +0 -168
  519. package/src/shade/renderer/scene/Node3D.js +0 -263
  520. package/src/shade/renderer/scene/SceneNodeBinding.js +0 -56
  521. package/src/shade/renderer/scene/SkinnedMesh.js +0 -170
  522. package/src/shade/renderer/scene/TransformAuthority.js +0 -33
@@ -1,199 +1,201 @@
1
- import { assert } from "../../../../core/assert.js";
2
- import { quat3_multiply } from "../../../../core/geom/3d/quaternion/quat3_multiply.js";
3
- import { v3_quaternion_apply } from "../../../../core/geom/vec3/v3_quaternion_apply.js";
4
- import { TransformAuthority } from "../../../../shade/renderer/scene/TransformAuthority.js";
5
- import { cloth_build_children, cloth_build_rows } from "./cloth_build_rows.js";
6
-
7
- /**
8
- * # Seeding a cloth from a skinned model's joints — §11.2
9
- *
10
- * One particle per joint the proxy names, with the anchor as the fixed set, and
11
- * everything after that is `cloth_build_rows.js` — the same rows, the same
12
- * geodesics, the same leashes the entity path gets. §11 says "the solver is
13
- * identical either way; only seeding and write-back differ", and this file plus
14
- * `cloth_write_back_rig.js` is the whole of the difference.
15
- *
16
- * ## Cloth takes authority, and that is a real claim
17
- *
18
- * §11.2 says the writable handle is "the joint's `Node3D.transform_local` — the
19
- * same handle the animation systems write". **The animation systems do not
20
- * write it.** `TransformAuthority` is explicit: a node a clip drives is
21
- * `GPU`, and "the CPU allocates and seeds the row, then never writes to it
22
- * again, so the node's own `transform_local` stops describing it and should not
23
- * be read as if it did". Cloth writing `transform_local` on such a node would
24
- * be writing to something nothing reads.
25
- *
26
- * So the seed **claims** `TransformAuthority.CPU` on every joint it drives. The
27
- * consequence is stated rather than hidden: a joint cloth simulates stops being
28
- * animatable by a clip, because two writers of one row is the race the authority
29
- * enum exists to prevent. That is the right trade for a cape — the whole point
30
- * of simulating it is that nobody keyframes it — and it is an authoring error
31
- * for a garment whose joints are also keyed, which is why the seed says so.
32
- *
33
- * ## The animated pose is constant, exactly as it is for a rope
34
- *
35
- * §11.1 says a subtree's authored pose is rigid relative to its anchor, so in
36
- * the anchor's own frame it does not move, and then says "a subtree whose links
37
- * are themselves animated is not an M1 case — that is the rig path, where the
38
- * animated pose comes from the skeleton and is live".
39
- *
40
- * For a **rigged** garment it is not live either, and the reason is the
41
- * authority claim above: cloth owns those joints, so nothing else poses them,
42
- * so their authored pose is the proxy's baked bind pose — constant in the
43
- * anchor's frame, exactly as a rope's is. What moves is the anchor, and the
44
- * anchor is a joint of the character's own animated skeleton.
45
- *
46
- * The live case is the **unrigged** path, where the animated targets are mesh
47
- * vertices skinned to the character's skeleton by
48
- * `mesh_apply_skeletal_vertex_skinning` and genuinely move under the animation.
49
- * That path is not in M3.
50
- *
51
- * @author Alex Goldring
52
- * @copyright Company Named Limited (c) 2026
53
- */
54
-
55
- /**
56
- * Seed `instance` from a proxy and the joints of a skin.
57
- *
58
- * @param {ClothInstance} instance seeded in place
59
- * @param {ClothProxy} proxy
60
- * @param {Node3D[]} joints the skin's joints, in the order the proxy indexes
61
- * @param {number} dt fixed step, seconds
62
- * @returns {void}
63
- */
64
- export function cloth_seed_rig(instance, proxy, joints, dt) {
65
- assert.ok(proxy.isClothProxy === true, 'proxy must be a ClothProxy');
66
-
67
- const joint_count = proxy.joint_count;
68
-
69
- // Node 0 is the anchor, exactly as it is for the entity path: the fixed
70
- // set, the origin of the local frame, and `d_geo = 0`.
71
- const node_count = joint_count + 1;
72
-
73
- instance.node_count = node_count;
74
-
75
- const node_parent = new Int32Array(node_count);
76
-
77
- node_parent[0] = -1;
78
-
79
- for (let i = 0; i < joint_count; i++) {
80
- node_parent[i + 1] = proxy.joint_parent[i] + 1;
81
- }
82
-
83
- instance.node_parent = node_parent;
84
-
85
- const node_joint = new Array(node_count);
86
-
87
- node_joint[0] = joints[proxy.anchor];
88
-
89
- for (let i = 0; i < joint_count; i++) {
90
- const node = joints[proxy.joint[i]];
91
-
92
- assert.defined(node, `joint ${proxy.joint[i]} of the skin`);
93
-
94
- node_joint[i + 1] = node;
95
-
96
- // See the module docblock. A clip-driven joint reads as GPU here, and
97
- // taking it is what makes the write-back visible at all.
98
- node.transform_authority = TransformAuthority.CPU;
99
- }
100
-
101
- instance.node_joint = node_joint;
102
-
103
- // The entity path's arrays have no meaning here and holding stale ones is
104
- // how a write-back reaches into a previous seeding's entities.
105
- instance.node_entity = null;
106
- instance.node_transform = [];
107
- instance.node_attachment = [];
108
- instance.pruned_count = 0;
109
- instance.pruned_entity = null;
110
- instance.pruned_parent = null;
111
- instance.pruned_transform = [];
112
- instance.pruned_attachment = [];
113
-
114
- cloth_build_children(instance);
115
-
116
- read_bind_pose(instance, proxy);
117
-
118
- instance.dynamics_seen.copy(instance.cloth.dynamics);
119
-
120
- cloth_build_rows(instance, dt);
121
-
122
- instance.seeded = true;
123
- }
124
-
125
- /**
126
- * Compose the proxy's baked bind pose into the anchor's frame.
127
- *
128
- * The proxy's parents come before its children, so one forward pass is the whole
129
- * hierarchy — the same property `cloth_seed_subtree` gets from a breadth-first
130
- * walk and relies on for the same reason.
131
- *
132
- * @param {ClothInstance} instance
133
- * @param {ClothProxy} proxy
134
- * @private
135
- */
136
- function read_bind_pose(instance, proxy) {
137
- const node_count = instance.node_count;
138
-
139
- const local_position = new Float32Array(node_count * 3);
140
- const local_rotation = new Float32Array(node_count * 4);
141
-
142
- const position = new Float32Array(node_count * 3);
143
- const rotation = new Float32Array(node_count * 4);
144
-
145
- // The anchor is the origin of the frame it anchors.
146
- local_rotation[3] = 1;
147
- rotation[3] = 1;
148
-
149
- const parent = instance.node_parent;
150
-
151
- for (let node = 1; node < node_count; node++) {
152
- const joint = node - 1;
153
-
154
- local_position[node * 3] = proxy.rest_position[joint * 3];
155
- local_position[node * 3 + 1] = proxy.rest_position[joint * 3 + 1];
156
- local_position[node * 3 + 2] = proxy.rest_position[joint * 3 + 2];
157
-
158
- local_rotation[node * 4] = proxy.rest_rotation[joint * 4];
159
- local_rotation[node * 4 + 1] = proxy.rest_rotation[joint * 4 + 1];
160
- local_rotation[node * 4 + 2] = proxy.rest_rotation[joint * 4 + 2];
161
- local_rotation[node * 4 + 3] = proxy.rest_rotation[joint * 4 + 3];
162
-
163
- const p = parent[node];
164
-
165
- const pqx = rotation[p * 4];
166
- const pqy = rotation[p * 4 + 1];
167
- const pqz = rotation[p * 4 + 2];
168
- const pqw = rotation[p * 4 + 3];
169
-
170
- v3_quaternion_apply(
171
- COMPOSE, 0,
172
- local_position[node * 3], local_position[node * 3 + 1], local_position[node * 3 + 2],
173
- pqx, pqy, pqz, pqw
174
- );
175
-
176
- position[node * 3] = position[p * 3] + COMPOSE[0];
177
- position[node * 3 + 1] = position[p * 3 + 1] + COMPOSE[1];
178
- position[node * 3 + 2] = position[p * 3 + 2] + COMPOSE[2];
179
-
180
- quat3_multiply(
181
- rotation, node * 4,
182
- pqx, pqy, pqz, pqw,
183
- local_rotation[node * 4], local_rotation[node * 4 + 1],
184
- local_rotation[node * 4 + 2], local_rotation[node * 4 + 3]
185
- );
186
- }
187
-
188
- instance.rest_local_position = local_position;
189
- instance.rest_local_rotation = local_rotation;
190
-
191
- instance.animated_position = position;
192
- instance.animated_rotation = rotation;
193
- }
194
-
195
- /**
196
- * @type {Float64Array}
197
- * @private
198
- */
199
- const COMPOSE = new Float64Array(3);
1
+ import { assert } from "../../../../core/assert.js";
2
+ import { quat3_multiply } from "../../../../core/geom/3d/quaternion/quat3_multiply.js";
3
+ import { v3_quaternion_apply } from "../../../../core/geom/vec3/v3_quaternion_apply.js";
4
+ import { GPUStateAuthorityFlags } from "../../../ecs/gpu/GPUStateAuthorityFlags.js";
5
+ import { gpu_authority_revoke } from "../../../ecs/gpu/gpu_authority_revoke.js";
6
+ import { TransformAttachment } from "../../../ecs/transform-attachment/TransformAttachment.js";
7
+ import { cloth_build_children, cloth_build_rows } from "./cloth_build_rows.js";
8
+
9
+ /**
10
+ * # Seeding a cloth from a skinned model's joints — §11.2
11
+ *
12
+ * One particle per joint the proxy names, with the anchor as the fixed set, and
13
+ * everything after that is `cloth_build_rows.js` — the same rows, the same
14
+ * geodesics, the same leashes the entity path gets. §11 says "the solver is
15
+ * identical either way; only seeding and write-back differ", and this file plus
16
+ * `cloth_write_back_rig.js` is the whole of the difference.
17
+ *
18
+ * ## The joints are entities, and cloth takes them back from the GPU
19
+ *
20
+ * A skinned model is a prefab spawned as entities, so a joint is an entity with
21
+ * a `TransformAttachment` — the offset from its parent joint — and a
22
+ * `GPUStateAuthority` saying who writes that offset's row. A joint a clip
23
+ * drives is the GPU's: the clip resolves the row on the GPU and the CPU never
24
+ * writes it, so the attachment's offset stops describing it. Cloth writing that
25
+ * offset on such a joint would be writing to something nothing reads.
26
+ *
27
+ * So the seed **revokes** the GPU's authority over every joint it drives. The
28
+ * consequence is stated rather than hidden: a joint cloth simulates stops being
29
+ * animatable by a clip, because two writers of one row is the race the
30
+ * authority component exists to prevent. That is the right trade for a cape —
31
+ * the whole point of simulating it is that nobody keyframes it — and it is an
32
+ * authoring error for a garment whose joints are also keyed, which is why the
33
+ * seed says so.
34
+ *
35
+ * ## The animated pose is constant, exactly as it is for a rope
36
+ *
37
+ * §11.1 says a subtree's authored pose is rigid relative to its anchor, so in
38
+ * the anchor's own frame it does not move, and then says "a subtree whose links
39
+ * are themselves animated is not an M1 case — that is the rig path, where the
40
+ * animated pose comes from the skeleton and is live".
41
+ *
42
+ * For a **rigged** garment it is not live either, and the reason is the
43
+ * authority claim above: cloth owns those joints, so nothing else poses them,
44
+ * so their authored pose is the proxy's baked bind pose — constant in the
45
+ * anchor's frame, exactly as a rope's is. What moves is the anchor, and the
46
+ * anchor is a joint of the character's own animated skeleton, whose pose the
47
+ * system evaluates exactly (`t64_evaluate_world`).
48
+ *
49
+ * @author Alex Goldring
50
+ * @copyright Company Named Limited (c) 2026
51
+ */
52
+
53
+ /**
54
+ * Seed `instance` from a proxy and the joints of a skin.
55
+ *
56
+ * @param {ClothInstance} instance seeded in place
57
+ * @param {ClothProxy} proxy
58
+ * @param {number[]} joints the skin's joints as entities, in the order the proxy indexes
59
+ * @param {EntityComponentDataset} ecd
60
+ * @param {number} dt
61
+ */
62
+ export function cloth_seed_rig(instance, proxy, joints, ecd, dt) {
63
+ assert.ok(proxy.isClothProxy === true, 'proxy must be a ClothProxy');
64
+
65
+ const joint_count = proxy.joint_count;
66
+
67
+ // Node 0 is the anchor, exactly as it is for the entity path: the fixed
68
+ // set, the origin of the local frame, and `d_geo = 0`.
69
+ const node_count = joint_count + 1;
70
+
71
+ instance.node_count = node_count;
72
+
73
+ const node_parent = new Int32Array(node_count);
74
+
75
+ node_parent[0] = -1;
76
+
77
+ for (let i = 0; i < joint_count; i++) {
78
+ node_parent[i + 1] = proxy.joint_parent[i] + 1;
79
+ }
80
+
81
+ instance.node_parent = node_parent;
82
+
83
+ const node_joint = new Int32Array(node_count);
84
+
85
+ node_joint[0] = joints[proxy.anchor];
86
+
87
+ const node_attachment = new Array(node_count);
88
+
89
+ node_attachment[0] = null;
90
+
91
+ for (let i = 0; i < joint_count; i++) {
92
+ const joint = joints[proxy.joint[i]];
93
+
94
+ assert.defined(joint, `joint ${proxy.joint[i]} of the skin`);
95
+ assert.ok(ecd.entityExists(joint), `joint ${proxy.joint[i]} of the skin, entity ${joint}, does not exist`);
96
+
97
+ node_joint[i + 1] = joint;
98
+
99
+ const attachment = ecd.getComponent(joint, TransformAttachment);
100
+
101
+ assert.defined(attachment, `joint entity ${joint} carries no TransformAttachment to write`);
102
+
103
+ node_attachment[i + 1] = attachment;
104
+
105
+ // See the module docblock. A clip-driven joint's offset is the GPU's, and taking it back
106
+ // is what makes the write-back reach the row at all. An entity that never declared has
107
+ // nothing to take back.
108
+ gpu_authority_revoke(ecd, joint, GPUStateAuthorityFlags.TransformAttachment);
109
+ }
110
+
111
+ instance.node_joint = node_joint;
112
+ instance.node_attachment = node_attachment;
113
+
114
+ // The entity path's arrays have no meaning here and holding stale ones is
115
+ // how a write-back reaches into a previous seeding's entities.
116
+ instance.node_entity = null;
117
+ instance.node_transform = [];
118
+ instance.pruned_count = 0;
119
+ instance.pruned_entity = null;
120
+ instance.pruned_parent = null;
121
+ instance.pruned_transform = [];
122
+ instance.pruned_attachment = [];
123
+
124
+ cloth_build_children(instance);
125
+
126
+ read_bind_pose(instance, proxy);
127
+
128
+ instance.dynamics_seen.copy(instance.cloth.dynamics);
129
+
130
+ cloth_build_rows(instance, dt);
131
+
132
+ instance.seeded = true;
133
+ }
134
+
135
+ /**
136
+ * The proxy's bind pose, composed: local offsets per node and the position and
137
+ * rotation of every node in the anchor's frame.
138
+ *
139
+ * @param {ClothInstance} instance
140
+ * @param {ClothProxy} proxy
141
+ */
142
+ function read_bind_pose(instance, proxy) {
143
+ const node_count = instance.node_count;
144
+
145
+ const local_position = new Float32Array(node_count * 3);
146
+ const local_rotation = new Float32Array(node_count * 4);
147
+
148
+ const position = new Float32Array(node_count * 3);
149
+ const rotation = new Float32Array(node_count * 4);
150
+
151
+ // The anchor is the origin of the frame it anchors.
152
+ local_rotation[3] = 1;
153
+ rotation[3] = 1;
154
+
155
+ const parent = instance.node_parent;
156
+
157
+ for (let node = 1; node < node_count; node++) {
158
+ const joint = node - 1;
159
+
160
+ local_position[node * 3] = proxy.rest_position[joint * 3];
161
+ local_position[node * 3 + 1] = proxy.rest_position[joint * 3 + 1];
162
+ local_position[node * 3 + 2] = proxy.rest_position[joint * 3 + 2];
163
+
164
+ local_rotation[node * 4] = proxy.rest_rotation[joint * 4];
165
+ local_rotation[node * 4 + 1] = proxy.rest_rotation[joint * 4 + 1];
166
+ local_rotation[node * 4 + 2] = proxy.rest_rotation[joint * 4 + 2];
167
+ local_rotation[node * 4 + 3] = proxy.rest_rotation[joint * 4 + 3];
168
+
169
+ const p = parent[node];
170
+
171
+ const pqx = rotation[p * 4];
172
+ const pqy = rotation[p * 4 + 1];
173
+ const pqz = rotation[p * 4 + 2];
174
+ const pqw = rotation[p * 4 + 3];
175
+
176
+ v3_quaternion_apply(
177
+ COMPOSE, 0,
178
+ local_position[node * 3], local_position[node * 3 + 1], local_position[node * 3 + 2],
179
+ pqx, pqy, pqz, pqw
180
+ );
181
+
182
+ position[node * 3] = position[p * 3] + COMPOSE[0];
183
+ position[node * 3 + 1] = position[p * 3 + 1] + COMPOSE[1];
184
+ position[node * 3 + 2] = position[p * 3 + 2] + COMPOSE[2];
185
+
186
+ quat3_multiply(
187
+ rotation, node * 4,
188
+ pqx, pqy, pqz, pqw,
189
+ local_rotation[node * 4], local_rotation[node * 4 + 1],
190
+ local_rotation[node * 4 + 2], local_rotation[node * 4 + 3]
191
+ );
192
+ }
193
+
194
+ instance.rest_local_position = local_position;
195
+ instance.rest_local_rotation = local_rotation;
196
+
197
+ instance.animated_position = position;
198
+ instance.animated_rotation = rotation;
199
+ }
200
+
201
+ const COMPOSE = new Float64Array(3);
@@ -1 +1 @@
1
- {"version":3,"file":"cloth_seed_subtree.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/ecs/cloth_seed_subtree.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH;;;;;;;;;GASG;AACH,6CAPW,aAAa,2EAGb,MAAM,GAEJ,IAAI,CAkGhB;8BA5J6B,oBAAoB"}
1
+ {"version":3,"file":"cloth_seed_subtree.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/ecs/cloth_seed_subtree.js"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH;;;;;;;;;GASG;AACH,6CAPW,aAAa,2EAGb,MAAM,GAEJ,IAAI,CAwGhB;8BAlK6B,oBAAoB"}
@@ -1,6 +1,8 @@
1
1
  import { assert } from "../../../../core/assert.js";
2
2
  import { quat3_multiply } from "../../../../core/geom/3d/quaternion/quat3_multiply.js";
3
3
  import { v3_quaternion_apply } from "../../../../core/geom/vec3/v3_quaternion_apply.js";
4
+ import { GPUStateAuthorityFlags } from "../../../ecs/gpu/GPUStateAuthorityFlags.js";
5
+ import { gpu_authority_assert_cpu } from "../../../ecs/gpu/gpu_authority_assert_cpu.js";
4
6
  import { TransformAttachment } from "../../../ecs/transform-attachment/TransformAttachment.js";
5
7
  import {
6
8
  TRANSFORM64_ROTATION_OFFSET,
@@ -139,6 +141,8 @@ export function cloth_seed_subtree(instance, ecd, attachments, dt) {
139
141
  for (let i = 0; i < instance.pruned_count; i++) {
140
142
  const entity = instance.pruned_entity[i];
141
143
 
144
+ gpu_authority_assert_cpu(ecd, entity, GPUStateAuthorityFlags.Transform64);
145
+
142
146
  instance.pruned_transform[i] = ecd.getComponent(entity, Transform64);
143
147
  instance.pruned_attachment[i] = ecd.getComponent(entity, TransformAttachment);
144
148
  }
@@ -153,6 +157,10 @@ export function cloth_seed_subtree(instance, ecd, attachments, dt) {
153
157
 
154
158
  assert.defined(transform, `Transform64 of cloth node ${node} (entity ${entity})`);
155
159
 
160
+ // A subtree cloth is a CPU chain from its anchor down; a garment hanging off a GPU-driven
161
+ // joint is the rig path's, which evaluates the anchor exactly instead of reading it.
162
+ gpu_authority_assert_cpu(ecd, entity, GPUStateAuthorityFlags.Transform64);
163
+
156
164
  instance.node_transform[node] = transform;
157
165
  instance.node_attachment[node] = node === 0
158
166
  ? null
@@ -1,49 +1,33 @@
1
1
  /**
2
2
  * # Putting the answer back onto a skinned model's joints — §11.2
3
3
  *
4
- * The same reconstruction the entity path uses, written onto `Node3D`s instead
5
- * of onto entities. **Cloth moves joints; it does not produce vertices** — the
6
- * mapping from a simulated joint to a render vertex already exists in this
7
- * engine and it is the skin, so the existing skinning pass does the rest,
8
- * including bounds refresh and BLAS refit that a bespoke vertex-deformation
9
- * path would have to reimplement.
4
+ * The same reconstruction the entity path uses, written onto the joint entities' offsets.
5
+ * **Cloth moves joints; it does not produce vertices** — the mapping from a simulated joint to a
6
+ * render vertex already exists in this engine and it is the skin, so the existing skinning pass
7
+ * does the rest, including bounds refresh and BLAS refit that a bespoke vertex-deformation path
8
+ * would have to reimplement.
10
9
  *
11
- * ## `transform_local` is the output, and `transform_global` is written too
10
+ * ## The offset is the output
12
11
  *
13
- * `transform_local` is a joint's own truth and the handle §11.2 names. It is
14
- * also *passive*: a `Node3D` does not track its components, and nothing
15
- * downstream sees a change until `updateMatrices` runs — which recurses into
16
- * every descendant, so calling it on the anchor would recompose the whole
17
- * character every fixed step to move a cape.
12
+ * A joint's `TransformAttachment` offset is its own truth and the handle §11.2 names: it is what
13
+ * the joint's row holds, and the GPU composes the world from it under the anchor's animated
14
+ * row. Writing it is announced on the joint, which is what carries it to the row — the model
15
+ * marks the row on that announcement — and what lets the attachment system recompose the CPU's
16
+ * copy of the world below it. That copy is composed under the anchor as the CPU knows it, which
17
+ * for a GPU-driven anchor is its rest pose: what the simulation may read about a cape joint is
18
+ * its offset, or an exact evaluation, never that composed world.
18
19
  *
19
- * So this pass composes the cloth subtree's `transform_global` itself, which
20
- * costs nothing because the pose is already in hand, and bumps each joint's
21
- * version through `needsUpdate` so the renderer uploads the row. Nothing above
22
- * the anchor is touched and nothing below the garment is walked.
23
- *
24
- * `transform_global` is derived, so writing it is only ever a shortcut for the
25
- * recomposition it saves — and it is a *correct* shortcut only because this
26
- * pass has the anchor's world pose and the whole chain under it. Anything that
27
- * moves the anchor without telling cloth invalidates it, which is the same
28
- * contract every consumer of a derived transform already has.
29
- *
30
- * ## What is not here
31
- *
32
- * No announcement, and no pruned boundary. The entity path has both because its
33
- * subtree is an entity hierarchy with other things hanging off it; a proxy's
34
- * joint list is closed by construction, and a socket parented to a cape joint
35
- * follows it through the ordinary node hierarchy.
20
+ * Nothing above the anchor is touched: the anchor is the character's, animated by its clips,
21
+ * and this pass hangs a cape from it.
36
22
  *
37
23
  * @author Alex Goldring
38
24
  * @copyright Company Named Limited (c) 2026
39
25
  */
40
26
  /**
41
- * Write one cloth's solved pose onto the joints it drives.
27
+ * Write the reconstructed pose onto the rig's joints.
42
28
  *
43
29
  * @param {ClothInstance} instance
44
- * @param {Transform64} anchor the anchor joint's **world** pose, evaluated by
45
- * the caller — see `ClothSystem` for why it is not read off the node
46
- * @returns {void}
30
+ * @param {EntityComponentDataset} ecd
47
31
  */
48
- export function cloth_write_back_rig(instance: ClothInstance, anchor: Transform64): void;
32
+ export function cloth_write_back_rig(instance: ClothInstance, ecd: EntityComponentDataset): void;
49
33
  //# sourceMappingURL=cloth_write_back_rig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloth_write_back_rig.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/ecs/cloth_write_back_rig.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH;;;;;;;GAOG;AACH,oFAFa,IAAI,CA2DhB"}
1
+ {"version":3,"file":"cloth_write_back_rig.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/physics/cloth/ecs/cloth_write_back_rig.js"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH;;;;;GAKG;AACH,iGAqBC"}