@asciiz/atoolkit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +21 -0
  2. package/ReadMe.md +198 -0
  3. package/dist/acircuit/chip.d.ts +46 -0
  4. package/dist/acircuit/chip.d.ts.map +1 -0
  5. package/dist/acircuit/chip.js +104 -0
  6. package/dist/acircuit/chip.js.map +1 -0
  7. package/dist/acircuit/circuit.d.ts +86 -0
  8. package/dist/acircuit/circuit.d.ts.map +1 -0
  9. package/dist/acircuit/circuit.js +606 -0
  10. package/dist/acircuit/circuit.js.map +1 -0
  11. package/dist/acircuit/composite.d.ts +32 -0
  12. package/dist/acircuit/composite.d.ts.map +1 -0
  13. package/dist/acircuit/composite.js +88 -0
  14. package/dist/acircuit/composite.js.map +1 -0
  15. package/dist/acircuit/index.d.ts +7 -0
  16. package/dist/acircuit/index.d.ts.map +1 -0
  17. package/dist/acircuit/index.js +6 -0
  18. package/dist/acircuit/index.js.map +1 -0
  19. package/dist/acircuit/socket.d.ts +20 -0
  20. package/dist/acircuit/socket.d.ts.map +1 -0
  21. package/dist/acircuit/socket.js +23 -0
  22. package/dist/acircuit/socket.js.map +1 -0
  23. package/dist/acircuit/types.d.ts +94 -0
  24. package/dist/acircuit/types.d.ts.map +1 -0
  25. package/dist/acircuit/types.js +2 -0
  26. package/dist/acircuit/types.js.map +1 -0
  27. package/dist/acircuit/wire.d.ts +26 -0
  28. package/dist/acircuit/wire.d.ts.map +1 -0
  29. package/dist/acircuit/wire.js +23 -0
  30. package/dist/acircuit/wire.js.map +1 -0
  31. package/dist/adiag/bus.d.ts +65 -0
  32. package/dist/adiag/bus.d.ts.map +1 -0
  33. package/dist/adiag/bus.js +225 -0
  34. package/dist/adiag/bus.js.map +1 -0
  35. package/dist/adiag/index.d.ts +3 -0
  36. package/dist/adiag/index.d.ts.map +1 -0
  37. package/dist/adiag/index.js +2 -0
  38. package/dist/adiag/index.js.map +1 -0
  39. package/dist/aecs/ComponentSet.d.ts +33 -0
  40. package/dist/aecs/ComponentSet.d.ts.map +1 -0
  41. package/dist/aecs/ComponentSet.js +127 -0
  42. package/dist/aecs/ComponentSet.js.map +1 -0
  43. package/dist/aecs/Entity.d.ts +43 -0
  44. package/dist/aecs/Entity.d.ts.map +1 -0
  45. package/dist/aecs/Entity.js +82 -0
  46. package/dist/aecs/Entity.js.map +1 -0
  47. package/dist/aecs/FloatSet.d.ts +34 -0
  48. package/dist/aecs/FloatSet.d.ts.map +1 -0
  49. package/dist/aecs/FloatSet.js +147 -0
  50. package/dist/aecs/FloatSet.js.map +1 -0
  51. package/dist/aecs/Query.d.ts +90 -0
  52. package/dist/aecs/Query.d.ts.map +1 -0
  53. package/dist/aecs/Query.js +304 -0
  54. package/dist/aecs/Query.js.map +1 -0
  55. package/dist/aecs/index.d.ts +6 -0
  56. package/dist/aecs/index.d.ts.map +1 -0
  57. package/dist/aecs/index.js +6 -0
  58. package/dist/aecs/index.js.map +1 -0
  59. package/dist/aecs/join.d.ts +2 -0
  60. package/dist/aecs/join.d.ts.map +1 -0
  61. package/dist/aecs/join.js +2 -0
  62. package/dist/aecs/join.js.map +1 -0
  63. package/dist/alm/constants.d.ts +11 -0
  64. package/dist/alm/constants.d.ts.map +1 -0
  65. package/dist/alm/constants.js +17 -0
  66. package/dist/alm/constants.js.map +1 -0
  67. package/dist/alm/index.d.ts +9 -0
  68. package/dist/alm/index.d.ts.map +1 -0
  69. package/dist/alm/index.js +12 -0
  70. package/dist/alm/index.js.map +1 -0
  71. package/dist/alm/mat3.d.ts +63 -0
  72. package/dist/alm/mat3.d.ts.map +1 -0
  73. package/dist/alm/mat3.js +393 -0
  74. package/dist/alm/mat3.js.map +1 -0
  75. package/dist/alm/mat4.d.ts +157 -0
  76. package/dist/alm/mat4.d.ts.map +1 -0
  77. package/dist/alm/mat4.js +1448 -0
  78. package/dist/alm/mat4.js.map +1 -0
  79. package/dist/alm/quat.d.ts +89 -0
  80. package/dist/alm/quat.d.ts.map +1 -0
  81. package/dist/alm/quat.js +543 -0
  82. package/dist/alm/quat.js.map +1 -0
  83. package/dist/alm/spatial.d.ts +102 -0
  84. package/dist/alm/spatial.d.ts.map +1 -0
  85. package/dist/alm/spatial.js +389 -0
  86. package/dist/alm/spatial.js.map +1 -0
  87. package/dist/alm/vec2.d.ts +97 -0
  88. package/dist/alm/vec2.d.ts.map +1 -0
  89. package/dist/alm/vec2.js +369 -0
  90. package/dist/alm/vec2.js.map +1 -0
  91. package/dist/alm/vec3.d.ts +117 -0
  92. package/dist/alm/vec3.d.ts.map +1 -0
  93. package/dist/alm/vec3.js +547 -0
  94. package/dist/alm/vec3.js.map +1 -0
  95. package/dist/alm/vec4.d.ts +95 -0
  96. package/dist/alm/vec4.d.ts.map +1 -0
  97. package/dist/alm/vec4.js +452 -0
  98. package/dist/alm/vec4.js.map +1 -0
  99. package/dist/atempo/cadence.d.ts +58 -0
  100. package/dist/atempo/cadence.d.ts.map +1 -0
  101. package/dist/atempo/cadence.js +110 -0
  102. package/dist/atempo/cadence.js.map +1 -0
  103. package/dist/atempo/clip.d.ts +37 -0
  104. package/dist/atempo/clip.d.ts.map +1 -0
  105. package/dist/atempo/clip.js +92 -0
  106. package/dist/atempo/clip.js.map +1 -0
  107. package/dist/atempo/curve.d.ts +6 -0
  108. package/dist/atempo/curve.d.ts.map +1 -0
  109. package/dist/atempo/curve.js +2 -0
  110. package/dist/atempo/curve.js.map +1 -0
  111. package/dist/atempo/curves/bezier.d.ts +7 -0
  112. package/dist/atempo/curves/bezier.d.ts.map +1 -0
  113. package/dist/atempo/curves/bezier.js +46 -0
  114. package/dist/atempo/curves/bezier.js.map +1 -0
  115. package/dist/atempo/curves/bounce.d.ts +6 -0
  116. package/dist/atempo/curves/bounce.d.ts.map +1 -0
  117. package/dist/atempo/curves/bounce.js +22 -0
  118. package/dist/atempo/curves/bounce.js.map +1 -0
  119. package/dist/atempo/curves/cubic.d.ts +14 -0
  120. package/dist/atempo/curves/cubic.d.ts.map +1 -0
  121. package/dist/atempo/curves/cubic.js +22 -0
  122. package/dist/atempo/curves/cubic.js.map +1 -0
  123. package/dist/atempo/curves/elastic.d.ts +6 -0
  124. package/dist/atempo/curves/elastic.d.ts.map +1 -0
  125. package/dist/atempo/curves/elastic.js +12 -0
  126. package/dist/atempo/curves/elastic.js.map +1 -0
  127. package/dist/atempo/curves/expo.d.ts +14 -0
  128. package/dist/atempo/curves/expo.d.ts.map +1 -0
  129. package/dist/atempo/curves/expo.js +26 -0
  130. package/dist/atempo/curves/expo.js.map +1 -0
  131. package/dist/atempo/curves/holdSnap.d.ts +6 -0
  132. package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
  133. package/dist/atempo/curves/holdSnap.js +15 -0
  134. package/dist/atempo/curves/holdSnap.js.map +1 -0
  135. package/dist/atempo/curves/index.d.ts +14 -0
  136. package/dist/atempo/curves/index.d.ts.map +1 -0
  137. package/dist/atempo/curves/index.js +14 -0
  138. package/dist/atempo/curves/index.js.map +1 -0
  139. package/dist/atempo/curves/linear.d.ts +6 -0
  140. package/dist/atempo/curves/linear.d.ts.map +1 -0
  141. package/dist/atempo/curves/linear.js +5 -0
  142. package/dist/atempo/curves/linear.js.map +1 -0
  143. package/dist/atempo/curves/overshoot.d.ts +6 -0
  144. package/dist/atempo/curves/overshoot.d.ts.map +1 -0
  145. package/dist/atempo/curves/overshoot.js +16 -0
  146. package/dist/atempo/curves/overshoot.js.map +1 -0
  147. package/dist/atempo/curves/quad.d.ts +14 -0
  148. package/dist/atempo/curves/quad.d.ts.map +1 -0
  149. package/dist/atempo/curves/quad.js +22 -0
  150. package/dist/atempo/curves/quad.js.map +1 -0
  151. package/dist/atempo/curves/step.d.ts +6 -0
  152. package/dist/atempo/curves/step.d.ts.map +1 -0
  153. package/dist/atempo/curves/step.js +11 -0
  154. package/dist/atempo/curves/step.js.map +1 -0
  155. package/dist/atempo/index.d.ts +17 -0
  156. package/dist/atempo/index.d.ts.map +1 -0
  157. package/dist/atempo/index.js +18 -0
  158. package/dist/atempo/index.js.map +1 -0
  159. package/dist/atempo/phase.d.ts +66 -0
  160. package/dist/atempo/phase.d.ts.map +1 -0
  161. package/dist/atempo/phase.js +121 -0
  162. package/dist/atempo/phase.js.map +1 -0
  163. package/dist/atempo/spring.d.ts +20 -0
  164. package/dist/atempo/spring.d.ts.map +1 -0
  165. package/dist/atempo/spring.js +71 -0
  166. package/dist/atempo/spring.js.map +1 -0
  167. package/dist/atempo/track.d.ts +69 -0
  168. package/dist/atempo/track.d.ts.map +1 -0
  169. package/dist/atempo/track.js +184 -0
  170. package/dist/atempo/track.js.map +1 -0
  171. package/dist/atempo/tracks/color.d.ts +20 -0
  172. package/dist/atempo/tracks/color.d.ts.map +1 -0
  173. package/dist/atempo/tracks/color.js +52 -0
  174. package/dist/atempo/tracks/color.js.map +1 -0
  175. package/dist/atempo/tracks/float.d.ts +9 -0
  176. package/dist/atempo/tracks/float.d.ts.map +1 -0
  177. package/dist/atempo/tracks/float.js +13 -0
  178. package/dist/atempo/tracks/float.js.map +1 -0
  179. package/dist/atempo/tracks/index.d.ts +8 -0
  180. package/dist/atempo/tracks/index.d.ts.map +1 -0
  181. package/dist/atempo/tracks/index.js +8 -0
  182. package/dist/atempo/tracks/index.js.map +1 -0
  183. package/dist/atempo/tracks/quat.d.ts +16 -0
  184. package/dist/atempo/tracks/quat.d.ts.map +1 -0
  185. package/dist/atempo/tracks/quat.js +72 -0
  186. package/dist/atempo/tracks/quat.js.map +1 -0
  187. package/dist/atempo/tracks/vec.d.ts +11 -0
  188. package/dist/atempo/tracks/vec.d.ts.map +1 -0
  189. package/dist/atempo/tracks/vec.js +27 -0
  190. package/dist/atempo/tracks/vec.js.map +1 -0
  191. package/dist/awasm/abi/index.d.ts +4 -0
  192. package/dist/awasm/abi/index.d.ts.map +1 -0
  193. package/dist/awasm/abi/index.js +4 -0
  194. package/dist/awasm/abi/index.js.map +1 -0
  195. package/dist/awasm/abi/layout.d.ts +40 -0
  196. package/dist/awasm/abi/layout.d.ts.map +1 -0
  197. package/dist/awasm/abi/layout.js +100 -0
  198. package/dist/awasm/abi/layout.js.map +1 -0
  199. package/dist/awasm/abi/slice.d.ts +28 -0
  200. package/dist/awasm/abi/slice.d.ts.map +1 -0
  201. package/dist/awasm/abi/slice.js +68 -0
  202. package/dist/awasm/abi/slice.js.map +1 -0
  203. package/dist/awasm/abi/string-buffer.d.ts +23 -0
  204. package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
  205. package/dist/awasm/abi/string-buffer.js +52 -0
  206. package/dist/awasm/abi/string-buffer.js.map +1 -0
  207. package/dist/awasm/index.d.ts +5 -0
  208. package/dist/awasm/index.d.ts.map +1 -0
  209. package/dist/awasm/index.js +8 -0
  210. package/dist/awasm/index.js.map +1 -0
  211. package/dist/awasm/memory/block-pool.d.ts +31 -0
  212. package/dist/awasm/memory/block-pool.d.ts.map +1 -0
  213. package/dist/awasm/memory/block-pool.js +98 -0
  214. package/dist/awasm/memory/block-pool.js.map +1 -0
  215. package/dist/awasm/memory/index.d.ts +5 -0
  216. package/dist/awasm/memory/index.d.ts.map +1 -0
  217. package/dist/awasm/memory/index.js +5 -0
  218. package/dist/awasm/memory/index.js.map +1 -0
  219. package/dist/awasm/memory/linear-arena.d.ts +36 -0
  220. package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
  221. package/dist/awasm/memory/linear-arena.js +94 -0
  222. package/dist/awasm/memory/linear-arena.js.map +1 -0
  223. package/dist/awasm/memory/memory-view.d.ts +51 -0
  224. package/dist/awasm/memory/memory-view.d.ts.map +1 -0
  225. package/dist/awasm/memory/memory-view.js +110 -0
  226. package/dist/awasm/memory/memory-view.js.map +1 -0
  227. package/dist/awasm/memory/wasm-memory.d.ts +40 -0
  228. package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
  229. package/dist/awasm/memory/wasm-memory.js +88 -0
  230. package/dist/awasm/memory/wasm-memory.js.map +1 -0
  231. package/dist/awasm/runtime/host-bridge.d.ts +30 -0
  232. package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
  233. package/dist/awasm/runtime/host-bridge.js +57 -0
  234. package/dist/awasm/runtime/host-bridge.js.map +1 -0
  235. package/dist/awasm/runtime/index.d.ts +5 -0
  236. package/dist/awasm/runtime/index.d.ts.map +1 -0
  237. package/dist/awasm/runtime/index.js +5 -0
  238. package/dist/awasm/runtime/index.js.map +1 -0
  239. package/dist/awasm/runtime/module-inspector.d.ts +32 -0
  240. package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
  241. package/dist/awasm/runtime/module-inspector.js +43 -0
  242. package/dist/awasm/runtime/module-inspector.js.map +1 -0
  243. package/dist/awasm/runtime/module-loader.d.ts +17 -0
  244. package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
  245. package/dist/awasm/runtime/module-loader.js +99 -0
  246. package/dist/awasm/runtime/module-loader.js.map +1 -0
  247. package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
  248. package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
  249. package/dist/awasm/runtime/wasm-instance.js +60 -0
  250. package/dist/awasm/runtime/wasm-instance.js.map +1 -0
  251. package/dist/awasm/thread/atomic-queue.d.ts +33 -0
  252. package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
  253. package/dist/awasm/thread/atomic-queue.js +78 -0
  254. package/dist/awasm/thread/atomic-queue.js.map +1 -0
  255. package/dist/awasm/thread/index.d.ts +4 -0
  256. package/dist/awasm/thread/index.d.ts.map +1 -0
  257. package/dist/awasm/thread/index.js +4 -0
  258. package/dist/awasm/thread/index.js.map +1 -0
  259. package/dist/awasm/thread/shared-memory.d.ts +38 -0
  260. package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
  261. package/dist/awasm/thread/shared-memory.js +74 -0
  262. package/dist/awasm/thread/shared-memory.js.map +1 -0
  263. package/dist/awasm/thread/worker-pool.d.ts +43 -0
  264. package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
  265. package/dist/awasm/thread/worker-pool.js +118 -0
  266. package/dist/awasm/thread/worker-pool.js.map +1 -0
  267. package/dist/awgpu/binding.d.ts +108 -0
  268. package/dist/awgpu/binding.d.ts.map +1 -0
  269. package/dist/awgpu/binding.js +251 -0
  270. package/dist/awgpu/binding.js.map +1 -0
  271. package/dist/awgpu/device.d.ts +68 -0
  272. package/dist/awgpu/device.d.ts.map +1 -0
  273. package/dist/awgpu/device.js +150 -0
  274. package/dist/awgpu/device.js.map +1 -0
  275. package/dist/awgpu/graph.d.ts +77 -0
  276. package/dist/awgpu/graph.d.ts.map +1 -0
  277. package/dist/awgpu/graph.js +288 -0
  278. package/dist/awgpu/graph.js.map +1 -0
  279. package/dist/awgpu/index.d.ts +10 -0
  280. package/dist/awgpu/index.d.ts.map +1 -0
  281. package/dist/awgpu/index.js +19 -0
  282. package/dist/awgpu/index.js.map +1 -0
  283. package/dist/awgpu/memory.d.ts +231 -0
  284. package/dist/awgpu/memory.d.ts.map +1 -0
  285. package/dist/awgpu/memory.js +547 -0
  286. package/dist/awgpu/memory.js.map +1 -0
  287. package/dist/awgpu/pipeline.d.ts +114 -0
  288. package/dist/awgpu/pipeline.d.ts.map +1 -0
  289. package/dist/awgpu/pipeline.js +335 -0
  290. package/dist/awgpu/pipeline.js.map +1 -0
  291. package/dist/awgpu/sequence.d.ts +83 -0
  292. package/dist/awgpu/sequence.d.ts.map +1 -0
  293. package/dist/awgpu/sequence.js +273 -0
  294. package/dist/awgpu/sequence.js.map +1 -0
  295. package/dist/awgpu/state.d.ts +27 -0
  296. package/dist/awgpu/state.d.ts.map +1 -0
  297. package/dist/awgpu/state.js +43 -0
  298. package/dist/awgpu/state.js.map +1 -0
  299. package/dist/awgpu/stream.d.ts +57 -0
  300. package/dist/awgpu/stream.d.ts.map +1 -0
  301. package/dist/awgpu/stream.js +139 -0
  302. package/dist/awgpu/stream.js.map +1 -0
  303. package/dist/awgpu/target.d.ts +98 -0
  304. package/dist/awgpu/target.d.ts.map +1 -0
  305. package/dist/awgpu/target.js +357 -0
  306. package/dist/awgpu/target.js.map +1 -0
  307. package/dist/awgpu_old/buffer.d.ts +78 -0
  308. package/dist/awgpu_old/buffer.d.ts.map +1 -0
  309. package/dist/awgpu_old/buffer.js +220 -0
  310. package/dist/awgpu_old/buffer.js.map +1 -0
  311. package/dist/awgpu_old/device.d.ts +69 -0
  312. package/dist/awgpu_old/device.d.ts.map +1 -0
  313. package/dist/awgpu_old/device.js +121 -0
  314. package/dist/awgpu_old/device.js.map +1 -0
  315. package/dist/awgpu_old/frame.d.ts +17 -0
  316. package/dist/awgpu_old/frame.d.ts.map +1 -0
  317. package/dist/awgpu_old/frame.js +29 -0
  318. package/dist/awgpu_old/frame.js.map +1 -0
  319. package/dist/awgpu_old/index.d.ts +8 -0
  320. package/dist/awgpu_old/index.d.ts.map +1 -0
  321. package/dist/awgpu_old/index.js +18 -0
  322. package/dist/awgpu_old/index.js.map +1 -0
  323. package/dist/awgpu_old/layout.d.ts +70 -0
  324. package/dist/awgpu_old/layout.d.ts.map +1 -0
  325. package/dist/awgpu_old/layout.js +137 -0
  326. package/dist/awgpu_old/layout.js.map +1 -0
  327. package/dist/awgpu_old/pass.d.ts +97 -0
  328. package/dist/awgpu_old/pass.d.ts.map +1 -0
  329. package/dist/awgpu_old/pass.js +302 -0
  330. package/dist/awgpu_old/pass.js.map +1 -0
  331. package/dist/awgpu_old/pipeline.d.ts +73 -0
  332. package/dist/awgpu_old/pipeline.d.ts.map +1 -0
  333. package/dist/awgpu_old/pipeline.js +226 -0
  334. package/dist/awgpu_old/pipeline.js.map +1 -0
  335. package/dist/awgpu_old/target.d.ts +186 -0
  336. package/dist/awgpu_old/target.d.ts.map +1 -0
  337. package/dist/awgpu_old/target.js +428 -0
  338. package/dist/awgpu_old/target.js.map +1 -0
  339. package/dist/index.d.ts +10 -0
  340. package/dist/index.d.ts.map +1 -0
  341. package/dist/index.js +10 -0
  342. package/dist/index.js.map +1 -0
  343. package/package.json +106 -0
@@ -0,0 +1,98 @@
1
+ import { type Device } from "./device.js";
2
+ import { Texture } from "./memory.js";
3
+ export interface ColorTargetDesc {
4
+ target: GPUTextureView | Texture | null;
5
+ clearColor?: GPUColor;
6
+ loadOp?: GPULoadOp;
7
+ storeOp?: GPUStoreOp;
8
+ resolveTarget?: GPUTextureView | Texture | null;
9
+ }
10
+ export interface DepthTargetDesc {
11
+ target: GPUTextureView | Texture;
12
+ depthClearValue?: number;
13
+ depthLoadOp?: GPULoadOp;
14
+ depthStoreOp?: GPUStoreOp;
15
+ stencilClearValue?: number;
16
+ stencilLoadOp?: GPULoadOp;
17
+ stencilStoreOp?: GPUStoreOp;
18
+ }
19
+ /**
20
+ * Coordinates render destination attachments (swapchain, offscreen MRT, depth-only).
21
+ * Automatically synchronizes canvas swapchain resizing and caches GPURenderPassDescriptor.
22
+ * Supports MSAA color resolve directly to canvas swapchain backbuffers.
23
+ */
24
+ export declare class Target {
25
+ readonly label: string;
26
+ readonly isScreen: boolean;
27
+ readonly sampleCount: number;
28
+ device?: Device;
29
+ width: number;
30
+ height: number;
31
+ colorTargets: ColorTargetDesc[];
32
+ depthTarget?: DepthTargetDesc;
33
+ colorFormat?: GPUTextureFormat;
34
+ depthFormat?: GPUTextureFormat;
35
+ readonly colorTextures: Texture[];
36
+ private _cachedDescriptor?;
37
+ private _cachedColorAttachments;
38
+ private _cachedDepthStencilAttachment?;
39
+ private _depthTexture?;
40
+ private _msaaColorTexture?;
41
+ private _colorFormats;
42
+ constructor(label: string, width: number, height: number, options?: {
43
+ isScreen?: boolean;
44
+ device?: Device;
45
+ colorTargets?: ColorTargetDesc[];
46
+ depthTarget?: DepthTargetDesc;
47
+ colorFormat?: GPUTextureFormat;
48
+ depthFormat?: GPUTextureFormat;
49
+ sampleCount?: number;
50
+ });
51
+ /**
52
+ * Invalidates the cached GPURenderPassDescriptor and internal attachment caches.
53
+ * Call after directly mutating colorTargets or depthTarget to force descriptor rebuild.
54
+ */
55
+ invalidateCache(): void;
56
+ /**
57
+ * Updates color attachment at index and invalidates descriptor cache.
58
+ */
59
+ setColorTarget(index: number, desc: ColorTargetDesc): void;
60
+ /**
61
+ * Updates depth attachment and invalidates descriptor cache.
62
+ */
63
+ setDepthTarget(desc: DepthTargetDesc | undefined): void;
64
+ /**
65
+ * Factory: Creates render target bound to canvas presentation swapchain.
66
+ * Supports multisample anti-aliasing (MSAA) with automatic swapchain resolve target.
67
+ * Pass depthFormat: null to create pure color pass omitting depth buffers.
68
+ */
69
+ static createScreen(device: Device, options?: {
70
+ depthFormat?: GPUTextureFormat | null;
71
+ clearColor?: GPUColor;
72
+ sampleCount?: number;
73
+ label?: string;
74
+ }): Target;
75
+ /**
76
+ * Factory: Creates offscreen color and optional depth render target (RTT).
77
+ * Managed color textures are accessible via colorTextures[] for downstream binding
78
+ * as sampled inputs in subsequent passes.
79
+ */
80
+ static createOffscreen(device: Device | GPUDevice, desc: {
81
+ width: number;
82
+ height: number;
83
+ colorFormats?: GPUTextureFormat[];
84
+ depthFormat?: GPUTextureFormat;
85
+ label?: string;
86
+ }): Target;
87
+ /**
88
+ * Synchronizes attachments and returns cached GPURenderPassDescriptor.
89
+ * Mutates pre-allocated attachment objects in-place to ensure zero heap allocations in hot paths.
90
+ */
91
+ getDescriptor(): GPURenderPassDescriptor;
92
+ /**
93
+ * Resizes internal attachment textures when dimensions change.
94
+ * Handles both screen depth/MSAA buffers and offscreen color + depth textures.
95
+ */
96
+ resize(device: Device | GPUDevice, width: number, height: number): void;
97
+ }
98
+ //# sourceMappingURL=target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../awgpu/target.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ // ================================================================
2
+ // Awgpu - Level 2: Render Destination Coordinator (Target)
3
+ // ================================================================
4
+ import { Texture, resolveTextureView } from "./memory.js";
5
+ /**
6
+ * Coordinates render destination attachments (swapchain, offscreen MRT, depth-only).
7
+ * Automatically synchronizes canvas swapchain resizing and caches GPURenderPassDescriptor.
8
+ * Supports MSAA color resolve directly to canvas swapchain backbuffers.
9
+ */
10
+ export class Target {
11
+ label;
12
+ isScreen;
13
+ sampleCount;
14
+ device;
15
+ width;
16
+ height;
17
+ // Color and depth attachment descriptors. Mutate via setColorTarget / setDepthTarget
18
+ // to guarantee cache invalidation; or call invalidateCache() after direct mutation.
19
+ colorTargets = [];
20
+ depthTarget;
21
+ colorFormat;
22
+ depthFormat;
23
+ // Managed textures created by createOffscreen. Exposed for downstream sampling.
24
+ colorTextures = [];
25
+ _cachedDescriptor;
26
+ _cachedColorAttachments = [];
27
+ _cachedDepthStencilAttachment;
28
+ _depthTexture;
29
+ _msaaColorTexture;
30
+ _colorFormats = [];
31
+ constructor(label, width, height, options = {}) {
32
+ this.label = label;
33
+ this.width = width;
34
+ this.height = height;
35
+ this.isScreen = options.isScreen ?? false;
36
+ this.sampleCount = options.sampleCount ?? 1;
37
+ this.device = options.device;
38
+ this.colorTargets = options.colorTargets ?? [];
39
+ this.depthTarget = options.depthTarget;
40
+ this.colorFormat = options.colorFormat;
41
+ this.depthFormat = options.depthFormat;
42
+ }
43
+ /**
44
+ * Invalidates the cached GPURenderPassDescriptor and internal attachment caches.
45
+ * Call after directly mutating colorTargets or depthTarget to force descriptor rebuild.
46
+ */
47
+ invalidateCache() {
48
+ this._cachedDescriptor = undefined;
49
+ this._cachedColorAttachments.length = 0;
50
+ this._cachedDepthStencilAttachment = undefined;
51
+ }
52
+ /**
53
+ * Updates color attachment at index and invalidates descriptor cache.
54
+ */
55
+ setColorTarget(index, desc) {
56
+ this.colorTargets[index] = desc;
57
+ this.invalidateCache();
58
+ }
59
+ /**
60
+ * Updates depth attachment and invalidates descriptor cache.
61
+ */
62
+ setDepthTarget(desc) {
63
+ this.depthTarget = desc;
64
+ this.invalidateCache();
65
+ }
66
+ /**
67
+ * Factory: Creates render target bound to canvas presentation swapchain.
68
+ * Supports multisample anti-aliasing (MSAA) with automatic swapchain resolve target.
69
+ * Pass depthFormat: null to create pure color pass omitting depth buffers.
70
+ */
71
+ static createScreen(device, options = {}) {
72
+ const canvas = device.canvas;
73
+ const w = Math.max(1, canvas ? canvas.width : 1);
74
+ const h = Math.max(1, canvas ? canvas.height : 1);
75
+ const hasDepth = options.depthFormat !== null;
76
+ const depthFormat = hasDepth ? (options.depthFormat ?? "depth24plus") : undefined;
77
+ const clearColor = options.clearColor ?? { r: 0.0, g: 0.0, b: 0.0, a: 1.0 };
78
+ const label = options.label ?? "ScreenTarget";
79
+ const sampleCount = options.sampleCount ?? 1;
80
+ let msaaColorTex;
81
+ let colorDesc;
82
+ if (sampleCount > 1) {
83
+ msaaColorTex = Texture.create2D(device, {
84
+ width: w,
85
+ height: h,
86
+ format: device.format,
87
+ sampleCount,
88
+ label: `${label}_MSAAColor`,
89
+ });
90
+ colorDesc = {
91
+ target: msaaColorTex,
92
+ resolveTarget: null,
93
+ clearColor,
94
+ loadOp: "clear",
95
+ storeOp: "discard",
96
+ };
97
+ }
98
+ else {
99
+ colorDesc = {
100
+ target: null,
101
+ clearColor,
102
+ loadOp: "clear",
103
+ storeOp: "store",
104
+ };
105
+ }
106
+ let depthTarget;
107
+ let depthTex;
108
+ if (depthFormat) {
109
+ depthTex = Texture.createDepth(device, {
110
+ width: w,
111
+ height: h,
112
+ format: depthFormat,
113
+ sampleCount,
114
+ label: `${label}_Depth`,
115
+ });
116
+ depthTarget = {
117
+ target: depthTex,
118
+ depthClearValue: 1.0,
119
+ depthLoadOp: "clear",
120
+ depthStoreOp: "store",
121
+ };
122
+ }
123
+ const target = new Target(label, w, h, {
124
+ isScreen: true,
125
+ device,
126
+ colorTargets: [colorDesc],
127
+ depthTarget,
128
+ colorFormat: device.format,
129
+ depthFormat,
130
+ sampleCount,
131
+ });
132
+ target._depthTexture = depthTex;
133
+ target._msaaColorTexture = msaaColorTex;
134
+ return target;
135
+ }
136
+ /**
137
+ * Factory: Creates offscreen color and optional depth render target (RTT).
138
+ * Managed color textures are accessible via colorTextures[] for downstream binding
139
+ * as sampled inputs in subsequent passes.
140
+ */
141
+ static createOffscreen(device, desc) {
142
+ const w = Math.max(1, desc.width);
143
+ const h = Math.max(1, desc.height);
144
+ const label = desc.label ?? "OffscreenTarget";
145
+ const formats = desc.colorFormats ?? ["rgba8unorm"];
146
+ const textures = [];
147
+ const colorTargets = new Array(formats.length);
148
+ for (let i = 0; i < formats.length; i++) {
149
+ const tex = Texture.create2D(device, {
150
+ width: w,
151
+ height: h,
152
+ format: formats[i],
153
+ label: `${label}_Color${i}`,
154
+ });
155
+ textures.push(tex);
156
+ colorTargets[i] = {
157
+ target: tex,
158
+ clearColor: { r: 0, g: 0, b: 0, a: 1 },
159
+ loadOp: "clear",
160
+ storeOp: "store",
161
+ };
162
+ }
163
+ let depthTarget;
164
+ let depthTex;
165
+ if (desc.depthFormat) {
166
+ depthTex = Texture.createDepth(device, {
167
+ width: w,
168
+ height: h,
169
+ format: desc.depthFormat,
170
+ label: `${label}_Depth`,
171
+ });
172
+ depthTarget = {
173
+ target: depthTex,
174
+ depthClearValue: 1.0,
175
+ depthLoadOp: "clear",
176
+ depthStoreOp: "store",
177
+ };
178
+ }
179
+ const target = new Target(label, w, h, {
180
+ isScreen: false,
181
+ colorTargets,
182
+ depthTarget,
183
+ colorFormat: formats[0],
184
+ depthFormat: desc.depthFormat,
185
+ });
186
+ target._depthTexture = depthTex;
187
+ // Populate managed texture list and format record for resize support.
188
+ for (const tex of textures) {
189
+ target.colorTextures.push(tex);
190
+ }
191
+ target._colorFormats = formats.slice();
192
+ return target;
193
+ }
194
+ /**
195
+ * Synchronizes attachments and returns cached GPURenderPassDescriptor.
196
+ * Mutates pre-allocated attachment objects in-place to ensure zero heap allocations in hot paths.
197
+ */
198
+ getDescriptor() {
199
+ if (this.isScreen && this.device && this.device.canvas) {
200
+ const cw = this.device.canvas.width;
201
+ const ch = this.device.canvas.height;
202
+ if (this.width !== cw || this.height !== ch) {
203
+ this.resize(this.device, cw, ch);
204
+ }
205
+ }
206
+ const colorCount = this.colorTargets.length;
207
+ if (!this._cachedDescriptor || this._cachedColorAttachments.length !== colorCount) {
208
+ this._cachedColorAttachments = new Array(colorCount);
209
+ for (let i = 0; i < colorCount; i++) {
210
+ this._cachedColorAttachments[i] = {
211
+ view: null,
212
+ clearValue: { r: 0, g: 0, b: 0, a: 1 },
213
+ loadOp: "clear",
214
+ storeOp: "store",
215
+ };
216
+ }
217
+ if (this.depthTarget) {
218
+ this._cachedDepthStencilAttachment = {
219
+ view: null,
220
+ depthClearValue: 1.0,
221
+ depthLoadOp: "clear",
222
+ depthStoreOp: "store",
223
+ };
224
+ }
225
+ else {
226
+ this._cachedDepthStencilAttachment = undefined;
227
+ }
228
+ this._cachedDescriptor = {
229
+ label: `${this.label}_PassDescriptor`,
230
+ colorAttachments: this._cachedColorAttachments,
231
+ depthStencilAttachment: this._cachedDepthStencilAttachment,
232
+ };
233
+ }
234
+ for (let i = 0; i < colorCount; i++) {
235
+ const cfg = this.colorTargets[i];
236
+ const att = this._cachedColorAttachments[i];
237
+ if (cfg.target === null) {
238
+ if (!this.device || !this.device.context) {
239
+ throw new Error("Cannot render to swapchain: Device canvas context is unconfigured.");
240
+ }
241
+ att.view = this.device.context.getCurrentTexture().createView();
242
+ }
243
+ else {
244
+ att.view = resolveTextureView(cfg.target);
245
+ }
246
+ att.clearValue = cfg.clearColor ?? { r: 0, g: 0, b: 0, a: 1 };
247
+ att.loadOp = cfg.loadOp ?? "clear";
248
+ att.storeOp = cfg.storeOp ?? "store";
249
+ if (cfg.resolveTarget === null) {
250
+ if (!this.device || !this.device.context) {
251
+ throw new Error("Cannot resolve to swapchain: Device canvas context is unconfigured.");
252
+ }
253
+ att.resolveTarget = this.device.context.getCurrentTexture().createView();
254
+ }
255
+ else if (cfg.resolveTarget !== undefined) {
256
+ att.resolveTarget = resolveTextureView(cfg.resolveTarget);
257
+ }
258
+ else {
259
+ att.resolveTarget = undefined;
260
+ }
261
+ }
262
+ if (this.depthTarget) {
263
+ if (!this._cachedDepthStencilAttachment) {
264
+ this._cachedDepthStencilAttachment = {
265
+ view: null,
266
+ depthClearValue: 1.0,
267
+ depthLoadOp: "clear",
268
+ depthStoreOp: "store",
269
+ };
270
+ this._cachedDescriptor.depthStencilAttachment = this._cachedDepthStencilAttachment;
271
+ }
272
+ const ds = this._cachedDepthStencilAttachment;
273
+ ds.view = resolveTextureView(this.depthTarget.target);
274
+ ds.depthClearValue = this.depthTarget.depthClearValue ?? 1.0;
275
+ ds.depthLoadOp = this.depthTarget.depthLoadOp ?? "clear";
276
+ ds.depthStoreOp = this.depthTarget.depthStoreOp ?? "store";
277
+ ds.stencilClearValue = this.depthTarget.stencilClearValue;
278
+ ds.stencilLoadOp = this.depthTarget.stencilLoadOp;
279
+ ds.stencilStoreOp = this.depthTarget.stencilStoreOp;
280
+ }
281
+ else if (this._cachedDescriptor.depthStencilAttachment) {
282
+ this._cachedDescriptor.depthStencilAttachment = undefined;
283
+ this._cachedDepthStencilAttachment = undefined;
284
+ }
285
+ return this._cachedDescriptor;
286
+ }
287
+ /**
288
+ * Resizes internal attachment textures when dimensions change.
289
+ * Handles both screen depth/MSAA buffers and offscreen color + depth textures.
290
+ */
291
+ resize(device, width, height) {
292
+ this.width = Math.max(1, width);
293
+ this.height = Math.max(1, height);
294
+ if (this.isScreen) {
295
+ if (this.sampleCount > 1) {
296
+ if (this._msaaColorTexture) {
297
+ this._msaaColorTexture.destroy();
298
+ }
299
+ this._msaaColorTexture = Texture.create2D(device, {
300
+ width: this.width,
301
+ height: this.height,
302
+ format: this.colorFormat ?? "rgba8unorm",
303
+ sampleCount: this.sampleCount,
304
+ label: `${this.label}_MSAAColor`,
305
+ });
306
+ this.colorTargets[0] = { ...this.colorTargets[0], target: this._msaaColorTexture };
307
+ }
308
+ if (this.depthFormat) {
309
+ if (this._depthTexture) {
310
+ this._depthTexture.destroy();
311
+ }
312
+ this._depthTexture = Texture.createDepth(device, {
313
+ width: this.width,
314
+ height: this.height,
315
+ format: this.depthFormat,
316
+ sampleCount: this.sampleCount,
317
+ label: `${this.label}_Depth`,
318
+ });
319
+ if (this.depthTarget) {
320
+ this.depthTarget.target = this._depthTexture;
321
+ }
322
+ }
323
+ }
324
+ else if (!this.isScreen) {
325
+ // Offscreen target: reallocate all managed color textures.
326
+ for (let i = 0; i < this.colorTextures.length; i++) {
327
+ this.colorTextures[i].destroy();
328
+ const tex = Texture.create2D(device, {
329
+ width: this.width,
330
+ height: this.height,
331
+ format: this._colorFormats[i] ?? "rgba8unorm",
332
+ label: `${this.label}_Color${i}`,
333
+ });
334
+ this.colorTextures[i] = tex;
335
+ this.colorTargets[i] = { ...this.colorTargets[i], target: tex };
336
+ }
337
+ // Reallocate depth texture for offscreen targets.
338
+ if (this.depthFormat && this.depthTarget) {
339
+ if (this._depthTexture) {
340
+ this._depthTexture.destroy();
341
+ }
342
+ else if (this.depthTarget.target instanceof Texture) {
343
+ this.depthTarget.target.destroy();
344
+ }
345
+ this._depthTexture = Texture.createDepth(device, {
346
+ width: this.width,
347
+ height: this.height,
348
+ format: this.depthFormat,
349
+ label: `${this.label}_Depth`,
350
+ });
351
+ this.depthTarget.target = this._depthTexture;
352
+ }
353
+ }
354
+ this.invalidateCache();
355
+ }
356
+ }
357
+ //# sourceMappingURL=target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../awgpu/target.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ export type BufferData = BufferSource | ArrayBufferView | Float32Array | Uint16Array | Uint32Array | Uint8Array | Int32Array | ArrayBuffer;
2
+ /**
3
+ * GPU buffer wrapper supporting uniform, storage, vertex, and index operations.
4
+ */
5
+ export declare class Buffer {
6
+ readonly gpuBuffer: GPUBuffer;
7
+ readonly size: number;
8
+ readonly usage: GPUBufferUsageFlags;
9
+ readonly label: string;
10
+ readonly gpuOwned: boolean;
11
+ constructor(gpuBuffer: GPUBuffer, size: number, usage: GPUBufferUsageFlags, options?: {
12
+ label?: string;
13
+ gpuOwned?: boolean;
14
+ });
15
+ /**
16
+ * Uploads fresh data to GPU buffer using queue.writeBuffer.
17
+ */
18
+ write(device: GPUDevice, data: BufferData, bufferOffset?: number): void;
19
+ destroy(): void;
20
+ /**
21
+ * Creates raw GPU buffer with optional initial data upload.
22
+ */
23
+ static create(device: GPUDevice, options: {
24
+ size: number;
25
+ usage: GPUBufferUsageFlags;
26
+ data?: BufferData;
27
+ label?: string;
28
+ }): Buffer;
29
+ /**
30
+ * Creates uniform buffer with automatic 16-byte minimum alignment.
31
+ */
32
+ static createUniform(device: GPUDevice, sizeOrData: number | BufferData, label?: string): Buffer;
33
+ /**
34
+ * Creates storage buffer with read-only or read-write usage.
35
+ */
36
+ static createStorage(device: GPUDevice, sizeOrData: number | BufferData, options?: {
37
+ readOnly?: boolean;
38
+ label?: string;
39
+ }): Buffer;
40
+ /**
41
+ * Creates vertex buffer with uploaded vertex data.
42
+ */
43
+ static createVertex(device: GPUDevice, dataOrSize: BufferData | number, label?: string): Buffer;
44
+ /**
45
+ * Creates index buffer with uploaded index data.
46
+ */
47
+ static createIndex(device: GPUDevice, dataOrSize: BufferData | number, label?: string): Buffer;
48
+ }
49
+ /**
50
+ * Reusable GPU buffer pool for dynamic per-frame allocation without destruction thrashing.
51
+ */
52
+ export declare class BufferPool {
53
+ private _buckets;
54
+ private _inUse;
55
+ private _availableCount;
56
+ readonly usage: GPUBufferUsageFlags;
57
+ readonly label: string;
58
+ constructor(usage: GPUBufferUsageFlags, label?: string);
59
+ /** Total number of allocated buffers currently managed by pool. */
60
+ get totalBuffers(): number;
61
+ /** Number of buffers currently acquired and active in frame. */
62
+ get inUseCount(): number;
63
+ private _addToBucket;
64
+ /**
65
+ * Resets active allocations at start of frame, returning all buffers to available pool.
66
+ */
67
+ reset(): void;
68
+ /**
69
+ * Acquires buffer with at least requested byte size using bucketed matching from available pool.
70
+ */
71
+ acquire(device: GPUDevice, requiredSize: number): Buffer;
72
+ /**
73
+ * Releases an individual buffer back to available pool ahead of frame reset.
74
+ */
75
+ release(buffer: Buffer): boolean;
76
+ destroy(): void;
77
+ }
78
+ //# sourceMappingURL=buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../awgpu_old/buffer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAChB,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,WAAW,CAAC;AAElB;;GAEG;AACH,qBAAa,MAAM;IACf,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAGvB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO;IASxD;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,SAAI,GAAG,IAAI;IAclE,OAAO,IAAI,IAAI;IAMf;;OAEG;IACH,MAAM,CAAC,MAAM,CACT,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,mBAAmB,CAAC;QAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,GACF,MAAM;IAmBT;;OAEG;IACH,MAAM,CAAC,aAAa,CAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,GAAG,UAAU,EAC/B,KAAK,SAAkB,GACxB,MAAM;IAaT;;OAEG;IACH,MAAM,CAAC,aAAa,CAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,GAAG,UAAU,EAC/B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACrD,MAAM;IAaT;;OAEG;IACH,MAAM,CAAC,YAAY,CACf,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,GAAG,MAAM,EAC/B,KAAK,SAAiB,GACvB,MAAM;IAYT;;OAEG;IACH,MAAM,CAAC,WAAW,CACd,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,GAAG,MAAM,EAC/B,KAAK,SAAgB,GACtB,MAAM;CAWZ;AAED;;GAEG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,eAAe,CAAK;IAC5B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,mBAAmB,EAAE,KAAK,SAAe;IAK5D,mEAAmE;IACnE,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,gEAAgE;IAChE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IA6CxD;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUhC,OAAO,IAAI,IAAI;CAelB"}