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
package/std/packing.js CHANGED
@@ -1,86 +1,78 @@
1
+ import * as TB from 'typed-binary';
2
+ import { dualImpl } from "../core/function/dualImpl.js";
1
3
  import { stitch } from "../core/resolve/stitch.js";
2
4
  import { u32 } from "../data/numeric.js";
3
5
  import { vec2f, vec4f } from "../data/vector.js";
4
- import { dualImpl } from "../core/function/dualImpl.js";
5
- import * as TB from "typed-binary";
6
-
7
- //#region src/std/packing.ts
6
+ import { readFloat16, writeFloat16 } from "../data/float16Conversion.js";
8
7
  /**
9
- * @privateRemarks
10
- * https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
11
- */
12
- const unpack2x16float = dualImpl({
13
- name: "unpack2x16float",
14
- normalImpl: (e) => {
15
- const buffer = /* @__PURE__ */ new ArrayBuffer(4);
16
- new TB.BufferWriter(buffer).writeUint32(e);
17
- const reader = new TB.BufferReader(buffer);
18
- return vec2f(reader.readFloat16(), reader.readFloat16());
19
- },
20
- signature: {
21
- argTypes: [u32],
22
- returnType: vec2f
23
- },
24
- codegenImpl: (_ctx, [e]) => stitch`unpack2x16float(${e})`
8
+ * @privateRemarks
9
+ * https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
10
+ */
11
+ export const unpack2x16float = dualImpl({
12
+ name: 'unpack2x16float',
13
+ normalImpl: (e) => {
14
+ const buffer = new ArrayBuffer(4);
15
+ const writer = new TB.BufferWriter(buffer);
16
+ writer.writeUint32(e);
17
+ const reader = new TB.BufferReader(buffer);
18
+ return vec2f(readFloat16(reader), readFloat16(reader));
19
+ },
20
+ signature: { argTypes: [u32], returnType: vec2f },
21
+ codegenImpl: (_ctx, [e]) => stitch `unpack2x16float(${e})`,
22
+ sideEffects: false,
25
23
  });
26
24
  /**
27
- * @privateRemarks
28
- * https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
29
- */
30
- const pack2x16float = dualImpl({
31
- name: "pack2x16float",
32
- normalImpl: (e) => {
33
- const buffer = /* @__PURE__ */ new ArrayBuffer(4);
34
- const writer = new TB.BufferWriter(buffer);
35
- writer.writeFloat16(e.x);
36
- writer.writeFloat16(e.y);
37
- return u32(new TB.BufferReader(buffer).readUint32());
38
- },
39
- signature: {
40
- argTypes: [vec2f],
41
- returnType: u32
42
- },
43
- codegenImpl: (_ctx, [e]) => stitch`pack2x16float(${e})`
25
+ * @privateRemarks
26
+ * https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
27
+ */
28
+ export const pack2x16float = dualImpl({
29
+ name: 'pack2x16float',
30
+ normalImpl: (e) => {
31
+ const buffer = new ArrayBuffer(4);
32
+ const writer = new TB.BufferWriter(buffer);
33
+ writeFloat16(writer, e.x);
34
+ writeFloat16(writer, e.y);
35
+ const reader = new TB.BufferReader(buffer);
36
+ return u32(reader.readUint32());
37
+ },
38
+ signature: { argTypes: [vec2f], returnType: u32 },
39
+ codegenImpl: (_ctx, [e]) => stitch `pack2x16float(${e})`,
40
+ sideEffects: false,
44
41
  });
45
42
  /**
46
- * @privateRemarks
47
- * https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
48
- */
49
- const unpack4x8unorm = dualImpl({
50
- name: "unpack4x8unorm",
51
- normalImpl: (e) => {
52
- const buffer = /* @__PURE__ */ new ArrayBuffer(4);
53
- new TB.BufferWriter(buffer).writeUint32(e);
54
- const reader = new TB.BufferReader(buffer);
55
- return vec4f(reader.readUint8() / 255, reader.readUint8() / 255, reader.readUint8() / 255, reader.readUint8() / 255);
56
- },
57
- signature: {
58
- argTypes: [u32],
59
- returnType: vec4f
60
- },
61
- codegenImpl: (_ctx, [e]) => stitch`unpack4x8unorm(${e})`
43
+ * @privateRemarks
44
+ * https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
45
+ */
46
+ export const unpack4x8unorm = dualImpl({
47
+ name: 'unpack4x8unorm',
48
+ normalImpl: (e) => {
49
+ const buffer = new ArrayBuffer(4);
50
+ const writer = new TB.BufferWriter(buffer);
51
+ writer.writeUint32(e);
52
+ const reader = new TB.BufferReader(buffer);
53
+ return vec4f(reader.readUint8() / 255, reader.readUint8() / 255, reader.readUint8() / 255, reader.readUint8() / 255);
54
+ },
55
+ signature: { argTypes: [u32], returnType: vec4f },
56
+ codegenImpl: (_ctx, [e]) => stitch `unpack4x8unorm(${e})`,
57
+ sideEffects: false,
62
58
  });
63
59
  /**
64
- * @privateRemarks
65
- * https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
66
- */
67
- const pack4x8unorm = dualImpl({
68
- name: "pack4x8unorm",
69
- normalImpl: (e) => {
70
- const buffer = /* @__PURE__ */ new ArrayBuffer(4);
71
- const writer = new TB.BufferWriter(buffer);
72
- writer.writeUint8(e.x * 255);
73
- writer.writeUint8(e.y * 255);
74
- writer.writeUint8(e.z * 255);
75
- writer.writeUint8(e.w * 255);
76
- return u32(new TB.BufferReader(buffer).readUint32());
77
- },
78
- signature: {
79
- argTypes: [vec4f],
80
- returnType: u32
81
- },
82
- codegenImpl: (_ctx, [e]) => stitch`pack4x8unorm(${e})`
60
+ * @privateRemarks
61
+ * https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
62
+ */
63
+ export const pack4x8unorm = dualImpl({
64
+ name: 'pack4x8unorm',
65
+ normalImpl: (e) => {
66
+ const buffer = new ArrayBuffer(4);
67
+ const writer = new TB.BufferWriter(buffer);
68
+ writer.writeUint8(e.x * 255);
69
+ writer.writeUint8(e.y * 255);
70
+ writer.writeUint8(e.z * 255);
71
+ writer.writeUint8(e.w * 255);
72
+ const reader = new TB.BufferReader(buffer);
73
+ return u32(reader.readUint32());
74
+ },
75
+ signature: { argTypes: [vec4f], returnType: u32 },
76
+ codegenImpl: (_ctx, [e]) => stitch `pack4x8unorm(${e})`,
77
+ sideEffects: false,
83
78
  });
84
-
85
- //#endregion
86
- export { pack2x16float, pack4x8unorm, unpack2x16float, unpack4x8unorm };
package/std/range.d.ts CHANGED
@@ -1,11 +1,7 @@
1
- import { TgpuComptime } from "../core/function/comptime.js";
2
- import "../indexNamedExports.js";
3
-
4
- //#region src/std/range.d.ts
5
- interface TgpuRange extends Array<number> {
6
- start: number;
7
- end: number;
8
- step: number;
1
+ export interface TgpuRange extends Array<number> {
2
+ start: number;
3
+ end: number;
4
+ step: number;
9
5
  }
10
6
  /**
11
7
  * Returns an array of values between `start` (inclusive) and `end` (exclusive) with the given `step`.
@@ -21,6 +17,5 @@ interface TgpuRange extends Array<number> {
21
17
  *
22
18
  * Can also be combined with `tgpu.unroll` to unroll a specific number of iterations.
23
19
  */
24
- declare const range: TgpuComptime<((end: number) => TgpuRange) & ((start: number, end?: number, step?: number) => TgpuRange)>;
25
- //#endregion
26
- export { range };
20
+ export declare const range: import("../indexNamedExports.ts").TgpuComptime<((end: number) => TgpuRange) & ((start: number, end?: number, step?: number) => TgpuRange)>;
21
+ export declare function isTgpuRange(value: unknown): value is TgpuRange;
package/std/range.js CHANGED
@@ -1,40 +1,52 @@
1
1
  import { comptime } from "../core/function/comptime.js";
2
-
3
- //#region src/std/range.ts
4
2
  /**
5
- * Returns an array of values between `start` (inclusive) and `end` (exclusive) with the given `step`.
6
- *
7
- * If only one argument is provided, it is interpreted as `end`, with `start=0` and `step=1`.
8
- *
9
- * ```ts
10
- * let result = d.f32(1);
11
- * for (const i of std.range(5)) {
12
- * result *= i + 1;
13
- * }
14
- * ```
15
- *
16
- * Can also be combined with `tgpu.unroll` to unroll a specific number of iterations.
17
- */
18
- const range = comptime((start, end, step = 1) => {
19
- if (end === void 0) {
20
- end = start;
21
- start = 0;
22
- }
23
- if (!Number.isInteger(start)) throw new Error(`'start' must be an integer, got ${start}`);
24
- if (!Number.isInteger(end)) throw new Error(`'end' must be an integer, got ${end}`);
25
- if (!Number.isInteger(step) || step === 0) throw new Error(`'step' must be a non-zero integer, got ${step}`);
26
- const result = [];
27
- result.start = start;
28
- result.end = end;
29
- result.step = step;
30
- if (Math.sign(step) !== Math.sign(end - start)) return result;
31
- if (step > 0) for (let i = start; i < end; i += step) result.push(i);
32
- if (step < 0) for (let i = start; i > end; i += step) result.push(i);
33
- return result;
3
+ * Returns an array of values between `start` (inclusive) and `end` (exclusive) with the given `step`.
4
+ *
5
+ * If only one argument is provided, it is interpreted as `end`, with `start=0` and `step=1`.
6
+ *
7
+ * ```ts
8
+ * let result = d.f32(1);
9
+ * for (const i of std.range(5)) {
10
+ * result *= i + 1;
11
+ * }
12
+ * ```
13
+ *
14
+ * Can also be combined with `tgpu.unroll` to unroll a specific number of iterations.
15
+ */
16
+ export const range = comptime((start, end, step = 1) => {
17
+ if (end === undefined) {
18
+ // range(n)
19
+ end = start;
20
+ start = 0;
21
+ }
22
+ if (!Number.isInteger(start)) {
23
+ throw new Error(`'start' must be an integer, got ${start}`);
24
+ }
25
+ if (!Number.isInteger(end)) {
26
+ throw new Error(`'end' must be an integer, got ${end}`);
27
+ }
28
+ if (!Number.isInteger(step) || step === 0) {
29
+ throw new Error(`'step' must be a non-zero integer, got ${step}`);
30
+ }
31
+ const result = [];
32
+ result.start = start;
33
+ result.end = end;
34
+ result.step = step;
35
+ if (Math.sign(step) !== Math.sign(end - start)) {
36
+ return result;
37
+ }
38
+ if (step > 0) {
39
+ for (let i = start; i < end; i += step) {
40
+ result.push(i);
41
+ }
42
+ }
43
+ if (step < 0) {
44
+ for (let i = start; i > end; i += step) {
45
+ result.push(i);
46
+ }
47
+ }
48
+ return result;
34
49
  });
35
- function isTgpuRange(value) {
36
- return Array.isArray(value) && "start" in value && "end" in value && "step" in value;
50
+ export function isTgpuRange(value) {
51
+ return Array.isArray(value) && 'start' in value && 'end' in value && 'step' in value;
37
52
  }
38
-
39
- //#endregion
40
- export { isTgpuRange, range };
package/std/subgroup.d.ts CHANGED
@@ -1,47 +1,43 @@
1
- import { DualFn } from "../types.js";
2
- import { AnyIntegerVecInstance, AnyNumericVecInstance, v4u } from "../data/wgslTypes.js";
3
-
4
- //#region src/std/subgroup.d.ts
1
+ import type { AnyIntegerVecInstance, AnyNumericVecInstance, v4u } from '../data/wgslTypes.ts';
5
2
  interface IdentityNumOrVec {
6
- (e: number): number;
7
- <T extends AnyNumericVecInstance>(e: T): T;
3
+ (e: number): number;
4
+ <T extends AnyNumericVecInstance>(e: T): T;
8
5
  }
9
6
  interface IdentityIntNumOrVec {
10
- (e: number): number;
11
- <T extends AnyIntegerVecInstance>(e: T): T;
7
+ (e: number): number;
8
+ <T extends AnyIntegerVecInstance>(e: T): T;
12
9
  }
13
10
  interface IdentityNumOrVecWithIdx {
14
- (e: number, index: number): number;
15
- <T extends AnyNumericVecInstance>(e: T, index: number): T;
11
+ (e: number, index: number): number;
12
+ <T extends AnyNumericVecInstance>(e: T, index: number): T;
16
13
  }
17
14
  interface IdentityNumOrVecWithDelta {
18
- (e: number, delta: number): number;
19
- <T extends AnyNumericVecInstance>(e: T, delta: number): T;
15
+ (e: number, delta: number): number;
16
+ <T extends AnyNumericVecInstance>(e: T, delta: number): T;
20
17
  }
21
18
  interface IdentityNumOrVecWithMask {
22
- (e: number, mask: number): number;
23
- <T extends AnyNumericVecInstance>(e: T, mask: number): T;
19
+ (e: number, mask: number): number;
20
+ <T extends AnyNumericVecInstance>(e: T, mask: number): T;
24
21
  }
25
- declare const subgroupAdd: DualFn<IdentityNumOrVec>;
26
- declare const subgroupExclusiveAdd: DualFn<IdentityNumOrVec>;
27
- declare const subgroupInclusiveAdd: DualFn<IdentityNumOrVec>;
28
- declare const subgroupAll: DualFn<(e: boolean) => boolean>;
29
- declare const subgroupAnd: DualFn<IdentityIntNumOrVec>;
30
- declare const subgroupAny: DualFn<(e: boolean) => boolean>;
31
- declare const subgroupBallot: DualFn<(e: boolean) => v4u>;
32
- declare const subgroupBroadcast: DualFn<IdentityNumOrVecWithIdx>;
33
- declare const subgroupBroadcastFirst: DualFn<IdentityNumOrVec>;
34
- declare const subgroupElect: DualFn<() => boolean>;
35
- declare const subgroupMax: DualFn<IdentityNumOrVec>;
36
- declare const subgroupMin: DualFn<IdentityNumOrVec>;
37
- declare const subgroupMul: DualFn<IdentityNumOrVec>;
38
- declare const subgroupExclusiveMul: DualFn<IdentityNumOrVec>;
39
- declare const subgroupInclusiveMul: DualFn<IdentityNumOrVec>;
40
- declare const subgroupOr: DualFn<IdentityIntNumOrVec>;
41
- declare const subgroupShuffle: DualFn<IdentityNumOrVecWithIdx>;
42
- declare const subgroupShuffleDown: DualFn<IdentityNumOrVecWithDelta>;
43
- declare const subgroupShuffleUp: DualFn<IdentityNumOrVecWithDelta>;
44
- declare const subgroupShuffleXor: DualFn<IdentityNumOrVecWithMask>;
45
- declare const subgroupXor: DualFn<IdentityIntNumOrVec>;
46
- //#endregion
47
- export { subgroupAdd, subgroupAll, subgroupAnd, subgroupAny, subgroupBallot, subgroupBroadcast, subgroupBroadcastFirst, subgroupElect, subgroupExclusiveAdd, subgroupExclusiveMul, subgroupInclusiveAdd, subgroupInclusiveMul, subgroupMax, subgroupMin, subgroupMul, subgroupOr, subgroupShuffle, subgroupShuffleDown, subgroupShuffleUp, subgroupShuffleXor, subgroupXor };
22
+ export declare const subgroupAdd: import("../types.ts").DualFn<IdentityNumOrVec>;
23
+ export declare const subgroupExclusiveAdd: import("../types.ts").DualFn<IdentityNumOrVec>;
24
+ export declare const subgroupInclusiveAdd: import("../types.ts").DualFn<IdentityNumOrVec>;
25
+ export declare const subgroupAll: import("../types.ts").DualFn<(e: boolean) => boolean>;
26
+ export declare const subgroupAnd: import("../types.ts").DualFn<IdentityIntNumOrVec>;
27
+ export declare const subgroupAny: import("../types.ts").DualFn<(e: boolean) => boolean>;
28
+ export declare const subgroupBallot: import("../types.ts").DualFn<(e: boolean) => v4u>;
29
+ export declare const subgroupBroadcast: import("../types.ts").DualFn<IdentityNumOrVecWithIdx>;
30
+ export declare const subgroupBroadcastFirst: import("../types.ts").DualFn<IdentityNumOrVec>;
31
+ export declare const subgroupElect: import("../types.ts").DualFn<() => boolean>;
32
+ export declare const subgroupMax: import("../types.ts").DualFn<IdentityNumOrVec>;
33
+ export declare const subgroupMin: import("../types.ts").DualFn<IdentityNumOrVec>;
34
+ export declare const subgroupMul: import("../types.ts").DualFn<IdentityNumOrVec>;
35
+ export declare const subgroupExclusiveMul: import("../types.ts").DualFn<IdentityNumOrVec>;
36
+ export declare const subgroupInclusiveMul: import("../types.ts").DualFn<IdentityNumOrVec>;
37
+ export declare const subgroupOr: import("../types.ts").DualFn<IdentityIntNumOrVec>;
38
+ export declare const subgroupShuffle: import("../types.ts").DualFn<IdentityNumOrVecWithIdx>;
39
+ export declare const subgroupShuffleDown: import("../types.ts").DualFn<IdentityNumOrVecWithDelta>;
40
+ export declare const subgroupShuffleUp: import("../types.ts").DualFn<IdentityNumOrVecWithDelta>;
41
+ export declare const subgroupShuffleXor: import("../types.ts").DualFn<IdentityNumOrVecWithMask>;
42
+ export declare const subgroupXor: import("../types.ts").DualFn<IdentityIntNumOrVec>;
43
+ export {};