typegpu 0.11.9 → 0.12.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 (366) hide show
  1. package/bin.mjs +28 -6
  2. package/builtin.d.ts +51 -53
  3. package/builtin.js +30 -34
  4. package/common/fullScreenTriangle.d.ts +2 -10
  5. package/common/fullScreenTriangle.js +20 -28
  6. package/common/index.d.ts +2 -9
  7. package/common/index.js +3 -12
  8. package/common/writeSoA.d.ts +11 -12
  9. package/common/writeSoA.js +88 -76
  10. package/core/buffer/buffer.d.ts +79 -62
  11. package/core/buffer/buffer.js +283 -205
  12. package/core/buffer/bufferBinding.d.ts +71 -0
  13. package/core/buffer/bufferBinding.js +154 -0
  14. package/core/buffer/bufferUsage.d.ts +14 -45
  15. package/core/buffer/bufferUsage.js +1 -171
  16. package/core/buffer/laidOutBuffer.d.ts +25 -0
  17. package/core/buffer/laidOutBuffer.js +55 -0
  18. package/core/commandEncoder/attachments.d.ts +125 -0
  19. package/core/commandEncoder/attachments.js +29 -0
  20. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  21. package/core/commandEncoder/commandEncoder.js +56 -0
  22. package/core/commandEncoder/computePass.d.ts +58 -0
  23. package/core/commandEncoder/computePass.js +63 -0
  24. package/core/commandEncoder/renderPass.d.ts +121 -0
  25. package/core/commandEncoder/renderPass.js +196 -0
  26. package/core/constant/tgpuConstant.d.ts +26 -26
  27. package/core/constant/tgpuConstant.js +76 -65
  28. package/core/declare/tgpuDeclare.d.ts +3 -6
  29. package/core/declare/tgpuDeclare.js +36 -36
  30. package/core/function/autoIO.d.ts +61 -33
  31. package/core/function/autoIO.js +68 -73
  32. package/core/function/comptime.d.ts +11 -13
  33. package/core/function/comptime.js +60 -52
  34. package/core/function/createCallableSchema.d.ts +16 -0
  35. package/core/function/createCallableSchema.js +50 -40
  36. package/core/function/dualImpl.d.ts +44 -0
  37. package/core/function/dualImpl.js +71 -50
  38. package/core/function/entryInputRouter.d.ts +26 -0
  39. package/core/function/entryInputRouter.js +31 -33
  40. package/core/function/extractArgs.d.ts +38 -0
  41. package/core/function/extractArgs.js +202 -200
  42. package/core/function/fnCore.d.ts +44 -5
  43. package/core/function/fnCore.js +148 -93
  44. package/core/function/fnTypes.d.ts +31 -29
  45. package/core/function/fnTypes.js +1 -0
  46. package/core/function/ioSchema.d.ts +12 -10
  47. package/core/function/ioSchema.js +65 -47
  48. package/core/function/shelllessImpl.d.ts +9 -12
  49. package/core/function/shelllessImpl.js +17 -22
  50. package/core/function/templateUtils.d.ts +2 -0
  51. package/core/function/templateUtils.js +9 -8
  52. package/core/function/tgpuComputeFn.d.ts +26 -28
  53. package/core/function/tgpuComputeFn.js +47 -48
  54. package/core/function/tgpuFn.d.ts +34 -37
  55. package/core/function/tgpuFn.js +179 -153
  56. package/core/function/tgpuFragmentFn.d.ts +52 -53
  57. package/core/function/tgpuFragmentFn.js +63 -56
  58. package/core/function/tgpuVertexFn.d.ts +36 -39
  59. package/core/function/tgpuVertexFn.js +56 -53
  60. package/core/pipeline/computePipeline.d.ts +141 -53
  61. package/core/pipeline/computePipeline.js +291 -225
  62. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  63. package/core/pipeline/connectAttachmentToShader.js +25 -22
  64. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  65. package/core/pipeline/connectTargetsToShader.js +29 -27
  66. package/core/pipeline/drawState.d.ts +52 -0
  67. package/core/pipeline/drawState.js +225 -0
  68. package/core/pipeline/performanceTracker.d.ts +14 -0
  69. package/core/pipeline/performanceTracker.js +34 -0
  70. package/core/pipeline/pipelineUtils.d.ts +18 -0
  71. package/core/pipeline/pipelineUtils.js +54 -25
  72. package/core/pipeline/priors.d.ts +1 -0
  73. package/core/pipeline/priors.js +12 -0
  74. package/core/pipeline/renderPipeline.d.ts +246 -261
  75. package/core/pipeline/renderPipeline.js +487 -480
  76. package/core/pipeline/timeable.d.ts +28 -18
  77. package/core/pipeline/timeable.js +90 -52
  78. package/core/pipeline/typeGuards.d.ts +17 -0
  79. package/core/pipeline/typeGuards.js +52 -22
  80. package/core/pipeline/webgpuLimitations.d.ts +10 -0
  81. package/core/pipeline/webgpuLimitations.js +81 -0
  82. package/core/querySet/querySet.d.ts +26 -21
  83. package/core/querySet/querySet.js +127 -103
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  85. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
  86. package/core/resolve/externals.d.ts +25 -8
  87. package/core/resolve/externals.js +78 -54
  88. package/core/resolve/namespace.d.ts +22 -25
  89. package/core/resolve/namespace.js +16 -21
  90. package/core/resolve/resolvableString.d.ts +7 -0
  91. package/core/resolve/resolvableString.js +13 -0
  92. package/core/resolve/resolveData.d.ts +10 -0
  93. package/core/resolve/resolveData.js +162 -121
  94. package/core/resolve/stitch.d.ts +8 -0
  95. package/core/resolve/stitch.js +23 -21
  96. package/core/resolve/tgpuResolve.d.ts +55 -53
  97. package/core/resolve/tgpuResolve.js +106 -53
  98. package/core/root/configurableImpl.d.ts +10 -0
  99. package/core/root/configurableImpl.js +17 -19
  100. package/core/root/init.d.ts +76 -38
  101. package/core/root/init.js +346 -455
  102. package/core/root/rootTypes.d.ts +461 -636
  103. package/core/root/rootTypes.js +1 -0
  104. package/core/sampler/sampler.d.ts +50 -31
  105. package/core/sampler/sampler.js +120 -113
  106. package/core/simulate/tgpuSimulate.d.ts +9 -12
  107. package/core/simulate/tgpuSimulate.js +68 -71
  108. package/core/slot/accessor.d.ts +36 -13
  109. package/core/slot/accessor.js +138 -91
  110. package/core/slot/internalSlots.d.ts +2 -0
  111. package/core/slot/internalSlots.js +1 -6
  112. package/core/slot/lazy.d.ts +2 -6
  113. package/core/slot/lazy.js +71 -39
  114. package/core/slot/slot.d.ts +2 -6
  115. package/core/slot/slot.js +45 -38
  116. package/core/slot/slotTypes.d.ts +78 -80
  117. package/core/slot/slotTypes.js +11 -16
  118. package/core/texture/externalTexture.d.ts +20 -11
  119. package/core/texture/externalTexture.js +46 -46
  120. package/core/texture/texture.d.ts +152 -97
  121. package/core/texture/texture.js +407 -314
  122. package/core/texture/textureFormats.d.ts +42 -23
  123. package/core/texture/textureFormats.js +104 -75
  124. package/core/texture/textureProps.d.ts +7 -10
  125. package/core/texture/textureProps.js +1 -0
  126. package/core/texture/textureUtils.d.ts +8 -0
  127. package/core/texture/textureUtils.js +185 -179
  128. package/core/texture/usageExtension.d.ts +21 -18
  129. package/core/texture/usageExtension.js +13 -17
  130. package/core/unroll/tgpuUnroll.d.ts +20 -19
  131. package/core/unroll/tgpuUnroll.js +82 -91
  132. package/core/valueProxyUtils.d.ts +3 -0
  133. package/core/valueProxyUtils.js +52 -41
  134. package/core/variable/tgpuVariable.d.ts +26 -27
  135. package/core/variable/tgpuVariable.js +93 -96
  136. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  137. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  138. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  139. package/core/vertexLayout/vertexAttribute.js +1 -0
  140. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  141. package/core/vertexLayout/vertexLayout.js +130 -99
  142. package/core/whitespaces.d.ts +2 -0
  143. package/core/whitespaces.js +16 -0
  144. package/data/alignIO.d.ts +7 -0
  145. package/data/alignIO.js +13 -13
  146. package/data/alignmentOf.d.ts +5 -8
  147. package/data/alignmentOf.js +90 -75
  148. package/data/array.d.ts +17 -9
  149. package/data/array.js +57 -40
  150. package/data/atomic.d.ts +2 -7
  151. package/data/atomic.js +26 -23
  152. package/data/attributes.d.ts +19 -21
  153. package/data/attributes.js +192 -132
  154. package/data/autoStruct.d.ts +36 -3
  155. package/data/autoStruct.js +84 -81
  156. package/data/compiledIO.d.ts +5 -0
  157. package/data/compiledIO.js +231 -215
  158. package/data/dataIO.d.ts +13 -11
  159. package/data/dataIO.js +643 -589
  160. package/data/dataTypes.d.ts +83 -65
  161. package/data/dataTypes.js +66 -68
  162. package/data/deepEqual.d.ts +2 -7
  163. package/data/deepEqual.js +80 -55
  164. package/data/disarray.d.ts +6 -10
  165. package/data/disarray.js +52 -46
  166. package/data/float16Conversion.d.ts +4 -0
  167. package/data/float16Conversion.js +7 -0
  168. package/data/generalizeFn.d.ts +25 -0
  169. package/data/generalizeFn.js +89 -0
  170. package/data/getLongestContiguousPrefix.d.ts +4 -8
  171. package/data/getLongestContiguousPrefix.js +6 -11
  172. package/data/index.d.ts +30 -31
  173. package/data/index.js +39 -172
  174. package/data/instanceToSchema.d.ts +24 -27
  175. package/data/instanceToSchema.js +1 -0
  176. package/data/isContiguous.d.ts +4 -8
  177. package/data/isContiguous.js +6 -11
  178. package/data/matrix.d.ts +21 -21
  179. package/data/matrix.js +513 -505
  180. package/data/numberOps.d.ts +5 -0
  181. package/data/numberOps.js +21 -21
  182. package/data/numeric.d.ts +21 -12
  183. package/data/numeric.js +287 -197
  184. package/data/offsetUtils.d.ts +9 -13
  185. package/data/offsetUtils.js +204 -144
  186. package/data/offsets.d.ts +8 -0
  187. package/data/offsets.js +33 -33
  188. package/data/partialIO.d.ts +13 -8
  189. package/data/partialIO.js +124 -113
  190. package/data/ptr.d.ts +12 -12
  191. package/data/ptr.js +42 -44
  192. package/data/ref.d.ts +40 -27
  193. package/data/ref.js +125 -95
  194. package/data/sampler.d.ts +99 -101
  195. package/data/sampler.js +17 -21
  196. package/data/schemaCallWrapper.d.ts +19 -0
  197. package/data/schemaCallWrapper.js +31 -26
  198. package/data/schemaMemoryLayout.d.ts +8 -0
  199. package/data/schemaMemoryLayout.js +213 -185
  200. package/data/sizeOf.d.ts +4 -8
  201. package/data/sizeOf.js +6 -11
  202. package/data/snippet.d.ts +96 -20
  203. package/data/snippet.js +75 -86
  204. package/data/struct.d.ts +4 -7
  205. package/data/struct.js +51 -39
  206. package/data/texture.d.ts +253 -250
  207. package/data/texture.js +238 -200
  208. package/data/unstruct.d.ts +2 -7
  209. package/data/unstruct.js +43 -37
  210. package/data/vector.d.ts +33 -21
  211. package/data/vector.js +234 -221
  212. package/data/vectorImpl.d.ts +231 -0
  213. package/data/vectorImpl.js +563 -515
  214. package/data/vectorOps.d.ts +25 -0
  215. package/data/vectorOps.js +118 -669
  216. package/data/vertexFormatData.d.ts +181 -184
  217. package/data/vertexFormatData.js +104 -106
  218. package/data/wgslTypes.d.ts +665 -600
  219. package/data/wgslTypes.js +220 -198
  220. package/errors.d.ts +50 -24
  221. package/errors.js +146 -126
  222. package/execMode.d.ts +16 -0
  223. package/execMode.js +47 -40
  224. package/extension.d.ts +13 -8
  225. package/extension.js +10 -16
  226. package/getGPUValue.d.ts +1 -0
  227. package/getGPUValue.js +2 -7
  228. package/index.d.ts +28 -68
  229. package/index.js +8 -28
  230. package/indexNamedExports.d.ts +69 -42
  231. package/indexNamedExports.js +25 -0
  232. package/internal.d.ts +16 -0
  233. package/internal.js +12 -0
  234. package/mathUtils.d.ts +5 -0
  235. package/mathUtils.js +7 -11
  236. package/memo.d.ts +11 -0
  237. package/memo.js +20 -22
  238. package/minify.d.ts +5 -0
  239. package/minify.js +93 -0
  240. package/nameUtils.d.ts +29 -0
  241. package/nameUtils.js +427 -394
  242. package/package.json +5 -1
  243. package/resolutionCtx.d.ts +162 -22
  244. package/resolutionCtx.js +911 -629
  245. package/serial/registry.d.ts +15 -0
  246. package/serial/registry.js +106 -0
  247. package/serial/restore.d.ts +49 -0
  248. package/serial/restore.js +68 -0
  249. package/serial/schema.d.ts +58 -0
  250. package/serial/schema.js +209 -0
  251. package/serial/types.d.ts +5 -0
  252. package/serial/types.js +1 -0
  253. package/shared/env.d.ts +9 -0
  254. package/shared/env.js +9 -12
  255. package/shared/generators.d.ts +4 -0
  256. package/shared/generators.js +10 -12
  257. package/shared/meta.d.ts +29 -14
  258. package/shared/meta.js +71 -55
  259. package/shared/normalizeMetadata.d.ts +32 -27
  260. package/shared/normalizeMetadata.js +23 -36
  261. package/shared/repr.d.ts +73 -55
  262. package/shared/repr.js +1 -0
  263. package/shared/soul.d.ts +17 -0
  264. package/shared/soul.js +1 -0
  265. package/shared/stringify.d.ts +2 -0
  266. package/shared/stringify.js +29 -20
  267. package/shared/symbols.d.ts +26 -20
  268. package/shared/symbols.js +79 -79
  269. package/shared/tseynit.d.ts +2 -0
  270. package/shared/tseynit.js +160 -75
  271. package/shared/utilityTypes.d.ts +30 -14
  272. package/shared/utilityTypes.js +2 -6
  273. package/shared/vertexFormat.d.ts +41 -43
  274. package/shared/vertexFormat.js +59 -62
  275. package/std/array.d.ts +2 -7
  276. package/std/array.js +18 -23
  277. package/std/atomic.d.ts +14 -18
  278. package/std/atomic.js +96 -95
  279. package/std/bitcast.d.ts +193 -10
  280. package/std/bitcast.js +309 -39
  281. package/std/boolean.d.ts +19 -33
  282. package/std/boolean.js +296 -292
  283. package/std/copy.d.ts +2 -7
  284. package/std/copy.js +27 -24
  285. package/std/derivative.d.ts +11 -15
  286. package/std/derivative.js +56 -79
  287. package/std/discard.d.ts +1 -6
  288. package/std/discard.js +7 -14
  289. package/std/environment.d.ts +19 -14
  290. package/std/environment.js +71 -51
  291. package/std/extensions.d.ts +2 -8
  292. package/std/extensions.js +10 -11
  293. package/std/index.d.ts +20 -24
  294. package/std/index.js +32 -187
  295. package/std/matrix.d.ts +6 -12
  296. package/std/matrix.js +60 -69
  297. package/std/numeric.d.ts +150 -146
  298. package/std/numeric.js +771 -727
  299. package/std/operators.d.ts +19 -27
  300. package/std/operators.js +195 -194
  301. package/std/packing.d.ts +5 -11
  302. package/std/packing.js +67 -75
  303. package/std/range.d.ts +6 -11
  304. package/std/range.js +48 -36
  305. package/std/subgroup.d.ts +33 -37
  306. package/std/subgroup.js +180 -217
  307. package/std/texture.d.ts +70 -38
  308. package/std/texture.js +176 -172
  309. package/taskQueue.d.ts +6 -0
  310. package/taskQueue.js +30 -0
  311. package/tgpu.d.ts +16 -0
  312. package/tgpu.js +17 -44
  313. package/tgpuBindGroupLayout.d.ts +132 -152
  314. package/tgpuBindGroupLayout.js +346 -268
  315. package/tgpuLogger.d.ts +34 -0
  316. package/tgpuLogger.js +64 -0
  317. package/tgpuUnstable.d.ts +16 -22
  318. package/tgpuUnstable.js +13 -35
  319. package/tgsl/accessIndex.d.ts +2 -0
  320. package/tgsl/accessIndex.js +76 -33
  321. package/tgsl/accessProp.d.ts +2 -0
  322. package/tgsl/accessProp.js +142 -101
  323. package/tgsl/accessStructProp.d.ts +5 -0
  324. package/tgsl/accessStructProp.js +13 -15
  325. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  326. package/tgsl/consoleLog/deserializers.js +119 -103
  327. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  328. package/tgsl/consoleLog/logGenerator.js +85 -80
  329. package/tgsl/consoleLog/serializers.d.ts +21 -0
  330. package/tgsl/consoleLog/serializers.js +119 -100
  331. package/tgsl/consoleLog/types.d.ts +40 -39
  332. package/tgsl/consoleLog/types.js +1 -0
  333. package/tgsl/conversion.d.ts +33 -0
  334. package/tgsl/conversion.js +271 -216
  335. package/tgsl/forOfUtils.d.ts +15 -0
  336. package/tgsl/forOfUtils.js +85 -70
  337. package/tgsl/generationHelpers.d.ts +22 -39
  338. package/tgsl/generationHelpers.js +85 -58
  339. package/tgsl/infixDispatch.d.ts +70 -0
  340. package/tgsl/infixDispatch.js +48 -46
  341. package/tgsl/jsPolyfills.d.ts +16 -19
  342. package/tgsl/jsPolyfills.js +44 -42
  343. package/tgsl/makeDereferenceable.d.ts +48 -0
  344. package/tgsl/makeDereferenceable.js +86 -0
  345. package/tgsl/makeResolvable.d.ts +22 -0
  346. package/tgsl/makeResolvable.js +33 -0
  347. package/tgsl/shaderGenerator.d.ts +77 -17
  348. package/tgsl/shaderGenerator.js +1 -0
  349. package/tgsl/shellless.d.ts +6 -9
  350. package/tgsl/shellless.js +73 -43
  351. package/tgsl/wgslGenerator.d.ts +66 -59
  352. package/tgsl/wgslGenerator.js +1345 -760
  353. package/types.d.ts +287 -222
  354. package/types.js +61 -44
  355. package/unwrapper.d.ts +31 -26
  356. package/unwrapper.js +1 -0
  357. package/wgslExtensions.d.ts +3 -5
  358. package/wgslExtensions.js +12 -16
  359. package/_virtual/rolldown_runtime.js +0 -13
  360. package/core/buffer/bufferShorthand.d.ts +0 -50
  361. package/core/buffer/bufferShorthand.js +0 -55
  362. package/core/pipeline/applyPipelineState.js +0 -37
  363. package/core/pipeline/limitsOverflow.js +0 -13
  364. package/package.js +0 -5
  365. package/tgsl/shaderGenerator_members.d.ts +0 -33
  366. package/tgsl/shaderGenerator_members.js +0 -12
@@ -1,29 +1,28 @@
1
- //#region src/shared/vertexFormat.d.ts
2
- declare const vertexFormats: readonly ["uint8", "uint8x2", "uint8x4", "sint8", "sint8x2", "sint8x4", "unorm8", "unorm8x2", "unorm8x4", "snorm8", "snorm8x2", "snorm8x4", "uint16", "uint16x2", "uint16x4", "sint16", "sint16x2", "sint16x4", "unorm16", "unorm16x2", "unorm16x4", "snorm16", "snorm16x2", "snorm16x4", "float16", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4", "unorm10-10-10-2", "unorm8x4-bgra"];
3
- type VertexFormat = (typeof vertexFormats)[number];
4
- declare const kindToDefaultFormatMap: {
5
- readonly f32: "float32";
6
- readonly vec2f: "float32x2";
7
- readonly vec3f: "float32x3";
8
- readonly vec4f: "float32x4";
9
- readonly f16: "float16";
10
- readonly vec2h: "float16x2";
11
- readonly vec4h: "float16x4";
12
- readonly u32: "uint32";
13
- readonly vec2u: "uint32x2";
14
- readonly vec3u: "uint32x3";
15
- readonly vec4u: "uint32x4";
16
- readonly i32: "sint32";
17
- readonly vec2i: "sint32x2";
18
- readonly vec3i: "sint32x3";
19
- readonly vec4i: "sint32x4";
1
+ export declare const vertexFormats: readonly ["uint8", "uint8x2", "uint8x4", "sint8", "sint8x2", "sint8x4", "unorm8", "unorm8x2", "unorm8x4", "snorm8", "snorm8x2", "snorm8x4", "uint16", "uint16x2", "uint16x4", "sint16", "sint16x2", "sint16x4", "unorm16", "unorm16x2", "unorm16x4", "snorm16", "snorm16x2", "snorm16x4", "float16", "float16x2", "float16x4", "float32", "float32x2", "float32x3", "float32x4", "uint32", "uint32x2", "uint32x3", "uint32x4", "sint32", "sint32x2", "sint32x3", "sint32x4", "unorm10-10-10-2", "unorm8x4-bgra"];
2
+ export type VertexFormat = (typeof vertexFormats)[number];
3
+ export declare const kindToDefaultFormatMap: {
4
+ readonly f32: "float32";
5
+ readonly vec2f: "float32x2";
6
+ readonly vec3f: "float32x3";
7
+ readonly vec4f: "float32x4";
8
+ readonly f16: "float16";
9
+ readonly vec2h: "float16x2";
10
+ readonly vec4h: "float16x4";
11
+ readonly u32: "uint32";
12
+ readonly vec2u: "uint32x2";
13
+ readonly vec3u: "uint32x3";
14
+ readonly vec4u: "uint32x4";
15
+ readonly i32: "sint32";
16
+ readonly vec2i: "sint32x2";
17
+ readonly vec3i: "sint32x3";
18
+ readonly vec4i: "sint32x4";
20
19
  };
21
- type KindToDefaultFormatMap = typeof kindToDefaultFormatMap;
22
- interface TgpuVertexAttrib<TFormat extends VertexFormat = VertexFormat> {
23
- readonly format: TFormat;
24
- readonly offset: number;
20
+ export type KindToDefaultFormatMap = typeof kindToDefaultFormatMap;
21
+ export interface TgpuVertexAttrib<TFormat extends VertexFormat = VertexFormat> {
22
+ readonly format: TFormat;
23
+ readonly offset: number;
25
24
  }
26
- type AnyVertexAttribs = Record<string, TgpuVertexAttrib> | TgpuVertexAttrib;
25
+ export type AnyVertexAttribs = Record<string, TgpuVertexAttrib> | TgpuVertexAttrib;
27
26
  /**
28
27
  * All vertex attribute formats that can be interpreted as
29
28
  * an single or multi component u32 in a shader.
@@ -48,23 +47,22 @@ type F32CompatibleFormats = TgpuVertexAttrib<'unorm8'> | TgpuVertexAttrib<'unorm
48
47
  * https://www.w3.org/TR/webgpu/#vertex-formats
49
48
  */
50
49
  type F16CompatibleFormats = F32CompatibleFormats;
51
- type KindToAcceptedAttribMap = {
52
- u32: U32CompatibleFormats;
53
- vec2u: U32CompatibleFormats;
54
- vec3u: U32CompatibleFormats;
55
- vec4u: U32CompatibleFormats;
56
- i32: I32CompatibleFormats;
57
- vec2i: I32CompatibleFormats;
58
- vec3i: I32CompatibleFormats;
59
- vec4i: I32CompatibleFormats;
60
- f16: F16CompatibleFormats;
61
- vec2h: F16CompatibleFormats;
62
- vec3h: F16CompatibleFormats;
63
- vec4h: F16CompatibleFormats;
64
- f32: F32CompatibleFormats;
65
- vec2f: F32CompatibleFormats;
66
- vec3f: F32CompatibleFormats;
67
- vec4f: F32CompatibleFormats;
50
+ export type KindToAcceptedAttribMap = {
51
+ u32: U32CompatibleFormats;
52
+ vec2u: U32CompatibleFormats;
53
+ vec3u: U32CompatibleFormats;
54
+ vec4u: U32CompatibleFormats;
55
+ i32: I32CompatibleFormats;
56
+ vec2i: I32CompatibleFormats;
57
+ vec3i: I32CompatibleFormats;
58
+ vec4i: I32CompatibleFormats;
59
+ f16: F16CompatibleFormats;
60
+ vec2h: F16CompatibleFormats;
61
+ vec3h: F16CompatibleFormats;
62
+ vec4h: F16CompatibleFormats;
63
+ f32: F32CompatibleFormats;
64
+ vec2f: F32CompatibleFormats;
65
+ vec3f: F32CompatibleFormats;
66
+ vec4f: F32CompatibleFormats;
68
67
  };
69
- //#endregion
70
- export { AnyVertexAttribs, KindToAcceptedAttribMap, KindToDefaultFormatMap, TgpuVertexAttrib, VertexFormat };
68
+ export {};
@@ -1,64 +1,61 @@
1
- //#region src/shared/vertexFormat.ts
2
- const vertexFormats = [
3
- "uint8",
4
- "uint8x2",
5
- "uint8x4",
6
- "sint8",
7
- "sint8x2",
8
- "sint8x4",
9
- "unorm8",
10
- "unorm8x2",
11
- "unorm8x4",
12
- "snorm8",
13
- "snorm8x2",
14
- "snorm8x4",
15
- "uint16",
16
- "uint16x2",
17
- "uint16x4",
18
- "sint16",
19
- "sint16x2",
20
- "sint16x4",
21
- "unorm16",
22
- "unorm16x2",
23
- "unorm16x4",
24
- "snorm16",
25
- "snorm16x2",
26
- "snorm16x4",
27
- "float16",
28
- "float16x2",
29
- "float16x4",
30
- "float32",
31
- "float32x2",
32
- "float32x3",
33
- "float32x4",
34
- "uint32",
35
- "uint32x2",
36
- "uint32x3",
37
- "uint32x4",
38
- "sint32",
39
- "sint32x2",
40
- "sint32x3",
41
- "sint32x4",
42
- "unorm10-10-10-2",
43
- "unorm8x4-bgra"
1
+ export const vertexFormats = [
2
+ 'uint8',
3
+ 'uint8x2',
4
+ 'uint8x4',
5
+ 'sint8',
6
+ 'sint8x2',
7
+ 'sint8x4',
8
+ 'unorm8',
9
+ 'unorm8x2',
10
+ 'unorm8x4',
11
+ 'snorm8',
12
+ 'snorm8x2',
13
+ 'snorm8x4',
14
+ 'uint16',
15
+ 'uint16x2',
16
+ 'uint16x4',
17
+ 'sint16',
18
+ 'sint16x2',
19
+ 'sint16x4',
20
+ 'unorm16',
21
+ 'unorm16x2',
22
+ 'unorm16x4',
23
+ 'snorm16',
24
+ 'snorm16x2',
25
+ 'snorm16x4',
26
+ 'float16',
27
+ 'float16x2',
28
+ 'float16x4',
29
+ 'float32',
30
+ 'float32x2',
31
+ 'float32x3',
32
+ 'float32x4',
33
+ 'uint32',
34
+ 'uint32x2',
35
+ 'uint32x3',
36
+ 'uint32x4',
37
+ 'sint32',
38
+ 'sint32x2',
39
+ 'sint32x3',
40
+ 'sint32x4',
41
+ 'unorm10-10-10-2',
42
+ 'unorm8x4-bgra',
44
43
  ];
45
- const kindToDefaultFormatMap = {
46
- f32: "float32",
47
- vec2f: "float32x2",
48
- vec3f: "float32x3",
49
- vec4f: "float32x4",
50
- f16: "float16",
51
- vec2h: "float16x2",
52
- vec4h: "float16x4",
53
- u32: "uint32",
54
- vec2u: "uint32x2",
55
- vec3u: "uint32x3",
56
- vec4u: "uint32x4",
57
- i32: "sint32",
58
- vec2i: "sint32x2",
59
- vec3i: "sint32x3",
60
- vec4i: "sint32x4"
44
+ export const kindToDefaultFormatMap = {
45
+ f32: 'float32',
46
+ vec2f: 'float32x2',
47
+ vec3f: 'float32x3',
48
+ vec4f: 'float32x4',
49
+ f16: 'float16',
50
+ vec2h: 'float16x2',
51
+ // vec3h has no direct equivalent in the spec
52
+ vec4h: 'float16x4',
53
+ u32: 'uint32',
54
+ vec2u: 'uint32x2',
55
+ vec3u: 'uint32x3',
56
+ vec4u: 'uint32x4',
57
+ i32: 'sint32',
58
+ vec2i: 'sint32x2',
59
+ vec3i: 'sint32x3',
60
+ vec4i: 'sint32x4',
61
61
  };
62
-
63
- //#endregion
64
- export { kindToDefaultFormatMap, vertexFormats };
package/std/array.d.ts CHANGED
@@ -1,7 +1,2 @@
1
- import { DualFn } from "../types.js";
2
- import { _ref } from "../data/ref.js";
3
-
4
- //#region src/std/array.d.ts
5
- declare const arrayLength: DualFn<(a: unknown[] | _ref<unknown[]>) => number>;
6
- //#endregion
7
- export { arrayLength };
1
+ import { type _ref as ref } from '../data/ref.ts';
2
+ export declare const arrayLength: import("../types.ts").DualFn<(a: unknown[] | ref<unknown[]>) => number>;
package/std/array.js CHANGED
@@ -1,27 +1,22 @@
1
- import { isPtr, isWgslArray } from "../data/wgslTypes.js";
2
- import { stitch } from "../core/resolve/stitch.js";
1
+ import { dualImpl } from "../core/function/dualImpl.js";
2
+ import { abstractInt, u32 } from "../data/numeric.js";
3
3
  import { ptrFn } from "../data/ptr.js";
4
4
  import { isRef } from "../data/ref.js";
5
- import { abstractInt, u32 } from "../data/numeric.js";
6
- import { dualImpl } from "../core/function/dualImpl.js";
7
-
8
- //#region src/std/array.ts
5
+ import { isPtr, isWgslArray } from "../data/wgslTypes.js";
9
6
  const sizeOfPointedToArray = (dataType) => isPtr(dataType) && isWgslArray(dataType.inner) ? dataType.inner.elementCount : 0;
10
- const arrayLength = dualImpl({
11
- name: "arrayLength",
12
- signature: (arg) => {
13
- const ptrArg = isPtr(arg) ? arg : ptrFn(arg);
14
- return {
15
- argTypes: [ptrArg],
16
- returnType: sizeOfPointedToArray(ptrArg) > 0 ? abstractInt : u32
17
- };
18
- },
19
- normalImpl: (a) => isRef(a) ? a.$.length : a.length,
20
- codegenImpl(_ctx, [a]) {
21
- const length = sizeOfPointedToArray(a.dataType);
22
- return length > 0 ? `${length}` : stitch`arrayLength(${a})`;
23
- }
7
+ export const arrayLength = dualImpl({
8
+ name: 'arrayLength',
9
+ signature: (arg) => {
10
+ const ptrArg = isPtr(arg) ? arg : ptrFn(arg);
11
+ return {
12
+ argTypes: [ptrArg],
13
+ returnType: sizeOfPointedToArray(ptrArg) > 0 ? abstractInt : u32,
14
+ };
15
+ },
16
+ normalImpl: (a) => (isRef(a) ? a.$.length : a.length),
17
+ codegenImpl(ctx, [a]) {
18
+ const length = sizeOfPointedToArray(a.dataType);
19
+ return length > 0 ? `${length}` : ctx.gen.emitCall('arrayLength', [], [a]);
20
+ },
21
+ sideEffects: false,
24
22
  });
25
-
26
- //#endregion
27
- export { arrayLength };
package/std/atomic.d.ts CHANGED
@@ -1,19 +1,15 @@
1
- import { DualFn } from "../types.js";
2
- import { atomicI32, atomicU32 } from "../data/wgslTypes.js";
3
-
4
- //#region src/std/atomic.d.ts
1
+ import { type atomicI32, type atomicU32 } from '../data/wgslTypes.ts';
5
2
  type AnyAtomic = atomicI32 | atomicU32;
6
- declare const workgroupBarrier: DualFn<(...args: never[]) => unknown>;
7
- declare const storageBarrier: DualFn<(...args: never[]) => unknown>;
8
- declare const textureBarrier: DualFn<(...args: never[]) => unknown>;
9
- declare const atomicLoad: DualFn<(<T extends AnyAtomic>(a: T) => number)>;
10
- declare const atomicStore: DualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
11
- declare const atomicAdd: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
12
- declare const atomicSub: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
13
- declare const atomicMax: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
14
- declare const atomicMin: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
15
- declare const atomicAnd: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
16
- declare const atomicOr: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
17
- declare const atomicXor: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
18
- //#endregion
19
- export { atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, storageBarrier, textureBarrier, workgroupBarrier };
3
+ export declare const workgroupBarrier: import("../types.ts").DualFn<(...args: never[]) => unknown>;
4
+ export declare const storageBarrier: import("../types.ts").DualFn<(...args: never[]) => unknown>;
5
+ export declare const textureBarrier: import("../types.ts").DualFn<(...args: never[]) => unknown>;
6
+ export declare const atomicLoad: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T) => number)>;
7
+ export declare const atomicStore: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
8
+ export declare const atomicAdd: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
9
+ export declare const atomicSub: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
10
+ export declare const atomicMax: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
11
+ export declare const atomicMin: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
12
+ export declare const atomicAnd: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
13
+ export declare const atomicOr: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
14
+ export declare const atomicXor: import("../types.ts").DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
15
+ export {};
package/std/atomic.js CHANGED
@@ -1,113 +1,114 @@
1
- import { Void, isAtomic } from "../data/wgslTypes.js";
2
- import { safeStringify } from "../shared/stringify.js";
1
+ import { dualImpl } from "../core/function/dualImpl.js";
3
2
  import { stitch } from "../core/resolve/stitch.js";
4
3
  import { i32, u32 } from "../data/numeric.js";
5
- import { dualImpl } from "../core/function/dualImpl.js";
6
-
7
- //#region src/std/atomic.ts
8
- const workgroupBarrier = dualImpl({
9
- name: "workgroupBarrier",
10
- normalImpl: "workgroupBarrier is a no-op outside of CODEGEN mode.",
11
- signature: {
12
- argTypes: [],
13
- returnType: Void
14
- },
15
- codegenImpl: () => "workgroupBarrier()"
4
+ import { isAtomic, Void, } from "../data/wgslTypes.js";
5
+ import { safeStringify } from "../shared/stringify.js";
6
+ export const workgroupBarrier = dualImpl({
7
+ name: 'workgroupBarrier',
8
+ normalImpl: 'workgroupBarrier is a no-op outside of CODEGEN mode.',
9
+ signature: { argTypes: [], returnType: Void },
10
+ codegenImpl: () => 'workgroupBarrier()',
11
+ sideEffects: true,
16
12
  });
17
- const storageBarrier = dualImpl({
18
- name: "storageBarrier",
19
- normalImpl: "storageBarrier is a no-op outside of CODEGEN mode.",
20
- signature: {
21
- argTypes: [],
22
- returnType: Void
23
- },
24
- codegenImpl: () => "storageBarrier()"
13
+ export const storageBarrier = dualImpl({
14
+ name: 'storageBarrier',
15
+ normalImpl: 'storageBarrier is a no-op outside of CODEGEN mode.',
16
+ signature: { argTypes: [], returnType: Void },
17
+ codegenImpl: () => 'storageBarrier()',
18
+ sideEffects: true,
25
19
  });
26
- const textureBarrier = dualImpl({
27
- name: "textureBarrier",
28
- normalImpl: "textureBarrier is a no-op outside of CODEGEN mode.",
29
- signature: {
30
- argTypes: [],
31
- returnType: Void
32
- },
33
- codegenImpl: () => "textureBarrier()"
20
+ export const textureBarrier = dualImpl({
21
+ name: 'textureBarrier',
22
+ normalImpl: 'textureBarrier is a no-op outside of CODEGEN mode.',
23
+ signature: { argTypes: [], returnType: Void },
24
+ codegenImpl: () => 'textureBarrier()',
25
+ sideEffects: true,
34
26
  });
35
- const atomicNormalError = "Atomic operations are not supported outside of CODEGEN mode.";
36
- const atomicLoad = dualImpl({
37
- name: "atomicLoad",
38
- normalImpl: atomicNormalError,
39
- signature: (a) => {
40
- if (!isAtomic(a)) throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
41
- return {
42
- argTypes: [a],
43
- returnType: a.inner
44
- };
45
- },
46
- codegenImpl: (_ctx, [a]) => stitch`atomicLoad(&${a})`
27
+ const atomicNormalError = 'Atomic operations are not supported outside of CODEGEN mode.';
28
+ export const atomicLoad = dualImpl({
29
+ name: 'atomicLoad',
30
+ normalImpl: atomicNormalError,
31
+ signature: (a) => {
32
+ if (!isAtomic(a)) {
33
+ throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
34
+ }
35
+ return { argTypes: [a], returnType: a.inner };
36
+ },
37
+ codegenImpl: (_ctx, [a]) => stitch `atomicLoad(&${a})`,
38
+ sideEffects: true,
47
39
  });
48
40
  const atomicActionSignature = (a) => {
49
- if (!isAtomic(a)) throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
50
- return {
51
- argTypes: [a, a.inner.type === "u32" ? u32 : i32],
52
- returnType: Void
53
- };
41
+ if (!isAtomic(a)) {
42
+ throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
43
+ }
44
+ return {
45
+ argTypes: [a, a.inner.type === 'u32' ? u32 : i32],
46
+ returnType: Void,
47
+ };
54
48
  };
55
49
  const atomicOpSignature = (a) => {
56
- if (!isAtomic(a)) throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
57
- const paramType = a.inner.type === "u32" ? u32 : i32;
58
- return {
59
- argTypes: [a, paramType],
60
- returnType: paramType
61
- };
50
+ if (!isAtomic(a)) {
51
+ throw new Error(`Invalid atomic type: ${safeStringify(a)}`);
52
+ }
53
+ const paramType = a.inner.type === 'u32' ? u32 : i32;
54
+ return {
55
+ argTypes: [a, paramType],
56
+ returnType: paramType,
57
+ };
62
58
  };
63
- const atomicStore = dualImpl({
64
- name: "atomicStore",
65
- normalImpl: atomicNormalError,
66
- signature: atomicActionSignature,
67
- codegenImpl: (_ctx, [a, value]) => stitch`atomicStore(&${a}, ${value})`
59
+ export const atomicStore = dualImpl({
60
+ name: 'atomicStore',
61
+ normalImpl: atomicNormalError,
62
+ signature: atomicActionSignature,
63
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicStore(&${a}, ${value})`,
64
+ sideEffects: true,
68
65
  });
69
- const atomicAdd = dualImpl({
70
- name: "atomicAdd",
71
- normalImpl: atomicNormalError,
72
- signature: atomicOpSignature,
73
- codegenImpl: (_ctx, [a, value]) => stitch`atomicAdd(&${a}, ${value})`
66
+ export const atomicAdd = dualImpl({
67
+ name: 'atomicAdd',
68
+ normalImpl: atomicNormalError,
69
+ signature: atomicOpSignature,
70
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicAdd(&${a}, ${value})`,
71
+ sideEffects: true,
74
72
  });
75
- const atomicSub = dualImpl({
76
- name: "atomicSub",
77
- normalImpl: atomicNormalError,
78
- signature: atomicOpSignature,
79
- codegenImpl: (_ctx, [a, value]) => stitch`atomicSub(&${a}, ${value})`
73
+ export const atomicSub = dualImpl({
74
+ name: 'atomicSub',
75
+ normalImpl: atomicNormalError,
76
+ signature: atomicOpSignature,
77
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicSub(&${a}, ${value})`,
78
+ sideEffects: true,
80
79
  });
81
- const atomicMax = dualImpl({
82
- name: "atomicMax",
83
- normalImpl: atomicNormalError,
84
- signature: atomicOpSignature,
85
- codegenImpl: (_ctx, [a, value]) => stitch`atomicMax(&${a}, ${value})`
80
+ export const atomicMax = dualImpl({
81
+ name: 'atomicMax',
82
+ normalImpl: atomicNormalError,
83
+ signature: atomicOpSignature,
84
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicMax(&${a}, ${value})`,
85
+ sideEffects: true,
86
86
  });
87
- const atomicMin = dualImpl({
88
- name: "atomicMin",
89
- normalImpl: atomicNormalError,
90
- signature: atomicOpSignature,
91
- codegenImpl: (_ctx, [a, value]) => stitch`atomicMin(&${a}, ${value})`
87
+ export const atomicMin = dualImpl({
88
+ name: 'atomicMin',
89
+ normalImpl: atomicNormalError,
90
+ signature: atomicOpSignature,
91
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicMin(&${a}, ${value})`,
92
+ sideEffects: true,
92
93
  });
93
- const atomicAnd = dualImpl({
94
- name: "atomicAnd",
95
- normalImpl: atomicNormalError,
96
- signature: atomicOpSignature,
97
- codegenImpl: (_ctx, [a, value]) => stitch`atomicAnd(&${a}, ${value})`
94
+ export const atomicAnd = dualImpl({
95
+ name: 'atomicAnd',
96
+ normalImpl: atomicNormalError,
97
+ signature: atomicOpSignature,
98
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicAnd(&${a}, ${value})`,
99
+ sideEffects: true,
98
100
  });
99
- const atomicOr = dualImpl({
100
- name: "atomicOr",
101
- normalImpl: atomicNormalError,
102
- signature: atomicOpSignature,
103
- codegenImpl: (_ctx, [a, value]) => stitch`atomicOr(&${a}, ${value})`
101
+ export const atomicOr = dualImpl({
102
+ name: 'atomicOr',
103
+ normalImpl: atomicNormalError,
104
+ signature: atomicOpSignature,
105
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicOr(&${a}, ${value})`,
106
+ sideEffects: true,
104
107
  });
105
- const atomicXor = dualImpl({
106
- name: "atomicXor",
107
- normalImpl: atomicNormalError,
108
- signature: atomicOpSignature,
109
- codegenImpl: (_ctx, [a, value]) => stitch`atomicXor(&${a}, ${value})`
108
+ export const atomicXor = dualImpl({
109
+ name: 'atomicXor',
110
+ normalImpl: atomicNormalError,
111
+ signature: atomicOpSignature,
112
+ codegenImpl: (_ctx, [a, value]) => stitch `atomicXor(&${a}, ${value})`,
113
+ sideEffects: true,
110
114
  });
111
-
112
- //#endregion
113
- export { atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, storageBarrier, textureBarrier, workgroupBarrier };