typegpu 0.11.9 → 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 +36 -36
  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 -5
  42. package/core/function/fnCore.js +148 -93
  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 +17 -22
  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 +89 -90
  85. package/core/resolve/externals.d.ts +25 -8
  86. package/core/resolve/externals.js +78 -54
  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 -53
  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 -455
  101. package/core/root/rootTypes.d.ts +461 -636
  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 -215
  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 -197
  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 -126
  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 +427 -394
  239. package/package.json +5 -1
  240. package/resolutionCtx.d.ts +162 -22
  241. package/resolutionCtx.js +911 -629
  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 -101
  320. package/tgsl/accessStructProp.d.ts +5 -0
  321. package/tgsl/accessStructProp.js +13 -15
  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 +271 -216
  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 -760
  350. package/types.d.ts +287 -222
  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
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 {};