@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
@@ -0,0 +1,116 @@
1
+ import { assert } from "../../../core/assert.js";
2
+ import { m4_invert } from "../../../core/geom/3d/mat4/m4_invert.js";
3
+ import { m4_multiply } from "../../../core/geom/3d/mat4/m4_multiply.js";
4
+ import { m4_rigidity_defect } from "../../../core/geom/3d/mat4/m4_rigidity_defect.js";
5
+
6
+ /**
7
+ * @typedef {import("./Prefab.js").Prefab} Prefab
8
+ * @typedef {import("../../../shade/renderer/animation/Skin.js").Skin} Skin
9
+ */
10
+
11
+ const _inverse_frame = new Float64Array(16);
12
+ const _joint_matrix = new Float64Array(16);
13
+ const _folded = new Float64Array(16);
14
+
15
+ /**
16
+ * A joint's skinning matrix at the prefab's rest pose: the joint's world under the root, times
17
+ * its inverse-bind matrix. What the skin matrix prep pass computes on the GPU from the row's
18
+ * `global`, computed here from the prefab's own composition.
19
+ *
20
+ * @param {Float64Array} out
21
+ * @param {Prefab} prefab
22
+ * @param {Skin} skin joints as node indices
23
+ * @param {number} joint_index
24
+ * @returns {Float64Array} `out`
25
+ */
26
+ export function prefab_skin_joint_matrix(out, prefab, skin, joint_index) {
27
+ assert.isArrayLike(out, 'out');
28
+ assert.defined(prefab, 'prefab');
29
+ assert.defined(skin, 'skin');
30
+ assert.isNonNegativeInteger(joint_index, 'joint_index');
31
+ assert.lessThan(joint_index, skin.joints.length, 'joint_index');
32
+
33
+ const offset = joint_index * 16;
34
+
35
+ assert.greaterThanOrEqual(
36
+ skin.inverse_bind_matrices.length, offset + 16,
37
+ 'skin.inverse_bind_matrices.length'
38
+ );
39
+
40
+ return m4_multiply(
41
+ out,
42
+ prefab.world[skin.joints[joint_index]],
43
+ skin.inverse_bind_matrices.subarray(offset, offset + 16)
44
+ );
45
+ }
46
+
47
+ /**
48
+ * The frame a skin's meshes are deformed in: its first joint's skinning matrix at rest. For a
49
+ * skin whose rest pose is rigid every joint gives the same answer, and the first is as good as any.
50
+ *
51
+ * @param {Float64Array} out
52
+ * @param {Prefab} prefab
53
+ * @param {Skin} skin
54
+ * @returns {Float64Array} `out`
55
+ */
56
+ export function prefab_skin_bind_transform(out, prefab, skin) {
57
+ assert.greaterThanOrEqual(skin.joints.length, 1, 'skin.joints.length');
58
+
59
+ return prefab_skin_joint_matrix(out, prefab, skin, 0);
60
+ }
61
+
62
+ /**
63
+ * How far a skin is from being deformable in `frame`: the worst rigidity defect of
64
+ * `inverse(frame) × joint.world × inverse_bind` over its joints, at rest. Zero for a skin that
65
+ * folds rigidly, `Infinity` for a frame with no inverse or a joint that reflects.
66
+ *
67
+ * A reflection scores perfectly on orthonormality, which is why it is caught by its determinant
68
+ * rather than by the defect: a dual quaternion would answer it with a rotation, silently, which is
69
+ * precisely the class of failure this exists to end.
70
+ *
71
+ * @param {Prefab} prefab
72
+ * @param {Skin} skin
73
+ * @param {ArrayLike<number>} frame
74
+ * @returns {number}
75
+ */
76
+ export function prefab_skin_frame_defect(prefab, skin, frame) {
77
+ assert.isArrayLike(frame, 'frame');
78
+
79
+ if (!m4_invert(_inverse_frame, frame)) {
80
+ return Infinity;
81
+ }
82
+
83
+ const joint_count = skin.joints.length;
84
+
85
+ let worst = 0;
86
+
87
+ for (let j = 0; j < joint_count; j++) {
88
+ prefab_skin_joint_matrix(_joint_matrix, prefab, skin, j);
89
+
90
+ m4_multiply(_folded, _inverse_frame, _joint_matrix);
91
+
92
+ if (m4_linear_determinant(_folded) < 0) {
93
+ return Infinity;
94
+ }
95
+
96
+ const defect = m4_rigidity_defect(_folded);
97
+
98
+ if (defect > worst) {
99
+ worst = defect;
100
+ }
101
+ }
102
+
103
+ return worst;
104
+ }
105
+
106
+ /**
107
+ * @param {ArrayLike<number>} mat4
108
+ * @returns {number}
109
+ */
110
+ function m4_linear_determinant(mat4) {
111
+ const a = mat4[0], b = mat4[4], c = mat4[8];
112
+ const d = mat4[1], e = mat4[5], f = mat4[9];
113
+ const g = mat4[2], h = mat4[6], i = mat4[10];
114
+
115
+ return a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g);
116
+ }
@@ -2,34 +2,36 @@
2
2
  * A scene holding one model and the light to see it by, and a camera framed on it.
3
3
  *
4
4
  * **The bundle is read, never moved.** A loaded model is shared — the asset manager hands the same
5
- * `SceneBundle` to everything that places it — so a preview that scaled the bundle's own roots to
5
+ * `SceneBundle` to everything that places it — so a preview that scaled the bundle's own nodes to
6
6
  * fit an icon would scale every copy of that model in the world. What goes into the preview scene
7
- * is a fresh `Mesh` per drawing node, over the *same* geometry and the *same* material, placed at
8
- * the node's own global transform under a root carrying the framing.
7
+ * is a placement of the model compiled as a prefab: entities over the *same* geometry and the
8
+ * *same* material, under a root carrying the framing, each holding a row of the scene's context.
9
9
  *
10
- * **A skinned mesh does not come across**, the same boundary `shade_node_to_entity_composition`
11
- * draws: its vertices are deformed against a skeleton the renderer poses, and a preview scene has
12
- * registered no skin. A model that is nothing but skinned meshes therefore previews as an empty
13
- * frame, which is what `false` says.
10
+ * **A skinned mesh does not come across**: its vertices are deformed against a skeleton the
11
+ * renderer poses, and a preview scene has registered no skin. A model that is nothing but skinned
12
+ * meshes therefore previews as an empty frame, which is what `drawn === 0` says.
14
13
  *
14
+ * @param {GraphicsEngine} graphics what draws it — the scene's rows live on its context
15
15
  * @param {SceneBundle} bundle
16
16
  * @param {ModelPreviewFraming} framing as `model_preview_framing` answered for this bundle
17
17
  * @param {number} aspect_ratio width over height of the picture
18
- * @returns {{scene: Scene, camera: PerspectiveCamera, drawn: number}} `drawn` is how many meshes
19
- * the preview holds; zero means there is nothing to look at
18
+ * @returns {{scene: Scene, camera: PerspectiveCamera, drawn: number}} `drawn` is how many
19
+ * primitives the preview holds; zero means there is nothing to look at
20
20
  */
21
- export function make_model_preview_scene(bundle: SceneBundle, framing: ModelPreviewFraming, aspect_ratio: number): {
21
+ export function make_model_preview_scene(graphics: GraphicsEngine, bundle: SceneBundle, framing: ModelPreviewFraming, aspect_ratio: number): {
22
22
  scene: Scene;
23
23
  camera: PerspectiveCamera;
24
24
  drawn: number;
25
25
  };
26
26
  /**
27
- * Vertical field of view a preview is drawn with, radians. Narrow enough that a model does not bend
28
- * at its edges and wide enough that it is not an orthographic projection in disguise.
29
- *
30
- * @type {number}
27
+ * @typedef {import("../../../shade/renderer/loader/SceneBundle.js").SceneBundle} SceneBundle
28
+ * @typedef {import("./ModelPreviewFraming.js").ModelPreviewFraming} ModelPreviewFraming
29
+ * @typedef {import("../GraphicsEngine.js").GraphicsEngine} GraphicsEngine
31
30
  */
32
31
  export const MODEL_PREVIEW_FOV: number;
32
+ export type SceneBundle = import("../../../shade/renderer/loader/SceneBundle.js").SceneBundle;
33
+ export type ModelPreviewFraming = import("./ModelPreviewFraming.js").ModelPreviewFraming;
34
+ export type GraphicsEngine = import("../GraphicsEngine.js").GraphicsEngine;
33
35
  import { Scene } from "../../../shade/renderer/scene/Scene.js";
34
36
  import { PerspectiveCamera } from "../../../shade/renderer/camera/PerspectiveCamera.js";
35
37
  //# sourceMappingURL=make_model_preview_scene.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"make_model_preview_scene.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/preview/make_model_preview_scene.js"],"names":[],"mappings":"AAoEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,0GAJW,MAAM,GACJ;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAoEpE;AAhJD;;;;;GAKG;AACH,gCAFU,MAAM,CAEoC;sBAR9B,wCAAwC;kCAJ5B,qDAAqD"}
1
+ {"version":3,"file":"make_model_preview_scene.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics3/preview/make_model_preview_scene.js"],"names":[],"mappings":"AAyDA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,mDAPW,cAAc,UACd,WAAW,WACX,mBAAmB,gBACnB,MAAM,GACJ;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAmDpE;AAjHD;;;;GAIG;AAEH,uCAAoD;0BALvC,OAAO,+CAA+C,EAAE,WAAW;kCACnE,OAAO,0BAA0B,EAAE,mBAAmB;6BACtD,OAAO,sBAAsB,EAAE,cAAc;sBAPpC,wCAAwC;kCAL5B,qDAAqD"}
@@ -1,154 +1,126 @@
1
- import { assert } from "../../../core/assert.js";
2
- import Quaternion from "../../../core/geom/Quaternion.js";
3
- import Vector3 from "../../../core/geom/Vector3.js";
4
- import { PerspectiveCamera } from "../../../shade/renderer/camera/PerspectiveCamera.js";
5
- import { DirectionalLight } from "../../../shade/renderer/light/model/DirectionalLight.js";
6
- import { Mesh } from "../../../shade/renderer/scene/Mesh.js";
7
- import { Node3D } from "../../../shade/renderer/scene/Node3D.js";
8
- import { Scene } from "../../../shade/renderer/scene/Scene.js";
9
-
10
- /**
11
- * Vertical field of view a preview is drawn with, radians. Narrow enough that a model does not bend
12
- * at its edges and wide enough that it is not an orthographic projection in disguise.
13
- *
14
- * @type {number}
15
- */
16
- export const MODEL_PREVIEW_FOV = 45 * Math.PI / 180;
17
-
18
- /**
19
- * The lights a preview is lit by: a direction to point each one in, and its strength.
20
- *
21
- * A key from over the viewer's shoulder, a weaker one straight down the view axis so the side
22
- * facing us is not read off the key alone, and a dim one from behind and below so a silhouette does
23
- * not close up into black.
24
- *
25
- * **There is no ambient term.** Shade takes ambient from the environment map, and a preview scene
26
- * has none: an icon of a model is a picture of the model, not of a place it would stand in.
27
- *
28
- * @type {{direction: number[], intensity: number}[]}
29
- */
30
- const LIGHTS = [
31
- { direction: [1, -1, 1], intensity: 3 },
32
- { direction: [0, 0, 1], intensity: 1.5 },
33
- { direction: [-0.5, 1, -0.5], intensity: 0.6 }
34
- ];
35
-
36
- const scratch_rotation = new Quaternion();
37
- const scratch_direction = new Vector3();
38
- const scratch_target = new Vector3(0, 0, 0);
39
-
40
- /**
41
- * @param {number[]} direction
42
- * @param {number} intensity
43
- * @returns {DirectionalLight}
44
- */
45
- function makeLight(direction, intensity) {
46
- const light = new DirectionalLight();
47
-
48
- // a preview is one object over nothing; a shadow has nothing to fall on and costs an atlas
49
- light.casts_shadow = false;
50
- light.intensity = intensity;
51
-
52
- scratch_direction.set(direction[0], direction[1], direction[2]).normalize();
53
-
54
- scratch_rotation.fromUnitVectors(Vector3.forward, scratch_direction);
55
- scratch_rotation.normalize();
56
-
57
- light.transform_local.setRotation(
58
- scratch_rotation.x,
59
- scratch_rotation.y,
60
- scratch_rotation.z,
61
- scratch_rotation.w
62
- );
63
-
64
- light.updateMatrices();
65
-
66
- return light;
67
- }
68
-
69
- /**
70
- * A scene holding one model and the light to see it by, and a camera framed on it.
71
- *
72
- * **The bundle is read, never moved.** A loaded model is shared — the asset manager hands the same
73
- * `SceneBundle` to everything that places it — so a preview that scaled the bundle's own roots to
74
- * fit an icon would scale every copy of that model in the world. What goes into the preview scene
75
- * is a fresh `Mesh` per drawing node, over the *same* geometry and the *same* material, placed at
76
- * the node's own global transform under a root carrying the framing.
77
- *
78
- * **A skinned mesh does not come across**, the same boundary `shade_node_to_entity_composition`
79
- * draws: its vertices are deformed against a skeleton the renderer poses, and a preview scene has
80
- * registered no skin. A model that is nothing but skinned meshes therefore previews as an empty
81
- * frame, which is what `false` says.
82
- *
83
- * @param {SceneBundle} bundle
84
- * @param {ModelPreviewFraming} framing as `model_preview_framing` answered for this bundle
85
- * @param {number} aspect_ratio width over height of the picture
86
- * @returns {{scene: Scene, camera: PerspectiveCamera, drawn: number}} `drawn` is how many meshes
87
- * the preview holds; zero means there is nothing to look at
88
- */
89
- export function make_model_preview_scene(bundle, framing, aspect_ratio) {
90
- assert.defined(bundle, 'bundle');
91
- assert.defined(framing, 'framing');
92
- assert.greaterThan(aspect_ratio, 0, 'aspect_ratio');
93
-
94
- const scene = new Scene();
95
-
96
- const root = new Node3D();
97
-
98
- const scale = framing.scale;
99
- const offset = framing.offset;
100
-
101
- root.transform_local.setScale(scale, scale, scale);
102
- root.transform_local.setTranslation(offset.x, offset.y, offset.z);
103
-
104
- let drawn = 0;
105
-
106
- const scenes = bundle.scenes;
107
-
108
- for (let i = 0; i < scenes.length; i++) {
109
- scenes[i].updateMatrices();
110
-
111
- scenes[i].traverse(node => {
112
- if (node.isMesh !== true || node.isSkinnedMesh === true) {
113
- return;
114
- }
115
-
116
- const copy = Mesh.from(node.geometry, node.material);
117
-
118
- copy.name = node.name;
119
- copy.transform_local.copy(node.transform_global);
120
-
121
- root.addChild(copy);
122
-
123
- drawn++;
124
- });
125
- }
126
-
127
- root.updateMatrices();
128
-
129
- scene.add(root);
130
-
131
- for (let i = 0; i < LIGHTS.length; i++) {
132
- scene.add(makeLight(LIGHTS[i].direction, LIGHTS[i].intensity));
133
- }
134
-
135
- const camera = new PerspectiveCamera();
136
-
137
- camera.fov = MODEL_PREVIEW_FOV;
138
- camera.aspect = aspect_ratio;
139
- camera.near = 0.01;
140
- camera.far = framing.camera_distance * 4 + 4;
141
-
142
- /*
143
- Which side the camera stands on is the renderer's convention, and this is where it is applied:
144
- Shade's own samples put a camera at negative Z looking back at the origin, so that is where a
145
- preview's camera stands.
146
- */
147
- camera.transform.setTranslation(0, 0, -framing.camera_distance);
148
-
149
- camera.transform.lookAt(scratch_target);
150
-
151
- camera.update_matrices();
152
-
153
- return { scene, camera, drawn };
154
- }
1
+ import { assert } from "../../../core/assert.js";
2
+ import Quaternion from "../../../core/geom/Quaternion.js";
3
+ import Vector3 from "../../../core/geom/Vector3.js";
4
+ import { PerspectiveCamera } from "../../../shade/renderer/camera/PerspectiveCamera.js";
5
+ import { EntityComponentDataset } from "../../ecs/EntityComponentDataset.js";
6
+ import { Transform64 } from "../../ecs/transform/Transform64.js";
7
+ import { DirectionalLight } from "../../../shade/renderer/light/model/DirectionalLight.js";
8
+ import { place_light } from "../../../shade/renderer/light/place_light.js";
9
+ import { Scene } from "../../../shade/renderer/scene/Scene.js";
10
+ import { prefab_compile } from "../prefab/prefab_compile.js";
11
+ import { prefab_place } from "../prefab/prefab_place.js";
12
+
13
+ /**
14
+ * @typedef {import("../../../shade/renderer/loader/SceneBundle.js").SceneBundle} SceneBundle
15
+ * @typedef {import("./ModelPreviewFraming.js").ModelPreviewFraming} ModelPreviewFraming
16
+ * @typedef {import("../GraphicsEngine.js").GraphicsEngine} GraphicsEngine
17
+ */
18
+
19
+ export const MODEL_PREVIEW_FOV = 45 * Math.PI / 180;
20
+
21
+ const LIGHTS = [
22
+ { direction: [1, -1, 1], intensity: 3 },
23
+ { direction: [0, 0, 1], intensity: 1.5 },
24
+ { direction: [-0.5, 1, -0.5], intensity: 0.6 }
25
+ ];
26
+
27
+ const scratch_rotation = new Quaternion();
28
+ const scratch_direction = new Vector3();
29
+ const scratch_target = new Vector3(0, 0, 0);
30
+
31
+ /**
32
+ * @param {number[]} direction
33
+ * @param {number} intensity
34
+ * @returns {DirectionalLight}
35
+ */
36
+ function makeLight(direction, intensity) {
37
+ const light = new DirectionalLight();
38
+
39
+ // a preview is one object over nothing; a shadow has nothing to fall on and costs an atlas
40
+ light.casts_shadow = false;
41
+ light.intensity = intensity;
42
+
43
+ scratch_direction.set(direction[0], direction[1], direction[2]).normalize();
44
+ scratch_rotation.fromUnitVectors(Vector3.forward, scratch_direction);
45
+ scratch_rotation.normalize();
46
+
47
+ light.transform.setRotation(
48
+ scratch_rotation.x,
49
+ scratch_rotation.y,
50
+ scratch_rotation.z,
51
+ scratch_rotation.w
52
+ );
53
+ light.transform.updateMatrix();
54
+
55
+ return light;
56
+ }
57
+
58
+ /**
59
+ * A scene holding one model and the light to see it by, and a camera framed on it.
60
+ *
61
+ * **The bundle is read, never moved.** A loaded model is shared — the asset manager hands the same
62
+ * `SceneBundle` to everything that places it — so a preview that scaled the bundle's own nodes to
63
+ * fit an icon would scale every copy of that model in the world. What goes into the preview scene
64
+ * is a placement of the model compiled as a prefab: entities over the *same* geometry and the
65
+ * *same* material, under a root carrying the framing, each holding a row of the scene's context.
66
+ *
67
+ * **A skinned mesh does not come across**: its vertices are deformed against a skeleton the
68
+ * renderer poses, and a preview scene has registered no skin. A model that is nothing but skinned
69
+ * meshes therefore previews as an empty frame, which is what `drawn === 0` says.
70
+ *
71
+ * @param {GraphicsEngine} graphics what draws it — the scene's rows live on its context
72
+ * @param {SceneBundle} bundle
73
+ * @param {ModelPreviewFraming} framing as `model_preview_framing` answered for this bundle
74
+ * @param {number} aspect_ratio width over height of the picture
75
+ * @returns {{scene: Scene, camera: PerspectiveCamera, drawn: number}} `drawn` is how many
76
+ * primitives the preview holds; zero means there is nothing to look at
77
+ */
78
+ export function make_model_preview_scene(graphics, bundle, framing, aspect_ratio) {
79
+ assert.defined(graphics, 'graphics');
80
+ assert.defined(bundle, 'bundle');
81
+ assert.equal(bundle.isSceneBundle, true, 'bundle.isSceneBundle !== true');
82
+ assert.defined(framing, 'framing');
83
+ assert.greaterThan(aspect_ratio, 0, 'aspect_ratio');
84
+
85
+ const scene = new Scene();
86
+
87
+ // the model and the lights are entities; a dataset with no systems is a map of components,
88
+ // which is all a preview wants
89
+ scene.dataset = new EntityComponentDataset();
90
+
91
+ const scale = framing.scale;
92
+ const offset = framing.offset;
93
+
94
+ const placement = new Transform64();
95
+
96
+ placement.setScale(scale, scale, scale);
97
+ placement.setTranslation(offset.x, offset.y, offset.z);
98
+ placement.updateMatrix();
99
+
100
+ const { drawn } = prefab_place(graphics.scene_context(scene), scene.dataset, prefab_compile(bundle), placement, {
101
+ register_animation: false,
102
+ skinned: false,
103
+ });
104
+
105
+ for (let i = 0; i < LIGHTS.length; i++) {
106
+ place_light(scene, makeLight(LIGHTS[i].direction, LIGHTS[i].intensity));
107
+ }
108
+
109
+ const camera = new PerspectiveCamera();
110
+
111
+ camera.fov = MODEL_PREVIEW_FOV;
112
+ camera.aspect = aspect_ratio;
113
+ camera.near = 0.01;
114
+ camera.far = framing.camera_distance * 4 + 4;
115
+
116
+ /*
117
+ Which side the camera stands on is the renderer's convention, and this is where it is applied:
118
+ Shade's own samples put a camera at negative Z looking back at the origin, so that is where a
119
+ preview's camera stands.
120
+ */
121
+ camera.transform.setTranslation(0, 0, -framing.camera_distance);
122
+ camera.transform.lookAt(scratch_target);
123
+ camera.update_matrices();
124
+
125
+ return { scene, camera, drawn };
126
+ }
@@ -38,7 +38,7 @@ export async function make_model_thumbnail(graphics, bundle, width, height, marg
38
38
 
39
39
  const framing = model_preview_framing(new ModelPreviewFraming(), bounds, MODEL_PREVIEW_FOV, margin);
40
40
 
41
- const { scene, camera, drawn } = make_model_preview_scene(bundle, framing, width / height);
41
+ const { scene, camera, drawn } = make_model_preview_scene(graphics, bundle, framing, width / height);
42
42
 
43
43
  if (drawn === 0) {
44
44
  return null;
@@ -7,14 +7,14 @@
7
7
  * every joint has a row in the scene. Until then the skin is inert rather than wrong: no
8
8
  * deformation runs.
9
9
  *
10
- * The instance's nodes therefore do **not** have to be in the scene yet.
10
+ * The instance's entities therefore do **not** have to hold their rows yet.
11
11
  *
12
12
  * @param {GPUSceneContext} context the scene's GPU state, which owns the manager and is what the
13
13
  * registration is stamped with so it can be given back to the right one
14
- * @param {SceneBundleInstance} instance
14
+ * @param {PrefabInstance} instance its skins name joint and mesh entities
15
15
  * @returns {InstanceAnimationRegistration}
16
16
  */
17
- export function register_instance_animation(context: GPUSceneContext, instance: SceneBundleInstance): InstanceAnimationRegistration;
17
+ export function register_instance_animation(context: GPUSceneContext, instance: PrefabInstance): InstanceAnimationRegistration;
18
18
  /**
19
19
  * Give back everything {@link register_instance_animation} took out, for a manager that is still
20
20
  * the one that issued it.
@@ -42,11 +42,11 @@ export function unregister_instance_animation(registration: InstanceAnimationReg
42
42
  * add together.
43
43
  *
44
44
  * @param {GPUSceneContext} context
45
- * @param {SceneBundleInstance} instance
45
+ * @param {PrefabInstance} instance its clips target entities
46
46
  * @param {ArrayLike<number>} slots indices into `instance.clips`; duplicates are ignored
47
47
  * @returns {InstanceClipRegistration}
48
48
  */
49
- export function register_instance_clips(context: GPUSceneContext, instance: SceneBundleInstance, slots: ArrayLike<number>): InstanceClipRegistration;
49
+ export function register_instance_clips(context: GPUSceneContext, instance: PrefabInstance, slots: ArrayLike<number>): InstanceClipRegistration;
50
50
  /**
51
51
  * Give back everything {@link register_instance_clips} took out, for a manager that is still the one
52
52
  * that issued it — see {@link unregister_instance_animation} for why that qualification matters.
@@ -55,7 +55,7 @@ export function register_instance_clips(context: GPUSceneContext, instance: Scen
55
55
  */
56
56
  export function unregister_instance_clips(registration: InstanceClipRegistration): void;
57
57
  /**
58
- * What the animation manager handed back for one {@link SceneBundleInstance}'s **skins**.
58
+ * What the animation manager handed back for one {@link PrefabInstance}'s **skins**.
59
59
  *
60
60
  * Positional: `skins[i]` is the id of the instance's `skins[i]`.
61
61
  *
@@ -1 +1 @@
1
- {"version":3,"file":"register_instance_animation.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/register_instance_animation.js"],"names":[],"mappings":"AAmCA;;;;;;;;;;;;;;;GAeG;AACH,sGAFa,6BAA6B,CAmBzC;AAED;;;;;;;;;;;GAWG;AACH,4DAFW,6BAA6B,QAevC;AA+BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wGAHW,UAAU,MAAM,CAAC,GACf,wBAAwB,CA+BpC;AAED;;;;;GAKG;AACH,wDAFW,wBAAwB,QAqBlC;AAtMD;;;;;;;;;;;;GAYG;AACH;IACI;;;;;;;;;;OAUG;IACH,yBAAe;IAEf;;OAEG;IACH,OAFU,MAAM,EAAE,CAEP;CACd;AAgED;;;GAGG;AACH,kCAFU,MAAM,CAEsB;AAEtC;;;;;;;GAOG;AACH;IACI;;;;;OAKG;IACH,SAFU,kBAAgB,IAAI,CAEf;IAEf;;OAEG;IACH,KAFU,UAAU,CAEI;CAC3B"}
1
+ {"version":3,"file":"register_instance_animation.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/register_instance_animation.js"],"names":[],"mappings":"AAmCA;;;;;;;;;;;;;;;GAeG;AACH,iGAFa,6BAA6B,CAmBzC;AAED;;;;;;;;;;;GAWG;AACH,4DAFW,6BAA6B,QAevC;AA+BD;;;;;;;;;;;;;;;;;GAiBG;AACH,mGAHW,UAAU,MAAM,CAAC,GACf,wBAAwB,CA+BpC;AAED;;;;;GAKG;AACH,wDAFW,wBAAwB,QAqBlC;AAtMD;;;;;;;;;;;;GAYG;AACH;IACI;;;;;;;;;;OAUG;IACH,yBAAe;IAEf;;OAEG;IACH,OAFU,MAAM,EAAE,CAEP;CACd;AAgED;;;GAGG;AACH,kCAFU,MAAM,CAEsB;AAEtC;;;;;;;GAOG;AACH;IACI;;;;;OAKG;IACH,SAFU,kBAAgB,IAAI,CAEf;IAEf;;OAEG;IACH,KAFU,UAAU,CAEI;CAC3B"}
@@ -1,7 +1,7 @@
1
1
  import { assert } from "../../core/assert.js";
2
2
 
3
3
  /**
4
- * What the animation manager handed back for one {@link SceneBundleInstance}'s **skins**.
4
+ * What the animation manager handed back for one {@link PrefabInstance}'s **skins**.
5
5
  *
6
6
  * Positional: `skins[i]` is the id of the instance's `skins[i]`.
7
7
  *
@@ -42,11 +42,11 @@ export class InstanceAnimationRegistration {
42
42
  * every joint has a row in the scene. Until then the skin is inert rather than wrong: no
43
43
  * deformation runs.
44
44
  *
45
- * The instance's nodes therefore do **not** have to be in the scene yet.
45
+ * The instance's entities therefore do **not** have to hold their rows yet.
46
46
  *
47
47
  * @param {GPUSceneContext} context the scene's GPU state, which owns the manager and is what the
48
48
  * registration is stamped with so it can be given back to the right one
49
- * @param {SceneBundleInstance} instance
49
+ * @param {PrefabInstance} instance its skins name joint and mesh entities
50
50
  * @returns {InstanceAnimationRegistration}
51
51
  */
52
52
  export function register_instance_animation(context, instance) {
@@ -138,7 +138,7 @@ export class InstanceClipRegistration {
138
138
  * add together.
139
139
  *
140
140
  * @param {GPUSceneContext} context
141
- * @param {SceneBundleInstance} instance
141
+ * @param {PrefabInstance} instance its clips target entities
142
142
  * @param {ArrayLike<number>} slots indices into `instance.clips`; duplicates are ignored
143
143
  * @returns {InstanceClipRegistration}
144
144
  */
@@ -1,10 +1,6 @@
1
1
  /**
2
- * The box a loaded model occupies, in the model's own space.
3
- *
4
- * **Matrices are refreshed here.** A `Mesh`'s `bounding_box` is its geometry's box projected
5
- * through its global transform, and a bundle handed straight off a loader has never had
6
- * {@link Node3D.updateMatrices} run on it — so asking for the bounds without refreshing them reads
7
- * whatever the loader left, which for a node under a transformed parent is the wrong box.
2
+ * The box a loaded model occupies, in the model's own space: every primitive's geometry box
3
+ * under its node's world transform, composed here from the bundle's locals.
8
4
  *
9
5
  * A bundle with no geometry in it — a file that is all empties, or a scene that is only lights —
10
6
  * has no bounds, and that is what `false` says. `result` is untouched then.
@@ -1 +1 @@
1
- {"version":3,"file":"shade_bundle_bounds.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/shade_bundle_bounds.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;GAcG;AACH,yEAFa,OAAO,CAsCnB"}
1
+ {"version":3,"file":"shade_bundle_bounds.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/shade_bundle_bounds.js"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,yEAFa,OAAO,CA+BnB"}