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/texture.js CHANGED
@@ -1,209 +1,213 @@
1
- import { Void } from "../data/wgslTypes.js";
2
1
  import { stitch } from "../core/resolve/stitch.js";
2
+ import { isWgslExternalTexture, isWgslTexture, } from "../data/texture.js";
3
+ import { dualImpl, MissingCpuImplError } from "../core/function/dualImpl.js";
3
4
  import { f32, i32, u32 } from "../data/numeric.js";
4
5
  import { vec2u, vec3u, vec4f, vec4i, vec4u } from "../data/vector.js";
5
- import { MissingCpuImplError, dualImpl } from "../core/function/dualImpl.js";
6
- import { isWgslExternalTexture, isWgslTexture } from "../data/texture.js";
7
- import { getTextureFormatInfo } from "../core/texture/textureFormats.js";
8
-
9
- //#region src/std/texture.ts
6
+ import { Void, } from "../data/wgslTypes.js";
7
+ import { getTextureFormatInfo, } from "../core/texture/textureFormats.js";
10
8
  function sampleCpu(_texture, _sampler, _coords, _offsetOrArrayIndex, _maybeOffset) {
11
- throw new MissingCpuImplError("Texture sampling relies on GPU resources and cannot be executed outside of a draw call");
9
+ throw new MissingCpuImplError('Texture sampling relies on GPU resources and cannot be executed outside of a draw call');
12
10
  }
13
- const textureSample = dualImpl({
14
- name: "textureSample",
15
- normalImpl: sampleCpu,
16
- codegenImpl: (_ctx, args) => stitch`textureSample(${args})`,
17
- signature: (...args) => {
18
- return {
19
- argTypes: args,
20
- returnType: args[0].type.startsWith("texture_depth") ? f32 : vec4f
21
- };
22
- }
11
+ export const textureSample = dualImpl({
12
+ name: 'textureSample',
13
+ normalImpl: sampleCpu,
14
+ codegenImpl: (_ctx, args) => stitch `textureSample(${args})`,
15
+ signature: (...args) => {
16
+ const isDepth = args[0].type.startsWith('texture_depth');
17
+ return {
18
+ argTypes: args,
19
+ returnType: isDepth ? f32 : vec4f,
20
+ };
21
+ },
22
+ sideEffects: false,
23
23
  });
24
24
  function sampleBiasCpu(_texture, _sampler, _coords, _biasOrArrayIndex, _biasOrOffset, _maybeOffset) {
25
- throw new MissingCpuImplError("Texture sampling with bias relies on GPU resources and cannot be executed outside of a draw call");
25
+ throw new MissingCpuImplError('Texture sampling with bias relies on GPU resources and cannot be executed outside of a draw call');
26
26
  }
27
- const textureSampleBias = dualImpl({
28
- name: "textureSampleBias",
29
- normalImpl: sampleBiasCpu,
30
- codegenImpl: (_ctx, args) => stitch`textureSampleBias(${args})`,
31
- signature: (...args) => ({
32
- argTypes: args,
33
- returnType: vec4f
34
- })
27
+ export const textureSampleBias = dualImpl({
28
+ name: 'textureSampleBias',
29
+ normalImpl: sampleBiasCpu,
30
+ codegenImpl: (_ctx, args) => stitch `textureSampleBias(${args})`,
31
+ signature: (...args) => ({
32
+ argTypes: args,
33
+ returnType: vec4f,
34
+ }),
35
+ sideEffects: false,
35
36
  });
36
37
  function sampleLevelCpu(_texture, _sampler, _coords, _level, _offsetOrArrayIndex, _maybeOffset) {
37
- throw new MissingCpuImplError("Texture sampling relies on GPU resources and cannot be executed outside of a draw call");
38
+ throw new MissingCpuImplError('Texture sampling relies on GPU resources and cannot be executed outside of a draw call');
38
39
  }
39
- const textureSampleLevel = dualImpl({
40
- name: "textureSampleLevel",
41
- normalImpl: sampleLevelCpu,
42
- codegenImpl: (_ctx, args) => stitch`textureSampleLevel(${args})`,
43
- signature: (...args) => {
44
- return {
45
- argTypes: args,
46
- returnType: args[0].type.startsWith("texture_depth") ? f32 : vec4f
47
- };
48
- }
40
+ export const textureSampleLevel = dualImpl({
41
+ name: 'textureSampleLevel',
42
+ normalImpl: sampleLevelCpu,
43
+ codegenImpl: (_ctx, args) => stitch `textureSampleLevel(${args})`,
44
+ signature: (...args) => {
45
+ const isDepth = args[0].type.startsWith('texture_depth');
46
+ return {
47
+ argTypes: args,
48
+ returnType: isDepth ? f32 : vec4f,
49
+ };
50
+ },
51
+ sideEffects: false,
49
52
  });
50
53
  function textureLoadCpu(_texture, _coords, _levelOrArrayIndex) {
51
- throw new MissingCpuImplError("`textureLoad` relies on GPU resources and cannot be executed outside of a draw call");
54
+ throw new MissingCpuImplError('`textureLoad` relies on GPU resources and cannot be executed outside of a draw call');
52
55
  }
53
- const textureLoad = dualImpl({
54
- name: "textureLoad",
55
- normalImpl: textureLoadCpu,
56
- codegenImpl: (_ctx, args) => stitch`textureLoad(${args})`,
57
- signature: (...args) => {
58
- const texture = args[0];
59
- if (isWgslTexture(texture)) {
60
- const isDepth = texture.type.startsWith("texture_depth");
61
- const sampleType = texture.sampleType;
62
- return {
63
- argTypes: args,
64
- returnType: isDepth ? f32 : sampleType.type === "f32" ? vec4f : sampleType.type === "u32" ? vec4u : vec4i
65
- };
66
- }
67
- if (isWgslExternalTexture(texture)) return {
68
- argTypes: args,
69
- returnType: vec4f
70
- };
71
- const format = texture.format;
72
- return {
73
- argTypes: args,
74
- returnType: getTextureFormatInfo(format).vectorType
75
- };
76
- }
56
+ export const textureLoad = dualImpl({
57
+ name: 'textureLoad',
58
+ normalImpl: textureLoadCpu,
59
+ codegenImpl: (_ctx, args) => stitch `textureLoad(${args})`,
60
+ signature: (...args) => {
61
+ const texture = args[0];
62
+ if (isWgslTexture(texture)) {
63
+ const isDepth = texture.type.startsWith('texture_depth');
64
+ const sampleType = texture.sampleType;
65
+ return {
66
+ argTypes: args,
67
+ returnType: isDepth
68
+ ? f32
69
+ : sampleType.type === 'f32'
70
+ ? vec4f
71
+ : sampleType.type === 'u32'
72
+ ? vec4u
73
+ : vec4i,
74
+ };
75
+ }
76
+ if (isWgslExternalTexture(texture)) {
77
+ return {
78
+ argTypes: args,
79
+ returnType: vec4f,
80
+ };
81
+ }
82
+ const format = texture.format;
83
+ const dataType = getTextureFormatInfo(format).vectorType;
84
+ return {
85
+ argTypes: args,
86
+ returnType: dataType,
87
+ };
88
+ },
89
+ sideEffects: false,
77
90
  });
78
91
  function textureStoreCpu(_texture, _coords, _arrayIndexOrValue, _maybeValue) {
79
- throw new MissingCpuImplError("`textureStore` relies on GPU resources and cannot be executed outside of a draw call");
92
+ throw new MissingCpuImplError('`textureStore` relies on GPU resources and cannot be executed outside of a draw call');
80
93
  }
81
- const textureStore = dualImpl({
82
- name: "textureStore",
83
- normalImpl: textureStoreCpu,
84
- codegenImpl: (_ctx, args) => stitch`textureStore(${args})`,
85
- signature: (...args) => ({
86
- argTypes: args,
87
- returnType: Void
88
- })
94
+ export const textureStore = dualImpl({
95
+ name: 'textureStore',
96
+ normalImpl: textureStoreCpu,
97
+ codegenImpl: (_ctx, args) => stitch `textureStore(${args})`,
98
+ signature: (...args) => ({ argTypes: args, returnType: Void }),
99
+ sideEffects: true,
89
100
  });
90
101
  function textureDimensionsCpu(_texture, _level) {
91
- throw new MissingCpuImplError("`textureDimensions` relies on GPU resources and cannot be executed outside of a draw call");
102
+ throw new MissingCpuImplError('`textureDimensions` relies on GPU resources and cannot be executed outside of a draw call');
92
103
  }
93
- const textureDimensions = dualImpl({
94
- name: "textureDimensions",
95
- normalImpl: textureDimensionsCpu,
96
- codegenImpl: (_ctx, args) => stitch`textureDimensions(${args})`,
97
- signature: (...args) => {
98
- const dim = args[0].dimension;
99
- if (dim === "1d") return {
100
- argTypes: args,
101
- returnType: u32
102
- };
103
- if (dim === "3d") return {
104
- argTypes: args,
105
- returnType: vec3u
106
- };
107
- return {
108
- argTypes: args,
109
- returnType: vec2u
110
- };
111
- }
104
+ export const textureDimensions = dualImpl({
105
+ name: 'textureDimensions',
106
+ normalImpl: textureDimensionsCpu,
107
+ codegenImpl: (_ctx, args) => stitch `textureDimensions(${args})`,
108
+ signature: (...args) => {
109
+ const dim = args[0].dimension;
110
+ if (dim === '1d') {
111
+ return {
112
+ argTypes: args,
113
+ returnType: u32,
114
+ };
115
+ }
116
+ if (dim === '3d') {
117
+ return {
118
+ argTypes: args,
119
+ returnType: vec3u,
120
+ };
121
+ }
122
+ return {
123
+ argTypes: args,
124
+ returnType: vec2u,
125
+ };
126
+ },
127
+ sideEffects: false,
112
128
  });
113
- const textureGatherCpu = (..._args) => {
114
- throw new Error("Texture gather relies on GPU resources and cannot be executed outside of a draw call");
129
+ export const textureGatherCpu = (..._args) => {
130
+ throw new Error('Texture gather relies on GPU resources and cannot be executed outside of a draw call');
115
131
  };
116
132
  const sampleTypeToVecType = {
117
- f32: vec4f,
118
- i32: vec4i,
119
- u32: vec4u
133
+ f32: vec4f,
134
+ i32: vec4i,
135
+ u32: vec4u,
120
136
  };
121
- const textureGather = dualImpl({
122
- name: "textureGather",
123
- normalImpl: textureGatherCpu,
124
- codegenImpl: (_ctx, args) => stitch`textureGather(${args})`,
125
- signature: (...args) => {
126
- if (args[0].type.startsWith("texture")) {
127
- const [texture$1, sampler$1, coords$1, _$1, ...rest$1] = args;
128
- return {
129
- argTypes: texture$1.type === "texture_depth_2d_array" || texture$1.type === "texture_depth_cube_array" ? [
130
- texture$1,
131
- sampler$1,
132
- coords$1,
133
- [u32, i32],
134
- ...rest$1
135
- ] : args,
136
- returnType: vec4f
137
- };
138
- }
139
- const [_, texture, sampler, coords, ...rest] = args;
140
- return {
141
- argTypes: texture.type === "texture_2d_array" || texture.type === "texture_cube_array" ? [
142
- [u32, i32],
143
- texture,
144
- sampler,
145
- coords,
146
- [u32, i32],
147
- ...rest
148
- ] : [
149
- [u32, i32],
150
- texture,
151
- sampler,
152
- coords,
153
- ...rest
154
- ],
155
- returnType: sampleTypeToVecType[texture.sampleType.type]
156
- };
157
- }
137
+ export const textureGather = dualImpl({
138
+ name: 'textureGather',
139
+ normalImpl: textureGatherCpu,
140
+ codegenImpl: (_ctx, args) => stitch `textureGather(${args})`,
141
+ signature: (...args) => {
142
+ if (args[0].type.startsWith('texture')) {
143
+ const [texture, sampler, coords, _, ...rest] = args;
144
+ const isArrayTexture = texture.type === 'texture_depth_2d_array' || texture.type === 'texture_depth_cube_array';
145
+ const argTypes = isArrayTexture
146
+ ? [texture, sampler, coords, [u32, i32], ...rest]
147
+ : args;
148
+ return { argTypes: argTypes, returnType: vec4f };
149
+ }
150
+ const [_, texture, sampler, coords, ...rest] = args;
151
+ const isArrayTexture = texture.type === 'texture_2d_array' || texture.type === 'texture_cube_array';
152
+ const argTypes = isArrayTexture
153
+ ? [[u32, i32], texture, sampler, coords, [u32, i32], ...rest]
154
+ : [[u32, i32], texture, sampler, coords, ...rest];
155
+ return {
156
+ argTypes: argTypes,
157
+ returnType: sampleTypeToVecType[texture.sampleType.type],
158
+ };
159
+ },
160
+ sideEffects: false,
158
161
  });
159
162
  function textureSampleCompareCpu(_texture, _sampler, _coords, _depthRefOrArrayIndex, _depthRefOrOffset, _maybeOffset) {
160
- throw new MissingCpuImplError("Texture comparison sampling relies on GPU resources and cannot be executed outside of a draw call");
163
+ throw new MissingCpuImplError('Texture comparison sampling relies on GPU resources and cannot be executed outside of a draw call');
161
164
  }
162
- const textureSampleCompare = dualImpl({
163
- name: "textureSampleCompare",
164
- normalImpl: textureSampleCompareCpu,
165
- codegenImpl: (_ctx, args) => stitch`textureSampleCompare(${args})`,
166
- signature: (...args) => ({
167
- argTypes: args,
168
- returnType: f32
169
- })
165
+ export const textureSampleCompare = dualImpl({
166
+ name: 'textureSampleCompare',
167
+ normalImpl: textureSampleCompareCpu,
168
+ codegenImpl: (_ctx, args) => stitch `textureSampleCompare(${args})`,
169
+ signature: (...args) => ({
170
+ argTypes: args,
171
+ returnType: f32,
172
+ }),
173
+ sideEffects: false,
170
174
  });
171
175
  function textureSampleCompareLevelCpu(_texture, _sampler, _coords, _depthRefOrArrayIndex, _depthRefOrOffset, _maybeOffset) {
172
- throw new MissingCpuImplError("Texture comparison sampling with level relies on GPU resources and cannot be executed outside of a draw call");
176
+ throw new MissingCpuImplError('Texture comparison sampling with level relies on GPU resources and cannot be executed outside of a draw call');
173
177
  }
174
- const textureSampleCompareLevel = dualImpl({
175
- name: "textureSampleCompareLevel",
176
- normalImpl: textureSampleCompareLevelCpu,
177
- codegenImpl: (ctx, args) => stitch`textureSampleCompareLevel(${args})`,
178
- signature: (...args) => ({
179
- argTypes: args,
180
- returnType: f32
181
- })
178
+ export const textureSampleCompareLevel = dualImpl({
179
+ name: 'textureSampleCompareLevel',
180
+ normalImpl: textureSampleCompareLevelCpu,
181
+ codegenImpl: (ctx, args) => stitch `textureSampleCompareLevel(${args})`,
182
+ signature: (...args) => ({
183
+ argTypes: args,
184
+ returnType: f32,
185
+ }),
186
+ sideEffects: false,
182
187
  });
183
188
  function textureSampleBaseClampToEdgeCpu(_texture, _sampler, _coords) {
184
- throw new MissingCpuImplError("Texture sampling with base clamp to edge is not supported outside of GPU mode.");
189
+ throw new MissingCpuImplError('Texture sampling with base clamp to edge is not supported outside of GPU mode.');
185
190
  }
186
191
  function sampleGradCpu(_texture, _sampler, _coords, _ddxOrArrayIndex, _ddyOrDdx, _offsetOrDdy, _maybeOffset) {
187
- throw new MissingCpuImplError("Texture sampling with gradients relies on GPU resources and cannot be executed outside of a draw call");
192
+ throw new MissingCpuImplError('Texture sampling with gradients relies on GPU resources and cannot be executed outside of a draw call');
188
193
  }
189
- const textureSampleGrad = dualImpl({
190
- name: "textureSampleGrad",
191
- normalImpl: sampleGradCpu,
192
- codegenImpl: (_ctx, args) => stitch`textureSampleGrad(${args})`,
193
- signature: (...args) => ({
194
- argTypes: args,
195
- returnType: vec4f
196
- })
194
+ export const textureSampleGrad = dualImpl({
195
+ name: 'textureSampleGrad',
196
+ normalImpl: sampleGradCpu,
197
+ codegenImpl: (_ctx, args) => stitch `textureSampleGrad(${args})`,
198
+ signature: (...args) => ({
199
+ argTypes: args,
200
+ returnType: vec4f,
201
+ }),
202
+ sideEffects: false,
197
203
  });
198
- const textureSampleBaseClampToEdge = dualImpl({
199
- name: "textureSampleBaseClampToEdge",
200
- normalImpl: textureSampleBaseClampToEdgeCpu,
201
- codegenImpl: (_ctx, args) => stitch`textureSampleBaseClampToEdge(${args})`,
202
- signature: (...args) => ({
203
- argTypes: args,
204
- returnType: vec4f
205
- })
204
+ export const textureSampleBaseClampToEdge = dualImpl({
205
+ name: 'textureSampleBaseClampToEdge',
206
+ normalImpl: textureSampleBaseClampToEdgeCpu,
207
+ codegenImpl: (_ctx, args) => stitch `textureSampleBaseClampToEdge(${args})`,
208
+ signature: (...args) => ({
209
+ argTypes: args,
210
+ returnType: vec4f,
211
+ }),
212
+ sideEffects: false,
206
213
  });
207
-
208
- //#endregion
209
- export { textureDimensions, textureGather, textureLoad, textureSample, textureSampleBaseClampToEdge, textureSampleBias, textureSampleCompare, textureSampleCompareLevel, textureSampleGrad, textureSampleLevel, textureStore };
package/taskQueue.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare class TaskQueue {
2
+ private _queue;
3
+ private _pending;
4
+ enqueue<T>(task: () => Promise<T>): Promise<T>;
5
+ private _processQueue;
6
+ }
package/taskQueue.js ADDED
@@ -0,0 +1,30 @@
1
+ export class TaskQueue {
2
+ _queue = [];
3
+ _pending = false;
4
+ enqueue(task) {
5
+ return new Promise((resolve, reject) => {
6
+ this._queue.push(async () => {
7
+ try {
8
+ resolve(await task());
9
+ }
10
+ catch (e) {
11
+ reject(e);
12
+ }
13
+ });
14
+ void this._processQueue();
15
+ });
16
+ }
17
+ async _processQueue() {
18
+ if (this._pending) {
19
+ return;
20
+ }
21
+ this._pending = true;
22
+ while (this._queue.length > 0) {
23
+ const task = this._queue.shift();
24
+ if (task) {
25
+ await task();
26
+ }
27
+ }
28
+ this._pending = false;
29
+ }
30
+ }
package/tgpu.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ export { constant as const } from './core/constant/tgpuConstant.ts';
2
+ export { fn } from './core/function/tgpuFn.ts';
3
+ export { comptime } from './core/function/comptime.ts';
4
+ export { resolve, resolveWithContext } from './core/resolve/tgpuResolve.ts';
5
+ export { init, initFromDevice } from './core/root/init.ts';
6
+ export { slot } from './core/slot/slot.ts';
7
+ export { lazy } from './core/slot/lazy.ts';
8
+ export { accessor, mutableAccessor } from './core/slot/accessor.ts';
9
+ export { privateVar, workgroupVar } from './core/variable/tgpuVariable.ts';
10
+ export { vertexLayout } from './core/vertexLayout/vertexLayout.ts';
11
+ export { bindGroupLayout } from './tgpuBindGroupLayout.ts';
12
+ export { computeFn } from './core/function/tgpuComputeFn.ts';
13
+ export { fragmentFn } from './core/function/tgpuFragmentFn.ts';
14
+ export { vertexFn } from './core/function/tgpuVertexFn.ts';
15
+ export { unroll } from './core/unroll/tgpuUnroll.ts';
16
+ export * as '~unstable' from './tgpuUnstable.ts';
package/tgpu.js CHANGED
@@ -1,44 +1,17 @@
1
- import { __export } from "./_virtual/rolldown_runtime.js";
2
- import { comptime } from "./core/function/comptime.js";
3
- import { constant } from "./core/constant/tgpuConstant.js";
4
- import { fn } from "./core/function/tgpuFn.js";
5
- import { bindGroupLayout } from "./tgpuBindGroupLayout.js";
6
- import { slot } from "./core/slot/slot.js";
7
- import { privateVar, workgroupVar } from "./core/variable/tgpuVariable.js";
8
- import { unroll } from "./core/unroll/tgpuUnroll.js";
9
- import { resolve, resolveWithContext } from "./core/resolve/tgpuResolve.js";
10
- import { computeFn } from "./core/function/tgpuComputeFn.js";
11
- import { vertexLayout } from "./core/vertexLayout/vertexLayout.js";
12
- import { init, initFromDevice } from "./core/root/init.js";
13
- import { lazy } from "./core/slot/lazy.js";
14
- import { accessor, mutableAccessor } from "./core/slot/accessor.js";
15
- import { fragmentFn } from "./core/function/tgpuFragmentFn.js";
16
- import { vertexFn } from "./core/function/tgpuVertexFn.js";
17
- import { tgpuUnstable_exports } from "./tgpuUnstable.js";
18
-
19
- //#region src/tgpu.ts
20
- var tgpu_exports = /* @__PURE__ */ __export({
21
- accessor: () => accessor,
22
- bindGroupLayout: () => bindGroupLayout,
23
- comptime: () => comptime,
24
- computeFn: () => computeFn,
25
- const: () => constant,
26
- fn: () => fn,
27
- fragmentFn: () => fragmentFn,
28
- init: () => init,
29
- initFromDevice: () => initFromDevice,
30
- lazy: () => lazy,
31
- mutableAccessor: () => mutableAccessor,
32
- privateVar: () => privateVar,
33
- resolve: () => resolve,
34
- resolveWithContext: () => resolveWithContext,
35
- slot: () => slot,
36
- unroll: () => unroll,
37
- vertexFn: () => vertexFn,
38
- vertexLayout: () => vertexLayout,
39
- workgroupVar: () => workgroupVar,
40
- "~unstable": () => tgpuUnstable_exports
41
- });
42
-
43
- //#endregion
44
- export { tgpu_exports };
1
+ // NOTE: This is a barrel file, internal files should not import things from this file
2
+ export { constant as const } from "./core/constant/tgpuConstant.js";
3
+ export { fn } from "./core/function/tgpuFn.js";
4
+ export { comptime } from "./core/function/comptime.js";
5
+ export { resolve, resolveWithContext } from "./core/resolve/tgpuResolve.js";
6
+ export { init, initFromDevice } from "./core/root/init.js";
7
+ export { slot } from "./core/slot/slot.js";
8
+ export { lazy } from "./core/slot/lazy.js";
9
+ export { accessor, mutableAccessor } from "./core/slot/accessor.js";
10
+ export { privateVar, workgroupVar } from "./core/variable/tgpuVariable.js";
11
+ export { vertexLayout } from "./core/vertexLayout/vertexLayout.js";
12
+ export { bindGroupLayout } from "./tgpuBindGroupLayout.js";
13
+ export { computeFn } from "./core/function/tgpuComputeFn.js";
14
+ export { fragmentFn } from "./core/function/tgpuFragmentFn.js";
15
+ export { vertexFn } from "./core/function/tgpuVertexFn.js";
16
+ export { unroll } from "./core/unroll/tgpuUnroll.js";
17
+ export * as '~unstable' from "./tgpuUnstable.js";