@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,226 @@
1
+ /**
2
+ * Format byte size lookup table for automatic stride and offset derivation.
3
+ */
4
+ const VERTEX_FORMAT_SIZES = {
5
+ "float32": 4,
6
+ "float32x2": 8,
7
+ "float32x3": 12,
8
+ "float32x4": 16,
9
+ "uint32": 4,
10
+ "uint32x2": 8,
11
+ "uint32x4": 16,
12
+ "sint32": 4,
13
+ "sint32x2": 8,
14
+ "sint32x4": 16,
15
+ "unorm8x4": 4,
16
+ "snorm8x4": 4,
17
+ "uint8x4": 4,
18
+ "sint8x4": 4,
19
+ "unorm16x2": 4,
20
+ "snorm16x2": 4,
21
+ "uint16x2": 4,
22
+ "sint16x2": 4,
23
+ "unorm16x4": 8,
24
+ "snorm16x4": 8,
25
+ "uint16x4": 8,
26
+ "sint16x4": 8,
27
+ "float16x2": 4,
28
+ "float16x4": 8,
29
+ };
30
+ /**
31
+ * Derives GPUVertexBufferLayout with automatic cumulative offsets and 4-byte aligned arrayStride.
32
+ */
33
+ export function createVertexLayout(attributes, stepMode = "vertex") {
34
+ let currentOffset = 0;
35
+ const resolvedAttributes = [];
36
+ for (const attr of attributes) {
37
+ const offset = attr.offset ?? currentOffset;
38
+ resolvedAttributes.push({
39
+ shaderLocation: attr.shaderLocation,
40
+ format: attr.format,
41
+ offset,
42
+ });
43
+ const size = VERTEX_FORMAT_SIZES[attr.format] ?? 4;
44
+ currentOffset = offset + size;
45
+ }
46
+ // Array stride aligned to 4 bytes
47
+ const arrayStride = Math.max(4, Math.ceil(currentOffset / 4) * 4);
48
+ return {
49
+ arrayStride,
50
+ stepMode,
51
+ attributes: resolvedAttributes,
52
+ };
53
+ }
54
+ function reportShaderMessages(module, stage, label, onMessage, diag) {
55
+ module.getCompilationInfo().then((info) => {
56
+ for (const msg of info.messages) {
57
+ const shaderMsg = {
58
+ type: msg.type,
59
+ stage,
60
+ message: msg.message,
61
+ lineNum: msg.lineNum,
62
+ linePos: msg.linePos,
63
+ offset: msg.offset,
64
+ length: msg.length,
65
+ };
66
+ onMessage?.(shaderMsg);
67
+ if (msg.type === "error") {
68
+ if (diag?.err) {
69
+ diag.err({
70
+ code: "SHADER_COMPILE_ERROR",
71
+ raw: "[$stage$] Shader compilation error in $label$ line $lineNum$:$linePos$: $message$",
72
+ data: { stage, label, lineNum: msg.lineNum, linePos: msg.linePos, message: msg.message },
73
+ });
74
+ }
75
+ else if (!onMessage) {
76
+ console.error(`[Pipeline] ${stage} shader error in ${label} line ${msg.lineNum}:${msg.linePos}: ${msg.message}`);
77
+ }
78
+ }
79
+ else if (msg.type === "warning") {
80
+ if (diag?.warn) {
81
+ diag.warn({
82
+ code: "SHADER_COMPILE_WARNING",
83
+ raw: "[$stage$] Shader compilation warning in $label$ line $lineNum$:$linePos$: $message$",
84
+ data: { stage, label, lineNum: msg.lineNum, linePos: msg.linePos, message: msg.message },
85
+ });
86
+ }
87
+ else if (!onMessage) {
88
+ console.warn(`[Pipeline] ${stage} shader warning in ${label} line ${msg.lineNum}:${msg.linePos}: ${msg.message}`);
89
+ }
90
+ }
91
+ else if (msg.type === "info") {
92
+ if (diag?.info) {
93
+ diag.info({
94
+ code: "SHADER_COMPILE_INFO",
95
+ raw: "[$stage$] Shader compilation info in $label$ line $lineNum$:$linePos$: $message$",
96
+ data: { stage, label, lineNum: msg.lineNum, linePos: msg.linePos, message: msg.message },
97
+ });
98
+ }
99
+ }
100
+ }
101
+ });
102
+ }
103
+ /**
104
+ * WebGPU Render Pipeline wrapper supporting full shading as well as depth-only execution.
105
+ */
106
+ export class RenderPipeline {
107
+ gpuPipeline;
108
+ label;
109
+ hasFragmentStage;
110
+ constructor(gpuPipeline, hasFragmentStage, label = "RenderPipeline") {
111
+ this.gpuPipeline = gpuPipeline;
112
+ this.hasFragmentStage = hasFragmentStage;
113
+ this.label = label;
114
+ }
115
+ /**
116
+ * Factory: Compiles shaders and instantiates GPURenderPipeline.
117
+ */
118
+ static create(device, descriptor) {
119
+ const label = descriptor.label ?? "RenderPipeline";
120
+ // 1. Vertex Shader Module
121
+ const vsModule = device.createShaderModule({
122
+ label: `${label}_VSModule`,
123
+ code: descriptor.vertex.code,
124
+ });
125
+ reportShaderMessages(vsModule, "vertex", `${label}_VSModule`, descriptor.onShaderMessage, descriptor.diag);
126
+ // 2. Pipeline Layout: explicit bind group layouts, custom layout, or auto
127
+ let pipelineLayout = descriptor.layout ?? "auto";
128
+ if (descriptor.bindGroupLayouts && descriptor.bindGroupLayouts.length > 0) {
129
+ let emptyLayout = null;
130
+ const sanitizedLayouts = descriptor.bindGroupLayouts.map((l) => {
131
+ if (!l) {
132
+ if (!emptyLayout) {
133
+ emptyLayout = device.createBindGroupLayout({ label: `${label}_EmptySlotLayout`, entries: [] });
134
+ }
135
+ return emptyLayout;
136
+ }
137
+ return l;
138
+ });
139
+ pipelineLayout = device.createPipelineLayout({
140
+ label: `${label}_PipelineLayout`,
141
+ bindGroupLayouts: sanitizedLayouts,
142
+ });
143
+ }
144
+ // 3. Build native descriptor
145
+ const nativeDesc = {
146
+ label,
147
+ layout: pipelineLayout,
148
+ vertex: {
149
+ module: vsModule,
150
+ entryPoint: descriptor.vertex.entryPoint ?? "vs_main",
151
+ buffers: descriptor.vertex.buffers ?? [],
152
+ },
153
+ primitive: descriptor.primitive ?? {
154
+ topology: "triangle-list",
155
+ cullMode: "back",
156
+ frontFace: "ccw",
157
+ },
158
+ };
159
+ if (descriptor.depthStencil) {
160
+ nativeDesc.depthStencil = descriptor.depthStencil;
161
+ }
162
+ if (descriptor.multisample) {
163
+ nativeDesc.multisample = descriptor.multisample;
164
+ }
165
+ // 4. Fragment Stage (Optional: omitted for depth-only passes such as z-prepasses or occluders)
166
+ const hasFragmentStage = !!descriptor.fragment;
167
+ if (descriptor.fragment) {
168
+ const fsCode = descriptor.fragment.code ?? descriptor.vertex.code;
169
+ const fsModule = fsCode === descriptor.vertex.code
170
+ ? vsModule
171
+ : device.createShaderModule({
172
+ label: `${label}_FSModule`,
173
+ code: fsCode,
174
+ });
175
+ if (fsModule !== vsModule) {
176
+ reportShaderMessages(fsModule, "fragment", `${label}_FSModule`, descriptor.onShaderMessage, descriptor.diag);
177
+ }
178
+ nativeDesc.fragment = {
179
+ module: fsModule,
180
+ entryPoint: descriptor.fragment.entryPoint ?? "fs_main",
181
+ targets: descriptor.fragment.targets,
182
+ };
183
+ }
184
+ const gpuPipeline = device.createRenderPipeline(nativeDesc);
185
+ return new RenderPipeline(gpuPipeline, hasFragmentStage, label);
186
+ }
187
+ }
188
+ /**
189
+ * WebGPU Compute Pipeline wrapper for compute shaders.
190
+ */
191
+ export class ComputePipeline {
192
+ gpuPipeline;
193
+ label;
194
+ constructor(gpuPipeline, label = "ComputePipeline") {
195
+ this.gpuPipeline = gpuPipeline;
196
+ this.label = label;
197
+ }
198
+ /**
199
+ * Factory: Compiles compute shader and instantiates GPUComputePipeline.
200
+ */
201
+ static create(device, options) {
202
+ const label = options.label ?? "ComputePipeline";
203
+ const csModule = device.createShaderModule({
204
+ label: `${label}_CSModule`,
205
+ code: options.code,
206
+ });
207
+ reportShaderMessages(csModule, "compute", `${label}_CSModule`, options.onShaderMessage, options.diag);
208
+ let pipelineLayout = options.layout ?? "auto";
209
+ if (options.bindGroupLayouts && options.bindGroupLayouts.length > 0) {
210
+ pipelineLayout = device.createPipelineLayout({
211
+ label: `${label}_ComputeLayout`,
212
+ bindGroupLayouts: options.bindGroupLayouts,
213
+ });
214
+ }
215
+ const gpuPipeline = device.createComputePipeline({
216
+ label,
217
+ layout: pipelineLayout,
218
+ compute: {
219
+ module: csModule,
220
+ entryPoint: options.entryPoint ?? "cs_main",
221
+ },
222
+ });
223
+ return new ComputePipeline(gpuPipeline, label);
224
+ }
225
+ }
226
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../awgpu_old/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,186 @@
1
+ import type { Device } from "./device.js";
2
+ /**
3
+ * GPU texture wrapper containing hardware texture, view, and metadata.
4
+ */
5
+ export declare class Texture {
6
+ readonly gpuTexture: GPUTexture;
7
+ readonly gpuView: GPUTextureView;
8
+ width: number;
9
+ height: number;
10
+ depthOrArrayLayers: number;
11
+ readonly format: GPUTextureFormat;
12
+ readonly sampleCount: number;
13
+ readonly usage: GPUTextureUsageFlags;
14
+ readonly gpuOwned: boolean;
15
+ readonly label: string;
16
+ constructor(gpuTexture: GPUTexture, gpuView: GPUTextureView, width: number, height: number, format: GPUTextureFormat, usage: GPUTextureUsageFlags, options?: {
17
+ depthOrArrayLayers?: number;
18
+ sampleCount?: number;
19
+ gpuOwned?: boolean;
20
+ label?: string;
21
+ });
22
+ destroy(): void;
23
+ /**
24
+ * Creates 2D color or data texture.
25
+ */
26
+ static create2D(device: GPUDevice, options: {
27
+ width: number;
28
+ height: number;
29
+ format?: GPUTextureFormat;
30
+ usage?: GPUTextureUsageFlags;
31
+ sampleCount?: number;
32
+ label?: string;
33
+ }): Texture;
34
+ /**
35
+ * Creates 2D depth or depth-stencil texture.
36
+ */
37
+ static createDepth(device: GPUDevice, options: {
38
+ width: number;
39
+ height: number;
40
+ format?: GPUTextureFormat;
41
+ usage?: GPUTextureUsageFlags;
42
+ label?: string;
43
+ }): Texture;
44
+ /**
45
+ * Wraps existing GPUTexture and GPUTextureView.
46
+ */
47
+ static fromTexture(gpuTexture: GPUTexture, options?: {
48
+ view?: GPUTextureView;
49
+ label?: string;
50
+ gpuOwned?: boolean;
51
+ }): Texture;
52
+ }
53
+ /**
54
+ * GPU sampler wrapper supporting filtering and depth comparison.
55
+ */
56
+ export declare class Sampler {
57
+ readonly gpuSampler: GPUSampler;
58
+ readonly label: string;
59
+ constructor(gpuSampler: GPUSampler, label?: string);
60
+ /**
61
+ * Creates standard trilinear or bilinear filtering sampler.
62
+ */
63
+ static createLinear(device: GPUDevice, label?: string): Sampler;
64
+ /**
65
+ * Creates point / nearest-neighbor sampler.
66
+ */
67
+ static createNearest(device: GPUDevice, label?: string): Sampler;
68
+ /**
69
+ * Creates hardware depth comparison sampler (e.g. for depth tests, shadow mapping, or depth peeling).
70
+ */
71
+ static createComparison(device: GPUDevice, options?: {
72
+ compare?: GPUCompareFunction;
73
+ label?: string;
74
+ }): Sampler;
75
+ }
76
+ export interface ColorAttachmentConfig {
77
+ texture: Texture | null;
78
+ clearColor?: {
79
+ r: number;
80
+ g: number;
81
+ b: number;
82
+ a: number;
83
+ };
84
+ loadOp?: GPULoadOp;
85
+ storeOp?: GPUStoreOp;
86
+ resolveTarget?: Texture | null;
87
+ }
88
+ export interface DepthAttachmentConfig {
89
+ texture: Texture;
90
+ depthClearValue?: number;
91
+ depthLoadOp?: GPULoadOp;
92
+ depthStoreOp?: GPUStoreOp;
93
+ stencilClearValue?: number;
94
+ stencilLoadOp?: GPULoadOp;
95
+ stencilStoreOp?: GPUStoreOp;
96
+ }
97
+ /**
98
+ * Render destination descriptor supporting screen canvas, offscreen color buffers, MRT, and depth-only targets.
99
+ */
100
+ export declare class RenderTarget {
101
+ readonly label: string;
102
+ readonly isScreen: boolean;
103
+ gfx?: Device;
104
+ width: number;
105
+ height: number;
106
+ colorAttachments: ColorAttachmentConfig[];
107
+ depthAttachment?: DepthAttachmentConfig;
108
+ private depthFormat?;
109
+ private colorFormat?;
110
+ private _cachedDescriptor?;
111
+ private _dirtyDescriptor;
112
+ constructor(label: string, width: number, height: number, options?: {
113
+ isScreen?: boolean;
114
+ gfx?: Device;
115
+ colorAttachments?: ColorAttachmentConfig[];
116
+ depthAttachment?: DepthAttachmentConfig;
117
+ depthFormat?: GPUTextureFormat;
118
+ colorFormat?: GPUTextureFormat;
119
+ });
120
+ /**
121
+ * Factory: Creates render target bound to canvas swapchain backbuffer.
122
+ * Set depthFormat: null to create a pure color screen target (e.g. for 2D/post-processing).
123
+ */
124
+ /**
125
+ * Factory: Creates render target bound to canvas swapchain backbuffer.
126
+ * Set depthFormat: null to create a pure color screen target (e.g. for 2D/post-processing).
127
+ */
128
+ static createScreen(gfx: Device, options?: {
129
+ depthFormat?: GPUTextureFormat | null;
130
+ clearColor?: {
131
+ r: number;
132
+ g: number;
133
+ b: number;
134
+ a: number;
135
+ };
136
+ label?: string;
137
+ }): RenderTarget;
138
+ /**
139
+ * Factory: Creates offscreen color and depth render target (e.g. for HDR, G-buffer, or RTT).
140
+ * Set depthFormat: null to create a pure color offscreen target.
141
+ */
142
+ static createOffscreen(device: GPUDevice, width: number, height: number, options?: {
143
+ colorFormat?: GPUTextureFormat;
144
+ depthFormat?: GPUTextureFormat | null;
145
+ clearColor?: {
146
+ r: number;
147
+ g: number;
148
+ b: number;
149
+ a: number;
150
+ };
151
+ label?: string;
152
+ }): RenderTarget;
153
+ /**
154
+ * Factory: Creates depth-only render target (e.g. for shadow maps or depth prepasses).
155
+ */
156
+ static createDepthOnly(device: GPUDevice, width: number, height: number, options?: {
157
+ depthFormat?: GPUTextureFormat;
158
+ label?: string;
159
+ }): RenderTarget;
160
+ /**
161
+ * Resizes internal textures when target dimensions change.
162
+ */
163
+ resize(device: GPUDevice, width: number, height: number): void;
164
+ /**
165
+ * Marks cached GPURenderPassDescriptor dirty, forcing rebuild on next pass.
166
+ */
167
+ invalidateDescriptor(): void;
168
+ /**
169
+ * Builds GPURenderPassDescriptor for command recording in active frame.
170
+ * Caches descriptor structure to eliminate per-frame object allocation.
171
+ * Supports optional per-pass loadOp and clear overrides for RTT chaining.
172
+ */
173
+ buildPassDescriptor(options?: {
174
+ loadOp?: GPULoadOp;
175
+ depthLoadOp?: GPULoadOp;
176
+ clearColor?: {
177
+ r: number;
178
+ g: number;
179
+ b: number;
180
+ a: number;
181
+ };
182
+ depthClearValue?: number;
183
+ }): GPURenderPassDescriptor;
184
+ destroy(): void;
185
+ }
186
+ //# sourceMappingURL=target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../awgpu_old/target.ts"],"names":[],"mappings":"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"}