aigpu 0.3.1

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 (491) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +85 -0
  3. package/bin/aigpu.js +15 -0
  4. package/client.d.ts +15 -0
  5. package/dist/agent-tools.d.ts +61 -0
  6. package/dist/agent-tools.d.ts.map +1 -0
  7. package/dist/agent-tools.js +107 -0
  8. package/dist/agent-tools.js.map +1 -0
  9. package/dist/agent.d.ts +56 -0
  10. package/dist/agent.d.ts.map +1 -0
  11. package/dist/agent.js +243 -0
  12. package/dist/agent.js.map +1 -0
  13. package/dist/api-types.d.ts +56 -0
  14. package/dist/api-types.d.ts.map +1 -0
  15. package/dist/api-types.js +2 -0
  16. package/dist/api-types.js.map +1 -0
  17. package/dist/bind-cache.d.ts +19 -0
  18. package/dist/bind-cache.d.ts.map +1 -0
  19. package/dist/bind-cache.js +43 -0
  20. package/dist/bind-cache.js.map +1 -0
  21. package/dist/bundle.d.ts +30 -0
  22. package/dist/bundle.d.ts.map +1 -0
  23. package/dist/bundle.js +127 -0
  24. package/dist/bundle.js.map +1 -0
  25. package/dist/claim-validation-encode.d.ts +14 -0
  26. package/dist/claim-validation-encode.d.ts.map +1 -0
  27. package/dist/claim-validation-encode.js +28 -0
  28. package/dist/claim-validation-encode.js.map +1 -0
  29. package/dist/claim-validation.d.ts +73 -0
  30. package/dist/claim-validation.d.ts.map +1 -0
  31. package/dist/claim-validation.js +135 -0
  32. package/dist/claim-validation.js.map +1 -0
  33. package/dist/cli/bin/aigpu.js +101 -0
  34. package/dist/cli/lib/check/run.js +153 -0
  35. package/dist/cli/lib/docs/commands/cat.js +12 -0
  36. package/dist/cli/lib/docs/commands/find.js +180 -0
  37. package/dist/cli/lib/docs/commands/grep.js +49 -0
  38. package/dist/cli/lib/docs/commands/ls.js +41 -0
  39. package/dist/cli/lib/docs/commands/path.js +12 -0
  40. package/dist/cli/lib/docs/commands/resolve.js +41 -0
  41. package/dist/cli/lib/docs/commands/shared.js +13 -0
  42. package/dist/cli/lib/docs/commands/symbols.js +25 -0
  43. package/dist/cli/lib/docs/errors.js +8 -0
  44. package/dist/cli/lib/docs/generate/check-drift.js +61 -0
  45. package/dist/cli/lib/docs/generate/cli.js +12 -0
  46. package/dist/cli/lib/docs/generate/generate.js +113 -0
  47. package/dist/cli/lib/docs/generate/manifest.js +218 -0
  48. package/dist/cli/lib/docs/generate/skill.js +150 -0
  49. package/dist/cli/lib/docs/help.js +21 -0
  50. package/dist/cli/lib/docs/index.js +62 -0
  51. package/dist/cli/lib/docs/model.js +7 -0
  52. package/dist/cli/lib/docs/run.js +24 -0
  53. package/dist/cli/lib/docs/service.js +119 -0
  54. package/dist/cli/lib/doctor/run.js +236 -0
  55. package/dist/cli/lib/examples/errors.js +13 -0
  56. package/dist/cli/lib/examples/hashing.js +9 -0
  57. package/dist/cli/lib/examples/help.js +13 -0
  58. package/dist/cli/lib/examples/local-source.js +142 -0
  59. package/dist/cli/lib/examples/paths.js +12 -0
  60. package/dist/cli/lib/examples/pull.js +58 -0
  61. package/dist/cli/lib/examples/run.js +71 -0
  62. package/dist/cli/lib/examples/search.js +6 -0
  63. package/dist/cli/lib/examples/service.js +118 -0
  64. package/dist/cli/lib/generated/docs-manifest.generated.js +4758 -0
  65. package/dist/cli/lib/install-dawn/run.js +24 -0
  66. package/dist/cli/lib/install-software-renderer/run.js +17 -0
  67. package/dist/cli/lib/mcp/http.js +93 -0
  68. package/dist/cli/lib/mcp/server.js +258 -0
  69. package/dist/cli/lib/mcp/stdio.js +34 -0
  70. package/dist/cli/lib/snapshot/png.js +62 -0
  71. package/dist/cli/lib/snapshot/render.js +22 -0
  72. package/dist/cli/lib/snapshot/run.js +79 -0
  73. package/dist/cli/lib/snapshot/shaders.js +11 -0
  74. package/dist/cli/package.json +4 -0
  75. package/dist/client.d.ts +12 -0
  76. package/dist/client.d.ts.map +1 -0
  77. package/dist/client.js +2 -0
  78. package/dist/client.js.map +1 -0
  79. package/dist/clock.d.ts +26 -0
  80. package/dist/clock.d.ts.map +1 -0
  81. package/dist/clock.js +50 -0
  82. package/dist/clock.js.map +1 -0
  83. package/dist/compute.d.ts +41 -0
  84. package/dist/compute.d.ts.map +1 -0
  85. package/dist/compute.js +132 -0
  86. package/dist/compute.js.map +1 -0
  87. package/dist/core/render-bundle.d.ts +30 -0
  88. package/dist/core/render-bundle.d.ts.map +1 -0
  89. package/dist/core/render-bundle.js +39 -0
  90. package/dist/core/render-bundle.js.map +1 -0
  91. package/dist/core/storage-buffer.d.ts +81 -0
  92. package/dist/core/storage-buffer.d.ts.map +1 -0
  93. package/dist/core/storage-buffer.js +91 -0
  94. package/dist/core/storage-buffer.js.map +1 -0
  95. package/dist/core/structured-uniform.d.ts +33 -0
  96. package/dist/core/structured-uniform.d.ts.map +1 -0
  97. package/dist/core/structured-uniform.js +110 -0
  98. package/dist/core/structured-uniform.js.map +1 -0
  99. package/dist/core/uniform-pool-internals.d.ts +12 -0
  100. package/dist/core/uniform-pool-internals.d.ts.map +1 -0
  101. package/dist/core/uniform-pool-internals.js +24 -0
  102. package/dist/core/uniform-pool-internals.js.map +1 -0
  103. package/dist/core/uniform-pool-types.d.ts +22 -0
  104. package/dist/core/uniform-pool-types.d.ts.map +1 -0
  105. package/dist/core/uniform-pool-types.js +2 -0
  106. package/dist/core/uniform-pool-types.js.map +1 -0
  107. package/dist/core/uniform-pool.d.ts +22 -0
  108. package/dist/core/uniform-pool.d.ts.map +1 -0
  109. package/dist/core/uniform-pool.js +128 -0
  110. package/dist/core/uniform-pool.js.map +1 -0
  111. package/dist/core/uniform.d.ts +55 -0
  112. package/dist/core/uniform.d.ts.map +1 -0
  113. package/dist/core/uniform.js +64 -0
  114. package/dist/core/uniform.js.map +1 -0
  115. package/dist/core/wgsl-alignment.d.ts +24 -0
  116. package/dist/core/wgsl-alignment.d.ts.map +1 -0
  117. package/dist/core/wgsl-alignment.js +81 -0
  118. package/dist/core/wgsl-alignment.js.map +1 -0
  119. package/dist/core.d.ts +13 -0
  120. package/dist/core.d.ts.map +1 -0
  121. package/dist/core.js +7 -0
  122. package/dist/core.js.map +1 -0
  123. package/dist/dom.d.ts +37 -0
  124. package/dist/dom.d.ts.map +1 -0
  125. package/dist/dom.js +81 -0
  126. package/dist/dom.js.map +1 -0
  127. package/dist/draw-protocols.d.ts +36 -0
  128. package/dist/draw-protocols.d.ts.map +1 -0
  129. package/dist/draw-protocols.js +10 -0
  130. package/dist/draw-protocols.js.map +1 -0
  131. package/dist/draw.d.ts +248 -0
  132. package/dist/draw.d.ts.map +1 -0
  133. package/dist/draw.js +890 -0
  134. package/dist/draw.js.map +1 -0
  135. package/dist/effect.d.ts +53 -0
  136. package/dist/effect.d.ts.map +1 -0
  137. package/dist/effect.js +75 -0
  138. package/dist/effect.js.map +1 -0
  139. package/dist/entry-metadata.d.ts +16 -0
  140. package/dist/entry-metadata.d.ts.map +1 -0
  141. package/dist/entry-metadata.js +27 -0
  142. package/dist/entry-metadata.js.map +1 -0
  143. package/dist/errors.d.ts +96 -0
  144. package/dist/errors.d.ts.map +1 -0
  145. package/dist/errors.js +616 -0
  146. package/dist/errors.js.map +1 -0
  147. package/dist/frame-protocols.d.ts +107 -0
  148. package/dist/frame-protocols.d.ts.map +1 -0
  149. package/dist/frame-protocols.js +20 -0
  150. package/dist/frame-protocols.js.map +1 -0
  151. package/dist/frame-state.d.ts +32 -0
  152. package/dist/frame-state.d.ts.map +1 -0
  153. package/dist/frame-state.js +62 -0
  154. package/dist/frame-state.js.map +1 -0
  155. package/dist/frame.d.ts +127 -0
  156. package/dist/frame.d.ts.map +1 -0
  157. package/dist/frame.js +645 -0
  158. package/dist/frame.js.map +1 -0
  159. package/dist/group-claim.d.ts +9 -0
  160. package/dist/group-claim.d.ts.map +1 -0
  161. package/dist/group-claim.js +7 -0
  162. package/dist/group-claim.js.map +1 -0
  163. package/dist/index.d.ts +41 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +27 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/indirect.d.ts +39 -0
  168. package/dist/indirect.d.ts.map +1 -0
  169. package/dist/indirect.js +61 -0
  170. package/dist/indirect.js.map +1 -0
  171. package/dist/init-from-device.d.ts +11 -0
  172. package/dist/init-from-device.d.ts.map +1 -0
  173. package/dist/init-from-device.js +56 -0
  174. package/dist/init-from-device.js.map +1 -0
  175. package/dist/init.d.ts +12 -0
  176. package/dist/init.d.ts.map +1 -0
  177. package/dist/init.js +7 -0
  178. package/dist/init.js.map +1 -0
  179. package/dist/kernel.d.ts +104 -0
  180. package/dist/kernel.d.ts.map +1 -0
  181. package/dist/kernel.js +151 -0
  182. package/dist/kernel.js.map +1 -0
  183. package/dist/lifecycle.d.ts +10 -0
  184. package/dist/lifecycle.d.ts.map +1 -0
  185. package/dist/lifecycle.js +21 -0
  186. package/dist/lifecycle.js.map +1 -0
  187. package/dist/live-kernel.d.ts +48 -0
  188. package/dist/live-kernel.d.ts.map +1 -0
  189. package/dist/live-kernel.js +67 -0
  190. package/dist/live-kernel.js.map +1 -0
  191. package/dist/mock.d.ts +42 -0
  192. package/dist/mock.d.ts.map +1 -0
  193. package/dist/mock.js +29 -0
  194. package/dist/mock.js.map +1 -0
  195. package/dist/node.d.ts +48 -0
  196. package/dist/node.d.ts.map +1 -0
  197. package/dist/node.js +36 -0
  198. package/dist/node.js.map +1 -0
  199. package/dist/ping-pong.d.ts +19 -0
  200. package/dist/ping-pong.d.ts.map +1 -0
  201. package/dist/ping-pong.js +67 -0
  202. package/dist/ping-pong.js.map +1 -0
  203. package/dist/pipeline-store.d.ts +89 -0
  204. package/dist/pipeline-store.d.ts.map +1 -0
  205. package/dist/pipeline-store.js +366 -0
  206. package/dist/pipeline-store.js.map +1 -0
  207. package/dist/query-ring.d.ts +91 -0
  208. package/dist/query-ring.d.ts.map +1 -0
  209. package/dist/query-ring.js +178 -0
  210. package/dist/query-ring.js.map +1 -0
  211. package/dist/render-service.d.ts +23 -0
  212. package/dist/render-service.d.ts.map +1 -0
  213. package/dist/render-service.js +37 -0
  214. package/dist/render-service.js.map +1 -0
  215. package/dist/sampler.d.ts +19 -0
  216. package/dist/sampler.d.ts.map +1 -0
  217. package/dist/sampler.js +46 -0
  218. package/dist/sampler.js.map +1 -0
  219. package/dist/scene/camera.d.ts +91 -0
  220. package/dist/scene/camera.d.ts.map +1 -0
  221. package/dist/scene/camera.js +221 -0
  222. package/dist/scene/camera.js.map +1 -0
  223. package/dist/scene/geometries.d.ts +26 -0
  224. package/dist/scene/geometries.d.ts.map +1 -0
  225. package/dist/scene/geometries.js +26 -0
  226. package/dist/scene/geometries.js.map +1 -0
  227. package/dist/scene/geometry-descriptor.d.ts +120 -0
  228. package/dist/scene/geometry-descriptor.d.ts.map +1 -0
  229. package/dist/scene/geometry-descriptor.js +378 -0
  230. package/dist/scene/geometry-descriptor.js.map +1 -0
  231. package/dist/scene/geometry-recipe.d.ts +41 -0
  232. package/dist/scene/geometry-recipe.d.ts.map +1 -0
  233. package/dist/scene/geometry-recipe.js +40 -0
  234. package/dist/scene/geometry-recipe.js.map +1 -0
  235. package/dist/scene/geometry-src/camera-math.d.ts +6 -0
  236. package/dist/scene/geometry-src/camera-math.d.ts.map +1 -0
  237. package/dist/scene/geometry-src/camera-math.js +47 -0
  238. package/dist/scene/geometry-src/camera-math.js.map +1 -0
  239. package/dist/scene/geometry-src/camera.d.ts +10 -0
  240. package/dist/scene/geometry-src/camera.d.ts.map +1 -0
  241. package/dist/scene/geometry-src/camera.js +2 -0
  242. package/dist/scene/geometry-src/camera.js.map +1 -0
  243. package/dist/scene/geometry-src/capsule-data.d.ts +10 -0
  244. package/dist/scene/geometry-src/capsule-data.d.ts.map +1 -0
  245. package/dist/scene/geometry-src/capsule-data.js +61 -0
  246. package/dist/scene/geometry-src/capsule-data.js.map +1 -0
  247. package/dist/scene/geometry-src/cone-data.d.ts +13 -0
  248. package/dist/scene/geometry-src/cone-data.d.ts.map +1 -0
  249. package/dist/scene/geometry-src/cone-data.js +52 -0
  250. package/dist/scene/geometry-src/cone-data.js.map +1 -0
  251. package/dist/scene/geometry-src/cylinder-data.d.ts +14 -0
  252. package/dist/scene/geometry-src/cylinder-data.d.ts.map +1 -0
  253. package/dist/scene/geometry-src/cylinder-data.js +58 -0
  254. package/dist/scene/geometry-src/cylinder-data.js.map +1 -0
  255. package/dist/scene/geometry-src/deg-to-rad.d.ts +2 -0
  256. package/dist/scene/geometry-src/deg-to-rad.d.ts.map +1 -0
  257. package/dist/scene/geometry-src/deg-to-rad.js +4 -0
  258. package/dist/scene/geometry-src/deg-to-rad.js.map +1 -0
  259. package/dist/scene/geometry-src/disk-data.d.ts +12 -0
  260. package/dist/scene/geometry-src/disk-data.d.ts.map +1 -0
  261. package/dist/scene/geometry-src/disk-data.js +21 -0
  262. package/dist/scene/geometry-src/disk-data.js.map +1 -0
  263. package/dist/scene/geometry-src/errors.d.ts +3 -0
  264. package/dist/scene/geometry-src/errors.d.ts.map +1 -0
  265. package/dist/scene/geometry-src/errors.js +5 -0
  266. package/dist/scene/geometry-src/errors.js.map +1 -0
  267. package/dist/scene/geometry-src/icosphere-data.d.ts +8 -0
  268. package/dist/scene/geometry-src/icosphere-data.d.ts.map +1 -0
  269. package/dist/scene/geometry-src/icosphere-data.js +58 -0
  270. package/dist/scene/geometry-src/icosphere-data.js.map +1 -0
  271. package/dist/scene/geometry-src/index.d.ts +36 -0
  272. package/dist/scene/geometry-src/index.d.ts.map +1 -0
  273. package/dist/scene/geometry-src/index.js +21 -0
  274. package/dist/scene/geometry-src/index.js.map +1 -0
  275. package/dist/scene/geometry-src/mesh-box.d.ts +8 -0
  276. package/dist/scene/geometry-src/mesh-box.d.ts.map +1 -0
  277. package/dist/scene/geometry-src/mesh-box.js +57 -0
  278. package/dist/scene/geometry-src/mesh-box.js.map +1 -0
  279. package/dist/scene/geometry-src/mesh-cache.d.ts +4 -0
  280. package/dist/scene/geometry-src/mesh-cache.d.ts.map +1 -0
  281. package/dist/scene/geometry-src/mesh-cache.js +14 -0
  282. package/dist/scene/geometry-src/mesh-cache.js.map +1 -0
  283. package/dist/scene/geometry-src/mesh-capsule.d.ts +14 -0
  284. package/dist/scene/geometry-src/mesh-capsule.d.ts.map +1 -0
  285. package/dist/scene/geometry-src/mesh-capsule.js +52 -0
  286. package/dist/scene/geometry-src/mesh-capsule.js.map +1 -0
  287. package/dist/scene/geometry-src/mesh-cone.d.ts +16 -0
  288. package/dist/scene/geometry-src/mesh-cone.d.ts.map +1 -0
  289. package/dist/scene/geometry-src/mesh-cone.js +54 -0
  290. package/dist/scene/geometry-src/mesh-cone.js.map +1 -0
  291. package/dist/scene/geometry-src/mesh-cylinder.d.ts +18 -0
  292. package/dist/scene/geometry-src/mesh-cylinder.d.ts.map +1 -0
  293. package/dist/scene/geometry-src/mesh-cylinder.js +67 -0
  294. package/dist/scene/geometry-src/mesh-cylinder.js.map +1 -0
  295. package/dist/scene/geometry-src/mesh-disk.d.ts +11 -0
  296. package/dist/scene/geometry-src/mesh-disk.d.ts.map +1 -0
  297. package/dist/scene/geometry-src/mesh-disk.js +45 -0
  298. package/dist/scene/geometry-src/mesh-disk.js.map +1 -0
  299. package/dist/scene/geometry-src/mesh-dodecahedron.d.ts +4 -0
  300. package/dist/scene/geometry-src/mesh-dodecahedron.d.ts.map +1 -0
  301. package/dist/scene/geometry-src/mesh-dodecahedron.js +10 -0
  302. package/dist/scene/geometry-src/mesh-dodecahedron.js.map +1 -0
  303. package/dist/scene/geometry-src/mesh-fullscreen-quad.d.ts +7 -0
  304. package/dist/scene/geometry-src/mesh-fullscreen-quad.d.ts.map +1 -0
  305. package/dist/scene/geometry-src/mesh-fullscreen-quad.js +39 -0
  306. package/dist/scene/geometry-src/mesh-fullscreen-quad.js.map +1 -0
  307. package/dist/scene/geometry-src/mesh-icosahedron.d.ts +4 -0
  308. package/dist/scene/geometry-src/mesh-icosahedron.d.ts.map +1 -0
  309. package/dist/scene/geometry-src/mesh-icosahedron.js +10 -0
  310. package/dist/scene/geometry-src/mesh-icosahedron.js.map +1 -0
  311. package/dist/scene/geometry-src/mesh-icosphere.d.ts +11 -0
  312. package/dist/scene/geometry-src/mesh-icosphere.d.ts.map +1 -0
  313. package/dist/scene/geometry-src/mesh-icosphere.js +47 -0
  314. package/dist/scene/geometry-src/mesh-icosphere.js.map +1 -0
  315. package/dist/scene/geometry-src/mesh-octahedron.d.ts +4 -0
  316. package/dist/scene/geometry-src/mesh-octahedron.d.ts.map +1 -0
  317. package/dist/scene/geometry-src/mesh-octahedron.js +10 -0
  318. package/dist/scene/geometry-src/mesh-octahedron.js.map +1 -0
  319. package/dist/scene/geometry-src/mesh-plane.d.ts +13 -0
  320. package/dist/scene/geometry-src/mesh-plane.d.ts.map +1 -0
  321. package/dist/scene/geometry-src/mesh-plane.js +51 -0
  322. package/dist/scene/geometry-src/mesh-plane.js.map +1 -0
  323. package/dist/scene/geometry-src/mesh-ring.d.ts +12 -0
  324. package/dist/scene/geometry-src/mesh-ring.d.ts.map +1 -0
  325. package/dist/scene/geometry-src/mesh-ring.js +47 -0
  326. package/dist/scene/geometry-src/mesh-ring.js.map +1 -0
  327. package/dist/scene/geometry-src/mesh-sphere.d.ts +10 -0
  328. package/dist/scene/geometry-src/mesh-sphere.d.ts.map +1 -0
  329. package/dist/scene/geometry-src/mesh-sphere.js +51 -0
  330. package/dist/scene/geometry-src/mesh-sphere.js.map +1 -0
  331. package/dist/scene/geometry-src/mesh-tetrahedron.d.ts +5 -0
  332. package/dist/scene/geometry-src/mesh-tetrahedron.d.ts.map +1 -0
  333. package/dist/scene/geometry-src/mesh-tetrahedron.js +10 -0
  334. package/dist/scene/geometry-src/mesh-tetrahedron.js.map +1 -0
  335. package/dist/scene/geometry-src/mesh-torus.d.ts +17 -0
  336. package/dist/scene/geometry-src/mesh-torus.d.ts.map +1 -0
  337. package/dist/scene/geometry-src/mesh-torus.js +56 -0
  338. package/dist/scene/geometry-src/mesh-torus.js.map +1 -0
  339. package/dist/scene/geometry-src/mesh-types.d.ts +38 -0
  340. package/dist/scene/geometry-src/mesh-types.d.ts.map +1 -0
  341. package/dist/scene/geometry-src/mesh-types.js +2 -0
  342. package/dist/scene/geometry-src/mesh-types.js.map +1 -0
  343. package/dist/scene/geometry-src/mesh.d.ts +61 -0
  344. package/dist/scene/geometry-src/mesh.d.ts.map +1 -0
  345. package/dist/scene/geometry-src/mesh.js +49 -0
  346. package/dist/scene/geometry-src/mesh.js.map +1 -0
  347. package/dist/scene/geometry-src/orthographic-camera.d.ts +14 -0
  348. package/dist/scene/geometry-src/orthographic-camera.d.ts.map +1 -0
  349. package/dist/scene/geometry-src/orthographic-camera.js +9 -0
  350. package/dist/scene/geometry-src/orthographic-camera.js.map +1 -0
  351. package/dist/scene/geometry-src/perspective-camera.d.ts +12 -0
  352. package/dist/scene/geometry-src/perspective-camera.d.ts.map +1 -0
  353. package/dist/scene/geometry-src/perspective-camera.js +9 -0
  354. package/dist/scene/geometry-src/perspective-camera.js.map +1 -0
  355. package/dist/scene/geometry-src/plane-data.d.ts +12 -0
  356. package/dist/scene/geometry-src/plane-data.d.ts.map +1 -0
  357. package/dist/scene/geometry-src/plane-data.js +25 -0
  358. package/dist/scene/geometry-src/plane-data.js.map +1 -0
  359. package/dist/scene/geometry-src/polyhedron-data.d.ts +7 -0
  360. package/dist/scene/geometry-src/polyhedron-data.d.ts.map +1 -0
  361. package/dist/scene/geometry-src/polyhedron-data.js +42 -0
  362. package/dist/scene/geometry-src/polyhedron-data.js.map +1 -0
  363. package/dist/scene/geometry-src/polyhedron-mesh.d.ts +10 -0
  364. package/dist/scene/geometry-src/polyhedron-mesh.d.ts.map +1 -0
  365. package/dist/scene/geometry-src/polyhedron-mesh.js +37 -0
  366. package/dist/scene/geometry-src/polyhedron-mesh.js.map +1 -0
  367. package/dist/scene/geometry-src/polyhedron-seeds.d.ts +6 -0
  368. package/dist/scene/geometry-src/polyhedron-seeds.d.ts.map +1 -0
  369. package/dist/scene/geometry-src/polyhedron-seeds.js +51 -0
  370. package/dist/scene/geometry-src/polyhedron-seeds.js.map +1 -0
  371. package/dist/scene/geometry-src/primitive-data-utils.d.ts +9 -0
  372. package/dist/scene/geometry-src/primitive-data-utils.d.ts.map +1 -0
  373. package/dist/scene/geometry-src/primitive-data-utils.js +36 -0
  374. package/dist/scene/geometry-src/primitive-data-utils.js.map +1 -0
  375. package/dist/scene/geometry-src/ring-data.d.ts +13 -0
  376. package/dist/scene/geometry-src/ring-data.d.ts.map +1 -0
  377. package/dist/scene/geometry-src/ring-data.js +24 -0
  378. package/dist/scene/geometry-src/ring-data.js.map +1 -0
  379. package/dist/scene/geometry-src/sphere-data.d.ts +11 -0
  380. package/dist/scene/geometry-src/sphere-data.d.ts.map +1 -0
  381. package/dist/scene/geometry-src/sphere-data.js +31 -0
  382. package/dist/scene/geometry-src/sphere-data.js.map +1 -0
  383. package/dist/scene/geometry-src/srgb.d.ts +5 -0
  384. package/dist/scene/geometry-src/srgb.d.ts.map +1 -0
  385. package/dist/scene/geometry-src/srgb.js +23 -0
  386. package/dist/scene/geometry-src/srgb.js.map +1 -0
  387. package/dist/scene/geometry-src/torus-data.d.ts +11 -0
  388. package/dist/scene/geometry-src/torus-data.d.ts.map +1 -0
  389. package/dist/scene/geometry-src/torus-data.js +38 -0
  390. package/dist/scene/geometry-src/torus-data.js.map +1 -0
  391. package/dist/scene/geometry-src/vertex-layout.d.ts +2 -0
  392. package/dist/scene/geometry-src/vertex-layout.d.ts.map +1 -0
  393. package/dist/scene/geometry-src/vertex-layout.js +2 -0
  394. package/dist/scene/geometry-src/vertex-layout.js.map +1 -0
  395. package/dist/scene/geometry.d.ts +70 -0
  396. package/dist/scene/geometry.d.ts.map +1 -0
  397. package/dist/scene/geometry.js +71 -0
  398. package/dist/scene/geometry.js.map +1 -0
  399. package/dist/scene/orbit.d.ts +9 -0
  400. package/dist/scene/orbit.d.ts.map +1 -0
  401. package/dist/scene/orbit.js +15 -0
  402. package/dist/scene/orbit.js.map +1 -0
  403. package/dist/scene/tree/errors.d.ts +4 -0
  404. package/dist/scene/tree/errors.d.ts.map +1 -0
  405. package/dist/scene/tree/errors.js +19 -0
  406. package/dist/scene/tree/errors.js.map +1 -0
  407. package/dist/scene/tree/light.d.ts +42 -0
  408. package/dist/scene/tree/light.d.ts.map +1 -0
  409. package/dist/scene/tree/light.js +102 -0
  410. package/dist/scene/tree/light.js.map +1 -0
  411. package/dist/scene/tree/material.d.ts +79 -0
  412. package/dist/scene/tree/material.d.ts.map +1 -0
  413. package/dist/scene/tree/material.js +117 -0
  414. package/dist/scene/tree/material.js.map +1 -0
  415. package/dist/scene/tree/math.d.ts +26 -0
  416. package/dist/scene/tree/math.d.ts.map +1 -0
  417. package/dist/scene/tree/math.js +217 -0
  418. package/dist/scene/tree/math.js.map +1 -0
  419. package/dist/scene/tree/mesh-node.d.ts +17 -0
  420. package/dist/scene/tree/mesh-node.d.ts.map +1 -0
  421. package/dist/scene/tree/mesh-node.js +24 -0
  422. package/dist/scene/tree/mesh-node.js.map +1 -0
  423. package/dist/scene/tree/node.d.ts +70 -0
  424. package/dist/scene/tree/node.d.ts.map +1 -0
  425. package/dist/scene/tree/node.js +220 -0
  426. package/dist/scene/tree/node.js.map +1 -0
  427. package/dist/scene/tree/orbit-controls.d.ts +69 -0
  428. package/dist/scene/tree/orbit-controls.d.ts.map +1 -0
  429. package/dist/scene/tree/orbit-controls.js +226 -0
  430. package/dist/scene/tree/orbit-controls.js.map +1 -0
  431. package/dist/scene.d.ts +21 -0
  432. package/dist/scene.d.ts.map +1 -0
  433. package/dist/scene.js +11 -0
  434. package/dist/scene.js.map +1 -0
  435. package/dist/set-core.d.ts +50 -0
  436. package/dist/set-core.d.ts.map +1 -0
  437. package/dist/set-core.js +268 -0
  438. package/dist/set-core.js.map +1 -0
  439. package/dist/set-layouts.d.ts +20 -0
  440. package/dist/set-layouts.d.ts.map +1 -0
  441. package/dist/set-layouts.js +103 -0
  442. package/dist/set-layouts.js.map +1 -0
  443. package/dist/set-packing.d.ts +4 -0
  444. package/dist/set-packing.d.ts.map +1 -0
  445. package/dist/set-packing.js +82 -0
  446. package/dist/set-packing.js.map +1 -0
  447. package/dist/set-resources.d.ts +20 -0
  448. package/dist/set-resources.d.ts.map +1 -0
  449. package/dist/set-resources.js +140 -0
  450. package/dist/set-resources.js.map +1 -0
  451. package/dist/shader-source.d.ts +4 -0
  452. package/dist/shader-source.d.ts.map +1 -0
  453. package/dist/shader-source.js +21 -0
  454. package/dist/shader-source.js.map +1 -0
  455. package/dist/storage.d.ts +38 -0
  456. package/dist/storage.d.ts.map +1 -0
  457. package/dist/storage.js +76 -0
  458. package/dist/storage.js.map +1 -0
  459. package/dist/surface.d.ts +89 -0
  460. package/dist/surface.d.ts.map +1 -0
  461. package/dist/surface.js +243 -0
  462. package/dist/surface.js.map +1 -0
  463. package/dist/target-offscreen.d.ts +41 -0
  464. package/dist/target-offscreen.d.ts.map +1 -0
  465. package/dist/target-offscreen.js +115 -0
  466. package/dist/target-offscreen.js.map +1 -0
  467. package/dist/target-utils.d.ts +37 -0
  468. package/dist/target-utils.d.ts.map +1 -0
  469. package/dist/target-utils.js +103 -0
  470. package/dist/target-utils.js.map +1 -0
  471. package/dist/target.d.ts +65 -0
  472. package/dist/target.d.ts.map +1 -0
  473. package/dist/target.js +2 -0
  474. package/dist/target.js.map +1 -0
  475. package/dist/timer.d.ts +78 -0
  476. package/dist/timer.d.ts.map +1 -0
  477. package/dist/timer.js +261 -0
  478. package/dist/timer.js.map +1 -0
  479. package/dist/uniforms-layout.d.ts +8 -0
  480. package/dist/uniforms-layout.d.ts.map +1 -0
  481. package/dist/uniforms-layout.js +84 -0
  482. package/dist/uniforms-layout.js.map +1 -0
  483. package/dist/uniforms.d.ts +43 -0
  484. package/dist/uniforms.d.ts.map +1 -0
  485. package/dist/uniforms.js +176 -0
  486. package/dist/uniforms.js.map +1 -0
  487. package/dist/visibility.d.ts +118 -0
  488. package/dist/visibility.d.ts.map +1 -0
  489. package/dist/visibility.js +290 -0
  490. package/dist/visibility.js.map +1 -0
  491. package/package.json +131 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../src/scene/camera.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Every recipe in one object, for callers that pick a primitive by name at runtime.
3
+ *
4
+ * It lives alone because naming all 15 factories in a single frozen object is what would pin all 15
5
+ * generators into a bundle: `import { box } from "./geometry.ts"` must not drag `torus` along, so
6
+ * this convenience is a separate module you opt into.
7
+ */
8
+ import { box, capsule, cone, cylinder, disk, dodecahedron, fullscreenQuad, icosahedron, icosphere, octahedron, plane, ring, sphere, tetrahedron, torus } from "./geometry.ts";
9
+ export declare const geometries: Readonly<{
10
+ box: typeof box;
11
+ capsule: typeof capsule;
12
+ cone: typeof cone;
13
+ cylinder: typeof cylinder;
14
+ disk: typeof disk;
15
+ dodecahedron: typeof dodecahedron;
16
+ fullscreenQuad: typeof fullscreenQuad;
17
+ icosahedron: typeof icosahedron;
18
+ icosphere: typeof icosphere;
19
+ octahedron: typeof octahedron;
20
+ plane: typeof plane;
21
+ ring: typeof ring;
22
+ sphere: typeof sphere;
23
+ tetrahedron: typeof tetrahedron;
24
+ torus: typeof torus;
25
+ }>;
26
+ //# sourceMappingURL=geometries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometries.d.ts","sourceRoot":"","sources":["../../src/scene/geometries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,IAAI,EACJ,MAAM,EACN,WAAW,EACX,KAAK,EACN,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;EAgBrB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Every recipe in one object, for callers that pick a primitive by name at runtime.
3
+ *
4
+ * It lives alone because naming all 15 factories in a single frozen object is what would pin all 15
5
+ * generators into a bundle: `import { box } from "./geometry.ts"` must not drag `torus` along, so
6
+ * this convenience is a separate module you opt into.
7
+ */
8
+ import { box, capsule, cone, cylinder, disk, dodecahedron, fullscreenQuad, icosahedron, icosphere, octahedron, plane, ring, sphere, tetrahedron, torus, } from "./geometry.js";
9
+ export const geometries = Object.freeze({
10
+ box,
11
+ capsule,
12
+ cone,
13
+ cylinder,
14
+ disk,
15
+ dodecahedron,
16
+ fullscreenQuad,
17
+ icosahedron,
18
+ icosphere,
19
+ octahedron,
20
+ plane,
21
+ ring,
22
+ sphere,
23
+ tetrahedron,
24
+ torus,
25
+ });
26
+ //# sourceMappingURL=geometries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometries.js","sourceRoot":"","sources":["../../src/scene/geometries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,GAAG,EACH,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,IAAI,EACJ,MAAM,EACN,WAAW,EACX,KAAK,GACN,MAAM,eAAe,CAAC;AAEvB,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,GAAG;IACH,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,cAAc;IACd,WAAW;IACX,SAAS;IACT,UAAU;IACV,KAAK;IACL,IAAI;IACJ,MAAM;IACN,WAAW;IACX,KAAK;CACN,CAAC,CAAC"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Low-level geometry: an immutable vertex/index layout plus the buffers it owns.
3
+ *
4
+ * This module is the whole cost of `geometry(gpu, descriptor)`. It also accepts a mesh recipe, but
5
+ * it imports no generator to expand one: a recipe carries its own `build()`, so the primitives a
6
+ * program links are exactly the ones it names. Handing your own vertex data to `draw()` never pays
7
+ * for a `box()` you did not write.
8
+ */
9
+ import type { Device } from "@aigpu/core";
10
+ import type { EntryPointInputInfo } from "@aigpu/wgsl/reflect-source";
11
+ import type { GeometryLike } from "../draw.ts";
12
+ import type { Gpu, Kernel } from "../kernel.ts";
13
+ import type { GeometryRecipe } from "./geometry-recipe.ts";
14
+ import { geometryLayoutResolver } from "../draw-protocols.ts";
15
+ /** CPU-side bytes accepted when creating or updating an owned geometry buffer. */
16
+ export type GeometryData = ArrayBuffer | ArrayBufferView<ArrayBuffer>;
17
+ /** Overrides the format and optional byte offset or shader location of a named attribute. */
18
+ export interface GeometryAttributeOverride {
19
+ readonly format: GPUVertexFormat;
20
+ readonly offset?: number;
21
+ readonly location?: number;
22
+ }
23
+ /** Named attributes in declaration order for one vertex buffer stream. */
24
+ export type GeometryAttributes = {
25
+ readonly [name: string]: GPUVertexFormat | GeometryAttributeOverride;
26
+ };
27
+ /** Describes one owned-data or caller-owned vertex buffer stream. */
28
+ export interface GeometryBufferOptions {
29
+ readonly attributes: GeometryAttributes;
30
+ readonly data?: GeometryData;
31
+ readonly buffer?: GPUBuffer;
32
+ readonly stride?: number;
33
+ readonly stepMode?: GPUVertexStepMode;
34
+ readonly label?: string;
35
+ }
36
+ /** Options for constructing an immutable geometry layout and its GPU buffers. */
37
+ export interface GeometryOptions {
38
+ readonly buffers: readonly GeometryBufferOptions[];
39
+ readonly vertexCount?: number;
40
+ readonly instanceCount?: number;
41
+ readonly indices?: Uint16Array | Uint32Array | readonly number[];
42
+ readonly indexBuffer?: GPUBuffer;
43
+ readonly indexFormat?: GPUIndexFormat;
44
+ readonly indexCount?: number;
45
+ readonly topology?: GPUPrimitiveTopology;
46
+ readonly label?: string;
47
+ }
48
+ /** Public handle for one fixed-size geometry vertex buffer stream. */
49
+ export interface GeometryBuffer {
50
+ readonly gpu: GPUBuffer;
51
+ readonly stride: number;
52
+ readonly stepMode: GPUVertexStepMode;
53
+ /** Updates bytes in an owned buffer without changing its identity or size. */
54
+ write(data: GeometryData, byteOffset?: number): void;
55
+ }
56
+ /** Selects an immutable indexed or non-indexed range view of a geometry. */
57
+ export interface GeometrySliceOptions {
58
+ readonly firstIndex?: number;
59
+ readonly indexCount?: number;
60
+ readonly baseVertex?: number;
61
+ readonly firstVertex?: number;
62
+ readonly vertexCount?: number;
63
+ readonly instanceCount?: number;
64
+ readonly label?: string;
65
+ }
66
+ /** Frozen range view that shares its parent geometry's buffers and pipeline layout. */
67
+ export interface GeometrySlice extends GeometryLike {
68
+ readonly geometry: Geometry;
69
+ readonly firstIndex?: number;
70
+ readonly baseVertex?: number;
71
+ readonly firstVertex?: number;
72
+ }
73
+ /** Immutable geometry layout with fixed-size mutable owned buffers. */
74
+ export declare class Geometry implements GeometryLike {
75
+ #private;
76
+ readonly vertexCount?: number;
77
+ readonly indexCount?: number;
78
+ readonly instanceCount?: number;
79
+ readonly vertexBuffers: readonly GPUBuffer[];
80
+ readonly indexBuffer?: GPUBuffer;
81
+ readonly indexFormat?: GPUIndexFormat;
82
+ readonly vertexBufferLayouts: readonly GPUVertexBufferLayout[];
83
+ readonly topology: GPUPrimitiveTopology;
84
+ readonly stripIndexFormat?: GPUIndexFormat;
85
+ readonly buffers: readonly GeometryBuffer[];
86
+ constructor(device: Device, opts: GeometryOptions);
87
+ /** @internal Resolves named attributes for one reflected vertex entry point. */
88
+ [geometryLayoutResolver](inputs: readonly EntryPointInputInfo[], where: string): readonly GPUVertexBufferLayout[];
89
+ /** Creates a frozen range view sharing this geometry's buffers and layout identity. */
90
+ slice(opts?: GeometrySliceOptions): GeometrySlice;
91
+ /** Updates bytes in vertex buffer stream 0 without resizing it. */
92
+ write(data: GeometryData, byteOffset?: number): void;
93
+ /** Updates bytes in the owned index buffer without resizing it. */
94
+ writeIndices(data: Uint16Array | Uint32Array, byteOffset?: number): void;
95
+ /** Destroys buffers owned by this geometry; caller-owned buffers are untouched. */
96
+ destroy(): void;
97
+ /**
98
+ * @internal Ownership hook: runs once, right after `destroy()` freed the buffers, so the owner
99
+ * that registered this geometry with the kernel can drop its teardown registration.
100
+ */
101
+ onDestroy(hook: () => void): () => void;
102
+ }
103
+ /**
104
+ * Builds a geometry, either from an explicit vertex/index descriptor — validated layout, owned
105
+ * buffers for the streams that carry `data`, borrowed ones for the streams that carry a `buffer` —
106
+ * or from a mesh recipe such as `box()`, which expands itself and lends the buffers its per-device
107
+ * primitive cache owns.
108
+ *
109
+ * Both spellings land on the same object and the same lifetime: owned buffers are destroyed by
110
+ * `gpu.dispose()` or by an earlier `geometry.destroy()`.
111
+ */
112
+ export declare function geometry(gpu: Gpu, descriptor: GeometryOptions): Geometry;
113
+ export declare function geometry(gpu: Gpu, recipe: GeometryRecipe): Geometry;
114
+ /** Union form, for a caller that only knows it holds one of the two. */
115
+ export declare function geometry(gpu: Gpu, input: GeometryOptions | GeometryRecipe): Geometry;
116
+ /** @internal Ties a geometry to the gpu lifetime; the registration is dropped if it is destroyed first. */
117
+ export declare function ownGeometry(kernel: Kernel, value: Geometry): Geometry;
118
+ /** Returns the byte width of one value in a WebGPU vertex format. */
119
+ export declare function formatByteSize(fmt: GPUVertexFormat): number;
120
+ //# sourceMappingURL=geometry-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-descriptor.d.ts","sourceRoot":"","sources":["../../src/scene/geometry-descriptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,378 @@
1
+ import { geometryLayoutResolver } from "../draw-protocols.js";
2
+ import { liveKernel, ownResource } from "../live-kernel.js";
3
+ import { meshAttributeAmbiguousError, meshAttributeUnmatchedError, meshDataMisalignedError, meshFormatMismatchError, meshInputMissingError, meshLayoutInvalidError, meshLimitExceededError, meshLocationConflictError, meshRangeInvalidError, meshWriteRangeError } from "../errors.js";
4
+ /** Immutable geometry layout with fixed-size mutable owned buffers. */
5
+ export class Geometry {
6
+ vertexCount;
7
+ indexCount;
8
+ instanceCount;
9
+ vertexBuffers;
10
+ indexBuffer;
11
+ indexFormat;
12
+ vertexBufferLayouts;
13
+ topology;
14
+ stripIndexFormat;
15
+ buffers;
16
+ #indexOwned;
17
+ #indexByteLength;
18
+ #normalized;
19
+ #resolvedLayouts = new Map();
20
+ #destroyHooks = new Set();
21
+ #destroyed = false;
22
+ constructor(device, opts) {
23
+ const where = "geometry";
24
+ if (opts.buffers.length > 8)
25
+ throw meshLimitExceededError(where, `${opts.buffers.length} vertex buffers exceed limit 8.`);
26
+ let attrCount = 0;
27
+ const locations = new Set();
28
+ const normalized = opts.buffers.map((buffer, i) => {
29
+ const n = normalizeBuffer(device, buffer, `${where}.buffers[${i}]`);
30
+ attrCount += n.attributes.length;
31
+ for (const attr of n.attributes) {
32
+ if (attr.location === undefined)
33
+ continue;
34
+ if (locations.has(attr.location))
35
+ throw meshLocationConflictError(`${where}.buffers[${i}]`, attr.location);
36
+ locations.add(attr.location);
37
+ }
38
+ return n;
39
+ });
40
+ const maxAttributes = device.gpu.limits.maxVertexAttributes;
41
+ if (attrCount > maxAttributes)
42
+ throw meshLimitExceededError(where, `${attrCount} attributes exceed device limit ${maxAttributes}.`);
43
+ const topology = opts.topology ?? "triangle-list";
44
+ if (!TOPOLOGIES.has(topology))
45
+ throw meshLayoutInvalidError(where, `Invalid topology: ${String(topology)}.`);
46
+ const index = normalizeIndex(device, opts, where);
47
+ const vertexCapacity = deriveCount(normalized, "vertex");
48
+ const instanceCapacity = deriveCount(normalized, "instance");
49
+ requireExplicitRawCount(normalized, "vertex", opts.vertexCount ?? vertexCapacity, where);
50
+ requireExplicitRawCount(normalized, "instance", opts.instanceCount ?? instanceCapacity, where);
51
+ validateOptionalCapacity(where, "vertexCount", opts.vertexCount, vertexCapacity);
52
+ validateOptionalCapacity(where, "instanceCount", opts.instanceCount, instanceCapacity);
53
+ validateOptionalCapacity(where, "indexCount", opts.indexCount, index.count);
54
+ this.topology = topology;
55
+ this.stripIndexFormat = topology.endsWith("strip") ? index.format : undefined;
56
+ this.#normalized = normalized;
57
+ this.vertexBufferLayouts = Object.freeze(normalized.map((n) => n.layout));
58
+ this.vertexBuffers = Object.freeze(normalized.map((n) => n.gpu));
59
+ this.buffers = Object.freeze(normalized.map((n, i) => new InternalGeometryBuffer(`${where}.buffers[${i}]`, n)));
60
+ this.vertexCount = opts.vertexCount ?? vertexCapacity;
61
+ this.instanceCount = opts.instanceCount ?? instanceCapacity;
62
+ this.indexBuffer = index.gpu;
63
+ this.indexFormat = index.format;
64
+ this.indexCount = opts.indexCount ?? index.count;
65
+ this.#indexOwned = index.owned;
66
+ this.#indexByteLength = index.byteLength;
67
+ lockPublicGeometryProperties(this);
68
+ }
69
+ /** @internal Resolves named attributes for one reflected vertex entry point. */
70
+ [geometryLayoutResolver](inputs, where) {
71
+ if (this.#destroyed)
72
+ throw meshLayoutInvalidError(where, "Geometry is destroyed; create a live geometry.");
73
+ const key = inputs.map((input) => `${input.name}:${input.location}:${shaderTypeBase(input.type)}`).join("|");
74
+ const cached = this.#resolvedLayouts.get(key);
75
+ if (cached)
76
+ return cached;
77
+ const covered = new Set();
78
+ const names = this.#normalized.flatMap((buffer) => buffer.attributes.map((attribute) => attribute.name));
79
+ const layouts = this.#normalized.map((buffer) => {
80
+ const source = [...buffer.layout.attributes];
81
+ const attributes = buffer.attributes.map((attribute, index) => {
82
+ const matches = attribute.location === undefined ? inputs.filter((input) => input.name === attribute.name) : [];
83
+ if (attribute.location === undefined && matches.length === 0)
84
+ throw meshAttributeUnmatchedError(where, attribute.name, inputs.map((input) => input.name));
85
+ if (matches.length > 1)
86
+ throw meshAttributeAmbiguousError(where, attribute.name, matches.map((input) => input.location));
87
+ const location = attribute.location ?? matches[0].location;
88
+ if (covered.has(location))
89
+ throw meshLocationConflictError(where, location);
90
+ covered.add(location);
91
+ const input = inputs.find((candidate) => candidate.location === location);
92
+ if (input && vertexFormatBase(attribute.format) !== shaderTypeBase(input.type))
93
+ throw meshFormatMismatchError(where, attribute.name, attribute.format, shaderTypeBase(input.type));
94
+ return Object.freeze({ ...source[index], shaderLocation: location });
95
+ });
96
+ return Object.freeze({ arrayStride: buffer.layout.arrayStride, ...(buffer.layout.stepMode ? { stepMode: buffer.layout.stepMode } : {}), attributes: Object.freeze(attributes) });
97
+ });
98
+ for (const input of inputs)
99
+ if (!covered.has(input.location))
100
+ throw meshInputMissingError(where, input.name, names);
101
+ const result = Object.freeze(layouts);
102
+ this.#resolvedLayouts.set(key, result);
103
+ return result;
104
+ }
105
+ /** Creates a frozen range view sharing this geometry's buffers and layout identity. */
106
+ slice(opts = {}) {
107
+ return new InternalGeometrySlice(this, opts);
108
+ }
109
+ /** Updates bytes in vertex buffer stream 0 without resizing it. */
110
+ write(data, byteOffset = 0) {
111
+ const first = this.buffers[0];
112
+ if (!first)
113
+ throw meshWriteRangeError("geometry.write", "No vertex buffer 0; add one before writing.");
114
+ first.write(data, byteOffset);
115
+ }
116
+ /** Updates bytes in the owned index buffer without resizing it. */
117
+ writeIndices(data, byteOffset = 0) {
118
+ if (this.#destroyed)
119
+ throw meshWriteRangeError("geometry.writeIndices", "Geometry is destroyed; create a new geometry before writing.");
120
+ if (!this.#indexOwned || this.#indexByteLength === undefined)
121
+ throw meshWriteRangeError("geometry.writeIndices", "No owned index buffer; write caller-owned buffers directly.");
122
+ validateWriteRange("geometry.writeIndices", this.#indexByteLength, data.byteLength, byteOffset);
123
+ this.#indexOwned.write(data, byteOffset);
124
+ }
125
+ /** Destroys buffers owned by this geometry; caller-owned buffers are untouched. */
126
+ destroy() {
127
+ if (this.#destroyed)
128
+ return;
129
+ this.#destroyed = true;
130
+ for (const buffer of this.buffers)
131
+ buffer.destroyOwned();
132
+ this.#indexOwned?.destroy();
133
+ for (const hook of [...this.#destroyHooks])
134
+ hook();
135
+ this.#destroyHooks.clear();
136
+ }
137
+ /**
138
+ * @internal Ownership hook: runs once, right after `destroy()` freed the buffers, so the owner
139
+ * that registered this geometry with the kernel can drop its teardown registration.
140
+ */
141
+ onDestroy(hook) {
142
+ if (this.#destroyed) {
143
+ hook();
144
+ return () => undefined;
145
+ }
146
+ this.#destroyHooks.add(hook);
147
+ return () => { this.#destroyHooks.delete(hook); };
148
+ }
149
+ }
150
+ class InternalGeometryBuffer {
151
+ where;
152
+ inner;
153
+ gpu;
154
+ stride;
155
+ stepMode;
156
+ #state = { destroyed: false };
157
+ constructor(where, inner) {
158
+ this.where = where;
159
+ this.inner = inner;
160
+ this.gpu = inner.gpu;
161
+ this.stride = inner.stride;
162
+ this.stepMode = inner.stepMode;
163
+ Object.freeze(this);
164
+ }
165
+ write(data, byteOffset = 0) {
166
+ if (this.#state.destroyed)
167
+ throw meshWriteRangeError(this.where, "Geometry is destroyed; create a new geometry before writing.");
168
+ if (!this.inner.owned || this.inner.byteLength === undefined)
169
+ throw meshWriteRangeError(this.where, "Caller-owned buffer; write it directly.");
170
+ validateWriteRange(this.where, this.inner.byteLength, byteLength(data), byteOffset);
171
+ this.inner.owned.write(data, byteOffset);
172
+ }
173
+ destroyOwned() { this.#state.destroyed = true; this.inner.owned?.destroy(); }
174
+ }
175
+ class InternalGeometrySlice {
176
+ geometry;
177
+ vertexCount;
178
+ indexCount;
179
+ instanceCount;
180
+ vertexBuffers;
181
+ indexBuffer;
182
+ indexFormat;
183
+ vertexBufferLayouts;
184
+ topology;
185
+ stripIndexFormat;
186
+ firstIndex;
187
+ baseVertex;
188
+ firstVertex;
189
+ [geometryLayoutResolver](inputs, where) { return this.geometry[geometryLayoutResolver](inputs, where); }
190
+ constructor(geometry, opts) {
191
+ this.geometry = geometry;
192
+ this.vertexBuffers = geometry.vertexBuffers;
193
+ this.indexBuffer = geometry.indexBuffer;
194
+ this.indexFormat = geometry.indexFormat;
195
+ this.vertexBufferLayouts = geometry.vertexBufferLayouts;
196
+ this.topology = geometry.topology;
197
+ this.stripIndexFormat = geometry.stripIndexFormat;
198
+ if (geometry.indexBuffer) {
199
+ if (opts.firstVertex !== undefined || opts.vertexCount !== undefined)
200
+ throw meshRangeInvalidError("geometry.slice", "Indexed slice needs firstIndex/indexCount/baseVertex; omit vertex range fields.");
201
+ const firstIndex = opts.firstIndex ?? 0;
202
+ const max = geometry.indexCount ?? 0;
203
+ const count = opts.indexCount ?? (max - firstIndex);
204
+ validateRange("geometry.slice", "firstIndex", firstIndex, max);
205
+ validateRange("geometry.slice", "indexCount", count, max - firstIndex);
206
+ validateRange("geometry.slice", "baseVertex", opts.baseVertex ?? 0, Number.MAX_SAFE_INTEGER);
207
+ this.firstIndex = firstIndex;
208
+ this.indexCount = count;
209
+ this.baseVertex = opts.baseVertex ?? 0;
210
+ this.vertexCount = geometry.vertexCount;
211
+ }
212
+ else {
213
+ if (opts.firstIndex !== undefined || opts.indexCount !== undefined || opts.baseVertex !== undefined)
214
+ throw meshRangeInvalidError("geometry.slice", "Non-indexed slice needs firstVertex/vertexCount; omit index range fields.");
215
+ const firstVertex = opts.firstVertex ?? 0;
216
+ const max = geometry.vertexCount ?? 0;
217
+ const count = opts.vertexCount ?? (max - firstVertex);
218
+ validateRange("geometry.slice", "firstVertex", firstVertex, max);
219
+ validateRange("geometry.slice", "vertexCount", count, max - firstVertex);
220
+ this.firstVertex = firstVertex;
221
+ this.vertexCount = count;
222
+ this.indexCount = geometry.indexCount;
223
+ }
224
+ validateRange("geometry.slice", "instanceCount", opts.instanceCount ?? geometry.instanceCount ?? 0, Number.MAX_SAFE_INTEGER);
225
+ this.instanceCount = opts.instanceCount ?? geometry.instanceCount;
226
+ Object.freeze(this);
227
+ }
228
+ }
229
+ export function geometry(gpu, input) {
230
+ // The gpu is checked before anything is generated: a recipe on a dead gpu must not build a mesh.
231
+ const kernel = liveKernel(gpu, "geometry");
232
+ const opts = isRecipe(input) ? input.build(kernel.device) : input;
233
+ return ownGeometry(kernel, new Geometry(kernel.device, opts));
234
+ }
235
+ /**
236
+ * A recipe is the thing that can build itself; everything else is already a descriptor. Testing for
237
+ * `build` — instead of for a descriptor's `buffers` — also keeps buffer-less descriptors, like
238
+ * `{ topology, vertexCount }` for shader-generated vertices, on the low-level path.
239
+ */
240
+ function isRecipe(value) {
241
+ return "build" in value && typeof value.build === "function";
242
+ }
243
+ /** @internal Ties a geometry to the gpu lifetime; the registration is dropped if it is destroyed first. */
244
+ export function ownGeometry(kernel, value) {
245
+ return ownResource(kernel, value, (owned) => owned.destroy(), (cb) => { value.onDestroy(cb); });
246
+ }
247
+ /** Returns the byte width of one value in a WebGPU vertex format. */
248
+ export function formatByteSize(fmt) {
249
+ if (fmt === "unorm10-10-10-2" || fmt === "unorm8x4-bgra")
250
+ return 4;
251
+ const m = /^(float|uint|sint|unorm|snorm)(8|16|32)(?:x([234]))?$/.exec(fmt);
252
+ if (!m)
253
+ return 0;
254
+ const [, kind, bits, lanes] = m;
255
+ if (bits === "32" ? /norm/.test(kind) : !lanes || lanes === "3" || (bits === "8" && kind === "float"))
256
+ return 0;
257
+ return (Number(bits) / 8) * Number(lanes ?? 1);
258
+ }
259
+ function normalizeBuffer(device, opts, where) {
260
+ if (opts.data !== undefined && opts.buffer !== undefined)
261
+ throw meshLayoutInvalidError(where, "Choose data or buffer, not both.");
262
+ const stepMode = opts.stepMode ?? "vertex";
263
+ if (stepMode !== "vertex" && stepMode !== "instance")
264
+ throw meshLayoutInvalidError(where, `Invalid stepMode: ${String(stepMode)}.`);
265
+ const attrs = [];
266
+ const metas = [];
267
+ let packedSize = 0;
268
+ for (const [name, value] of Object.entries(opts.attributes)) {
269
+ if (/^\d+$/.test(name))
270
+ throw meshLayoutInvalidError(where, `Attribute '${name}' is numeric; use a non-numeric name.`);
271
+ const desc = typeof value === "string" ? { format: value } : value;
272
+ const size = formatByteSize(desc.format);
273
+ if (!size)
274
+ throw meshLayoutInvalidError(where, `Unknown GPUVertexFormat '${desc.format}'.`);
275
+ const attrOffset = desc.offset ?? packedSize;
276
+ const align = Math.min(4, size);
277
+ if (!Number.isInteger(attrOffset) || attrOffset < 0 || attrOffset % align !== 0)
278
+ throw meshLayoutInvalidError(where, `Attribute '${name}' offset ${String(attrOffset)} needs ${align}-byte alignment.`);
279
+ if (desc.location !== undefined && (!Number.isInteger(desc.location) || desc.location < 0 || desc.location >= device.gpu.limits.maxVertexAttributes))
280
+ throw meshLayoutInvalidError(where, `Location ${String(desc.location)} for '${name}' is outside limit ${device.gpu.limits.maxVertexAttributes}.`);
281
+ attrs.push({ shaderLocation: desc.location ?? attrs.length, offset: attrOffset, format: desc.format });
282
+ metas.push({ name, format: desc.format, location: desc.location });
283
+ packedSize += size;
284
+ }
285
+ const stride = opts.stride ?? roundUp4(packedSize);
286
+ if (!Number.isInteger(stride) || stride <= 0 || stride > 2048 || stride % 4 !== 0)
287
+ throw meshLayoutInvalidError(where, `Stride ${String(stride)} must be 4-aligned in [4,2048].`);
288
+ for (const [i, attr] of attrs.entries()) {
289
+ const size = formatByteSize(attr.format);
290
+ if (attr.offset + size > stride)
291
+ throw meshLayoutInvalidError(where, `Attribute '${metas[i]?.name}' (${attr.offset}+${size}) exceeds stride ${stride}.`);
292
+ }
293
+ const bytes = opts.data ? byteLength(opts.data) : undefined;
294
+ if (bytes !== undefined && bytes % stride !== 0)
295
+ throw meshDataMisalignedError(where, `Data byteLength ${bytes} is not divisible by stride ${stride}.`);
296
+ const owned = opts.data !== undefined ? device.createBuffer({ label: opts.label, size: Math.max(4, bytes ?? 0), usage: ["vertex", "copy_dst"] }) : undefined;
297
+ if (owned && opts.data)
298
+ owned.write(opts.data);
299
+ const layout = Object.freeze({ arrayStride: stride, ...(opts.stepMode ? { stepMode } : {}), attributes: Object.freeze(attrs) });
300
+ return { layout, attributes: Object.freeze(metas), stride, stepMode, byteLength: bytes, gpu: owned?.gpu ?? requiredBuffer(opts.buffer, where), owned };
301
+ }
302
+ function normalizeIndex(device, opts, where) {
303
+ if (opts.indices !== undefined && opts.indexBuffer !== undefined)
304
+ throw meshLayoutInvalidError(where, "Choose indices or indexBuffer, not both.");
305
+ if (opts.indices === undefined) {
306
+ const rawFields = [opts.indexBuffer, opts.indexFormat, opts.indexCount];
307
+ const present = rawFields.filter((value) => value !== undefined).length;
308
+ if (present !== 0 && present !== 3)
309
+ throw meshLayoutInvalidError(where, "Provide indexBuffer, indexFormat, and indexCount together.");
310
+ if (opts.indexFormat !== undefined && opts.indexFormat !== "uint16" && opts.indexFormat !== "uint32")
311
+ throw meshLayoutInvalidError(where, `Unknown index format '${String(opts.indexFormat)}'.`);
312
+ if (opts.indexCount !== undefined)
313
+ validateRange(where, "indexCount", opts.indexCount, Number.MAX_SAFE_INTEGER);
314
+ return { gpu: opts.indexBuffer, format: opts.indexFormat, count: opts.indexCount };
315
+ }
316
+ if (opts.indexFormat !== undefined)
317
+ throw meshLayoutInvalidError(where, "indices infer format; omit indexFormat.");
318
+ const data = (Array.isArray(opts.indices) ? new Uint32Array(opts.indices) : opts.indices);
319
+ const format = data instanceof Uint16Array ? "uint16" : "uint32";
320
+ const bytes = data.byteLength;
321
+ if (bytes % (format === "uint16" ? 2 : 4) !== 0)
322
+ throw meshDataMisalignedError(where, `Index byteLength ${bytes} is invalid for ${format}.`);
323
+ const owned = device.createBuffer({ label: opts.label ? `${opts.label}.indices` : undefined, size: Math.max(4, bytes), usage: ["index", "copy_dst"] });
324
+ owned.write(data);
325
+ return { gpu: owned.gpu, owned, format, count: data.length, byteLength: bytes };
326
+ }
327
+ function deriveCount(buffers, stepMode) {
328
+ let count;
329
+ for (const buffer of buffers)
330
+ if (buffer.stepMode === stepMode && buffer.byteLength !== undefined)
331
+ count = Math.min(count ?? Infinity, Math.floor(buffer.byteLength / buffer.stride));
332
+ return count;
333
+ }
334
+ function requireExplicitRawCount(buffers, stepMode, count, where) {
335
+ if (count === undefined && buffers.some((buffer) => buffer.stepMode === stepMode && buffer.byteLength === undefined))
336
+ throw meshLayoutInvalidError(where, `Raw ${stepMode} buffer needs ${stepMode}Count.`);
337
+ }
338
+ function validateOptionalCapacity(where, field, value, capacity) {
339
+ if (value === undefined)
340
+ return;
341
+ validateRange(where, field, value, capacity ?? Number.MAX_SAFE_INTEGER);
342
+ }
343
+ function lockPublicGeometryProperties(geometry) {
344
+ for (const key of Object.keys(geometry))
345
+ if (key !== "destroyed")
346
+ Object.defineProperty(geometry, key, { writable: false, configurable: false });
347
+ }
348
+ const TOPOLOGIES = new Set(["point-list", "line-list", "line-strip", "triangle-list", "triangle-strip"]);
349
+ function requiredBuffer(buffer, where) {
350
+ if (!buffer)
351
+ throw meshLayoutInvalidError(where, "Provide geometry buffer data or buffer.");
352
+ return buffer;
353
+ }
354
+ function byteLength(data) { return data.byteLength; }
355
+ function roundUp4(n) { return (n + 3) & ~3; }
356
+ function validateWriteRange(where, capacity, length, offset) {
357
+ if (!Number.isInteger(offset) || offset < 0 || offset % 4 !== 0 || length % 4 !== 0 || offset + length > capacity)
358
+ throw meshWriteRangeError(where, `Write size ${length}/offset ${String(offset)} must be 4-aligned within ${capacity} bytes.`);
359
+ }
360
+ function validateRange(where, field, value, max) {
361
+ if (!Number.isInteger(value) || value < 0 || value > max)
362
+ throw meshRangeInvalidError(where, `${field}=${String(value)} must be an integer in [0,${max}].`);
363
+ }
364
+ function vertexFormatBase(format) {
365
+ if (format.startsWith("sint"))
366
+ return "i32";
367
+ if (format.startsWith("uint"))
368
+ return "u32";
369
+ return "f32";
370
+ }
371
+ function shaderTypeBase(type) {
372
+ if (type.kind === "scalar")
373
+ return type.name;
374
+ if (type.kind === "vector" || type.kind === "matrix" || type.kind === "atomic")
375
+ return shaderTypeBase(type.element);
376
+ return type.kind;
377
+ }
378
+ //# sourceMappingURL=geometry-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-descriptor.js","sourceRoot":"","sources":["../../src/scene/geometry-descriptor.ts"],"names":[],"mappings":"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"}