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/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";