typegpu 0.11.8 → 0.12.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 (362) hide show
  1. package/builtin.d.ts +51 -53
  2. package/builtin.js +30 -34
  3. package/common/fullScreenTriangle.d.ts +2 -10
  4. package/common/fullScreenTriangle.js +20 -28
  5. package/common/index.d.ts +2 -9
  6. package/common/index.js +3 -12
  7. package/common/writeSoA.d.ts +11 -12
  8. package/common/writeSoA.js +88 -76
  9. package/core/buffer/buffer.d.ts +79 -62
  10. package/core/buffer/buffer.js +279 -205
  11. package/core/buffer/bufferBinding.d.ts +71 -0
  12. package/core/buffer/bufferBinding.js +154 -0
  13. package/core/buffer/bufferUsage.d.ts +14 -45
  14. package/core/buffer/bufferUsage.js +1 -171
  15. package/core/buffer/laidOutBuffer.d.ts +25 -0
  16. package/core/buffer/laidOutBuffer.js +55 -0
  17. package/core/commandEncoder/attachments.d.ts +125 -0
  18. package/core/commandEncoder/attachments.js +29 -0
  19. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  20. package/core/commandEncoder/commandEncoder.js +56 -0
  21. package/core/commandEncoder/computePass.d.ts +58 -0
  22. package/core/commandEncoder/computePass.js +63 -0
  23. package/core/commandEncoder/renderPass.d.ts +121 -0
  24. package/core/commandEncoder/renderPass.js +196 -0
  25. package/core/constant/tgpuConstant.d.ts +26 -26
  26. package/core/constant/tgpuConstant.js +76 -65
  27. package/core/declare/tgpuDeclare.d.ts +3 -6
  28. package/core/declare/tgpuDeclare.js +37 -38
  29. package/core/function/autoIO.d.ts +61 -33
  30. package/core/function/autoIO.js +68 -73
  31. package/core/function/comptime.d.ts +11 -13
  32. package/core/function/comptime.js +60 -52
  33. package/core/function/createCallableSchema.d.ts +16 -0
  34. package/core/function/createCallableSchema.js +50 -40
  35. package/core/function/dualImpl.d.ts +44 -0
  36. package/core/function/dualImpl.js +71 -50
  37. package/core/function/entryInputRouter.d.ts +26 -0
  38. package/core/function/entryInputRouter.js +31 -33
  39. package/core/function/extractArgs.d.ts +38 -0
  40. package/core/function/extractArgs.js +202 -200
  41. package/core/function/fnCore.d.ts +44 -0
  42. package/core/function/fnCore.js +148 -92
  43. package/core/function/fnTypes.d.ts +31 -29
  44. package/core/function/fnTypes.js +1 -0
  45. package/core/function/ioSchema.d.ts +12 -10
  46. package/core/function/ioSchema.js +65 -47
  47. package/core/function/shelllessImpl.d.ts +9 -12
  48. package/core/function/shelllessImpl.js +18 -20
  49. package/core/function/templateUtils.d.ts +2 -0
  50. package/core/function/templateUtils.js +9 -8
  51. package/core/function/tgpuComputeFn.d.ts +26 -28
  52. package/core/function/tgpuComputeFn.js +47 -48
  53. package/core/function/tgpuFn.d.ts +34 -37
  54. package/core/function/tgpuFn.js +179 -153
  55. package/core/function/tgpuFragmentFn.d.ts +52 -53
  56. package/core/function/tgpuFragmentFn.js +63 -56
  57. package/core/function/tgpuVertexFn.d.ts +36 -39
  58. package/core/function/tgpuVertexFn.js +56 -53
  59. package/core/pipeline/computePipeline.d.ts +141 -53
  60. package/core/pipeline/computePipeline.js +291 -225
  61. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  62. package/core/pipeline/connectAttachmentToShader.js +25 -22
  63. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  64. package/core/pipeline/connectTargetsToShader.js +29 -27
  65. package/core/pipeline/drawState.d.ts +52 -0
  66. package/core/pipeline/drawState.js +225 -0
  67. package/core/pipeline/limitsOverflow.d.ts +2 -0
  68. package/core/pipeline/limitsOverflow.js +13 -10
  69. package/core/pipeline/performanceTracker.d.ts +14 -0
  70. package/core/pipeline/performanceTracker.js +34 -0
  71. package/core/pipeline/pipelineUtils.d.ts +18 -0
  72. package/core/pipeline/pipelineUtils.js +54 -25
  73. package/core/pipeline/priors.d.ts +1 -0
  74. package/core/pipeline/priors.js +12 -0
  75. package/core/pipeline/renderPipeline.d.ts +246 -261
  76. package/core/pipeline/renderPipeline.js +487 -480
  77. package/core/pipeline/timeable.d.ts +28 -18
  78. package/core/pipeline/timeable.js +90 -52
  79. package/core/pipeline/typeGuards.d.ts +17 -0
  80. package/core/pipeline/typeGuards.js +52 -22
  81. package/core/querySet/querySet.d.ts +26 -21
  82. package/core/querySet/querySet.js +127 -103
  83. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +90 -93
  85. package/core/resolve/externals.d.ts +25 -7
  86. package/core/resolve/externals.js +79 -62
  87. package/core/resolve/namespace.d.ts +22 -25
  88. package/core/resolve/namespace.js +16 -21
  89. package/core/resolve/resolvableString.d.ts +7 -0
  90. package/core/resolve/resolvableString.js +13 -0
  91. package/core/resolve/resolveData.d.ts +10 -0
  92. package/core/resolve/resolveData.js +162 -121
  93. package/core/resolve/stitch.d.ts +8 -0
  94. package/core/resolve/stitch.js +23 -21
  95. package/core/resolve/tgpuResolve.d.ts +55 -53
  96. package/core/resolve/tgpuResolve.js +106 -55
  97. package/core/root/configurableImpl.d.ts +10 -0
  98. package/core/root/configurableImpl.js +17 -19
  99. package/core/root/init.d.ts +76 -38
  100. package/core/root/init.js +346 -454
  101. package/core/root/rootTypes.d.ts +461 -627
  102. package/core/root/rootTypes.js +1 -0
  103. package/core/sampler/sampler.d.ts +50 -31
  104. package/core/sampler/sampler.js +120 -113
  105. package/core/simulate/tgpuSimulate.d.ts +9 -12
  106. package/core/simulate/tgpuSimulate.js +68 -71
  107. package/core/slot/accessor.d.ts +36 -13
  108. package/core/slot/accessor.js +138 -91
  109. package/core/slot/internalSlots.d.ts +2 -0
  110. package/core/slot/internalSlots.js +1 -6
  111. package/core/slot/lazy.d.ts +2 -6
  112. package/core/slot/lazy.js +71 -39
  113. package/core/slot/slot.d.ts +2 -6
  114. package/core/slot/slot.js +45 -38
  115. package/core/slot/slotTypes.d.ts +78 -80
  116. package/core/slot/slotTypes.js +11 -16
  117. package/core/texture/externalTexture.d.ts +20 -11
  118. package/core/texture/externalTexture.js +46 -46
  119. package/core/texture/texture.d.ts +152 -97
  120. package/core/texture/texture.js +407 -314
  121. package/core/texture/textureFormats.d.ts +42 -23
  122. package/core/texture/textureFormats.js +104 -75
  123. package/core/texture/textureProps.d.ts +7 -10
  124. package/core/texture/textureProps.js +1 -0
  125. package/core/texture/textureUtils.d.ts +8 -0
  126. package/core/texture/textureUtils.js +185 -179
  127. package/core/texture/usageExtension.d.ts +21 -18
  128. package/core/texture/usageExtension.js +13 -17
  129. package/core/unroll/tgpuUnroll.d.ts +20 -19
  130. package/core/unroll/tgpuUnroll.js +82 -91
  131. package/core/valueProxyUtils.d.ts +3 -0
  132. package/core/valueProxyUtils.js +52 -41
  133. package/core/variable/tgpuVariable.d.ts +26 -27
  134. package/core/variable/tgpuVariable.js +93 -96
  135. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  136. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  137. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  138. package/core/vertexLayout/vertexAttribute.js +1 -0
  139. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  140. package/core/vertexLayout/vertexLayout.js +130 -99
  141. package/core/whitespaces.d.ts +2 -0
  142. package/core/whitespaces.js +16 -0
  143. package/data/alignIO.d.ts +7 -0
  144. package/data/alignIO.js +13 -13
  145. package/data/alignmentOf.d.ts +5 -8
  146. package/data/alignmentOf.js +90 -75
  147. package/data/array.d.ts +6 -9
  148. package/data/array.js +48 -40
  149. package/data/atomic.d.ts +2 -7
  150. package/data/atomic.js +26 -23
  151. package/data/attributes.d.ts +19 -21
  152. package/data/attributes.js +192 -132
  153. package/data/autoStruct.d.ts +36 -3
  154. package/data/autoStruct.js +84 -81
  155. package/data/compiledIO.d.ts +5 -0
  156. package/data/compiledIO.js +231 -214
  157. package/data/dataIO.d.ts +13 -11
  158. package/data/dataIO.js +643 -589
  159. package/data/dataTypes.d.ts +83 -65
  160. package/data/dataTypes.js +66 -68
  161. package/data/deepEqual.d.ts +2 -7
  162. package/data/deepEqual.js +80 -55
  163. package/data/disarray.d.ts +6 -10
  164. package/data/disarray.js +52 -46
  165. package/data/float16Conversion.d.ts +4 -0
  166. package/data/float16Conversion.js +7 -0
  167. package/data/getLongestContiguousPrefix.d.ts +4 -8
  168. package/data/getLongestContiguousPrefix.js +6 -11
  169. package/data/index.d.ts +30 -31
  170. package/data/index.js +39 -172
  171. package/data/instanceToSchema.d.ts +24 -27
  172. package/data/instanceToSchema.js +1 -0
  173. package/data/isContiguous.d.ts +4 -8
  174. package/data/isContiguous.js +6 -11
  175. package/data/matrix.d.ts +21 -21
  176. package/data/matrix.js +513 -505
  177. package/data/numberOps.d.ts +6 -0
  178. package/data/numberOps.js +26 -20
  179. package/data/numeric.d.ts +21 -12
  180. package/data/numeric.js +287 -192
  181. package/data/offsetUtils.d.ts +9 -13
  182. package/data/offsetUtils.js +204 -144
  183. package/data/offsets.d.ts +8 -0
  184. package/data/offsets.js +33 -33
  185. package/data/partialIO.d.ts +13 -8
  186. package/data/partialIO.js +124 -113
  187. package/data/ptr.d.ts +12 -12
  188. package/data/ptr.js +42 -44
  189. package/data/ref.d.ts +40 -27
  190. package/data/ref.js +125 -95
  191. package/data/sampler.d.ts +99 -101
  192. package/data/sampler.js +17 -21
  193. package/data/schemaCallWrapper.d.ts +19 -0
  194. package/data/schemaCallWrapper.js +31 -26
  195. package/data/schemaMemoryLayout.d.ts +8 -0
  196. package/data/schemaMemoryLayout.js +213 -185
  197. package/data/sizeOf.d.ts +4 -8
  198. package/data/sizeOf.js +6 -11
  199. package/data/snippet.d.ts +96 -20
  200. package/data/snippet.js +75 -86
  201. package/data/struct.d.ts +4 -7
  202. package/data/struct.js +51 -39
  203. package/data/texture.d.ts +253 -250
  204. package/data/texture.js +238 -200
  205. package/data/unstruct.d.ts +2 -7
  206. package/data/unstruct.js +43 -37
  207. package/data/vector.d.ts +33 -21
  208. package/data/vector.js +234 -221
  209. package/data/vectorImpl.d.ts +231 -0
  210. package/data/vectorImpl.js +563 -515
  211. package/data/vectorOps.d.ts +63 -0
  212. package/data/vectorOps.js +642 -630
  213. package/data/vertexFormatData.d.ts +181 -184
  214. package/data/vertexFormatData.js +104 -106
  215. package/data/wgslTypes.d.ts +665 -600
  216. package/data/wgslTypes.js +220 -198
  217. package/errors.d.ts +50 -24
  218. package/errors.js +146 -120
  219. package/execMode.d.ts +16 -0
  220. package/execMode.js +47 -40
  221. package/extension.d.ts +13 -8
  222. package/extension.js +10 -16
  223. package/getGPUValue.d.ts +1 -0
  224. package/getGPUValue.js +2 -7
  225. package/index.d.ts +28 -68
  226. package/index.js +8 -28
  227. package/indexNamedExports.d.ts +69 -42
  228. package/indexNamedExports.js +25 -0
  229. package/internal.d.ts +16 -0
  230. package/internal.js +12 -0
  231. package/mathUtils.d.ts +5 -0
  232. package/mathUtils.js +7 -11
  233. package/memo.d.ts +11 -0
  234. package/memo.js +20 -22
  235. package/minify.d.ts +5 -0
  236. package/minify.js +93 -0
  237. package/nameUtils.d.ts +29 -0
  238. package/nameUtils.js +428 -398
  239. package/package.json +9 -3
  240. package/resolutionCtx.d.ts +162 -22
  241. package/resolutionCtx.js +911 -624
  242. package/serial/registry.d.ts +15 -0
  243. package/serial/registry.js +106 -0
  244. package/serial/restore.d.ts +49 -0
  245. package/serial/restore.js +68 -0
  246. package/serial/schema.d.ts +58 -0
  247. package/serial/schema.js +209 -0
  248. package/serial/types.d.ts +5 -0
  249. package/serial/types.js +1 -0
  250. package/shared/env.d.ts +9 -0
  251. package/shared/env.js +9 -12
  252. package/shared/generators.d.ts +4 -0
  253. package/shared/generators.js +10 -12
  254. package/shared/meta.d.ts +29 -14
  255. package/shared/meta.js +71 -55
  256. package/shared/normalizeMetadata.d.ts +32 -27
  257. package/shared/normalizeMetadata.js +23 -36
  258. package/shared/repr.d.ts +73 -55
  259. package/shared/repr.js +1 -0
  260. package/shared/soul.d.ts +17 -0
  261. package/shared/soul.js +1 -0
  262. package/shared/stringify.d.ts +2 -0
  263. package/shared/stringify.js +29 -20
  264. package/shared/symbols.d.ts +26 -20
  265. package/shared/symbols.js +79 -79
  266. package/shared/tseynit.d.ts +2 -0
  267. package/shared/tseynit.js +160 -75
  268. package/shared/utilityTypes.d.ts +30 -14
  269. package/shared/utilityTypes.js +2 -6
  270. package/shared/vertexFormat.d.ts +41 -43
  271. package/shared/vertexFormat.js +59 -62
  272. package/std/array.d.ts +2 -7
  273. package/std/array.js +18 -23
  274. package/std/atomic.d.ts +14 -18
  275. package/std/atomic.js +96 -95
  276. package/std/bitcast.d.ts +193 -10
  277. package/std/bitcast.js +309 -39
  278. package/std/boolean.d.ts +19 -33
  279. package/std/boolean.js +296 -288
  280. package/std/copy.d.ts +2 -7
  281. package/std/copy.js +27 -24
  282. package/std/derivative.d.ts +11 -15
  283. package/std/derivative.js +56 -79
  284. package/std/discard.d.ts +1 -6
  285. package/std/discard.js +7 -14
  286. package/std/environment.d.ts +19 -14
  287. package/std/environment.js +71 -51
  288. package/std/extensions.d.ts +2 -8
  289. package/std/extensions.js +10 -11
  290. package/std/index.d.ts +20 -24
  291. package/std/index.js +32 -187
  292. package/std/matrix.d.ts +6 -12
  293. package/std/matrix.js +60 -69
  294. package/std/numeric.d.ts +143 -146
  295. package/std/numeric.js +858 -749
  296. package/std/operators.d.ts +19 -27
  297. package/std/operators.js +227 -193
  298. package/std/packing.d.ts +5 -11
  299. package/std/packing.js +67 -75
  300. package/std/range.d.ts +6 -11
  301. package/std/range.js +48 -36
  302. package/std/subgroup.d.ts +33 -37
  303. package/std/subgroup.js +180 -217
  304. package/std/texture.d.ts +70 -38
  305. package/std/texture.js +176 -172
  306. package/taskQueue.d.ts +6 -0
  307. package/taskQueue.js +30 -0
  308. package/tgpu.d.ts +16 -0
  309. package/tgpu.js +17 -44
  310. package/tgpuBindGroupLayout.d.ts +132 -152
  311. package/tgpuBindGroupLayout.js +346 -268
  312. package/tgpuLogger.d.ts +34 -0
  313. package/tgpuLogger.js +63 -0
  314. package/tgpuUnstable.d.ts +16 -22
  315. package/tgpuUnstable.js +13 -35
  316. package/tgsl/accessIndex.d.ts +2 -0
  317. package/tgsl/accessIndex.js +76 -33
  318. package/tgsl/accessProp.d.ts +2 -0
  319. package/tgsl/accessProp.js +142 -100
  320. package/tgsl/accessStructProp.d.ts +5 -0
  321. package/tgsl/accessStructProp.js +18 -0
  322. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  323. package/tgsl/consoleLog/deserializers.js +119 -103
  324. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  325. package/tgsl/consoleLog/logGenerator.js +85 -80
  326. package/tgsl/consoleLog/serializers.d.ts +21 -0
  327. package/tgsl/consoleLog/serializers.js +119 -100
  328. package/tgsl/consoleLog/types.d.ts +40 -39
  329. package/tgsl/consoleLog/types.js +1 -0
  330. package/tgsl/conversion.d.ts +33 -0
  331. package/tgsl/conversion.js +272 -193
  332. package/tgsl/forOfUtils.d.ts +15 -0
  333. package/tgsl/forOfUtils.js +85 -70
  334. package/tgsl/generationHelpers.d.ts +22 -39
  335. package/tgsl/generationHelpers.js +85 -58
  336. package/tgsl/infixDispatch.d.ts +70 -0
  337. package/tgsl/infixDispatch.js +48 -46
  338. package/tgsl/jsPolyfills.d.ts +16 -19
  339. package/tgsl/jsPolyfills.js +44 -42
  340. package/tgsl/makeDereferenceable.d.ts +48 -0
  341. package/tgsl/makeDereferenceable.js +86 -0
  342. package/tgsl/makeResolvable.d.ts +22 -0
  343. package/tgsl/makeResolvable.js +33 -0
  344. package/tgsl/shaderGenerator.d.ts +77 -17
  345. package/tgsl/shaderGenerator.js +1 -0
  346. package/tgsl/shellless.d.ts +6 -9
  347. package/tgsl/shellless.js +73 -43
  348. package/tgsl/wgslGenerator.d.ts +66 -59
  349. package/tgsl/wgslGenerator.js +1344 -747
  350. package/types.d.ts +287 -221
  351. package/types.js +61 -44
  352. package/unwrapper.d.ts +31 -26
  353. package/unwrapper.js +1 -0
  354. package/wgslExtensions.d.ts +3 -5
  355. package/wgslExtensions.js +12 -16
  356. package/_virtual/rolldown_runtime.js +0 -13
  357. package/core/buffer/bufferShorthand.d.ts +0 -50
  358. package/core/buffer/bufferShorthand.js +0 -55
  359. package/core/pipeline/applyPipelineState.js +0 -37
  360. package/package.js +0 -5
  361. package/tgsl/shaderGenerator_members.d.ts +0 -33
  362. 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 };