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
package/dist/kernel.js ADDED
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Minimal `Gpu` core plus its private kernel.
3
+ *
4
+ * The kernel is the only shared, cross-feature runtime: device handle, error delivery,
5
+ * `settled()` bookkeeping, ownership/teardown ordering and a lazy service registry.
6
+ * It MUST NOT import a feature module (frame, draw, effect, surface, timer, geometry, ...):
7
+ * every service is registered by the feature that owns it, through a token + factory, so a
8
+ * program that never imports the feature never pays for it. See T202-06 negative metafile
9
+ * assertions and the `init-only` bundle budget.
10
+ */
11
+ import { Device, validateRequiredFeatures } from "@aigpu/core";
12
+ import { unsupportedError, AIGpuError } from "./errors.js";
13
+ const PHASES = ["scheduler", "resource", "service"];
14
+ export function serviceToken(name) {
15
+ return { name };
16
+ }
17
+ const kernels = new WeakMap();
18
+ /** Internal accessor for the kernel of a `Gpu`. Throws for objects this library did not create. */
19
+ export function kernelOf(gpu) {
20
+ const kernel = kernels.get(gpu);
21
+ if (!kernel) {
22
+ throw new AIGpuError({
23
+ code: "AIGPU-GPU-FOREIGN",
24
+ message: "This object was not created by init(); it has no aigpu kernel.",
25
+ fix: "Pass the gpu returned by init() from aigpu, aigpu/node or aigpu/mock.",
26
+ where: "gpu",
27
+ });
28
+ }
29
+ return kernel;
30
+ }
31
+ class KernelImpl {
32
+ device;
33
+ #services = new Map();
34
+ #owners = new Map(PHASES.map((phase) => [phase, new Set()]));
35
+ #errorListeners = new Set();
36
+ #pendingDeliveries = new Set();
37
+ #settledSources = new Set();
38
+ #disposed = false;
39
+ constructor(device) {
40
+ this.device = device;
41
+ }
42
+ get disposed() { return this.#disposed; }
43
+ service(token, factory) {
44
+ const existing = this.#services.get(token);
45
+ if (existing !== undefined)
46
+ return existing;
47
+ const created = factory(this);
48
+ this.#services.set(token, created);
49
+ return created;
50
+ }
51
+ peekService(token) {
52
+ return this.#services.get(token);
53
+ }
54
+ own(phase, disposer) {
55
+ const set = this.#owners.get(phase);
56
+ set.add(disposer);
57
+ return () => { set.delete(disposer); };
58
+ }
59
+ addErrorListener(cb) {
60
+ this.#errorListeners.add(cb);
61
+ return () => { this.#errorListeners.delete(cb); };
62
+ }
63
+ reportError(error) {
64
+ if (this.#disposed)
65
+ return Promise.resolve();
66
+ const delivery = Promise.resolve().then(() => {
67
+ const listeners = [...this.#errorListeners];
68
+ if (!listeners.length) {
69
+ console.error(error);
70
+ return;
71
+ }
72
+ for (const listener of listeners) {
73
+ try {
74
+ listener(error);
75
+ }
76
+ catch (listenerError) {
77
+ console.error(listenerError);
78
+ }
79
+ }
80
+ });
81
+ return this.trackDelivery(delivery);
82
+ }
83
+ trackDelivery(promise) {
84
+ const tracked = Promise.resolve(promise).then(() => undefined, (error) => { console.error(error); });
85
+ this.#pendingDeliveries.add(tracked);
86
+ void tracked.finally(() => this.#pendingDeliveries.delete(tracked));
87
+ return tracked;
88
+ }
89
+ registerSettledSource(source) {
90
+ this.#settledSources.add(source);
91
+ return () => { this.#settledSources.delete(source); };
92
+ }
93
+ async settled() {
94
+ const snapshot = [
95
+ ...this.#pendingDeliveries,
96
+ ...[...this.#settledSources].flatMap((source) => source()),
97
+ ];
98
+ await Promise.allSettled(snapshot);
99
+ }
100
+ dispose() {
101
+ if (this.#disposed)
102
+ return;
103
+ this.#disposed = true;
104
+ for (const phase of PHASES) {
105
+ const set = this.#owners.get(phase);
106
+ // Copy: a disposer usually calls its own release(), mutating the set while we walk it.
107
+ for (const disposer of [...set])
108
+ disposer();
109
+ set.clear();
110
+ }
111
+ this.#services.clear();
112
+ this.#settledSources.clear();
113
+ this.#errorListeners.clear();
114
+ this.device.dispose();
115
+ }
116
+ }
117
+ /** Builds the minimal `Gpu` for an already-created device and registers its kernel. */
118
+ export function attachKernel(device) {
119
+ const kernel = new KernelImpl(device);
120
+ const gpu = {
121
+ device,
122
+ gpu: device.gpu,
123
+ get disposed() { return kernel.disposed; },
124
+ onError: (cb) => kernel.addErrorListener(cb),
125
+ settled: () => kernel.settled(),
126
+ dispose: () => { kernel.dispose(); },
127
+ };
128
+ kernels.set(gpu, kernel);
129
+ return gpu;
130
+ }
131
+ /** Entry-agnostic core constructor: resolve a device, wrap it in the minimal `Gpu`. */
132
+ export async function createCoreGpu(entry, opts = {}, adapterFactory) {
133
+ return attachKernel(await createDevice(entry, opts, adapterFactory));
134
+ }
135
+ export async function createDevice(entry, opts, adapterFactory) {
136
+ if (opts.adapter || adapterFactory)
137
+ return (opts.adapter ?? adapterFactory()).requestDevice(opts);
138
+ if (entry === "browser")
139
+ return requestBrowserDevice(opts);
140
+ throw unsupportedError("init", `init(${entry}) requires adapterFactory.`);
141
+ }
142
+ async function requestBrowserDevice(opts) {
143
+ const nav = globalThis.navigator;
144
+ const adapter = await nav.gpu?.requestAdapter({ powerPreference: opts.powerPreference });
145
+ if (!adapter)
146
+ throw unsupportedError("init", "navigator.gpu.requestAdapter() returned null.");
147
+ validateRequiredFeatures(adapter.features, opts.requiredFeatures);
148
+ const gpuDevice = await adapter.requestDevice({ requiredFeatures: opts.requiredFeatures, requiredLimits: opts.requiredLimits });
149
+ return new Device(gpuDevice, adapter.info ?? null);
150
+ }
151
+ //# sourceMappingURL=kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Buffer, Device } from "@aigpu/core";
2
+ export declare function assertDeviceUsable(device: Device, where: string): void;
3
+ /**
4
+ * Non-throwing counterpart of `assertDeviceUsable`, for implicit paths that must not raise over a
5
+ * caller's own intent (see the auto-submit in `FrameRunner.frame`). Device state is private, so the
6
+ * only supported query is the assertion itself.
7
+ */
8
+ export declare function isDeviceUsable(device: Device): boolean;
9
+ export declare function assertBufferUsable(buffer: Buffer, where: string): void;
10
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,21 @@
1
+ export function assertDeviceUsable(device, where) {
2
+ device.assertUsable(where);
3
+ }
4
+ /**
5
+ * Non-throwing counterpart of `assertDeviceUsable`, for implicit paths that must not raise over a
6
+ * caller's own intent (see the auto-submit in `FrameRunner.frame`). Device state is private, so the
7
+ * only supported query is the assertion itself.
8
+ */
9
+ export function isDeviceUsable(device) {
10
+ try {
11
+ assertDeviceUsable(device, "Device");
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ export function assertBufferUsable(buffer, where) {
19
+ buffer.assertUsable(where);
20
+ }
21
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IAC7D,MAA2D,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,CAAC;QACH,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IAC7D,MAA2D,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Entry guard shared by the gpu-first factories.
3
+ *
4
+ * Every free function starts the same way: resolve the private kernel of the `Gpu` it was handed
5
+ * and refuse to build anything on a disposed one — after `gpu.dispose()` the device and every
6
+ * resource it owned are gone, so a factory would hand back a handle that can only fail later,
7
+ * usually inside a driver call with no useful stack.
8
+ *
9
+ * It lives in its own module (instead of `kernel.ts`) so the kernel keeps zero knowledge of the
10
+ * feature families, and so the guard costs one tiny function in any bundle that uses a factory.
11
+ */
12
+ import { AIGpuError } from "./errors.ts";
13
+ import { type Gpu, type Kernel } from "./kernel.ts";
14
+ import type { QueryHostOptions } from "./query-ring.ts";
15
+ /**
16
+ * Kernel of `gpu`, or a thrown error when the gpu is disposed (`AIGPU-GPU-DISPOSED`) or was not
17
+ * created by `init()` (`AIGPU-GPU-FOREIGN`, from `kernelOf`).
18
+ *
19
+ * @internal
20
+ */
21
+ export declare function liveKernel(gpu: Gpu, where: string): Kernel;
22
+ /** @internal */
23
+ export declare function gpuDisposedError(where: string): AIGpuError;
24
+ /** Anything the kernel can tear down in the `resource` phase and that reports its own disposal back. */
25
+ interface DisposableFeature {
26
+ dispose(): void;
27
+ }
28
+ /**
29
+ * Builds a query-backed feature (`timer()`, `visibility()`) wired to the kernel: readbacks join
30
+ * `gpu.settled()`, dropped readbacks reach `gpu.onError`, and the feature goes down with the gpu in
31
+ * the `resource` phase — before caches and the device, after the schedulers stopped.
32
+ *
33
+ * The registration is released when the feature disposes itself, so a long-lived gpu that creates
34
+ * and disposes timers per scene does not accumulate dead disposers.
35
+ *
36
+ * @internal
37
+ */
38
+ export declare function ownQueryFeature<T extends DisposableFeature>(kernel: Kernel, create: (host: QueryHostOptions) => T): T;
39
+ /**
40
+ * Registers a resource whose lifetime ends with the gpu, returning it. `destroy` runs in the
41
+ * `resource` phase; `onDestroyed` (when the resource can be destroyed by hand) drops the
42
+ * registration so manual destruction does not leave a dead disposer behind.
43
+ *
44
+ * @internal
45
+ */
46
+ export declare function ownResource<T>(kernel: Kernel, resource: T, destroy: (resource: T) => void, onDestroyed?: (cb: () => void) => void): T;
47
+ export {};
48
+ //# sourceMappingURL=live-kernel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-kernel.d.ts","sourceRoot":"","sources":["../src/live-kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAY,KAAK,GAAG,EAAE,KAAK,MAAM,EAAgB,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAO1D;AAED,wGAAwG;AACxG,UAAU,iBAAiB;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,CAAC,GAAG,CAAC,CASrH;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC,CAIrI"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Entry guard shared by the gpu-first factories.
3
+ *
4
+ * Every free function starts the same way: resolve the private kernel of the `Gpu` it was handed
5
+ * and refuse to build anything on a disposed one — after `gpu.dispose()` the device and every
6
+ * resource it owned are gone, so a factory would hand back a handle that can only fail later,
7
+ * usually inside a driver call with no useful stack.
8
+ *
9
+ * It lives in its own module (instead of `kernel.ts`) so the kernel keeps zero knowledge of the
10
+ * feature families, and so the guard costs one tiny function in any bundle that uses a factory.
11
+ */
12
+ import { AIGpuError } from "./errors.js";
13
+ import { kernelOf } from "./kernel.js";
14
+ /**
15
+ * Kernel of `gpu`, or a thrown error when the gpu is disposed (`AIGPU-GPU-DISPOSED`) or was not
16
+ * created by `init()` (`AIGPU-GPU-FOREIGN`, from `kernelOf`).
17
+ *
18
+ * @internal
19
+ */
20
+ export function liveKernel(gpu, where) {
21
+ const kernel = kernelOf(gpu);
22
+ if (kernel.disposed)
23
+ throw gpuDisposedError(where);
24
+ return kernel;
25
+ }
26
+ /** @internal */
27
+ export function gpuDisposedError(where) {
28
+ return new AIGpuError({
29
+ code: "AIGPU-GPU-DISPOSED",
30
+ message: `${where}() ran after gpu.dispose(); the device and everything it owned are gone.`,
31
+ fix: "Create resources before disposing the gpu, or init() a new one.",
32
+ where,
33
+ });
34
+ }
35
+ /**
36
+ * Builds a query-backed feature (`timer()`, `visibility()`) wired to the kernel: readbacks join
37
+ * `gpu.settled()`, dropped readbacks reach `gpu.onError`, and the feature goes down with the gpu in
38
+ * the `resource` phase — before caches and the device, after the schedulers stopped.
39
+ *
40
+ * The registration is released when the feature disposes itself, so a long-lived gpu that creates
41
+ * and disposes timers per scene does not accumulate dead disposers.
42
+ *
43
+ * @internal
44
+ */
45
+ export function ownQueryFeature(kernel, create) {
46
+ let release = () => undefined;
47
+ const feature = create({
48
+ trackSettled: (promise) => { void kernel.trackDelivery(promise); },
49
+ errorSink: (error) => kernel.reportError(error),
50
+ onDispose: () => { release(); },
51
+ });
52
+ release = kernel.own("resource", () => feature.dispose());
53
+ return feature;
54
+ }
55
+ /**
56
+ * Registers a resource whose lifetime ends with the gpu, returning it. `destroy` runs in the
57
+ * `resource` phase; `onDestroyed` (when the resource can be destroyed by hand) drops the
58
+ * registration so manual destruction does not leave a dead disposer behind.
59
+ *
60
+ * @internal
61
+ */
62
+ export function ownResource(kernel, resource, destroy, onDestroyed) {
63
+ const release = kernel.own("resource", () => destroy(resource));
64
+ onDestroyed?.(release);
65
+ return resource;
66
+ }
67
+ //# sourceMappingURL=live-kernel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-kernel.js","sourceRoot":"","sources":["../src/live-kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAuC,MAAM,aAAa,CAAC;AAG5E;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ,EAAE,KAAa;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,QAAQ;QAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAI,UAAU,CAAC;QACpB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,GAAG,KAAK,0EAA0E;QAC3F,GAAG,EAAE,iEAAiE;QACtE,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAA8B,MAAc,EAAE,MAAqC;IAChH,IAAI,OAAO,GAAY,GAAG,EAAE,CAAC,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC;QACrB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;QAC/C,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC;IACH,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAI,MAAc,EAAE,QAAW,EAAE,OAA8B,EAAE,WAAsC;IAChI,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/mock.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ import { createGpu, type InitOptions } from "./init.ts";
2
+ export { initFromDevice } from "./init-from-device.ts";
3
+ export { AGENT_ANIMATION_SHADER, agentAnimation, agentStatusIndex } from "./agent.ts";
4
+ export type { AgentAnimation, AgentAnimationOptions, AgentAnimationPatch, AgentAnimationState, AgentColor, AgentColors, AgentStatus } from "./agent.ts";
5
+ export { createMockAdapter } from "@aigpu/adapter-mock";
6
+ export type { CreateMockAdapterOptions } from "@aigpu/adapter-mock";
7
+ export { getMockGPUDeviceInstrumentation } from "@aigpu/core";
8
+ export type { Bundle, BundleOptions, BundleRecorder, Compute, ComputeOptions, DispatchOptions, ClearColor, GpuErrorListener, InitOptions, PingPongStorage, PingPongTargets, SharedUniforms, StorageAccess, StorageBuffer, StorageOptions, Surface, SurfaceOptions, SurfaceResizeEvent, Timer, TimerSpan, Visibility, VisibilityOptions, VisibilityQuery } from "./init.ts";
9
+ export type { BlendComponentOptions, BlendOptions, BlendPreset, DepthOptions, Draw, DrawOptions, DrawCallOptions, DrawLayoutOptions, GeometryLike, StencilFaceOptions, StencilOptions } from "./draw.ts";
10
+ export { Geometry } from "./scene/geometry-descriptor.ts";
11
+ export type { GeometryAttributeOverride, GeometryAttributes, GeometryBuffer, GeometryBufferOptions, GeometryData, GeometryOptions, GeometrySlice, GeometrySliceOptions } from "./scene/geometry-descriptor.ts";
12
+ export type { Frame, FramePass, FramePassOptions, FrameLoopHandle, FrameLoopOptions, FrameRunner } from "./frame.ts";
13
+ export type { Effect, EffectOptions } from "./effect.ts";
14
+ export type { CompileTarget, Target, TargetOptions, TargetSignature, TargetTextureOptions } from "./target.ts";
15
+ export { AIGpuError } from "./errors.ts";
16
+ export type { Buffer, Device, ResourceIdentity, Texture, AIGpuAdapter } from "@aigpu/core";
17
+ export { Uniform } from "./core/uniform.ts";
18
+ export type { UniformOptions } from "./core/uniform.ts";
19
+ export type { ResolvedShader, ShaderSource, SourceMap, WGSLAst, WGSLSource } from "@aigpu/wgsl";
20
+ export type { Gpu } from "./kernel.ts";
21
+ export { bundle } from "./bundle.ts";
22
+ export { clock } from "./clock.ts";
23
+ export type { Clock } from "./clock.ts";
24
+ export { compute } from "./compute.ts";
25
+ export { draw } from "./draw.ts";
26
+ export { effect } from "./effect.ts";
27
+ export { frame, frameLoop } from "./frame.ts";
28
+ export type { FrameLoopCallback } from "./frame.ts";
29
+ export { pingPong, pingPongStorage } from "./ping-pong.ts";
30
+ export { sampler } from "./sampler.ts";
31
+ export { storage } from "./storage.ts";
32
+ export { surface } from "./surface.ts";
33
+ export type { SurfaceCanvas } from "./surface.ts";
34
+ export { target } from "./target-offscreen.ts";
35
+ export { timer } from "./timer.ts";
36
+ export { uniforms } from "./uniforms.ts";
37
+ export { visibility } from "./visibility.ts";
38
+ export { geometry } from "./scene/geometry-descriptor.ts";
39
+ export type { GeometryRecipe, GeometryRecipeOf } from "./scene/geometry-recipe.ts";
40
+ /** Mock entrypoint. */
41
+ export declare function init(options?: InitOptions): ReturnType<typeof createGpu>;
42
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
package/dist/mock.js ADDED
@@ -0,0 +1,29 @@
1
+ import { createMockAdapter } from "@aigpu/adapter-mock";
2
+ import { createGpu } from "./init.js";
3
+ export { initFromDevice } from "./init-from-device.js";
4
+ export { AGENT_ANIMATION_SHADER, agentAnimation, agentStatusIndex } from "./agent.js";
5
+ export { createMockAdapter } from "@aigpu/adapter-mock";
6
+ export { getMockGPUDeviceInstrumentation } from "@aigpu/core";
7
+ export { Geometry } from "./scene/geometry-descriptor.js";
8
+ export { AIGpuError } from "./errors.js";
9
+ export { Uniform } from "./core/uniform.js";
10
+ export { bundle } from "./bundle.js";
11
+ export { clock } from "./clock.js";
12
+ export { compute } from "./compute.js";
13
+ export { draw } from "./draw.js";
14
+ export { effect } from "./effect.js";
15
+ export { frame, frameLoop } from "./frame.js";
16
+ export { pingPong, pingPongStorage } from "./ping-pong.js";
17
+ export { sampler } from "./sampler.js";
18
+ export { storage } from "./storage.js";
19
+ export { surface } from "./surface.js";
20
+ export { target } from "./target-offscreen.js";
21
+ export { timer } from "./timer.js";
22
+ export { uniforms } from "./uniforms.js";
23
+ export { visibility } from "./visibility.js";
24
+ export { geometry } from "./scene/geometry-descriptor.js";
25
+ /** Mock entrypoint. */
26
+ export function init(options) {
27
+ return createGpu("mock", options, createMockAdapter);
28
+ }
29
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAoB,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAK1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAO5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAG1D,uBAAuB;AACvB,MAAM,UAAU,IAAI,CAAC,OAAqB;IACxC,OAAO,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;AACvD,CAAC"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,48 @@
1
+ import { type NodeAdapterInfo, type NodeAdapterMode } from "@aigpu/adapter-node";
2
+ import type { AIGpuAdapter } from "@aigpu/core";
3
+ import { type Gpu, type InitOptions } from "./init.ts";
4
+ export { AGENT_ANIMATION_SHADER, agentAnimation, agentStatusIndex } from "./agent.ts";
5
+ export type { AgentAnimation, AgentAnimationOptions, AgentAnimationPatch, AgentAnimationState, AgentColor, AgentColors, AgentStatus } from "./agent.ts";
6
+ export { createNodeAdapter } from "@aigpu/adapter-node";
7
+ export type { Bundle, BundleOptions, BundleRecorder, Compute, ComputeOptions, DispatchOptions, ClearColor, GpuErrorListener, PingPongStorage, PingPongTargets, SharedUniforms, StorageAccess, StorageBuffer, StorageOptions, Surface, SurfaceOptions, SurfaceResizeEvent, Timer, TimerSpan, Visibility, VisibilityOptions, VisibilityQuery } from "./init.ts";
8
+ export type { BlendComponentOptions, BlendOptions, BlendPreset, DepthOptions, Draw, DrawOptions, DrawCallOptions, DrawLayoutOptions, GeometryLike, StencilFaceOptions, StencilOptions } from "./draw.ts";
9
+ export { Geometry } from "./scene/geometry-descriptor.ts";
10
+ export type { GeometryAttributeOverride, GeometryAttributes, GeometryBuffer, GeometryBufferOptions, GeometryData, GeometryOptions, GeometrySlice, GeometrySliceOptions } from "./scene/geometry-descriptor.ts";
11
+ export type { Frame, FramePass, FramePassOptions, FrameLoopHandle, FrameLoopOptions, FrameRunner } from "./frame.ts";
12
+ export type { Effect, EffectOptions } from "./effect.ts";
13
+ export type { CompileTarget, Target, TargetOptions, TargetSignature, TargetTextureOptions } from "./target.ts";
14
+ export { AIGpuError } from "./errors.ts";
15
+ export type { Buffer, Device, ResourceIdentity, Texture, AIGpuAdapter } from "@aigpu/core";
16
+ export { Uniform } from "./core/uniform.ts";
17
+ export type { UniformOptions } from "./core/uniform.ts";
18
+ export type { ResolvedShader, ShaderSource, SourceMap, WGSLAst, WGSLSource } from "@aigpu/wgsl";
19
+ export type { Gpu } from "./kernel.ts";
20
+ export { initFromDevice } from "./init-from-device.ts";
21
+ export { bundle } from "./bundle.ts";
22
+ export { clock } from "./clock.ts";
23
+ export type { Clock } from "./clock.ts";
24
+ export { compute } from "./compute.ts";
25
+ export { draw } from "./draw.ts";
26
+ export { effect } from "./effect.ts";
27
+ export { frame, frameLoop } from "./frame.ts";
28
+ export type { FrameLoopCallback } from "./frame.ts";
29
+ export { pingPong, pingPongStorage } from "./ping-pong.ts";
30
+ export { sampler } from "./sampler.ts";
31
+ export { storage } from "./storage.ts";
32
+ export { surface } from "./surface.ts";
33
+ export type { SurfaceCanvas } from "./surface.ts";
34
+ export { target } from "./target-offscreen.ts";
35
+ export { timer } from "./timer.ts";
36
+ export { uniforms } from "./uniforms.ts";
37
+ export { visibility } from "./visibility.ts";
38
+ export { geometry } from "./scene/geometry-descriptor.ts";
39
+ export type { GeometryRecipe, GeometryRecipeOf } from "./scene/geometry-recipe.ts";
40
+ export type NodeInitOptions = Omit<InitOptions, "adapter"> & {
41
+ readonly adapter?: NodeAdapterMode | AIGpuAdapter;
42
+ };
43
+ export interface NodeGpu extends Gpu {
44
+ readonly adapter: NodeAdapterInfo;
45
+ }
46
+ /** Node headless entrypoint (Dawn via @aigpu/adapter-node). */
47
+ export declare function init(options?: NodeInitOptions): Promise<NodeGpu>;
48
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js ADDED
@@ -0,0 +1,36 @@
1
+ import { createNodeAdapter, describeNodeAdapter, nodeAdapterEnvironmentOverride } from "@aigpu/adapter-node";
2
+ import { createGpu } from "./init.js";
3
+ export { AGENT_ANIMATION_SHADER, agentAnimation, agentStatusIndex } from "./agent.js";
4
+ export { createNodeAdapter } from "@aigpu/adapter-node";
5
+ export { Geometry } from "./scene/geometry-descriptor.js";
6
+ export { AIGpuError } from "./errors.js";
7
+ export { Uniform } from "./core/uniform.js";
8
+ // Parity with the browser entry: a Dawn device from another library is adopted the same way.
9
+ export { initFromDevice } from "./init-from-device.js";
10
+ export { bundle } from "./bundle.js";
11
+ export { clock } from "./clock.js";
12
+ export { compute } from "./compute.js";
13
+ export { draw } from "./draw.js";
14
+ export { effect } from "./effect.js";
15
+ export { frame, frameLoop } from "./frame.js";
16
+ export { pingPong, pingPongStorage } from "./ping-pong.js";
17
+ export { sampler } from "./sampler.js";
18
+ export { storage } from "./storage.js";
19
+ export { surface } from "./surface.js";
20
+ export { target } from "./target-offscreen.js";
21
+ export { timer } from "./timer.js";
22
+ export { uniforms } from "./uniforms.js";
23
+ export { visibility } from "./visibility.js";
24
+ export { geometry } from "./scene/geometry-descriptor.js";
25
+ /** Node headless entrypoint (Dawn via @aigpu/adapter-node). */
26
+ export async function init(options = {}) {
27
+ const normalized = options;
28
+ const override = nodeAdapterEnvironmentOverride();
29
+ const requested = override ?? normalized.adapter ?? "auto";
30
+ const custom = typeof requested === "object" ? requested : undefined;
31
+ // `normalized`, not `options`: the raw value is still unvalidated here.
32
+ const { adapter: _, ...deviceOptions } = normalized;
33
+ const gpu = await createGpu("node", custom ? { ...deviceOptions, adapter: custom } : deviceOptions, () => createNodeAdapter({ adapter: typeof requested === "string" ? requested : "auto" }));
34
+ return Object.assign(gpu, { adapter: Object.freeze(describeNodeAdapter(gpu.device.adapterInfo)) });
35
+ }
36
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,8BAA8B,EAA8C,MAAM,qBAAqB,CAAC;AAEzJ,OAAO,EAAE,SAAS,EAA8B,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAK1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAO5C,6FAA6F;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAQ1D,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAA2B,EAAE;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,MAAM,QAAQ,GAAG,8BAA8B,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,IAAI,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,wEAAwE;IACxE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC;IACpD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9L,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;AACrG,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Device } from "@aigpu/core";
2
+ import type { PingPongStorage, PingPongTargets, StorageAccess } from "./api-types.ts";
3
+ import type { Gpu } from "./kernel.ts";
4
+ import type { TargetTextureOptions } from "./target.ts";
5
+ import { OffscreenTarget } from "./target-offscreen.ts";
6
+ import { type RingStorageBuffer } from "./storage.ts";
7
+ /**
8
+ * Two offscreen targets read/write swapped by `swap()`: the classic feedback pair for blur chains,
9
+ * fluid solvers and any effect that samples the previous result. Both halves are destroyed by
10
+ * `gpu.dispose()`.
11
+ */
12
+ export declare function pingPong(gpu: Gpu, width: number, height: number, opts?: TargetTextureOptions): PingPongTargets;
13
+ /** Two storage buffers of `bytes` read/write swapped by `swap()`. Both halves are destroyed by `gpu.dispose()`. */
14
+ export declare function pingPongStorage(gpu: Gpu, bytes: number): PingPongStorage;
15
+ /** @internal `own` claims each half for a lifetime (the kernel's, from `pingPong()`); omitted, the halves are unowned. */
16
+ export declare function createPingPongTargets(device: Device, width: number, height: number, opts?: TargetTextureOptions, own?: (target: OffscreenTarget) => OffscreenTarget): PingPongTargets;
17
+ /** @internal See {@link createPingPongTargets} for `own`. */
18
+ export declare function createPingPongStorage(device: Device, bytes: number, access?: StorageAccess, own?: (buffer: RingStorageBuffer) => RingStorageBuffer): PingPongStorage;
19
+ //# sourceMappingURL=ping-pong.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ping-pong.d.ts","sourceRoot":"","sources":["../src/ping-pong.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AACrG,OAAO,KAAK,EAAE,GAAG,EAAU,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAyB,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3E;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,GAAG,eAAe,CAGlH;AAED,mHAAmH;AACnH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAGxE;AAUD,0HAA0H;AAC1H,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB,EAAE,GAAG,GAAE,CAAC,MAAM,EAAE,eAAe,KAAK,eAA0B,GAAG,eAAe,CAMnM;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,aAA4B,EAAE,GAAG,GAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,iBAA4B,GAAG,eAAe,CAI5L"}
@@ -0,0 +1,67 @@
1
+ import { liveKernel, ownResource } from "./live-kernel.js";
2
+ import { OffscreenTarget } from "./target-offscreen.js";
3
+ import { createStorageBuffer } from "./storage.js";
4
+ /**
5
+ * Two offscreen targets read/write swapped by `swap()`: the classic feedback pair for blur chains,
6
+ * fluid solvers and any effect that samples the previous result. Both halves are destroyed by
7
+ * `gpu.dispose()`.
8
+ */
9
+ export function pingPong(gpu, width, height, opts = {}) {
10
+ const kernel = liveKernel(gpu, "pingPong");
11
+ return createPingPongTargets(kernel.device, width, height, opts, (target) => ownTarget(kernel, target));
12
+ }
13
+ /** Two storage buffers of `bytes` read/write swapped by `swap()`. Both halves are destroyed by `gpu.dispose()`. */
14
+ export function pingPongStorage(gpu, bytes) {
15
+ const kernel = liveKernel(gpu, "pingPongStorage");
16
+ return createPingPongStorage(kernel.device, bytes, "read-write", (buffer) => ownBuffer(kernel, buffer));
17
+ }
18
+ function ownTarget(kernel, target) {
19
+ return ownResource(kernel, target, (owned) => owned.destroy(), (cb) => { target.onDestroy(cb); });
20
+ }
21
+ function ownBuffer(kernel, buffer) {
22
+ return ownResource(kernel, buffer, (owned) => owned.destroy(), (cb) => { buffer.onDestroy(cb); });
23
+ }
24
+ /** @internal `own` claims each half for a lifetime (the kernel's, from `pingPong()`); omitted, the halves are unowned. */
25
+ export function createPingPongTargets(device, width, height, opts = {}, own = identity) {
26
+ const size = [clampDimension(width), clampDimension(height)];
27
+ const baseOptions = { ...opts, size };
28
+ const ping = own(new OffscreenTarget(device, labelOption(baseOptions, opts.label, "ping")));
29
+ const pong = own(new OffscreenTarget(device, labelOption(baseOptions, opts.label, "pong")));
30
+ return new TargetPingPong([ping, pong]);
31
+ }
32
+ /** @internal See {@link createPingPongTargets} for `own`. */
33
+ export function createPingPongStorage(device, bytes, access = "read-write", own = identity) {
34
+ const ping = own(createStorageBuffer(device, bytes, access, undefined));
35
+ const pong = own(createStorageBuffer(device, bytes, access, undefined));
36
+ return new StoragePingPong([ping, pong]);
37
+ }
38
+ function identity(value) { return value; }
39
+ class TargetPingPong {
40
+ halves;
41
+ #parity = 0;
42
+ constructor(halves) {
43
+ this.halves = halves;
44
+ }
45
+ get read() { return this.halves[this.#parity]; }
46
+ get write() { return this.halves[this.#parity ^ 1]; }
47
+ swap() { this.#parity ^= 1; }
48
+ }
49
+ class StoragePingPong {
50
+ halves;
51
+ #parity = 0;
52
+ constructor(halves) {
53
+ this.halves = halves;
54
+ }
55
+ get read() { return this.halves[this.#parity]; }
56
+ get write() { return this.halves[this.#parity ^ 1]; }
57
+ swap() { this.#parity ^= 1; }
58
+ }
59
+ function clampDimension(value) {
60
+ return Math.max(1, Math.floor(value));
61
+ }
62
+ function labelOption(opts, label, suffix) {
63
+ if (!label)
64
+ return opts;
65
+ return { ...opts, label: `${label}.${suffix}` };
66
+ }
67
+ //# sourceMappingURL=ping-pong.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ping-pong.js","sourceRoot":"","sources":["../src/ping-pong.ts"],"names":[],"mappings":"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"}