@adobe/data-gpu 0.9.75 → 0.9.76

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 (383) hide show
  1. package/CLAUDE.md +9 -0
  2. package/README.md +36 -0
  3. package/dist/core/core-plugin.d.ts +1 -1
  4. package/dist/core/public.d.ts +2 -0
  5. package/dist/core/public.js +4 -0
  6. package/dist/core/public.js.map +1 -0
  7. package/dist/graphics/animation/animation-data-plugin.d.ts +8 -0
  8. package/dist/graphics/animation/animation-plugin.d.ts +10 -2
  9. package/dist/graphics/camera/camera-plugin.d.ts +3 -3
  10. package/dist/graphics/camera/orbit/attach-orbit-drag.d.ts +1 -21
  11. package/dist/graphics/camera/orbit/attach-orbit-drag.js +0 -10
  12. package/dist/graphics/camera/orbit/attach-orbit-drag.js.map +1 -1
  13. package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +6 -6
  14. package/dist/graphics/camera/orbit/orbit-data-plugin.js +1 -1
  15. package/dist/graphics/camera/orbit/orbit-data-plugin.js.map +1 -1
  16. package/dist/graphics/camera/orbit/orbit-drag-service.d.ts +11 -0
  17. package/dist/graphics/camera/orbit/orbit-drag-service.js +3 -0
  18. package/dist/graphics/camera/orbit/orbit-drag-service.js.map +1 -0
  19. package/dist/graphics/camera/orbit/orbit-plugin.d.ts +6 -6
  20. package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +8 -8
  21. package/dist/graphics/camera/orbit/orbit-system-plugin.js +6 -9
  22. package/dist/graphics/camera/orbit/orbit-system-plugin.js.map +1 -1
  23. package/dist/graphics/camera/orbit/orbit.d.ts +5 -5
  24. package/dist/graphics/camera/orbit/public.d.ts +2 -2
  25. package/dist/graphics/camera/orbit/public.js +2 -1
  26. package/dist/graphics/camera/orbit/public.js.map +1 -1
  27. package/dist/graphics/graphics-plugin.d.ts +1 -1
  28. package/dist/graphics/index.d.ts +1 -0
  29. package/dist/graphics/index.js +3 -0
  30. package/dist/graphics/index.js.map +1 -0
  31. package/dist/graphics/picking/picking-plugin.d.ts +9871 -1912
  32. package/dist/graphics/picking/picking-plugin.js +3 -3
  33. package/dist/graphics/picking/picking-plugin.js.map +1 -1
  34. package/dist/graphics/public.d.ts +38 -0
  35. package/dist/graphics/public.js +40 -0
  36. package/dist/graphics/public.js.map +1 -0
  37. package/dist/graphics/rendering/bone-collider-plugin.d.ts +2967 -486
  38. package/dist/graphics/rendering/bone-collider-plugin.js +13 -12
  39. package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -1
  40. package/dist/graphics/rendering/display-transform-plugin.d.ts +2 -0
  41. package/dist/graphics/rendering/display-transform-plugin.js +2 -2
  42. package/dist/graphics/rendering/display-transform-plugin.js.map +1 -1
  43. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +2857 -403
  44. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js +9 -9
  45. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js.map +1 -1
  46. package/dist/graphics/rendering/interpolation-plugin.d.ts +1040 -156
  47. package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +3017 -538
  48. package/dist/graphics/rendering/jolt-ragdoll-plugin.js +6 -6
  49. package/dist/graphics/rendering/jolt-ragdoll-plugin.js.map +1 -1
  50. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.d.ts +1123 -0
  51. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.js +79 -0
  52. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.js.map +1 -0
  53. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu.test.d.ts +1 -0
  54. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu.test.js +18 -0
  55. package/dist/graphics/rendering/material-palette-gpu/material-palette-gpu.test.js.map +1 -0
  56. package/dist/graphics/rendering/material-palette-gpu/material-palette.d.ts +25 -0
  57. package/dist/graphics/rendering/material-palette-gpu/material-palette.js +27 -0
  58. package/dist/graphics/rendering/material-palette-gpu/material-palette.js.map +1 -0
  59. package/dist/graphics/rendering/material-palette-gpu/palette-bind-group.d.ts +3 -0
  60. package/dist/graphics/rendering/material-palette-gpu/palette-bind-group.js +22 -0
  61. package/dist/graphics/rendering/material-palette-gpu/palette-bind-group.js.map +1 -0
  62. package/dist/graphics/rendering/model-collider-plugin.d.ts +2903 -663
  63. package/dist/graphics/rendering/model-collider-plugin.js +11 -34
  64. package/dist/graphics/rendering/model-collider-plugin.js.map +1 -1
  65. package/dist/graphics/rendering/pbr-core-plugin.d.ts +16 -8
  66. package/dist/graphics/rendering/pbr-core-plugin.js +16 -19
  67. package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -1
  68. package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.d.ts +3514 -0
  69. package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.js +189 -0
  70. package/dist/graphics/rendering/pbr-render/pbr-factor-render-plugin.js.map +1 -0
  71. package/dist/graphics/rendering/pbr-render/pbr-factor-shader.wgsl.d.ts +7 -0
  72. package/dist/graphics/rendering/pbr-render/pbr-factor-shader.wgsl.js +124 -0
  73. package/dist/graphics/rendering/pbr-render/pbr-factor-shader.wgsl.js.map +1 -0
  74. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +769 -571
  75. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js +98 -79
  76. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js.map +1 -1
  77. package/dist/graphics/rendering/pbr-render/primitive-render-shared.d.ts +43 -0
  78. package/dist/graphics/rendering/pbr-render/primitive-render-shared.js +59 -0
  79. package/dist/graphics/rendering/pbr-render/primitive-render-shared.js.map +1 -0
  80. package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +2930 -270
  81. package/dist/graphics/rendering/skinning/skinning-plugin.js +19 -40
  82. package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -1
  83. package/dist/graphics/scene/model/geometry/public.d.ts +1 -0
  84. package/dist/graphics/scene/model/mesh/mesh.d.ts +13 -0
  85. package/dist/graphics/scene/model/mesh/mesh.js +3 -0
  86. package/dist/graphics/scene/model/mesh/mesh.js.map +1 -0
  87. package/dist/graphics/scene/model/mesh/public.d.ts +1 -0
  88. package/dist/graphics/scene/model/mesh/public.js +3 -0
  89. package/dist/graphics/scene/model/mesh/public.js.map +1 -0
  90. package/dist/graphics/scene/model/mesh-plugin.d.ts +5177 -0
  91. package/dist/graphics/scene/model/mesh-plugin.js +87 -0
  92. package/dist/graphics/scene/model/mesh-plugin.js.map +1 -0
  93. package/dist/graphics/scene/model/model-loader-plugin.d.ts +2728 -295
  94. package/dist/graphics/scene/model/model-loader-plugin.js +24 -42
  95. package/dist/graphics/scene/model/model-loader-plugin.js.map +1 -1
  96. package/dist/graphics/scene/model/model-plugin.d.ts +1 -352
  97. package/dist/graphics/scene/model/model-plugin.js +1 -37
  98. package/dist/graphics/scene/model/model-plugin.js.map +1 -1
  99. package/dist/graphics/scene/model/model.d.ts +2 -6
  100. package/dist/graphics/scene/model/model.js.map +1 -1
  101. package/dist/graphics/scene/model/public.d.ts +1 -1
  102. package/dist/graphics/scene/model/public.js +2 -1
  103. package/dist/graphics/scene/model/public.js.map +1 -1
  104. package/dist/graphics/scene/model/shape/bounds-from-shape-mesh.d.ts +4 -0
  105. package/dist/graphics/scene/model/shape/bounds-from-shape-mesh.js +25 -0
  106. package/dist/graphics/scene/model/shape/bounds-from-shape-mesh.js.map +1 -0
  107. package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +233 -386
  108. package/dist/graphics/scene/model/shape/shape-geometry-plugin.js +87 -18
  109. package/dist/graphics/scene/model/shape/shape-geometry-plugin.js.map +1 -1
  110. package/dist/graphics/scene/model/shape/shape-spec.d.ts +17 -0
  111. package/dist/graphics/scene/model/shape/shape-spec.js +3 -0
  112. package/dist/graphics/scene/model/shape/shape-spec.js.map +1 -0
  113. package/dist/graphics/scene/model/world-bounds-plugin.d.ts +2670 -245
  114. package/dist/graphics/scene/model/world-bounds-plugin.js +6 -25
  115. package/dist/graphics/scene/model/world-bounds-plugin.js.map +1 -1
  116. package/dist/graphics/scene/node/node-data-plugin.d.ts +15 -4
  117. package/dist/graphics/scene/node/node-data-plugin.js +12 -5
  118. package/dist/graphics/scene/node/node-data-plugin.js.map +1 -1
  119. package/dist/graphics/scene/node/node-data-plugin.test.d.ts +1 -0
  120. package/dist/graphics/scene/node/node-data-plugin.test.js +40 -0
  121. package/dist/graphics/scene/node/node-data-plugin.test.js.map +1 -0
  122. package/dist/graphics/scene/node/node-plugin.d.ts +8 -1
  123. package/dist/graphics/scene/node/transform-plugin.d.ts +8 -1
  124. package/dist/graphics/scene/scene-plugin.d.ts +2353 -100
  125. package/dist/graphics/scene/scene-plugin.js +3 -3
  126. package/dist/graphics/scene/scene-plugin.js.map +1 -1
  127. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +3 -3
  128. package/dist/index.d.ts +1 -53
  129. package/dist/index.js +1 -54
  130. package/dist/index.js.map +1 -1
  131. package/dist/material/assemble-material-row.d.ts +4 -0
  132. package/dist/material/assemble-material-row.js +22 -0
  133. package/dist/material/assemble-material-row.js.map +1 -0
  134. package/dist/material/definitions.d.ts +833 -0
  135. package/dist/material/definitions.js +423 -0
  136. package/dist/material/definitions.js.map +1 -0
  137. package/dist/material/emission-mode.d.ts +8 -0
  138. package/dist/material/emission-mode.js +9 -0
  139. package/dist/material/emission-mode.js.map +1 -0
  140. package/dist/material/index.d.ts +1 -0
  141. package/dist/material/index.js +3 -0
  142. package/dist/material/index.js.map +1 -0
  143. package/dist/material/json/from-json-string.d.ts +2 -0
  144. package/dist/material/json/from-json-string.js +12 -0
  145. package/dist/material/json/from-json-string.js.map +1 -0
  146. package/dist/material/json/from-json.d.ts +10 -0
  147. package/dist/material/json/from-json.js +16 -0
  148. package/dist/material/json/from-json.js.map +1 -0
  149. package/dist/material/json/from-json.test.d.ts +1 -0
  150. package/dist/material/json/from-json.test.js +46 -0
  151. package/dist/material/json/from-json.test.js.map +1 -0
  152. package/dist/material/json/is-properties-json.d.ts +2 -0
  153. package/dist/material/json/is-properties-json.js +65 -0
  154. package/dist/material/json/is-properties-json.js.map +1 -0
  155. package/dist/material/json/library-json.d.ts +3 -0
  156. package/dist/material/json/library-json.js +2 -0
  157. package/dist/material/json/library-json.js.map +1 -0
  158. package/dist/material/json/load-json.d.ts +7 -0
  159. package/dist/material/json/load-json.js +10 -0
  160. package/dist/material/json/load-json.js.map +1 -0
  161. package/dist/material/json/properties-json.d.ts +25 -0
  162. package/dist/material/json/properties-json.js +2 -0
  163. package/dist/material/json/properties-json.js.map +1 -0
  164. package/dist/material/json/public.d.ts +9 -0
  165. package/dist/material/json/public.js +6 -0
  166. package/dist/material/json/public.js.map +1 -0
  167. package/dist/material/json/to-definition.d.ts +5 -0
  168. package/dist/material/json/to-definition.js +65 -0
  169. package/dist/material/json/to-definition.js.map +1 -0
  170. package/dist/material/material-by-name-lookup.d.ts +11 -0
  171. package/dist/material/material-by-name-lookup.js +3 -0
  172. package/dist/material/material-by-name-lookup.js.map +1 -0
  173. package/dist/material/material-defaults.d.ts +23 -0
  174. package/dist/material/material-defaults.js +25 -0
  175. package/dist/material/material-defaults.js.map +1 -0
  176. package/dist/material/material-definition.d.ts +3 -0
  177. package/dist/material/material-definition.js +2 -0
  178. package/dist/material/material-definition.js.map +1 -0
  179. package/dist/material/material-name.d.ts +2 -0
  180. package/dist/material/material-name.js +2 -0
  181. package/dist/material/material-name.js.map +1 -0
  182. package/dist/material/material-plugin.d.ts +891 -22
  183. package/dist/material/material-plugin.js +46 -21
  184. package/dist/material/material-plugin.js.map +1 -1
  185. package/dist/material/material-plugin.test.d.ts +1 -0
  186. package/dist/material/material-plugin.test.js +87 -0
  187. package/dist/material/material-plugin.test.js.map +1 -0
  188. package/dist/material/material.d.ts +27 -29
  189. package/dist/material/material.js +0 -1
  190. package/dist/material/material.js.map +1 -1
  191. package/dist/material/public.d.ts +12 -2
  192. package/dist/material/public.js +12 -2
  193. package/dist/material/public.js.map +1 -1
  194. package/dist/material/require-material.d.ts +4 -0
  195. package/dist/material/require-material.js +10 -0
  196. package/dist/material/require-material.js.map +1 -0
  197. package/dist/material/standard-material-names.d.ts +2 -0
  198. package/dist/material/standard-material-names.js +4 -0
  199. package/dist/material/standard-material-names.js.map +1 -0
  200. package/dist/material/standard-materials.d.ts +1 -1
  201. package/dist/material/standard-materials.js +17 -24
  202. package/dist/material/standard-materials.js.map +1 -1
  203. package/dist/material/stress-strain-curve/create.d.ts +8 -0
  204. package/dist/material/stress-strain-curve/create.js +2 -0
  205. package/dist/material/stress-strain-curve/create.js.map +1 -0
  206. package/dist/material/stress-strain-curve/public.d.ts +2 -0
  207. package/dist/material/stress-strain-curve/public.js +3 -0
  208. package/dist/material/stress-strain-curve/public.js.map +1 -0
  209. package/dist/material/stress-strain-curve/schema.d.ts +52 -0
  210. package/dist/material/stress-strain-curve/schema.js +19 -0
  211. package/dist/material/stress-strain-curve/schema.js.map +1 -0
  212. package/dist/material/stress-strain-curve/schema.test.d.ts +1 -0
  213. package/dist/material/stress-strain-curve/schema.test.js +18 -0
  214. package/dist/material/stress-strain-curve/schema.test.js.map +1 -0
  215. package/dist/material/stress-strain-curve/stress-strain-curve.d.ts +4 -0
  216. package/dist/material/stress-strain-curve/stress-strain-curve.js +2 -0
  217. package/dist/material/stress-strain-curve/stress-strain-curve.js.map +1 -0
  218. package/dist/physics/body/collider-shape/mass-from-volume.d.ts +2 -0
  219. package/dist/physics/body/collider-shape/mass-from-volume.js +4 -0
  220. package/dist/physics/body/collider-shape/mass-from-volume.js.map +1 -0
  221. package/dist/physics/body/collider-shape/mass-from-volume.test.d.ts +1 -0
  222. package/dist/physics/body/collider-shape/mass-from-volume.test.js +8 -0
  223. package/dist/physics/body/collider-shape/mass-from-volume.test.js.map +1 -0
  224. package/dist/physics/collider-primitive-render-archetype.d.ts +2 -0
  225. package/dist/physics/collider-primitive-render-archetype.js +3 -0
  226. package/dist/physics/collider-primitive-render-archetype.js.map +1 -0
  227. package/dist/physics/collider-primitive-render-archetypes.d.ts +2 -0
  228. package/dist/physics/collider-primitive-render-archetypes.js +9 -0
  229. package/dist/physics/collider-primitive-render-archetypes.js.map +1 -0
  230. package/dist/physics/index.d.ts +1 -0
  231. package/dist/physics/index.js +3 -0
  232. package/dist/physics/index.js.map +1 -0
  233. package/dist/physics/is-voxel-shape-physics-pending.d.ts +3 -0
  234. package/dist/physics/is-voxel-shape-physics-pending.js +7 -0
  235. package/dist/physics/is-voxel-shape-physics-pending.js.map +1 -0
  236. package/dist/physics/physics-clock/physics-clock.d.ts +15 -0
  237. package/dist/physics/physics-clock/physics-clock.js +3 -0
  238. package/dist/physics/physics-clock/physics-clock.js.map +1 -0
  239. package/dist/physics/physics-clock-plugin.d.ts +2 -22
  240. package/dist/physics/physics-clock-plugin.js +0 -2
  241. package/dist/physics/physics-clock-plugin.js.map +1 -1
  242. package/dist/physics/physics-clock.test.js.map +1 -1
  243. package/dist/physics/physics-data-plugin.d.ts +889 -13
  244. package/dist/physics/physics-data-plugin.js +8 -6
  245. package/dist/physics/physics-data-plugin.js.map +1 -1
  246. package/dist/physics/public.d.ts +21 -0
  247. package/dist/physics/public.js +23 -0
  248. package/dist/physics/public.js.map +1 -0
  249. package/dist/physics/ragdoll/bone-capsule.d.ts +8 -0
  250. package/dist/physics/ragdoll/bone-capsule.js +3 -0
  251. package/dist/physics/ragdoll/bone-capsule.js.map +1 -0
  252. package/dist/physics/ragdoll/fit-bone-capsules-input.d.ts +11 -0
  253. package/dist/physics/ragdoll/fit-bone-capsules-input.js +3 -0
  254. package/dist/physics/ragdoll/fit-bone-capsules-input.js.map +1 -0
  255. package/dist/physics/ragdoll/fit-bone-capsules.d.ts +2 -38
  256. package/dist/physics/ragdoll/fit-bone-capsules.js +13 -0
  257. package/dist/physics/ragdoll/fit-bone-capsules.js.map +1 -1
  258. package/dist/physics/ragdoll/fit-bone-capsules.test.js.map +1 -1
  259. package/dist/physics/ragdoll/skin-vertices.d.ts +6 -0
  260. package/dist/physics/ragdoll/skin-vertices.js +3 -0
  261. package/dist/physics/ragdoll/skin-vertices.js.map +1 -0
  262. package/dist/physics/rigid-body-components.d.ts +2 -0
  263. package/dist/physics/rigid-body-components.js +13 -0
  264. package/dist/physics/rigid-body-components.js.map +1 -0
  265. package/dist/physics/solvers/jolt-solver-plugin.d.ts +918 -41
  266. package/dist/physics/solvers/jolt-solver-plugin.js +19 -3
  267. package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -1
  268. package/dist/physics/solvers/rapier-solver-plugin.d.ts +918 -41
  269. package/dist/physics/solvers/rapier-solver-plugin.js +7 -2
  270. package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -1
  271. package/dist/physics/solvers/solver-benchmark-options.d.ts +14 -0
  272. package/dist/physics/solvers/solver-benchmark-options.js +3 -0
  273. package/dist/physics/solvers/solver-benchmark-options.js.map +1 -0
  274. package/dist/physics/solvers/solver-benchmark-result.d.ts +15 -0
  275. package/dist/physics/solvers/solver-benchmark-result.js +3 -0
  276. package/dist/physics/solvers/solver-benchmark-result.js.map +1 -0
  277. package/dist/physics/solvers/solver-benchmark.d.ts +2 -43
  278. package/dist/physics/solvers/solver-benchmark.js.map +1 -1
  279. package/dist/physics/static-collider-components.d.ts +2 -0
  280. package/dist/physics/static-collider-components.js +10 -0
  281. package/dist/physics/static-collider-components.js.map +1 -0
  282. package/package.json +14 -2
  283. package/src/core/public.ts +4 -0
  284. package/src/graphics/camera/orbit/attach-orbit-drag.ts +7 -27
  285. package/src/graphics/camera/orbit/orbit-data-plugin.ts +1 -1
  286. package/src/graphics/camera/orbit/orbit-drag-service.ts +13 -0
  287. package/src/graphics/camera/orbit/orbit-system-plugin.ts +6 -9
  288. package/src/graphics/camera/orbit/orbit.ts +5 -5
  289. package/src/graphics/camera/orbit/public.ts +2 -2
  290. package/src/graphics/index.ts +3 -0
  291. package/src/graphics/picking/picking-plugin.ts +4 -4
  292. package/src/graphics/public.ts +40 -0
  293. package/src/graphics/rendering/bone-collider-plugin.ts +16 -12
  294. package/src/graphics/rendering/display-transform-plugin.ts +2 -2
  295. package/src/graphics/rendering/ibl-render/ibl-render-plugin.ts +9 -9
  296. package/src/graphics/rendering/interpolation.test.ts +1 -1
  297. package/src/graphics/rendering/jolt-ragdoll-plugin.ts +11 -7
  298. package/src/graphics/rendering/material-palette-gpu/material-palette-gpu-plugin.ts +86 -0
  299. package/src/graphics/rendering/material-palette-gpu/material-palette-gpu.test.ts +20 -0
  300. package/src/graphics/rendering/material-palette-gpu/material-palette.ts +41 -0
  301. package/src/graphics/rendering/material-palette-gpu/palette-bind-group.ts +24 -0
  302. package/src/graphics/rendering/model-collider-plugin.ts +19 -35
  303. package/src/graphics/rendering/pbr-core-plugin.ts +16 -19
  304. package/src/graphics/rendering/pbr-render/{pbr-render-plugin.ts → pbr-factor-render-plugin.ts} +60 -111
  305. package/src/graphics/rendering/pbr-render/{pbr-array-shader.wgsl.ts → pbr-factor-shader.wgsl.ts} +19 -40
  306. package/src/graphics/rendering/pbr-render/physics-bridge-plugin.ts +95 -69
  307. package/src/graphics/rendering/pbr-render/primitive-render-shared.ts +76 -0
  308. package/src/graphics/rendering/skinning/skinning-plugin.ts +23 -41
  309. package/src/graphics/scene/model/geometry/public.ts +1 -1
  310. package/src/graphics/scene/model/mesh/mesh.ts +18 -0
  311. package/src/graphics/scene/model/mesh/public.ts +3 -0
  312. package/src/graphics/scene/model/mesh-plugin.ts +102 -0
  313. package/src/graphics/scene/model/model-loader-plugin.ts +25 -43
  314. package/src/graphics/scene/model/model-plugin.ts +1 -44
  315. package/src/graphics/scene/model/model.ts +2 -6
  316. package/src/graphics/scene/model/public.ts +3 -1
  317. package/src/graphics/scene/model/shape/bounds-from-shape-mesh.ts +20 -0
  318. package/src/graphics/scene/model/shape/shape-geometry-plugin.ts +97 -18
  319. package/src/graphics/scene/model/shape/shape-spec.ts +9 -0
  320. package/src/graphics/scene/model/world-bounds-plugin.ts +6 -25
  321. package/src/graphics/scene/node/node-data-plugin.test.ts +47 -0
  322. package/src/graphics/scene/node/node-data-plugin.ts +12 -5
  323. package/src/graphics/scene/scene-plugin.ts +3 -3
  324. package/src/index.ts +1 -70
  325. package/src/material/assemble-material-row.ts +26 -0
  326. package/src/material/definitions.ts +427 -0
  327. package/src/material/emission-mode.ts +11 -0
  328. package/src/material/index.ts +3 -0
  329. package/src/material/json/from-json-string.ts +11 -0
  330. package/src/material/json/from-json.test.ts +50 -0
  331. package/src/material/json/from-json.ts +23 -0
  332. package/src/material/json/is-properties-json.ts +77 -0
  333. package/src/material/json/library-json.ts +4 -0
  334. package/src/material/json/load-json.ts +15 -0
  335. package/src/material/json/properties-json.ts +25 -0
  336. package/src/material/json/public.ts +9 -0
  337. package/src/material/json/to-definition.ts +70 -0
  338. package/src/material/material-by-name-lookup.ts +10 -0
  339. package/src/material/material-defaults.ts +26 -0
  340. package/src/material/material-definition.ts +4 -0
  341. package/src/material/material-name.ts +3 -0
  342. package/src/material/material-plugin.test.ts +97 -0
  343. package/src/material/material-plugin.ts +67 -39
  344. package/src/material/material.ts +35 -34
  345. package/src/material/public.ts +12 -2
  346. package/src/material/require-material.ts +15 -0
  347. package/src/material/standard-material-names.ts +4 -0
  348. package/src/material/standard-materials.ts +21 -27
  349. package/src/material/stress-strain-curve/create.ts +9 -0
  350. package/src/material/stress-strain-curve/public.ts +2 -0
  351. package/src/material/stress-strain-curve/schema.test.ts +20 -0
  352. package/src/material/stress-strain-curve/schema.ts +20 -0
  353. package/src/material/stress-strain-curve/stress-strain-curve.ts +11 -0
  354. package/src/physics/README.md +9 -1
  355. package/src/physics/body/collider-shape/mass-from-volume.test.ts +8 -0
  356. package/src/physics/body/collider-shape/mass-from-volume.ts +4 -0
  357. package/src/physics/collider-primitive-render-archetype.ts +5 -0
  358. package/src/physics/collider-primitive-render-archetypes.ts +9 -0
  359. package/src/physics/index.ts +3 -0
  360. package/src/physics/is-voxel-shape-physics-pending.ts +9 -0
  361. package/src/physics/physics-clock/physics-clock.ts +17 -0
  362. package/src/physics/physics-clock-plugin.ts +1 -24
  363. package/src/physics/physics-clock.test.ts +2 -1
  364. package/src/physics/physics-data-plugin.ts +8 -6
  365. package/src/physics/public.ts +23 -0
  366. package/src/physics/ragdoll/bone-capsule.ts +11 -0
  367. package/src/physics/ragdoll/fit-bone-capsules-input.ts +14 -0
  368. package/src/physics/ragdoll/fit-bone-capsules.test.ts +2 -1
  369. package/src/physics/ragdoll/fit-bone-capsules.ts +2 -27
  370. package/src/physics/ragdoll/skin-vertices.ts +8 -0
  371. package/src/physics/rigid-body-components.ts +13 -0
  372. package/src/physics/solvers/README.md +4 -0
  373. package/src/physics/solvers/jolt-solver-plugin.ts +19 -5
  374. package/src/physics/solvers/rapier-solver-plugin.ts +5 -2
  375. package/src/physics/solvers/solver-benchmark-options.ts +16 -0
  376. package/src/physics/solvers/solver-benchmark-result.ts +17 -0
  377. package/src/physics/solvers/solver-benchmark.ts +2 -35
  378. package/src/physics/static-collider-components.ts +10 -0
  379. package/tsconfig.tsbuildinfo +1 -1
  380. package/src/graphics/rendering/material-gpu/material-arrays.ts +0 -113
  381. package/src/graphics/rendering/material-gpu/material-bind-group.ts +0 -61
  382. package/src/graphics/rendering/material-gpu/material-gpu-plugin.ts +0 -95
  383. package/src/graphics/scene/model/geometry/geometry.ts +0 -12
@@ -3,47 +3,26 @@ import { Database } from "@adobe/data/ecs";
3
3
  import { pbrCore } from "../../rendering/pbr-core-plugin.js";
4
4
  import { animation } from "../../animation/animation-plugin.js";
5
5
  import { core } from "../../../core/core-plugin.js";
6
- import { Model } from "./model.js";
6
+ import { mesh } from "./mesh-plugin.js";
7
7
  import { loadGltfPrimitives } from "./gltf/load-gltf-model.js";
8
8
  /**
9
- * modelLoader
10
- * query: Geometry-_bounds
11
- * read:
12
- * modelUrl
13
- * write:
14
- * _bounds: Aabb
15
- * _skinJointTemplate: JointTemplate[]
16
- * _skinInverseBindMatrices: Float32Array | null
17
- * _animationClipRefs: EntityId[]
18
- * _VisibleMaterial
19
- * _PbrPrimitive
20
- * AnimationClip // when the glTF carries animations
9
+ * modelLoader — queries `GltfMeshPending`, fetches each `gltfUrl`, inserts
10
+ * `_PbrPrimitive` rows, and migrates the mesh entity to `StaticMesh` or
11
+ * `SkinnedMesh` with capability components.
21
12
  */
22
13
  export const modelLoader = Database.Plugin.create({
23
- extends: Database.Plugin.combine(pbrCore, Model.plugin, core, animation),
24
- components: {
25
- _bounds: { default: null },
26
- _skinJointTemplate: { default: [] },
27
- _skinInverseBindMatrices: { default: null },
28
- _animationClipRefs: { default: [] },
29
- // CPU-retained model-space collision geometry (auto-collider source).
30
- _cpuPositions: { default: null },
31
- _cpuIndices: { default: null },
32
- // CPU-retained skin (mesh-bind positions + 4 joints + 4 weights per vertex),
33
- // for fitting per-bone ragdoll capsules.
34
- _cpuSkin: { default: null },
35
- },
14
+ extends: Database.Plugin.combine(pbrCore, mesh, core, animation),
36
15
  transactions: {
37
16
  insertLoadedPrimitives(t, args) {
38
17
  for (const p of args.primitives) {
39
18
  const materialId = t.archetypes._VisibleMaterial.insert({
40
- ephemeral: true,
19
+ nonPersistent: true,
41
20
  _materialBindGroup: p.pbrMaterialBindGroup,
42
- _geometry: args.geometry,
21
+ _mesh: args.mesh,
43
22
  });
44
23
  t.archetypes._PbrPrimitive.insert({
45
- ephemeral: true,
46
- _geometry: args.geometry,
24
+ nonPersistent: true,
25
+ _mesh: args.mesh,
47
26
  _material: materialId,
48
27
  _vertexBuffer: p.pbrVertexBuffer,
49
28
  _skinVertexBuffer: p.pbrSkinVertexBuffer,
@@ -63,14 +42,17 @@ export const modelLoader = Database.Plugin.create({
63
42
  });
64
43
  clipRefs.push(clipId);
65
44
  }
66
- t.update(args.geometry, {
67
- _bounds: args.bounds,
68
- _skinJointTemplate: args.skinJointTemplate,
69
- _skinInverseBindMatrices: args.skinInverseBindMatrices,
70
- _animationClipRefs: clipRefs,
71
- _cpuPositions: args.collision?.positions ?? null,
72
- _cpuIndices: args.collision?.indices ?? null,
73
- _cpuSkin: args.skinVertices,
45
+ const skinned = args.skinJointTemplate.length > 0;
46
+ t.update(args.mesh, {
47
+ localBounds: args.bounds,
48
+ cpuCollisionPositions: args.collision?.positions ?? null,
49
+ cpuCollisionIndices: args.collision?.indices ?? null,
50
+ cpuSkin: args.skinVertices,
51
+ ...(skinned ? {
52
+ skinJointTemplate: args.skinJointTemplate,
53
+ skinInverseBindMatrices: args.skinInverseBindMatrices,
54
+ animationClipRefs: clipRefs,
55
+ } : {}),
74
56
  });
75
57
  },
76
58
  },
@@ -82,21 +64,21 @@ export const modelLoader = Database.Plugin.create({
82
64
  const { device } = db.store.resources;
83
65
  if (!device)
84
66
  return;
85
- for (const arch of db.store.queryArchetypes(["modelUrl"])) {
67
+ for (const arch of db.store.queryArchetypes(["gltfUrl"])) {
86
68
  const ids = arch.columns.id;
87
- const urls = arch.columns.modelUrl;
69
+ const urls = arch.columns.gltfUrl;
88
70
  for (let i = 0; i < arch.rowCount; i++) {
89
71
  const id = ids.get(i);
90
72
  if (inFlight.has(id))
91
73
  continue;
92
74
  const url = urls.get(i);
93
75
  if (!url)
94
- continue; // procedural geometries (shapes) carry no URL
76
+ continue;
95
77
  inFlight.add(id);
96
78
  loadGltfPrimitives(device, url)
97
79
  .then(loaded => {
98
80
  db.transactions.insertLoadedPrimitives({
99
- geometry: id,
81
+ mesh: id,
100
82
  bounds: loaded.bounds,
101
83
  primitives: loaded.primitives,
102
84
  skinJointTemplate: loaded.skin?.jointTemplate ?? [],
@@ -1 +1 @@
1
- {"version":3,"file":"model-loader-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/model-loader-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-loader-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/model-loader-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,352 +1 @@
1
- import { Quat, type Vec3 } from "@adobe/data/math";
2
- /**
3
- * Authored renderable scene. A `Geometry` is an asset identified by URL; a
4
- * `Model` is a placed instance of a Geometry — a Node plus a reference to
5
- * the Geometry it draws.
6
- *
7
- * Loading is performed by `modelLoader`, which reads the `modelUrl` and
8
- * produces the GPU primitives the renderers consume.
9
- */
10
- export declare const model: {
11
- readonly components: {
12
- readonly visible: {
13
- readonly type: "boolean";
14
- readonly const: true;
15
- readonly default: true;
16
- };
17
- readonly position: {
18
- readonly type: "array";
19
- readonly items: {
20
- readonly type: "number";
21
- readonly precision: 1;
22
- readonly default: number;
23
- };
24
- readonly minItems: 3;
25
- readonly maxItems: 3;
26
- readonly default: readonly [0, 0, 0];
27
- };
28
- readonly rotation: {
29
- readonly type: "array";
30
- readonly items: {
31
- readonly type: "number";
32
- readonly precision: 1;
33
- readonly default: number;
34
- };
35
- readonly minItems: 4;
36
- readonly maxItems: 4;
37
- readonly default: readonly [0, 0, 0, 1];
38
- readonly interpolators: {
39
- readonly linear: (q1: any, q2: any, t: number) => any;
40
- };
41
- };
42
- readonly scale: {
43
- readonly type: "array";
44
- readonly items: {
45
- readonly type: "number";
46
- readonly precision: 1;
47
- readonly default: number;
48
- };
49
- readonly minItems: 3;
50
- readonly maxItems: 3;
51
- readonly default: readonly [0, 0, 0];
52
- };
53
- readonly parent: {
54
- readonly type: "integer";
55
- readonly minimum: -2147483648;
56
- readonly maximum: 2147483647;
57
- readonly default: number;
58
- };
59
- readonly _worldMatrix: {
60
- readonly type: "array";
61
- readonly items: {
62
- readonly type: "number";
63
- readonly precision: 1;
64
- readonly default: number;
65
- };
66
- readonly minItems: 16;
67
- readonly maxItems: 16;
68
- readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
69
- };
70
- readonly _worldBounds: {
71
- readonly type: "object";
72
- readonly properties: {
73
- readonly min: {
74
- readonly type: "array";
75
- readonly items: {
76
- readonly type: "number";
77
- readonly precision: 1;
78
- readonly default: number;
79
- };
80
- readonly minItems: 3;
81
- readonly maxItems: 3;
82
- readonly default: readonly [0, 0, 0];
83
- };
84
- readonly max: {
85
- readonly type: "array";
86
- readonly items: {
87
- readonly type: "number";
88
- readonly precision: 1;
89
- readonly default: number;
90
- };
91
- readonly minItems: 3;
92
- readonly maxItems: 3;
93
- readonly default: readonly [0, 0, 0];
94
- };
95
- };
96
- readonly required: readonly ["min", "max"];
97
- readonly additionalProperties: false;
98
- readonly default: {
99
- readonly min: readonly [0, 0, 0];
100
- readonly max: readonly [0, 0, 0];
101
- };
102
- };
103
- } & {} & {
104
- readonly modelUrl: {
105
- readonly type: "string";
106
- };
107
- readonly geometry: {
108
- readonly type: "integer";
109
- readonly minimum: -2147483648;
110
- readonly maximum: 2147483647;
111
- readonly default: number;
112
- };
113
- };
114
- readonly resources: {};
115
- readonly archetypes: {
116
- readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
117
- } & {} & {
118
- readonly Geometry: readonly ["modelUrl"];
119
- readonly Model: readonly ["geometry", "position", "rotation", "scale", "visible", "parent"];
120
- };
121
- readonly transactions: {} & {} & {
122
- readonly insertGeometry: (t: import("@adobe/data/ecs").TransactionContext<import("@adobe/data/schema").FromSchemas<{
123
- readonly modelUrl: {
124
- readonly type: "string";
125
- };
126
- readonly geometry: {
127
- readonly type: "integer";
128
- readonly minimum: -2147483648;
129
- readonly maximum: 2147483647;
130
- readonly default: number;
131
- };
132
- } & {
133
- readonly visible: {
134
- readonly type: "boolean";
135
- readonly const: true;
136
- readonly default: true;
137
- };
138
- readonly position: {
139
- readonly type: "array";
140
- readonly items: {
141
- readonly type: "number";
142
- readonly precision: 1;
143
- readonly default: number;
144
- };
145
- readonly minItems: 3;
146
- readonly maxItems: 3;
147
- readonly default: readonly [0, 0, 0];
148
- };
149
- readonly rotation: {
150
- readonly type: "array";
151
- readonly items: {
152
- readonly type: "number";
153
- readonly precision: 1;
154
- readonly default: number;
155
- };
156
- readonly minItems: 4;
157
- readonly maxItems: 4;
158
- readonly default: readonly [0, 0, 0, 1];
159
- readonly interpolators: {
160
- readonly linear: (q1: any, q2: any, t: number) => any;
161
- };
162
- };
163
- readonly scale: {
164
- readonly type: "array";
165
- readonly items: {
166
- readonly type: "number";
167
- readonly precision: 1;
168
- readonly default: number;
169
- };
170
- readonly minItems: 3;
171
- readonly maxItems: 3;
172
- readonly default: readonly [0, 0, 0];
173
- };
174
- readonly parent: {
175
- readonly type: "integer";
176
- readonly minimum: -2147483648;
177
- readonly maximum: 2147483647;
178
- readonly default: number;
179
- };
180
- readonly _worldMatrix: {
181
- readonly type: "array";
182
- readonly items: {
183
- readonly type: "number";
184
- readonly precision: 1;
185
- readonly default: number;
186
- };
187
- readonly minItems: 16;
188
- readonly maxItems: 16;
189
- readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
190
- };
191
- readonly _worldBounds: {
192
- readonly type: "object";
193
- readonly properties: {
194
- readonly min: {
195
- readonly type: "array";
196
- readonly items: {
197
- readonly type: "number";
198
- readonly precision: 1;
199
- readonly default: number;
200
- };
201
- readonly minItems: 3;
202
- readonly maxItems: 3;
203
- readonly default: readonly [0, 0, 0];
204
- };
205
- readonly max: {
206
- readonly type: "array";
207
- readonly items: {
208
- readonly type: "number";
209
- readonly precision: 1;
210
- readonly default: number;
211
- };
212
- readonly minItems: 3;
213
- readonly maxItems: 3;
214
- readonly default: readonly [0, 0, 0];
215
- };
216
- };
217
- readonly required: readonly ["min", "max"];
218
- readonly additionalProperties: false;
219
- readonly default: {
220
- readonly min: readonly [0, 0, 0];
221
- readonly max: readonly [0, 0, 0];
222
- };
223
- };
224
- } & {}>, import("@adobe/data/schema").FromSchemas<{}>, {
225
- readonly Geometry: readonly ["modelUrl"];
226
- readonly Model: readonly ["geometry", "position", "rotation", "scale", "visible", "parent"];
227
- } & {
228
- readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
229
- } & {}, {} & {} & {}>, args: {
230
- modelUrl: string;
231
- }) => number;
232
- readonly insertModel: (t: import("@adobe/data/ecs").TransactionContext<import("@adobe/data/schema").FromSchemas<{
233
- readonly modelUrl: {
234
- readonly type: "string";
235
- };
236
- readonly geometry: {
237
- readonly type: "integer";
238
- readonly minimum: -2147483648;
239
- readonly maximum: 2147483647;
240
- readonly default: number;
241
- };
242
- } & {
243
- readonly visible: {
244
- readonly type: "boolean";
245
- readonly const: true;
246
- readonly default: true;
247
- };
248
- readonly position: {
249
- readonly type: "array";
250
- readonly items: {
251
- readonly type: "number";
252
- readonly precision: 1;
253
- readonly default: number;
254
- };
255
- readonly minItems: 3;
256
- readonly maxItems: 3;
257
- readonly default: readonly [0, 0, 0];
258
- };
259
- readonly rotation: {
260
- readonly type: "array";
261
- readonly items: {
262
- readonly type: "number";
263
- readonly precision: 1;
264
- readonly default: number;
265
- };
266
- readonly minItems: 4;
267
- readonly maxItems: 4;
268
- readonly default: readonly [0, 0, 0, 1];
269
- readonly interpolators: {
270
- readonly linear: (q1: any, q2: any, t: number) => any;
271
- };
272
- };
273
- readonly scale: {
274
- readonly type: "array";
275
- readonly items: {
276
- readonly type: "number";
277
- readonly precision: 1;
278
- readonly default: number;
279
- };
280
- readonly minItems: 3;
281
- readonly maxItems: 3;
282
- readonly default: readonly [0, 0, 0];
283
- };
284
- readonly parent: {
285
- readonly type: "integer";
286
- readonly minimum: -2147483648;
287
- readonly maximum: 2147483647;
288
- readonly default: number;
289
- };
290
- readonly _worldMatrix: {
291
- readonly type: "array";
292
- readonly items: {
293
- readonly type: "number";
294
- readonly precision: 1;
295
- readonly default: number;
296
- };
297
- readonly minItems: 16;
298
- readonly maxItems: 16;
299
- readonly default: readonly [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
300
- };
301
- readonly _worldBounds: {
302
- readonly type: "object";
303
- readonly properties: {
304
- readonly min: {
305
- readonly type: "array";
306
- readonly items: {
307
- readonly type: "number";
308
- readonly precision: 1;
309
- readonly default: number;
310
- };
311
- readonly minItems: 3;
312
- readonly maxItems: 3;
313
- readonly default: readonly [0, 0, 0];
314
- };
315
- readonly max: {
316
- readonly type: "array";
317
- readonly items: {
318
- readonly type: "number";
319
- readonly precision: 1;
320
- readonly default: number;
321
- };
322
- readonly minItems: 3;
323
- readonly maxItems: 3;
324
- readonly default: readonly [0, 0, 0];
325
- };
326
- };
327
- readonly required: readonly ["min", "max"];
328
- readonly additionalProperties: false;
329
- readonly default: {
330
- readonly min: readonly [0, 0, 0];
331
- readonly max: readonly [0, 0, 0];
332
- };
333
- };
334
- } & {}>, import("@adobe/data/schema").FromSchemas<{}>, {
335
- readonly Geometry: readonly ["modelUrl"];
336
- readonly Model: readonly ["geometry", "position", "rotation", "scale", "visible", "parent"];
337
- } & {
338
- readonly Node: readonly ["position", "rotation", "scale", "parent", "visible"];
339
- } & {}, {} & {} & {}>, args: {
340
- geometry: number;
341
- position?: Vec3;
342
- rotation?: Quat;
343
- scale?: Vec3;
344
- parent?: number;
345
- }) => number;
346
- };
347
- readonly systems: import("@adobe/data/ecs").SystemDeclarations<"transformCreateWorldMatrix" | "transformSystem">;
348
- readonly actions: {};
349
- readonly services: {};
350
- readonly computed: {};
351
- readonly indexes: {} & {} & {};
352
- };
1
+ export { mesh as model } from "./mesh-plugin.js";
@@ -1,39 +1,3 @@
1
1
  // © 2026 Adobe. MIT License. See /LICENSE for details.
2
- import { Database, Entity } from "@adobe/data/ecs";
3
- import { Quat } from "@adobe/data/math";
4
- import { Node } from "../node/node.js";
5
- /**
6
- * Authored renderable scene. A `Geometry` is an asset identified by URL; a
7
- * `Model` is a placed instance of a Geometry — a Node plus a reference to
8
- * the Geometry it draws.
9
- *
10
- * Loading is performed by `modelLoader`, which reads the `modelUrl` and
11
- * produces the GPU primitives the renderers consume.
12
- */
13
- export const model = Database.Plugin.create({
14
- extends: Node.plugin,
15
- components: {
16
- modelUrl: { type: "string" },
17
- geometry: Entity.schema,
18
- },
19
- archetypes: {
20
- Geometry: ["modelUrl"],
21
- Model: ["geometry", "position", "rotation", "scale", "visible", "parent"],
22
- },
23
- transactions: {
24
- insertGeometry(t, args) {
25
- return t.archetypes.Geometry.insert({ modelUrl: args.modelUrl });
26
- },
27
- insertModel(t, args) {
28
- return t.archetypes.Model.insert({
29
- geometry: args.geometry,
30
- position: args.position ?? [0, 0, 0],
31
- rotation: args.rotation ?? Quat.identity,
32
- scale: args.scale ?? [1, 1, 1],
33
- visible: true,
34
- parent: args.parent ?? 0,
35
- });
36
- },
37
- },
38
- });
2
+ export { mesh as model } from "./mesh-plugin.js";
39
3
  //# sourceMappingURL=model-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/model-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAa,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,IAAI,CAAC,MAAM;IACpB,UAAU,EAAE;QACR,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM;KAC1B;IACD,UAAU,EAAE;QACR,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,KAAK,EAAK,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;KAC/E;IACD,YAAY,EAAE;QACV,cAAc,CAAC,CAAC,EAAE,IAA0B;YACxC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,WAAW,CAAC,CAAC,EAAE,IAMd;YACG,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBACxC,KAAK,EAAK,IAAI,CAAC,KAAK,IAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpC,OAAO,EAAG,IAAI;gBACd,MAAM,EAAI,IAAI,CAAC,MAAM,IAAM,CAAC;aAC/B,CAAC,CAAC;QACP,CAAC;KACJ;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"model-plugin.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/model-plugin.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,11 +1,7 @@
1
1
  import type { Entity } from "@adobe/data/ecs";
2
2
  import type { Node } from "../node/node.js";
3
- /**
4
- * One row of the `Model` archetype — a placed instance of a Geometry. A
5
- * Node (transform + visibility + parent) plus a reference to the Geometry
6
- * the renderer should draw.
7
- */
3
+ /** One row of the `Model` archetype — a placed instance of a mesh asset. */
8
4
  export interface Model extends Node {
9
- geometry: Entity;
5
+ mesh: Entity;
10
6
  }
11
7
  export * as Model from "./public.js";
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/model.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAcvD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/model.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAUvD,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- export { model as plugin } from "./model-plugin.js";
1
+ export { mesh as plugin } from "./mesh-plugin.js";
@@ -1,2 +1,3 @@
1
- export { model as plugin } from "./model-plugin.js";
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ export { mesh as plugin } from "./mesh-plugin.js";
2
3
  //# sourceMappingURL=public.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../../src/graphics/scene/model/public.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Aabb } from "@adobe/data/math";
2
+ import type { ShapeMesh } from "./shape-mesh.js";
3
+ /** Axis-aligned bounds of packed StandardVertex positions in a shape mesh. */
4
+ export declare const boundsFromShapeMesh: (mesh: ShapeMesh) => Aabb;
@@ -0,0 +1,25 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ const FLOATS_PER_VERTEX = 12;
3
+ /** Axis-aligned bounds of packed StandardVertex positions in a shape mesh. */
4
+ export const boundsFromShapeMesh = (mesh) => {
5
+ const v = mesh.vertices;
6
+ let minX = Infinity, minY = Infinity, minZ = Infinity;
7
+ let maxX = -Infinity, maxY = -Infinity, maxZ = -Infinity;
8
+ for (let i = 0; i < v.length; i += FLOATS_PER_VERTEX) {
9
+ const x = v[i], y = v[i + 1], z = v[i + 2];
10
+ if (x < minX)
11
+ minX = x;
12
+ if (x > maxX)
13
+ maxX = x;
14
+ if (y < minY)
15
+ minY = y;
16
+ if (y > maxY)
17
+ maxY = y;
18
+ if (z < minZ)
19
+ minZ = z;
20
+ if (z > maxZ)
21
+ maxZ = z;
22
+ }
23
+ return { min: [minX, minY, minZ], max: [maxX, maxY, maxZ] };
24
+ };
25
+ //# sourceMappingURL=bounds-from-shape-mesh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounds-from-shape-mesh.js","sourceRoot":"","sources":["../../../../../src/graphics/scene/model/shape/bounds-from-shape-mesh.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAKvD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAe,EAAQ,EAAE;IACzD,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxB,IAAI,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC;IACtD,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,iBAAiB,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,GAAG,IAAI;YAAE,IAAI,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AAChE,CAAC,CAAC"}