@adobe/data-gpu 0.9.69

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 (584) hide show
  1. package/CLAUDE.md +98 -0
  2. package/LICENSE +21 -0
  3. package/dist/core/core-plugin.d.ts +44 -0
  4. package/dist/core/core-plugin.js +90 -0
  5. package/dist/core/core-plugin.js.map +1 -0
  6. package/dist/core/frame-time/frame-time-plugin.d.ts +25 -0
  7. package/dist/core/frame-time/frame-time-plugin.js +41 -0
  8. package/dist/core/frame-time/frame-time-plugin.js.map +1 -0
  9. package/dist/core/frame-time/frame-time.d.ts +18 -0
  10. package/dist/core/frame-time/frame-time.js +3 -0
  11. package/dist/core/frame-time/frame-time.js.map +1 -0
  12. package/dist/core/frame-time/public.d.ts +1 -0
  13. package/dist/core/frame-time/public.js +3 -0
  14. package/dist/core/frame-time/public.js.map +1 -0
  15. package/dist/graphics/animation/animation-data-plugin.d.ts +216 -0
  16. package/dist/graphics/animation/animation-data-plugin.js +110 -0
  17. package/dist/graphics/animation/animation-data-plugin.js.map +1 -0
  18. package/dist/graphics/animation/animation-plugin.d.ts +214 -0
  19. package/dist/graphics/animation/animation-plugin.js +26 -0
  20. package/dist/graphics/animation/animation-plugin.js.map +1 -0
  21. package/dist/graphics/animation/animation-plugin.test.d.ts +1 -0
  22. package/dist/graphics/animation/animation-plugin.test.js +142 -0
  23. package/dist/graphics/animation/animation-plugin.test.js.map +1 -0
  24. package/dist/graphics/animation/animation-track/animation-track.d.ts +13 -0
  25. package/dist/graphics/animation/animation-track/animation-track.js +3 -0
  26. package/dist/graphics/animation/animation-track/animation-track.js.map +1 -0
  27. package/dist/graphics/animation/animation-track/componentwise-lerp.d.ts +7 -0
  28. package/dist/graphics/animation/animation-track/componentwise-lerp.js +22 -0
  29. package/dist/graphics/animation/animation-track/componentwise-lerp.js.map +1 -0
  30. package/dist/graphics/animation/animation-track/interpolate.d.ts +8 -0
  31. package/dist/graphics/animation/animation-track/interpolate.js +18 -0
  32. package/dist/graphics/animation/animation-track/interpolate.js.map +1 -0
  33. package/dist/graphics/animation/animation-track/public.d.ts +1 -0
  34. package/dist/graphics/animation/animation-track/public.js +3 -0
  35. package/dist/graphics/animation/animation-track/public.js.map +1 -0
  36. package/dist/graphics/animation/animation-track/sample.d.ts +7 -0
  37. package/dist/graphics/animation/animation-track/sample.js +44 -0
  38. package/dist/graphics/animation/animation-track/sample.js.map +1 -0
  39. package/dist/graphics/animation/interpolation-mode/interpolation-mode.d.ts +4 -0
  40. package/dist/graphics/animation/interpolation-mode/interpolation-mode.js +3 -0
  41. package/dist/graphics/animation/interpolation-mode/interpolation-mode.js.map +1 -0
  42. package/dist/graphics/animation/interpolation-mode/public.d.ts +1 -0
  43. package/dist/graphics/animation/interpolation-mode/public.js +3 -0
  44. package/dist/graphics/animation/interpolation-mode/public.js.map +1 -0
  45. package/dist/graphics/animation/interpolation-mode/schema.d.ts +4 -0
  46. package/dist/graphics/animation/interpolation-mode/schema.js +3 -0
  47. package/dist/graphics/animation/interpolation-mode/schema.js.map +1 -0
  48. package/dist/graphics/camera/camera-plugin.d.ts +112 -0
  49. package/dist/graphics/camera/camera-plugin.js +36 -0
  50. package/dist/graphics/camera/camera-plugin.js.map +1 -0
  51. package/dist/graphics/camera/camera.d.ts +4 -0
  52. package/dist/graphics/camera/camera.js +3 -0
  53. package/dist/graphics/camera/camera.js.map +1 -0
  54. package/dist/graphics/camera/orbit/attach-orbit-drag.d.ts +31 -0
  55. package/dist/graphics/camera/orbit/attach-orbit-drag.js +44 -0
  56. package/dist/graphics/camera/orbit/attach-orbit-drag.js.map +1 -0
  57. package/dist/graphics/camera/orbit/orbit-data-plugin.d.ts +290 -0
  58. package/dist/graphics/camera/orbit/orbit-data-plugin.js +42 -0
  59. package/dist/graphics/camera/orbit/orbit-data-plugin.js.map +1 -0
  60. package/dist/graphics/camera/orbit/orbit-plugin.d.ts +281 -0
  61. package/dist/graphics/camera/orbit/orbit-plugin.js +12 -0
  62. package/dist/graphics/camera/orbit/orbit-plugin.js.map +1 -0
  63. package/dist/graphics/camera/orbit/orbit-system-plugin.d.ts +292 -0
  64. package/dist/graphics/camera/orbit/orbit-system-plugin.js +71 -0
  65. package/dist/graphics/camera/orbit/orbit-system-plugin.js.map +1 -0
  66. package/dist/graphics/camera/orbit/orbit.d.ts +32 -0
  67. package/dist/graphics/camera/orbit/orbit.js +3 -0
  68. package/dist/graphics/camera/orbit/orbit.js.map +1 -0
  69. package/dist/graphics/camera/orbit/public.d.ts +5 -0
  70. package/dist/graphics/camera/orbit/public.js +6 -0
  71. package/dist/graphics/camera/orbit/public.js.map +1 -0
  72. package/dist/graphics/camera/public.d.ts +4 -0
  73. package/dist/graphics/camera/public.js +6 -0
  74. package/dist/graphics/camera/public.js.map +1 -0
  75. package/dist/graphics/camera/schema.d.ts +65 -0
  76. package/dist/graphics/camera/schema.js +19 -0
  77. package/dist/graphics/camera/schema.js.map +1 -0
  78. package/dist/graphics/camera/screen-to-world-ray.d.ts +10 -0
  79. package/dist/graphics/camera/screen-to-world-ray.js +31 -0
  80. package/dist/graphics/camera/screen-to-world-ray.js.map +1 -0
  81. package/dist/graphics/camera/to-view-projection.d.ts +3 -0
  82. package/dist/graphics/camera/to-view-projection.js +23 -0
  83. package/dist/graphics/camera/to-view-projection.js.map +1 -0
  84. package/dist/graphics/graphics-plugin.d.ts +121 -0
  85. package/dist/graphics/graphics-plugin.js +106 -0
  86. package/dist/graphics/graphics-plugin.js.map +1 -0
  87. package/dist/graphics/picking/pick-hit.d.ts +10 -0
  88. package/dist/graphics/picking/pick-hit.js +3 -0
  89. package/dist/graphics/picking/pick-hit.js.map +1 -0
  90. package/dist/graphics/picking/picking-plugin.d.ts +3819 -0
  91. package/dist/graphics/picking/picking-plugin.js +88 -0
  92. package/dist/graphics/picking/picking-plugin.js.map +1 -0
  93. package/dist/graphics/rendering/bone-collider-plugin.d.ts +1619 -0
  94. package/dist/graphics/rendering/bone-collider-plugin.js +207 -0
  95. package/dist/graphics/rendering/bone-collider-plugin.js.map +1 -0
  96. package/dist/graphics/rendering/display-transform-plugin.d.ts +52 -0
  97. package/dist/graphics/rendering/display-transform-plugin.js +25 -0
  98. package/dist/graphics/rendering/display-transform-plugin.js.map +1 -0
  99. package/dist/graphics/rendering/ibl-render/brdf.wgsl.d.ts +2 -0
  100. package/dist/graphics/rendering/ibl-render/brdf.wgsl.js +42 -0
  101. package/dist/graphics/rendering/ibl-render/brdf.wgsl.js.map +1 -0
  102. package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.d.ts +1 -0
  103. package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js +91 -0
  104. package/dist/graphics/rendering/ibl-render/ibl/brdf-lut.js.map +1 -0
  105. package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.d.ts +24 -0
  106. package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js +34 -0
  107. package/dist/graphics/rendering/ibl-render/ibl/build-ibl-resources.js.map +1 -0
  108. package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.d.ts +1 -0
  109. package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js +12 -0
  110. package/dist/graphics/rendering/ibl-render/ibl/create-cubemap.js.map +1 -0
  111. package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.d.ts +1 -0
  112. package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js +11 -0
  113. package/dist/graphics/rendering/ibl-render/ibl/cube-face-view.js.map +1 -0
  114. package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.d.ts +1 -0
  115. package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js +9 -0
  116. package/dist/graphics/rendering/ibl-render/ibl/cubemap-sample-view.js.map +1 -0
  117. package/dist/graphics/rendering/ibl-render/ibl/environment.d.ts +8 -0
  118. package/dist/graphics/rendering/ibl-render/ibl/environment.js +170 -0
  119. package/dist/graphics/rendering/ibl-render/ibl/environment.js.map +1 -0
  120. package/dist/graphics/rendering/ibl-render/ibl/float-to-half.d.ts +2 -0
  121. package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js +32 -0
  122. package/dist/graphics/rendering/ibl-render/ibl/float-to-half.js.map +1 -0
  123. package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.d.ts +2 -0
  124. package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js +59 -0
  125. package/dist/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.js.map +1 -0
  126. package/dist/graphics/rendering/ibl-render/ibl/irradiance.d.ts +1 -0
  127. package/dist/graphics/rendering/ibl-render/ibl/irradiance.js +94 -0
  128. package/dist/graphics/rendering/ibl-render/ibl/irradiance.js.map +1 -0
  129. package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.d.ts +6 -0
  130. package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js +106 -0
  131. package/dist/graphics/rendering/ibl-render/ibl/parse-hdr.js.map +1 -0
  132. package/dist/graphics/rendering/ibl-render/ibl/prefilter.d.ts +5 -0
  133. package/dist/graphics/rendering/ibl-render/ibl/prefilter.js +103 -0
  134. package/dist/graphics/rendering/ibl-render/ibl/prefilter.js.map +1 -0
  135. package/dist/graphics/rendering/ibl-render/ibl/render-helpers.d.ts +4 -0
  136. package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js +16 -0
  137. package/dist/graphics/rendering/ibl-render/ibl/render-helpers.js.map +1 -0
  138. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.d.ts +1028 -0
  139. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js +409 -0
  140. package/dist/graphics/rendering/ibl-render/ibl-render-plugin.js.map +1 -0
  141. package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.d.ts +8 -0
  142. package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js +173 -0
  143. package/dist/graphics/rendering/ibl-render/ibl-shader.wgsl.js.map +1 -0
  144. package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.d.ts +2 -0
  145. package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js +50 -0
  146. package/dist/graphics/rendering/ibl-render/skybox-shader.wgsl.js.map +1 -0
  147. package/dist/graphics/rendering/interpolation-plugin.d.ts +485 -0
  148. package/dist/graphics/rendering/interpolation-plugin.js +98 -0
  149. package/dist/graphics/rendering/interpolation-plugin.js.map +1 -0
  150. package/dist/graphics/rendering/interpolation.test.d.ts +1 -0
  151. package/dist/graphics/rendering/interpolation.test.js +38 -0
  152. package/dist/graphics/rendering/interpolation.test.js.map +1 -0
  153. package/dist/graphics/rendering/jolt-ragdoll-plugin.d.ts +1628 -0
  154. package/dist/graphics/rendering/jolt-ragdoll-plugin.js +218 -0
  155. package/dist/graphics/rendering/jolt-ragdoll-plugin.js.map +1 -0
  156. package/dist/graphics/rendering/material-gpu/material-arrays.d.ts +47 -0
  157. package/dist/graphics/rendering/material-gpu/material-arrays.js +83 -0
  158. package/dist/graphics/rendering/material-gpu/material-arrays.js.map +1 -0
  159. package/dist/graphics/rendering/material-gpu/material-bind-group.d.ts +9 -0
  160. package/dist/graphics/rendering/material-gpu/material-bind-group.js +52 -0
  161. package/dist/graphics/rendering/material-gpu/material-bind-group.js.map +1 -0
  162. package/dist/graphics/rendering/material-gpu/material-gpu-plugin.d.ts +259 -0
  163. package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js +90 -0
  164. package/dist/graphics/rendering/material-gpu/material-gpu-plugin.js.map +1 -0
  165. package/dist/graphics/rendering/model-collider-plugin.d.ts +1232 -0
  166. package/dist/graphics/rendering/model-collider-plugin.js +81 -0
  167. package/dist/graphics/rendering/model-collider-plugin.js.map +1 -0
  168. package/dist/graphics/rendering/pbr-core-plugin.d.ts +75 -0
  169. package/dist/graphics/rendering/pbr-core-plugin.js +39 -0
  170. package/dist/graphics/rendering/pbr-core-plugin.js.map +1 -0
  171. package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.d.ts +10 -0
  172. package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js +145 -0
  173. package/dist/graphics/rendering/pbr-render/pbr-array-shader.wgsl.js.map +1 -0
  174. package/dist/graphics/rendering/pbr-render/pbr-render-plugin.d.ts +1266 -0
  175. package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js +254 -0
  176. package/dist/graphics/rendering/pbr-render/pbr-render-plugin.js.map +1 -0
  177. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.d.ts +1004 -0
  178. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js +116 -0
  179. package/dist/graphics/rendering/pbr-render/physics-bridge-plugin.js.map +1 -0
  180. package/dist/graphics/rendering/ragdoll-trigger-plugin.d.ts +31 -0
  181. package/dist/graphics/rendering/ragdoll-trigger-plugin.js +20 -0
  182. package/dist/graphics/rendering/ragdoll-trigger-plugin.js.map +1 -0
  183. package/dist/graphics/rendering/rendering-plugin.d.ts +1 -0
  184. package/dist/graphics/rendering/rendering-plugin.js +3 -0
  185. package/dist/graphics/rendering/rendering-plugin.js.map +1 -0
  186. package/dist/graphics/rendering/skinning/skinning-attributes/layout.d.ts +2 -0
  187. package/dist/graphics/rendering/skinning/skinning-attributes/layout.js +18 -0
  188. package/dist/graphics/rendering/skinning/skinning-attributes/layout.js.map +1 -0
  189. package/dist/graphics/rendering/skinning/skinning-attributes/public.d.ts +1 -0
  190. package/dist/graphics/rendering/skinning/skinning-attributes/public.js +3 -0
  191. package/dist/graphics/rendering/skinning/skinning-attributes/public.js.map +1 -0
  192. package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.d.ts +1 -0
  193. package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js +3 -0
  194. package/dist/graphics/rendering/skinning/skinning-attributes/skinning-attributes.js.map +1 -0
  195. package/dist/graphics/rendering/skinning/skinning-plugin.d.ts +1212 -0
  196. package/dist/graphics/rendering/skinning/skinning-plugin.js +207 -0
  197. package/dist/graphics/rendering/skinning/skinning-plugin.js.map +1 -0
  198. package/dist/graphics/rendering/standard-vertex/layout.d.ts +2 -0
  199. package/dist/graphics/rendering/standard-vertex/layout.js +16 -0
  200. package/dist/graphics/rendering/standard-vertex/layout.js.map +1 -0
  201. package/dist/graphics/rendering/standard-vertex/public.d.ts +2 -0
  202. package/dist/graphics/rendering/standard-vertex/public.js +4 -0
  203. package/dist/graphics/rendering/standard-vertex/public.js.map +1 -0
  204. package/dist/graphics/rendering/standard-vertex/schema.d.ts +52 -0
  205. package/dist/graphics/rendering/standard-vertex/schema.js +15 -0
  206. package/dist/graphics/rendering/standard-vertex/schema.js.map +1 -0
  207. package/dist/graphics/rendering/standard-vertex/standard-vertex.d.ts +4 -0
  208. package/dist/graphics/rendering/standard-vertex/standard-vertex.js +3 -0
  209. package/dist/graphics/rendering/standard-vertex/standard-vertex.js.map +1 -0
  210. package/dist/graphics/rendering/visible-material/color-material-options.d.ts +7 -0
  211. package/dist/graphics/rendering/visible-material/color-material-options.js +3 -0
  212. package/dist/graphics/rendering/visible-material/color-material-options.js.map +1 -0
  213. package/dist/graphics/rendering/visible-material/create-bind-group-layout.d.ts +8 -0
  214. package/dist/graphics/rendering/visible-material/create-bind-group-layout.js +35 -0
  215. package/dist/graphics/rendering/visible-material/create-bind-group-layout.js.map +1 -0
  216. package/dist/graphics/rendering/visible-material/create-color-bind-group.d.ts +10 -0
  217. package/dist/graphics/rendering/visible-material/create-color-bind-group.js +26 -0
  218. package/dist/graphics/rendering/visible-material/create-color-bind-group.js.map +1 -0
  219. package/dist/graphics/rendering/visible-material/public.d.ts +4 -0
  220. package/dist/graphics/rendering/visible-material/public.js +5 -0
  221. package/dist/graphics/rendering/visible-material/public.js.map +1 -0
  222. package/dist/graphics/rendering/visible-material/schema.d.ts +49 -0
  223. package/dist/graphics/rendering/visible-material/schema.js +23 -0
  224. package/dist/graphics/rendering/visible-material/schema.js.map +1 -0
  225. package/dist/graphics/rendering/visible-material/visible-material.d.ts +4 -0
  226. package/dist/graphics/rendering/visible-material/visible-material.js +3 -0
  227. package/dist/graphics/rendering/visible-material/visible-material.js.map +1 -0
  228. package/dist/graphics/scene/light/light-plugin.d.ts +30 -0
  229. package/dist/graphics/scene/light/light-plugin.js +35 -0
  230. package/dist/graphics/scene/light/light-plugin.js.map +1 -0
  231. package/dist/graphics/scene/light/light.d.ts +14 -0
  232. package/dist/graphics/scene/light/light.js +3 -0
  233. package/dist/graphics/scene/light/light.js.map +1 -0
  234. package/dist/graphics/scene/light/public.d.ts +1 -0
  235. package/dist/graphics/scene/light/public.js +2 -0
  236. package/dist/graphics/scene/light/public.js.map +1 -0
  237. package/dist/graphics/scene/model/geometry/geometry.d.ts +9 -0
  238. package/dist/graphics/scene/model/geometry/geometry.js +3 -0
  239. package/dist/graphics/scene/model/geometry/geometry.js.map +1 -0
  240. package/dist/graphics/scene/model/geometry/public.d.ts +1 -0
  241. package/dist/graphics/scene/model/geometry/public.js +3 -0
  242. package/dist/graphics/scene/model/geometry/public.js.map +1 -0
  243. package/dist/graphics/scene/model/gltf/accessor-view.d.ts +9 -0
  244. package/dist/graphics/scene/model/gltf/accessor-view.js +44 -0
  245. package/dist/graphics/scene/model/gltf/accessor-view.js.map +1 -0
  246. package/dist/graphics/scene/model/gltf/build-material-bind-group.d.ts +22 -0
  247. package/dist/graphics/scene/model/gltf/build-material-bind-group.js +75 -0
  248. package/dist/graphics/scene/model/gltf/build-material-bind-group.js.map +1 -0
  249. package/dist/graphics/scene/model/gltf/compute-world-matrices.d.ts +7 -0
  250. package/dist/graphics/scene/model/gltf/compute-world-matrices.js +38 -0
  251. package/dist/graphics/scene/model/gltf/compute-world-matrices.js.map +1 -0
  252. package/dist/graphics/scene/model/gltf/create-color-material.d.ts +3 -0
  253. package/dist/graphics/scene/model/gltf/create-color-material.js +34 -0
  254. package/dist/graphics/scene/model/gltf/create-color-material.js.map +1 -0
  255. package/dist/graphics/scene/model/gltf/decode-images.d.ts +12 -0
  256. package/dist/graphics/scene/model/gltf/decode-images.js +68 -0
  257. package/dist/graphics/scene/model/gltf/decode-images.js.map +1 -0
  258. package/dist/graphics/scene/model/gltf/gltf-schema.d.ts +152 -0
  259. package/dist/graphics/scene/model/gltf/gltf-schema.js +20 -0
  260. package/dist/graphics/scene/model/gltf/gltf-schema.js.map +1 -0
  261. package/dist/graphics/scene/model/gltf/load-gltf-model.d.ts +42 -0
  262. package/dist/graphics/scene/model/gltf/load-gltf-model.js +175 -0
  263. package/dist/graphics/scene/model/gltf/load-gltf-model.js.map +1 -0
  264. package/dist/graphics/scene/model/gltf/pack-vertex-buffer.d.ts +21 -0
  265. package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js +106 -0
  266. package/dist/graphics/scene/model/gltf/pack-vertex-buffer.js.map +1 -0
  267. package/dist/graphics/scene/model/gltf/parse-animations.d.ts +18 -0
  268. package/dist/graphics/scene/model/gltf/parse-animations.js +51 -0
  269. package/dist/graphics/scene/model/gltf/parse-animations.js.map +1 -0
  270. package/dist/graphics/scene/model/gltf/parse-glb.d.ts +6 -0
  271. package/dist/graphics/scene/model/gltf/parse-glb.js +40 -0
  272. package/dist/graphics/scene/model/gltf/parse-glb.js.map +1 -0
  273. package/dist/graphics/scene/model/gltf/parse-skin.d.ts +19 -0
  274. package/dist/graphics/scene/model/gltf/parse-skin.js +43 -0
  275. package/dist/graphics/scene/model/gltf/parse-skin.js.map +1 -0
  276. package/dist/graphics/scene/model/model-loader-plugin.d.ts +922 -0
  277. package/dist/graphics/scene/model/model-loader-plugin.js +120 -0
  278. package/dist/graphics/scene/model/model-loader-plugin.js.map +1 -0
  279. package/dist/graphics/scene/model/model-plugin.d.ts +352 -0
  280. package/dist/graphics/scene/model/model-plugin.js +39 -0
  281. package/dist/graphics/scene/model/model-plugin.js.map +1 -0
  282. package/dist/graphics/scene/model/model.d.ts +11 -0
  283. package/dist/graphics/scene/model/model.js +3 -0
  284. package/dist/graphics/scene/model/model.js.map +1 -0
  285. package/dist/graphics/scene/model/public.d.ts +1 -0
  286. package/dist/graphics/scene/model/public.js +2 -0
  287. package/dist/graphics/scene/model/public.js.map +1 -0
  288. package/dist/graphics/scene/model/shape/convex-hull.d.ts +36 -0
  289. package/dist/graphics/scene/model/shape/convex-hull.js +152 -0
  290. package/dist/graphics/scene/model/shape/convex-hull.js.map +1 -0
  291. package/dist/graphics/scene/model/shape/convex-hull.test.d.ts +1 -0
  292. package/dist/graphics/scene/model/shape/convex-hull.test.js +78 -0
  293. package/dist/graphics/scene/model/shape/convex-hull.test.js.map +1 -0
  294. package/dist/graphics/scene/model/shape/shape-geometry-plugin.d.ts +631 -0
  295. package/dist/graphics/scene/model/shape/shape-geometry-plugin.js +61 -0
  296. package/dist/graphics/scene/model/shape/shape-geometry-plugin.js.map +1 -0
  297. package/dist/graphics/scene/model/shape/shape-mesh.d.ts +34 -0
  298. package/dist/graphics/scene/model/shape/shape-mesh.js +142 -0
  299. package/dist/graphics/scene/model/shape/shape-mesh.js.map +1 -0
  300. package/dist/graphics/scene/model/shape/upload-shape-mesh.d.ts +9 -0
  301. package/dist/graphics/scene/model/shape/upload-shape-mesh.js +12 -0
  302. package/dist/graphics/scene/model/shape/upload-shape-mesh.js.map +1 -0
  303. package/dist/graphics/scene/model/world-bounds-plugin.d.ts +909 -0
  304. package/dist/graphics/scene/model/world-bounds-plugin.js +93 -0
  305. package/dist/graphics/scene/model/world-bounds-plugin.js.map +1 -0
  306. package/dist/graphics/scene/node/node-data-plugin.d.ts +113 -0
  307. package/dist/graphics/scene/node/node-data-plugin.js +27 -0
  308. package/dist/graphics/scene/node/node-data-plugin.js.map +1 -0
  309. package/dist/graphics/scene/node/node-plugin.d.ts +102 -0
  310. package/dist/graphics/scene/node/node-plugin.js +12 -0
  311. package/dist/graphics/scene/node/node-plugin.js.map +1 -0
  312. package/dist/graphics/scene/node/node.d.ts +19 -0
  313. package/dist/graphics/scene/node/node.js +3 -0
  314. package/dist/graphics/scene/node/node.js.map +1 -0
  315. package/dist/graphics/scene/node/public.d.ts +1 -0
  316. package/dist/graphics/scene/node/public.js +2 -0
  317. package/dist/graphics/scene/node/public.js.map +1 -0
  318. package/dist/graphics/scene/node/transform-plugin.d.ts +123 -0
  319. package/dist/graphics/scene/node/transform-plugin.js +65 -0
  320. package/dist/graphics/scene/node/transform-plugin.js.map +1 -0
  321. package/dist/graphics/scene/scene-plugin.d.ts +461 -0
  322. package/dist/graphics/scene/scene-plugin.js +19 -0
  323. package/dist/graphics/scene/scene-plugin.js.map +1 -0
  324. package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.d.ts +7 -0
  325. package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js +19 -0
  326. package/dist/graphics/scene/scene-uniforms/create-bind-group-layout.js.map +1 -0
  327. package/dist/graphics/scene/scene-uniforms/public.d.ts +3 -0
  328. package/dist/graphics/scene/scene-uniforms/public.js +5 -0
  329. package/dist/graphics/scene/scene-uniforms/public.js.map +1 -0
  330. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.d.ts +137 -0
  331. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js +59 -0
  332. package/dist/graphics/scene/scene-uniforms/scene-uniforms-plugin.js.map +1 -0
  333. package/dist/graphics/scene/scene-uniforms/scene-uniforms.d.ts +11 -0
  334. package/dist/graphics/scene/scene-uniforms/scene-uniforms.js +3 -0
  335. package/dist/graphics/scene/scene-uniforms/scene-uniforms.js.map +1 -0
  336. package/dist/graphics/scene/scene-uniforms/schema.d.ts +56 -0
  337. package/dist/graphics/scene/scene-uniforms/schema.js +15 -0
  338. package/dist/graphics/scene/scene-uniforms/schema.js.map +1 -0
  339. package/dist/index.d.ts +53 -0
  340. package/dist/index.js +56 -0
  341. package/dist/index.js.map +1 -0
  342. package/dist/material/material-plugin.d.ts +221 -0
  343. package/dist/material/material-plugin.js +60 -0
  344. package/dist/material/material-plugin.js.map +1 -0
  345. package/dist/material/material.d.ts +31 -0
  346. package/dist/material/material.js +3 -0
  347. package/dist/material/material.js.map +1 -0
  348. package/dist/material/public.d.ts +2 -0
  349. package/dist/material/public.js +4 -0
  350. package/dist/material/public.js.map +1 -0
  351. package/dist/material/standard-materials.d.ts +3 -0
  352. package/dist/material/standard-materials.js +35 -0
  353. package/dist/material/standard-materials.js.map +1 -0
  354. package/dist/physics/body/body-type/body-type.d.ts +10 -0
  355. package/dist/physics/body/body-type/body-type.js +3 -0
  356. package/dist/physics/body/body-type/body-type.js.map +1 -0
  357. package/dist/physics/body/body-type/is-dynamic.d.ts +3 -0
  358. package/dist/physics/body/body-type/is-dynamic.js +6 -0
  359. package/dist/physics/body/body-type/is-dynamic.js.map +1 -0
  360. package/dist/physics/body/body-type/public.d.ts +2 -0
  361. package/dist/physics/body/body-type/public.js +4 -0
  362. package/dist/physics/body/body-type/public.js.map +1 -0
  363. package/dist/physics/body/body-type/schema.d.ts +4 -0
  364. package/dist/physics/body/body-type/schema.js +3 -0
  365. package/dist/physics/body/body-type/schema.js.map +1 -0
  366. package/dist/physics/body/collider-mesh.d.ts +11 -0
  367. package/dist/physics/body/collider-mesh.js +3 -0
  368. package/dist/physics/body/collider-mesh.js.map +1 -0
  369. package/dist/physics/body/collider-shape/collider-shape.d.ts +15 -0
  370. package/dist/physics/body/collider-shape/collider-shape.js +3 -0
  371. package/dist/physics/body/collider-shape/collider-shape.js.map +1 -0
  372. package/dist/physics/body/collider-shape/list.d.ts +3 -0
  373. package/dist/physics/body/collider-shape/list.js +5 -0
  374. package/dist/physics/body/collider-shape/list.js.map +1 -0
  375. package/dist/physics/body/collider-shape/mass-properties.d.ts +10 -0
  376. package/dist/physics/body/collider-shape/mass-properties.js +48 -0
  377. package/dist/physics/body/collider-shape/mass-properties.js.map +1 -0
  378. package/dist/physics/body/collider-shape/public.d.ts +4 -0
  379. package/dist/physics/body/collider-shape/public.js +6 -0
  380. package/dist/physics/body/collider-shape/public.js.map +1 -0
  381. package/dist/physics/body/collider-shape/schema.d.ts +4 -0
  382. package/dist/physics/body/collider-shape/schema.js +3 -0
  383. package/dist/physics/body/collider-shape/schema.js.map +1 -0
  384. package/dist/physics/body/collider-shape/to-index.d.ts +3 -0
  385. package/dist/physics/body/collider-shape/to-index.js +6 -0
  386. package/dist/physics/body/collider-shape/to-index.js.map +1 -0
  387. package/dist/physics/body/rigid-body.d.ts +23 -0
  388. package/dist/physics/body/rigid-body.js +3 -0
  389. package/dist/physics/body/rigid-body.js.map +1 -0
  390. package/dist/physics/body/static-collider.d.ts +25 -0
  391. package/dist/physics/body/static-collider.js +3 -0
  392. package/dist/physics/body/static-collider.js.map +1 -0
  393. package/dist/physics/joint/joint-plugin.d.ts +88 -0
  394. package/dist/physics/joint/joint-plugin.js +32 -0
  395. package/dist/physics/joint/joint-plugin.js.map +1 -0
  396. package/dist/physics/joint/joint-type/joint-type.d.ts +15 -0
  397. package/dist/physics/joint/joint-type/joint-type.js +3 -0
  398. package/dist/physics/joint/joint-type/joint-type.js.map +1 -0
  399. package/dist/physics/joint/joint-type/public.d.ts +1 -0
  400. package/dist/physics/joint/joint-type/public.js +3 -0
  401. package/dist/physics/joint/joint-type/public.js.map +1 -0
  402. package/dist/physics/joint/joint-type/schema.d.ts +4 -0
  403. package/dist/physics/joint/joint-type/schema.js +3 -0
  404. package/dist/physics/joint/joint-type/schema.js.map +1 -0
  405. package/dist/physics/joint/joint.d.ts +24 -0
  406. package/dist/physics/joint/joint.js +3 -0
  407. package/dist/physics/joint/joint.js.map +1 -0
  408. package/dist/physics/physics-clock-plugin.d.ts +86 -0
  409. package/dist/physics/physics-clock-plugin.js +37 -0
  410. package/dist/physics/physics-clock-plugin.js.map +1 -0
  411. package/dist/physics/physics-clock.test.d.ts +1 -0
  412. package/dist/physics/physics-clock.test.js +45 -0
  413. package/dist/physics/physics-clock.test.js.map +1 -0
  414. package/dist/physics/physics-data-plugin.d.ts +348 -0
  415. package/dist/physics/physics-data-plugin.js +71 -0
  416. package/dist/physics/physics-data-plugin.js.map +1 -0
  417. package/dist/physics/ragdoll/fit-bone-capsules.d.ts +39 -0
  418. package/dist/physics/ragdoll/fit-bone-capsules.js +87 -0
  419. package/dist/physics/ragdoll/fit-bone-capsules.js.map +1 -0
  420. package/dist/physics/ragdoll/fit-bone-capsules.test.d.ts +1 -0
  421. package/dist/physics/ragdoll/fit-bone-capsules.test.js +67 -0
  422. package/dist/physics/ragdoll/fit-bone-capsules.test.js.map +1 -0
  423. package/dist/physics/solvers/jolt-solver-plugin.d.ts +465 -0
  424. package/dist/physics/solvers/jolt-solver-plugin.js +440 -0
  425. package/dist/physics/solvers/jolt-solver-plugin.js.map +1 -0
  426. package/dist/physics/solvers/rapier-jolt.benchmark.test.d.ts +1 -0
  427. package/dist/physics/solvers/rapier-jolt.benchmark.test.js +35 -0
  428. package/dist/physics/solvers/rapier-jolt.benchmark.test.js.map +1 -0
  429. package/dist/physics/solvers/rapier-solver-plugin.d.ts +444 -0
  430. package/dist/physics/solvers/rapier-solver-plugin.js +284 -0
  431. package/dist/physics/solvers/rapier-solver-plugin.js.map +1 -0
  432. package/dist/physics/solvers/solver-benchmark.d.ts +45 -0
  433. package/dist/physics/solvers/solver-benchmark.js +115 -0
  434. package/dist/physics/solvers/solver-benchmark.js.map +1 -0
  435. package/package.json +34 -0
  436. package/src/core/core-plugin.ts +92 -0
  437. package/src/core/frame-time/frame-time-plugin.ts +44 -0
  438. package/src/core/frame-time/frame-time.ts +21 -0
  439. package/src/core/frame-time/public.ts +3 -0
  440. package/src/graphics/animation/animation-data-plugin.ts +119 -0
  441. package/src/graphics/animation/animation-plugin.test.ts +161 -0
  442. package/src/graphics/animation/animation-plugin.ts +26 -0
  443. package/src/graphics/animation/animation-track/animation-track.ts +17 -0
  444. package/src/graphics/animation/animation-track/componentwise-lerp.ts +24 -0
  445. package/src/graphics/animation/animation-track/interpolate.ts +24 -0
  446. package/src/graphics/animation/animation-track/public.ts +3 -0
  447. package/src/graphics/animation/animation-track/sample.ts +48 -0
  448. package/src/graphics/animation/interpolation-mode/interpolation-mode.ts +8 -0
  449. package/src/graphics/animation/interpolation-mode/public.ts +3 -0
  450. package/src/graphics/animation/interpolation-mode/schema.ts +5 -0
  451. package/src/graphics/camera/camera-plugin.ts +37 -0
  452. package/src/graphics/camera/camera.ts +8 -0
  453. package/src/graphics/camera/orbit/attach-orbit-drag.ts +62 -0
  454. package/src/graphics/camera/orbit/orbit-data-plugin.ts +44 -0
  455. package/src/graphics/camera/orbit/orbit-plugin.ts +13 -0
  456. package/src/graphics/camera/orbit/orbit-system-plugin.ts +74 -0
  457. package/src/graphics/camera/orbit/orbit.ts +36 -0
  458. package/src/graphics/camera/orbit/public.ts +7 -0
  459. package/src/graphics/camera/public.ts +6 -0
  460. package/src/graphics/camera/schema.ts +21 -0
  461. package/src/graphics/camera/screen-to-world-ray.ts +47 -0
  462. package/src/graphics/camera/to-view-projection.ts +29 -0
  463. package/src/graphics/graphics-plugin.ts +108 -0
  464. package/src/graphics/picking/pick-hit.ts +13 -0
  465. package/src/graphics/picking/picking-plugin.ts +101 -0
  466. package/src/graphics/plugins.md +120 -0
  467. package/src/graphics/rendering/bone-collider-plugin.ts +182 -0
  468. package/src/graphics/rendering/display-transform-plugin.ts +26 -0
  469. package/src/graphics/rendering/ibl-render/brdf.wgsl.ts +43 -0
  470. package/src/graphics/rendering/ibl-render/ibl/brdf-lut.ts +101 -0
  471. package/src/graphics/rendering/ibl-render/ibl/build-ibl-resources.ts +57 -0
  472. package/src/graphics/rendering/ibl-render/ibl/create-cubemap.ts +17 -0
  473. package/src/graphics/rendering/ibl-render/ibl/cube-face-view.ts +11 -0
  474. package/src/graphics/rendering/ibl-render/ibl/cubemap-sample-view.ts +9 -0
  475. package/src/graphics/rendering/ibl-render/ibl/environment.ts +190 -0
  476. package/src/graphics/rendering/ibl-render/ibl/float-to-half.ts +35 -0
  477. package/src/graphics/rendering/ibl-render/ibl/ibl-math.wgsl.ts +60 -0
  478. package/src/graphics/rendering/ibl-render/ibl/irradiance.ts +105 -0
  479. package/src/graphics/rendering/ibl-render/ibl/parse-hdr.ts +108 -0
  480. package/src/graphics/rendering/ibl-render/ibl/prefilter.ts +121 -0
  481. package/src/graphics/rendering/ibl-render/ibl/render-helpers.ts +17 -0
  482. package/src/graphics/rendering/ibl-render/ibl-render-plugin.ts +415 -0
  483. package/src/graphics/rendering/ibl-render/ibl-shader.wgsl.ts +185 -0
  484. package/src/graphics/rendering/ibl-render/skybox-shader.wgsl.ts +51 -0
  485. package/src/graphics/rendering/interpolation-plugin.ts +97 -0
  486. package/src/graphics/rendering/interpolation.test.ts +52 -0
  487. package/src/graphics/rendering/jolt-ragdoll-plugin.ts +174 -0
  488. package/src/graphics/rendering/material-gpu/material-arrays.ts +113 -0
  489. package/src/graphics/rendering/material-gpu/material-bind-group.ts +61 -0
  490. package/src/graphics/rendering/material-gpu/material-gpu-plugin.ts +95 -0
  491. package/src/graphics/rendering/model-collider-plugin.ts +77 -0
  492. package/src/graphics/rendering/pbr-core-plugin.ts +40 -0
  493. package/src/graphics/rendering/pbr-render/pbr-array-shader.wgsl.ts +146 -0
  494. package/src/graphics/rendering/pbr-render/pbr-render-plugin.ts +247 -0
  495. package/src/graphics/rendering/pbr-render/physics-bridge-plugin.ts +106 -0
  496. package/src/graphics/rendering/ragdoll-trigger-plugin.ts +21 -0
  497. package/src/graphics/rendering/rendering-plugin.ts +3 -0
  498. package/src/graphics/rendering/skinning/skinning-attributes/layout.ts +20 -0
  499. package/src/graphics/rendering/skinning/skinning-attributes/public.ts +3 -0
  500. package/src/graphics/rendering/skinning/skinning-attributes/skinning-attributes.ts +3 -0
  501. package/src/graphics/rendering/skinning/skinning-plugin.ts +213 -0
  502. package/src/graphics/rendering/standard-vertex/layout.ts +19 -0
  503. package/src/graphics/rendering/standard-vertex/public.ts +4 -0
  504. package/src/graphics/rendering/standard-vertex/schema.ts +17 -0
  505. package/src/graphics/rendering/standard-vertex/standard-vertex.ts +8 -0
  506. package/src/graphics/rendering/visible-material/color-material-options.ts +10 -0
  507. package/src/graphics/rendering/visible-material/create-bind-group-layout.ts +35 -0
  508. package/src/graphics/rendering/visible-material/create-color-bind-group.ts +40 -0
  509. package/src/graphics/rendering/visible-material/public.ts +6 -0
  510. package/src/graphics/rendering/visible-material/schema.ts +25 -0
  511. package/src/graphics/rendering/visible-material/visible-material.ts +8 -0
  512. package/src/graphics/scene/light/light-plugin.ts +37 -0
  513. package/src/graphics/scene/light/light.ts +18 -0
  514. package/src/graphics/scene/light/public.ts +1 -0
  515. package/src/graphics/scene/model/geometry/geometry.ts +12 -0
  516. package/src/graphics/scene/model/geometry/public.ts +4 -0
  517. package/src/graphics/scene/model/gltf/accessor-view.ts +53 -0
  518. package/src/graphics/scene/model/gltf/build-material-bind-group.ts +110 -0
  519. package/src/graphics/scene/model/gltf/compute-world-matrices.ts +43 -0
  520. package/src/graphics/scene/model/gltf/create-color-material.ts +47 -0
  521. package/src/graphics/scene/model/gltf/decode-images.ts +93 -0
  522. package/src/graphics/scene/model/gltf/gltf-schema.ts +161 -0
  523. package/src/graphics/scene/model/gltf/load-gltf-model.ts +220 -0
  524. package/src/graphics/scene/model/gltf/pack-vertex-buffer.ts +116 -0
  525. package/src/graphics/scene/model/gltf/parse-animations.ts +66 -0
  526. package/src/graphics/scene/model/gltf/parse-glb.ts +51 -0
  527. package/src/graphics/scene/model/gltf/parse-skin.ts +67 -0
  528. package/src/graphics/scene/model/model-loader-plugin.ts +131 -0
  529. package/src/graphics/scene/model/model-plugin.ts +46 -0
  530. package/src/graphics/scene/model/model.ts +15 -0
  531. package/src/graphics/scene/model/public.ts +1 -0
  532. package/src/graphics/scene/model/shape/convex-hull.test.ts +72 -0
  533. package/src/graphics/scene/model/shape/convex-hull.ts +141 -0
  534. package/src/graphics/scene/model/shape/shape-geometry-plugin.ts +61 -0
  535. package/src/graphics/scene/model/shape/shape-mesh.ts +150 -0
  536. package/src/graphics/scene/model/shape/upload-shape-mesh.ts +14 -0
  537. package/src/graphics/scene/model/world-bounds-plugin.ts +88 -0
  538. package/src/graphics/scene/node/node-data-plugin.ts +28 -0
  539. package/src/graphics/scene/node/node-plugin.ts +13 -0
  540. package/src/graphics/scene/node/node.ts +23 -0
  541. package/src/graphics/scene/node/public.ts +1 -0
  542. package/src/graphics/scene/node/transform-plugin.ts +72 -0
  543. package/src/graphics/scene/scene-plugin.ts +20 -0
  544. package/src/graphics/scene/scene-uniforms/create-bind-group-layout.ts +19 -0
  545. package/src/graphics/scene/scene-uniforms/public.ts +5 -0
  546. package/src/graphics/scene/scene-uniforms/scene-uniforms-plugin.ts +64 -0
  547. package/src/graphics/scene/scene-uniforms/scene-uniforms.ts +15 -0
  548. package/src/graphics/scene/scene-uniforms/schema.ts +17 -0
  549. package/src/index.ts +72 -0
  550. package/src/material/material-plugin.ts +61 -0
  551. package/src/material/material.ts +38 -0
  552. package/src/material/public.ts +4 -0
  553. package/src/material/standard-materials.ts +43 -0
  554. package/src/physics/README.md +71 -0
  555. package/src/physics/body/body-type/body-type.ts +14 -0
  556. package/src/physics/body/body-type/is-dynamic.ts +8 -0
  557. package/src/physics/body/body-type/public.ts +4 -0
  558. package/src/physics/body/body-type/schema.ts +5 -0
  559. package/src/physics/body/collider-mesh.ts +13 -0
  560. package/src/physics/body/collider-shape/collider-shape.ts +19 -0
  561. package/src/physics/body/collider-shape/list.ts +7 -0
  562. package/src/physics/body/collider-shape/mass-properties.ts +47 -0
  563. package/src/physics/body/collider-shape/public.ts +6 -0
  564. package/src/physics/body/collider-shape/schema.ts +5 -0
  565. package/src/physics/body/collider-shape/to-index.ts +8 -0
  566. package/src/physics/body/rigid-body.ts +26 -0
  567. package/src/physics/body/static-collider.ts +28 -0
  568. package/src/physics/joint/joint-plugin.ts +33 -0
  569. package/src/physics/joint/joint-type/joint-type.ts +19 -0
  570. package/src/physics/joint/joint-type/public.ts +3 -0
  571. package/src/physics/joint/joint-type/schema.ts +5 -0
  572. package/src/physics/joint/joint.ts +27 -0
  573. package/src/physics/physics-clock-plugin.ts +61 -0
  574. package/src/physics/physics-clock.test.ts +55 -0
  575. package/src/physics/physics-data-plugin.ts +73 -0
  576. package/src/physics/ragdoll/fit-bone-capsules.test.ts +66 -0
  577. package/src/physics/ragdoll/fit-bone-capsules.ts +106 -0
  578. package/src/physics/solvers/README.md +63 -0
  579. package/src/physics/solvers/jolt-solver-plugin.ts +382 -0
  580. package/src/physics/solvers/rapier-jolt.benchmark.test.ts +39 -0
  581. package/src/physics/solvers/rapier-solver-plugin.ts +251 -0
  582. package/src/physics/solvers/solver-benchmark.ts +172 -0
  583. package/tsconfig.json +25 -0
  584. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,120 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ import { Database } from "@adobe/data/ecs";
3
+ import { pbrCore } from "../../rendering/pbr-core-plugin.js";
4
+ import { animation } from "../../animation/animation-plugin.js";
5
+ import { core } from "../../../core/core-plugin.js";
6
+ import { Model } from "./model.js";
7
+ import { loadGltfPrimitives } from "./gltf/load-gltf-model.js";
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
21
+ */
22
+ 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
+ },
36
+ transactions: {
37
+ insertLoadedPrimitives(t, args) {
38
+ for (const p of args.primitives) {
39
+ const materialId = t.archetypes._VisibleMaterial.insert({
40
+ ephemeral: true,
41
+ _materialBindGroup: p.pbrMaterialBindGroup,
42
+ _geometry: args.geometry,
43
+ });
44
+ t.archetypes._PbrPrimitive.insert({
45
+ ephemeral: true,
46
+ _geometry: args.geometry,
47
+ _material: materialId,
48
+ _vertexBuffer: p.pbrVertexBuffer,
49
+ _skinVertexBuffer: p.pbrSkinVertexBuffer,
50
+ _indexBuffer: p.pbrIndexBuffer,
51
+ _indexCount: p.pbrIndexCount,
52
+ _indexFormat: p.pbrIndexFormat,
53
+ _nodeLocalMatrix: p.pbrNodeLocalMatrix,
54
+ });
55
+ }
56
+ const clipRefs = [];
57
+ for (const anim of args.animations) {
58
+ if (anim.tracks.length === 0)
59
+ continue;
60
+ const clipId = t.archetypes.AnimationClip.insert({
61
+ animationClipTracks: anim.tracks,
62
+ animationClipDuration: anim.duration,
63
+ });
64
+ clipRefs.push(clipId);
65
+ }
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,
74
+ });
75
+ },
76
+ },
77
+ systems: {
78
+ modelLoadSystem: {
79
+ create: db => {
80
+ const inFlight = new Set();
81
+ return () => {
82
+ const { device } = db.store.resources;
83
+ if (!device)
84
+ return;
85
+ for (const arch of db.store.queryArchetypes(["modelUrl"])) {
86
+ const ids = arch.columns.id;
87
+ const urls = arch.columns.modelUrl;
88
+ for (let i = 0; i < arch.rowCount; i++) {
89
+ const id = ids.get(i);
90
+ if (inFlight.has(id))
91
+ continue;
92
+ const url = urls.get(i);
93
+ if (!url)
94
+ continue; // procedural geometries (shapes) carry no URL
95
+ inFlight.add(id);
96
+ loadGltfPrimitives(device, url)
97
+ .then(loaded => {
98
+ db.transactions.insertLoadedPrimitives({
99
+ geometry: id,
100
+ bounds: loaded.bounds,
101
+ primitives: loaded.primitives,
102
+ skinJointTemplate: loaded.skin?.jointTemplate ?? [],
103
+ skinInverseBindMatrices: loaded.skin?.inverseBindMatrices ?? null,
104
+ animations: loaded.animations,
105
+ collision: loaded.collision,
106
+ skinVertices: loaded.skinVertices,
107
+ });
108
+ })
109
+ .catch(err => {
110
+ console.error("[modelLoader] Failed to load model", urls.get(i), err);
111
+ });
112
+ }
113
+ }
114
+ };
115
+ },
116
+ schedule: { during: ["preUpdate"] },
117
+ },
118
+ },
119
+ });
120
+ //# sourceMappingURL=model-loader-plugin.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,352 @@
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
+ };
@@ -0,0 +1,39 @@
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
+ });
39
+ //# sourceMappingURL=model-plugin.js.map
@@ -0,0 +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"}
@@ -0,0 +1,11 @@
1
+ import type { Entity } from "@adobe/data/ecs";
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
+ */
8
+ export interface Model extends Node {
9
+ geometry: Entity;
10
+ }
11
+ export * as Model from "./public.js";
@@ -0,0 +1,3 @@
1
+ // © 2026 Adobe. MIT License. See /LICENSE for details.
2
+ export * as Model from "./public.js";
3
+ //# sourceMappingURL=model.js.map
@@ -0,0 +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"}
@@ -0,0 +1 @@
1
+ export { model as plugin } from "./model-plugin.js";
@@ -0,0 +1,2 @@
1
+ export { model as plugin } from "./model-plugin.js";
2
+ //# sourceMappingURL=public.js.map
@@ -0,0 +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"}
@@ -0,0 +1,36 @@
1
+ import type { ShapeMesh } from "./shape-mesh.js";
2
+ /**
3
+ * Faceted render mesh of the convex hull of a point cloud (flat per-face normals,
4
+ * StandardVertex layout). A convex collider is *authored* as a point cloud — the
5
+ * physics engine builds the collision hull from the same points — but rendering
6
+ * needs a triangulated surface, which this computes. Phase-2 auto-hull (hull of a
7
+ * render mesh's vertices) reuses it.
8
+ *
9
+ * Incremental 3D hull: seed a tetrahedron, then fold each remaining point in by
10
+ * deleting the faces it can see and bridging the horizon to it. Every face's
11
+ * normal is oriented away from a fixed interior point (the seed centroid, always
12
+ * strictly inside a convex hull) — so orientation is robust without half-edge
13
+ * bookkeeping. Authored hulls are small (tens of points), so the simple O(n·f)
14
+ * form is plenty fast. Degenerate input (< 4 points or coplanar) → empty mesh.
15
+ */
16
+ interface Face {
17
+ a: number;
18
+ b: number;
19
+ c: number;
20
+ nx: number;
21
+ ny: number;
22
+ nz: number;
23
+ }
24
+ export declare function convexHullMesh(points: Float32Array): ShapeMesh;
25
+ /**
26
+ * The deduplicated hull vertices (the extreme points) of a cloud — a minimal
27
+ * point set whose convex hull equals the cloud's. Used to feed a physics engine's
28
+ * convex-hull builder a *simplified* collider from a detailed mesh (thousands of
29
+ * verts → a few dozen). Empty for degenerate input.
30
+ */
31
+ export declare function hullVertices(points: Float32Array): Float32Array;
32
+ /** The hull's triangular faces, each normal oriented outward, or null if the
33
+ * point cloud is degenerate (fewer than 4 points, or all coplanar). Exported
34
+ * for tests; rendering goes through {@link convexHullMesh}. */
35
+ export declare function hullFaces(points: Float32Array): Face[] | null;
36
+ export {};