typegpu 0.11.8 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/builtin.d.ts +51 -53
  2. package/builtin.js +30 -34
  3. package/common/fullScreenTriangle.d.ts +2 -10
  4. package/common/fullScreenTriangle.js +20 -28
  5. package/common/index.d.ts +2 -9
  6. package/common/index.js +3 -12
  7. package/common/writeSoA.d.ts +11 -12
  8. package/common/writeSoA.js +88 -76
  9. package/core/buffer/buffer.d.ts +79 -62
  10. package/core/buffer/buffer.js +279 -205
  11. package/core/buffer/bufferBinding.d.ts +71 -0
  12. package/core/buffer/bufferBinding.js +154 -0
  13. package/core/buffer/bufferUsage.d.ts +14 -45
  14. package/core/buffer/bufferUsage.js +1 -171
  15. package/core/buffer/laidOutBuffer.d.ts +25 -0
  16. package/core/buffer/laidOutBuffer.js +55 -0
  17. package/core/commandEncoder/attachments.d.ts +125 -0
  18. package/core/commandEncoder/attachments.js +29 -0
  19. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  20. package/core/commandEncoder/commandEncoder.js +56 -0
  21. package/core/commandEncoder/computePass.d.ts +58 -0
  22. package/core/commandEncoder/computePass.js +63 -0
  23. package/core/commandEncoder/renderPass.d.ts +121 -0
  24. package/core/commandEncoder/renderPass.js +196 -0
  25. package/core/constant/tgpuConstant.d.ts +26 -26
  26. package/core/constant/tgpuConstant.js +76 -65
  27. package/core/declare/tgpuDeclare.d.ts +3 -6
  28. package/core/declare/tgpuDeclare.js +37 -38
  29. package/core/function/autoIO.d.ts +61 -33
  30. package/core/function/autoIO.js +68 -73
  31. package/core/function/comptime.d.ts +11 -13
  32. package/core/function/comptime.js +60 -52
  33. package/core/function/createCallableSchema.d.ts +16 -0
  34. package/core/function/createCallableSchema.js +50 -40
  35. package/core/function/dualImpl.d.ts +44 -0
  36. package/core/function/dualImpl.js +71 -50
  37. package/core/function/entryInputRouter.d.ts +26 -0
  38. package/core/function/entryInputRouter.js +31 -33
  39. package/core/function/extractArgs.d.ts +38 -0
  40. package/core/function/extractArgs.js +202 -200
  41. package/core/function/fnCore.d.ts +44 -0
  42. package/core/function/fnCore.js +148 -92
  43. package/core/function/fnTypes.d.ts +31 -29
  44. package/core/function/fnTypes.js +1 -0
  45. package/core/function/ioSchema.d.ts +12 -10
  46. package/core/function/ioSchema.js +65 -47
  47. package/core/function/shelllessImpl.d.ts +9 -12
  48. package/core/function/shelllessImpl.js +18 -20
  49. package/core/function/templateUtils.d.ts +2 -0
  50. package/core/function/templateUtils.js +9 -8
  51. package/core/function/tgpuComputeFn.d.ts +26 -28
  52. package/core/function/tgpuComputeFn.js +47 -48
  53. package/core/function/tgpuFn.d.ts +34 -37
  54. package/core/function/tgpuFn.js +179 -153
  55. package/core/function/tgpuFragmentFn.d.ts +52 -53
  56. package/core/function/tgpuFragmentFn.js +63 -56
  57. package/core/function/tgpuVertexFn.d.ts +36 -39
  58. package/core/function/tgpuVertexFn.js +56 -53
  59. package/core/pipeline/computePipeline.d.ts +141 -53
  60. package/core/pipeline/computePipeline.js +291 -225
  61. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  62. package/core/pipeline/connectAttachmentToShader.js +25 -22
  63. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  64. package/core/pipeline/connectTargetsToShader.js +29 -27
  65. package/core/pipeline/drawState.d.ts +52 -0
  66. package/core/pipeline/drawState.js +225 -0
  67. package/core/pipeline/limitsOverflow.d.ts +2 -0
  68. package/core/pipeline/limitsOverflow.js +13 -10
  69. package/core/pipeline/performanceTracker.d.ts +14 -0
  70. package/core/pipeline/performanceTracker.js +34 -0
  71. package/core/pipeline/pipelineUtils.d.ts +18 -0
  72. package/core/pipeline/pipelineUtils.js +54 -25
  73. package/core/pipeline/priors.d.ts +1 -0
  74. package/core/pipeline/priors.js +12 -0
  75. package/core/pipeline/renderPipeline.d.ts +246 -261
  76. package/core/pipeline/renderPipeline.js +487 -480
  77. package/core/pipeline/timeable.d.ts +28 -18
  78. package/core/pipeline/timeable.js +90 -52
  79. package/core/pipeline/typeGuards.d.ts +17 -0
  80. package/core/pipeline/typeGuards.js +52 -22
  81. package/core/querySet/querySet.d.ts +26 -21
  82. package/core/querySet/querySet.js +127 -103
  83. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +90 -93
  85. package/core/resolve/externals.d.ts +25 -7
  86. package/core/resolve/externals.js +79 -62
  87. package/core/resolve/namespace.d.ts +22 -25
  88. package/core/resolve/namespace.js +16 -21
  89. package/core/resolve/resolvableString.d.ts +7 -0
  90. package/core/resolve/resolvableString.js +13 -0
  91. package/core/resolve/resolveData.d.ts +10 -0
  92. package/core/resolve/resolveData.js +162 -121
  93. package/core/resolve/stitch.d.ts +8 -0
  94. package/core/resolve/stitch.js +23 -21
  95. package/core/resolve/tgpuResolve.d.ts +55 -53
  96. package/core/resolve/tgpuResolve.js +106 -55
  97. package/core/root/configurableImpl.d.ts +10 -0
  98. package/core/root/configurableImpl.js +17 -19
  99. package/core/root/init.d.ts +76 -38
  100. package/core/root/init.js +346 -454
  101. package/core/root/rootTypes.d.ts +461 -627
  102. package/core/root/rootTypes.js +1 -0
  103. package/core/sampler/sampler.d.ts +50 -31
  104. package/core/sampler/sampler.js +120 -113
  105. package/core/simulate/tgpuSimulate.d.ts +9 -12
  106. package/core/simulate/tgpuSimulate.js +68 -71
  107. package/core/slot/accessor.d.ts +36 -13
  108. package/core/slot/accessor.js +138 -91
  109. package/core/slot/internalSlots.d.ts +2 -0
  110. package/core/slot/internalSlots.js +1 -6
  111. package/core/slot/lazy.d.ts +2 -6
  112. package/core/slot/lazy.js +71 -39
  113. package/core/slot/slot.d.ts +2 -6
  114. package/core/slot/slot.js +45 -38
  115. package/core/slot/slotTypes.d.ts +78 -80
  116. package/core/slot/slotTypes.js +11 -16
  117. package/core/texture/externalTexture.d.ts +20 -11
  118. package/core/texture/externalTexture.js +46 -46
  119. package/core/texture/texture.d.ts +152 -97
  120. package/core/texture/texture.js +407 -314
  121. package/core/texture/textureFormats.d.ts +42 -23
  122. package/core/texture/textureFormats.js +104 -75
  123. package/core/texture/textureProps.d.ts +7 -10
  124. package/core/texture/textureProps.js +1 -0
  125. package/core/texture/textureUtils.d.ts +8 -0
  126. package/core/texture/textureUtils.js +185 -179
  127. package/core/texture/usageExtension.d.ts +21 -18
  128. package/core/texture/usageExtension.js +13 -17
  129. package/core/unroll/tgpuUnroll.d.ts +20 -19
  130. package/core/unroll/tgpuUnroll.js +82 -91
  131. package/core/valueProxyUtils.d.ts +3 -0
  132. package/core/valueProxyUtils.js +52 -41
  133. package/core/variable/tgpuVariable.d.ts +26 -27
  134. package/core/variable/tgpuVariable.js +93 -96
  135. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  136. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  137. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  138. package/core/vertexLayout/vertexAttribute.js +1 -0
  139. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  140. package/core/vertexLayout/vertexLayout.js +130 -99
  141. package/core/whitespaces.d.ts +2 -0
  142. package/core/whitespaces.js +16 -0
  143. package/data/alignIO.d.ts +7 -0
  144. package/data/alignIO.js +13 -13
  145. package/data/alignmentOf.d.ts +5 -8
  146. package/data/alignmentOf.js +90 -75
  147. package/data/array.d.ts +6 -9
  148. package/data/array.js +48 -40
  149. package/data/atomic.d.ts +2 -7
  150. package/data/atomic.js +26 -23
  151. package/data/attributes.d.ts +19 -21
  152. package/data/attributes.js +192 -132
  153. package/data/autoStruct.d.ts +36 -3
  154. package/data/autoStruct.js +84 -81
  155. package/data/compiledIO.d.ts +5 -0
  156. package/data/compiledIO.js +231 -214
  157. package/data/dataIO.d.ts +13 -11
  158. package/data/dataIO.js +643 -589
  159. package/data/dataTypes.d.ts +83 -65
  160. package/data/dataTypes.js +66 -68
  161. package/data/deepEqual.d.ts +2 -7
  162. package/data/deepEqual.js +80 -55
  163. package/data/disarray.d.ts +6 -10
  164. package/data/disarray.js +52 -46
  165. package/data/float16Conversion.d.ts +4 -0
  166. package/data/float16Conversion.js +7 -0
  167. package/data/getLongestContiguousPrefix.d.ts +4 -8
  168. package/data/getLongestContiguousPrefix.js +6 -11
  169. package/data/index.d.ts +30 -31
  170. package/data/index.js +39 -172
  171. package/data/instanceToSchema.d.ts +24 -27
  172. package/data/instanceToSchema.js +1 -0
  173. package/data/isContiguous.d.ts +4 -8
  174. package/data/isContiguous.js +6 -11
  175. package/data/matrix.d.ts +21 -21
  176. package/data/matrix.js +513 -505
  177. package/data/numberOps.d.ts +6 -0
  178. package/data/numberOps.js +26 -20
  179. package/data/numeric.d.ts +21 -12
  180. package/data/numeric.js +287 -192
  181. package/data/offsetUtils.d.ts +9 -13
  182. package/data/offsetUtils.js +204 -144
  183. package/data/offsets.d.ts +8 -0
  184. package/data/offsets.js +33 -33
  185. package/data/partialIO.d.ts +13 -8
  186. package/data/partialIO.js +124 -113
  187. package/data/ptr.d.ts +12 -12
  188. package/data/ptr.js +42 -44
  189. package/data/ref.d.ts +40 -27
  190. package/data/ref.js +125 -95
  191. package/data/sampler.d.ts +99 -101
  192. package/data/sampler.js +17 -21
  193. package/data/schemaCallWrapper.d.ts +19 -0
  194. package/data/schemaCallWrapper.js +31 -26
  195. package/data/schemaMemoryLayout.d.ts +8 -0
  196. package/data/schemaMemoryLayout.js +213 -185
  197. package/data/sizeOf.d.ts +4 -8
  198. package/data/sizeOf.js +6 -11
  199. package/data/snippet.d.ts +96 -20
  200. package/data/snippet.js +75 -86
  201. package/data/struct.d.ts +4 -7
  202. package/data/struct.js +51 -39
  203. package/data/texture.d.ts +253 -250
  204. package/data/texture.js +238 -200
  205. package/data/unstruct.d.ts +2 -7
  206. package/data/unstruct.js +43 -37
  207. package/data/vector.d.ts +33 -21
  208. package/data/vector.js +234 -221
  209. package/data/vectorImpl.d.ts +231 -0
  210. package/data/vectorImpl.js +563 -515
  211. package/data/vectorOps.d.ts +63 -0
  212. package/data/vectorOps.js +642 -630
  213. package/data/vertexFormatData.d.ts +181 -184
  214. package/data/vertexFormatData.js +104 -106
  215. package/data/wgslTypes.d.ts +665 -600
  216. package/data/wgslTypes.js +220 -198
  217. package/errors.d.ts +50 -24
  218. package/errors.js +146 -120
  219. package/execMode.d.ts +16 -0
  220. package/execMode.js +47 -40
  221. package/extension.d.ts +13 -8
  222. package/extension.js +10 -16
  223. package/getGPUValue.d.ts +1 -0
  224. package/getGPUValue.js +2 -7
  225. package/index.d.ts +28 -68
  226. package/index.js +8 -28
  227. package/indexNamedExports.d.ts +69 -42
  228. package/indexNamedExports.js +25 -0
  229. package/internal.d.ts +16 -0
  230. package/internal.js +12 -0
  231. package/mathUtils.d.ts +5 -0
  232. package/mathUtils.js +7 -11
  233. package/memo.d.ts +11 -0
  234. package/memo.js +20 -22
  235. package/minify.d.ts +5 -0
  236. package/minify.js +93 -0
  237. package/nameUtils.d.ts +29 -0
  238. package/nameUtils.js +428 -398
  239. package/package.json +9 -3
  240. package/resolutionCtx.d.ts +162 -22
  241. package/resolutionCtx.js +911 -624
  242. package/serial/registry.d.ts +15 -0
  243. package/serial/registry.js +106 -0
  244. package/serial/restore.d.ts +49 -0
  245. package/serial/restore.js +68 -0
  246. package/serial/schema.d.ts +58 -0
  247. package/serial/schema.js +209 -0
  248. package/serial/types.d.ts +5 -0
  249. package/serial/types.js +1 -0
  250. package/shared/env.d.ts +9 -0
  251. package/shared/env.js +9 -12
  252. package/shared/generators.d.ts +4 -0
  253. package/shared/generators.js +10 -12
  254. package/shared/meta.d.ts +29 -14
  255. package/shared/meta.js +71 -55
  256. package/shared/normalizeMetadata.d.ts +32 -27
  257. package/shared/normalizeMetadata.js +23 -36
  258. package/shared/repr.d.ts +73 -55
  259. package/shared/repr.js +1 -0
  260. package/shared/soul.d.ts +17 -0
  261. package/shared/soul.js +1 -0
  262. package/shared/stringify.d.ts +2 -0
  263. package/shared/stringify.js +29 -20
  264. package/shared/symbols.d.ts +26 -20
  265. package/shared/symbols.js +79 -79
  266. package/shared/tseynit.d.ts +2 -0
  267. package/shared/tseynit.js +160 -75
  268. package/shared/utilityTypes.d.ts +30 -14
  269. package/shared/utilityTypes.js +2 -6
  270. package/shared/vertexFormat.d.ts +41 -43
  271. package/shared/vertexFormat.js +59 -62
  272. package/std/array.d.ts +2 -7
  273. package/std/array.js +18 -23
  274. package/std/atomic.d.ts +14 -18
  275. package/std/atomic.js +96 -95
  276. package/std/bitcast.d.ts +193 -10
  277. package/std/bitcast.js +309 -39
  278. package/std/boolean.d.ts +19 -33
  279. package/std/boolean.js +296 -288
  280. package/std/copy.d.ts +2 -7
  281. package/std/copy.js +27 -24
  282. package/std/derivative.d.ts +11 -15
  283. package/std/derivative.js +56 -79
  284. package/std/discard.d.ts +1 -6
  285. package/std/discard.js +7 -14
  286. package/std/environment.d.ts +19 -14
  287. package/std/environment.js +71 -51
  288. package/std/extensions.d.ts +2 -8
  289. package/std/extensions.js +10 -11
  290. package/std/index.d.ts +20 -24
  291. package/std/index.js +32 -187
  292. package/std/matrix.d.ts +6 -12
  293. package/std/matrix.js +60 -69
  294. package/std/numeric.d.ts +143 -146
  295. package/std/numeric.js +858 -749
  296. package/std/operators.d.ts +19 -27
  297. package/std/operators.js +227 -193
  298. package/std/packing.d.ts +5 -11
  299. package/std/packing.js +67 -75
  300. package/std/range.d.ts +6 -11
  301. package/std/range.js +48 -36
  302. package/std/subgroup.d.ts +33 -37
  303. package/std/subgroup.js +180 -217
  304. package/std/texture.d.ts +70 -38
  305. package/std/texture.js +176 -172
  306. package/taskQueue.d.ts +6 -0
  307. package/taskQueue.js +30 -0
  308. package/tgpu.d.ts +16 -0
  309. package/tgpu.js +17 -44
  310. package/tgpuBindGroupLayout.d.ts +132 -152
  311. package/tgpuBindGroupLayout.js +346 -268
  312. package/tgpuLogger.d.ts +34 -0
  313. package/tgpuLogger.js +63 -0
  314. package/tgpuUnstable.d.ts +16 -22
  315. package/tgpuUnstable.js +13 -35
  316. package/tgsl/accessIndex.d.ts +2 -0
  317. package/tgsl/accessIndex.js +76 -33
  318. package/tgsl/accessProp.d.ts +2 -0
  319. package/tgsl/accessProp.js +142 -100
  320. package/tgsl/accessStructProp.d.ts +5 -0
  321. package/tgsl/accessStructProp.js +18 -0
  322. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  323. package/tgsl/consoleLog/deserializers.js +119 -103
  324. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  325. package/tgsl/consoleLog/logGenerator.js +85 -80
  326. package/tgsl/consoleLog/serializers.d.ts +21 -0
  327. package/tgsl/consoleLog/serializers.js +119 -100
  328. package/tgsl/consoleLog/types.d.ts +40 -39
  329. package/tgsl/consoleLog/types.js +1 -0
  330. package/tgsl/conversion.d.ts +33 -0
  331. package/tgsl/conversion.js +272 -193
  332. package/tgsl/forOfUtils.d.ts +15 -0
  333. package/tgsl/forOfUtils.js +85 -70
  334. package/tgsl/generationHelpers.d.ts +22 -39
  335. package/tgsl/generationHelpers.js +85 -58
  336. package/tgsl/infixDispatch.d.ts +70 -0
  337. package/tgsl/infixDispatch.js +48 -46
  338. package/tgsl/jsPolyfills.d.ts +16 -19
  339. package/tgsl/jsPolyfills.js +44 -42
  340. package/tgsl/makeDereferenceable.d.ts +48 -0
  341. package/tgsl/makeDereferenceable.js +86 -0
  342. package/tgsl/makeResolvable.d.ts +22 -0
  343. package/tgsl/makeResolvable.js +33 -0
  344. package/tgsl/shaderGenerator.d.ts +77 -17
  345. package/tgsl/shaderGenerator.js +1 -0
  346. package/tgsl/shellless.d.ts +6 -9
  347. package/tgsl/shellless.js +73 -43
  348. package/tgsl/wgslGenerator.d.ts +66 -59
  349. package/tgsl/wgslGenerator.js +1344 -747
  350. package/types.d.ts +287 -221
  351. package/types.js +61 -44
  352. package/unwrapper.d.ts +31 -26
  353. package/unwrapper.js +1 -0
  354. package/wgslExtensions.d.ts +3 -5
  355. package/wgslExtensions.js +12 -16
  356. package/_virtual/rolldown_runtime.js +0 -13
  357. package/core/buffer/bufferShorthand.d.ts +0 -50
  358. package/core/buffer/bufferShorthand.js +0 -55
  359. package/core/pipeline/applyPipelineState.js +0 -37
  360. package/package.js +0 -5
  361. package/tgsl/shaderGenerator_members.d.ts +0 -33
  362. package/tgsl/shaderGenerator_members.js +0 -12
package/data/wgslTypes.js CHANGED
@@ -1,224 +1,246 @@
1
+ // We import tsover-runtime, then use Symbol.* types, because tsdown strips the imported `Operator`
2
+ // type no matter what. Seems like a bug in tsdown.
3
+ // oxlint-disable-next-line no-unassigned-import
4
+ import 'tsover-runtime';
1
5
  import { $internal, isMarkedInternal } from "../shared/symbols.js";
2
- import "tsover-runtime";
3
-
4
- //#region src/data/wgslTypes.ts
5
- const Void = {
6
- [$internal]: {},
7
- type: "void",
8
- toString() {
9
- return "void";
10
- }
6
+ export const Void = {
7
+ [$internal]: {},
8
+ type: 'void',
9
+ toString() {
10
+ return 'void';
11
+ },
11
12
  };
12
- const wgslTypeLiterals = [
13
- "bool",
14
- "f32",
15
- "f16",
16
- "i32",
17
- "u32",
18
- "u16",
19
- "vec2f",
20
- "vec2h",
21
- "vec2i",
22
- "vec2u",
23
- "vec2<bool>",
24
- "vec3f",
25
- "vec3h",
26
- "vec3i",
27
- "vec3u",
28
- "vec3<bool>",
29
- "vec4f",
30
- "vec4h",
31
- "vec4i",
32
- "vec4u",
33
- "vec4<bool>",
34
- "mat2x2f",
35
- "mat3x3f",
36
- "mat4x4f",
37
- "struct",
38
- "array",
39
- "ptr",
40
- "atomic",
41
- "decorated",
42
- "abstractInt",
43
- "abstractFloat",
44
- "void",
45
- "texture_1d",
46
- "texture_storage_1d",
47
- "texture_2d",
48
- "texture_storage_2d",
49
- "texture_multisampled_2d",
50
- "texture_depth_2d",
51
- "texture_depth_multisampled_2d",
52
- "texture_2d_array",
53
- "texture_storage_2d_array",
54
- "texture_depth_2d_array",
55
- "texture_cube",
56
- "texture_depth_cube",
57
- "texture_cube_array",
58
- "texture_depth_cube_array",
59
- "texture_3d",
60
- "texture_storage_3d",
61
- "texture_external",
62
- "sampler",
63
- "sampler_comparison"
13
+ export const wgslTypeLiterals = [
14
+ 'bool',
15
+ 'f32',
16
+ 'f16',
17
+ 'i32',
18
+ 'u32',
19
+ 'u16',
20
+ 'vec2f',
21
+ 'vec2h',
22
+ 'vec2i',
23
+ 'vec2u',
24
+ 'vec2<bool>',
25
+ 'vec3f',
26
+ 'vec3h',
27
+ 'vec3i',
28
+ 'vec3u',
29
+ 'vec3<bool>',
30
+ 'vec4f',
31
+ 'vec4h',
32
+ 'vec4i',
33
+ 'vec4u',
34
+ 'vec4<bool>',
35
+ 'mat2x2f',
36
+ 'mat3x3f',
37
+ 'mat4x4f',
38
+ 'struct',
39
+ 'array',
40
+ 'ptr',
41
+ 'atomic',
42
+ 'decorated',
43
+ 'abstractInt',
44
+ 'abstractFloat',
45
+ 'void',
46
+ 'texture_1d',
47
+ 'texture_storage_1d',
48
+ 'texture_2d',
49
+ 'texture_storage_2d',
50
+ 'texture_multisampled_2d',
51
+ 'texture_depth_2d',
52
+ 'texture_depth_multisampled_2d',
53
+ 'texture_2d_array',
54
+ 'texture_storage_2d_array',
55
+ 'texture_depth_2d_array',
56
+ 'texture_cube',
57
+ 'texture_depth_cube',
58
+ 'texture_cube_array',
59
+ 'texture_depth_cube_array',
60
+ 'texture_3d',
61
+ 'texture_storage_3d',
62
+ 'texture_external',
63
+ 'sampler',
64
+ 'sampler_comparison',
64
65
  ];
65
- function isVecInstance(value) {
66
- const v = value;
67
- return isMarkedInternal(v) && typeof v.kind === "string" && v.kind.startsWith("vec");
66
+ // #endregion
67
+ export function isVecInstance(value) {
68
+ const v = value;
69
+ return isMarkedInternal(v) && typeof v.kind === 'string' && v.kind.startsWith('vec');
68
70
  }
69
- function isVec2(value) {
70
- const v = value;
71
- return isMarkedInternal(v) && typeof v.type === "string" && v.type.startsWith("vec2");
71
+ export function isVecBoolInstance(value) {
72
+ return isVecInstance(value) && value.kind.includes('b');
72
73
  }
73
- function isVec3(value) {
74
- const v = value;
75
- return isMarkedInternal(v) && typeof v.type === "string" && v.type.startsWith("vec3");
74
+ export function isVec2(value) {
75
+ const v = value;
76
+ return isMarkedInternal(v) && typeof v.type === 'string' && v.type.startsWith('vec2');
76
77
  }
77
- function isVec4(value) {
78
- const v = value;
79
- return isMarkedInternal(v) && typeof v.type === "string" && v.type.startsWith("vec4");
78
+ export function isVec3(value) {
79
+ const v = value;
80
+ return isMarkedInternal(v) && typeof v.type === 'string' && v.type.startsWith('vec3');
80
81
  }
81
- function isVec(value) {
82
- return isVec2(value) || isVec3(value) || isVec4(value);
82
+ export function isVec4(value) {
83
+ const v = value;
84
+ return isMarkedInternal(v) && typeof v.type === 'string' && v.type.startsWith('vec4');
83
85
  }
84
- function isVecBool(value) {
85
- return isVec(value) && value.type.includes("b");
86
+ export function isVec(value) {
87
+ return isVec2(value) || isVec3(value) || isVec4(value);
86
88
  }
87
- function isMatInstance(value) {
88
- const v = value;
89
- return isMarkedInternal(v) && typeof v.kind?.startsWith === "function" && v.kind.startsWith("mat");
89
+ export function isVecBool(value) {
90
+ return isVec(value) && value.type.includes('b');
90
91
  }
91
- function isMat2x2f(value) {
92
- return isMarkedInternal(value) && value?.type === "mat2x2f";
92
+ export function isMatInstance(value) {
93
+ const v = value;
94
+ return (isMarkedInternal(v) && typeof v.kind?.startsWith === 'function' && v.kind.startsWith('mat'));
93
95
  }
94
- function isMat3x3f(value) {
95
- return isMarkedInternal(value) && value?.type === "mat3x3f";
96
+ export function isMat2x2f(value) {
97
+ return isMarkedInternal(value) && value?.type === 'mat2x2f';
96
98
  }
97
- function isMat4x4f(value) {
98
- return isMarkedInternal(value) && value?.type === "mat4x4f";
99
+ export function isMat3x3f(value) {
100
+ return isMarkedInternal(value) && value?.type === 'mat3x3f';
99
101
  }
100
- function isMat(value) {
101
- return isMat2x2f(value) || isMat3x3f(value) || isMat4x4f(value);
102
+ export function isMat4x4f(value) {
103
+ return isMarkedInternal(value) && value?.type === 'mat4x4f';
102
104
  }
103
- function isFloat32VecInstance(element) {
104
- return isVecInstance(element) && [
105
- "vec2f",
106
- "vec3f",
107
- "vec4f"
108
- ].includes(element.kind);
105
+ export function isMat(value) {
106
+ return isMat2x2f(value) || isMat3x3f(value) || isMat4x4f(value);
109
107
  }
110
- function isInteger32VecInstance(value) {
111
- return isVecInstance(value) && /[iu]$/.test(value.kind);
108
+ export function isInteger(value) {
109
+ return (isMarkedInternal(value) && ['abstractInt', 'i32', 'u32'].includes(value?.type));
112
110
  }
113
- function isUint32VecInstance(value) {
114
- return isVecInstance(value) && /[u]$/.test(value.kind);
111
+ export function isIntegerVec(value) {
112
+ return isVec(value) && isInteger(value.primitive);
115
113
  }
116
- function isWgslData(value) {
117
- return isMarkedInternal(value) && wgslTypeLiterals.includes(value?.type);
114
+ export function isFloat32VecInstance(element) {
115
+ return isVecInstance(element) && ['vec2f', 'vec3f', 'vec4f'].includes(element.kind);
116
+ }
117
+ export function isInteger32VecInstance(value) {
118
+ return isVecInstance(value) && /[iu]$/.test(value.kind);
119
+ }
120
+ export function isUint32VecInstance(value) {
121
+ return isVecInstance(value) && /[u]$/.test(value.kind);
122
+ }
123
+ export function isWgslData(value) {
124
+ return isMarkedInternal(value) && wgslTypeLiterals.includes(value?.type);
118
125
  }
119
126
  /**
120
- * Checks whether passed in value is an array schema,
121
- * as opposed to, e.g., a disarray schema.
122
- *
123
- * Array schemas can be used to describe uniform and storage buffers,
124
- * whereas disarray schemas cannot.
125
- *
126
- * @example
127
- * isWgslArray(d.arrayOf(d.u32, 4)) // true
128
- * isWgslArray(d.disarray(d.u32, 4)) // false
129
- * isWgslArray(d.vec3f) // false
130
- */
131
- function isWgslArray(schema) {
132
- return isMarkedInternal(schema) && schema?.type === "array";
127
+ * Checks whether passed in value is an array schema,
128
+ * as opposed to, e.g., a disarray schema.
129
+ *
130
+ * Array schemas can be used to describe uniform and storage buffers,
131
+ * whereas disarray schemas cannot.
132
+ *
133
+ * @example
134
+ * isWgslArray(d.arrayOf(d.u32, 4)) // true
135
+ * isWgslArray(d.disarray(d.u32, 4)) // false
136
+ * isWgslArray(d.vec3f) // false
137
+ */
138
+ export function isWgslArray(schema) {
139
+ return isMarkedInternal(schema) && schema?.type === 'array';
133
140
  }
134
141
  /**
135
- * Checks whether passed in value is a struct schema,
136
- * as opposed to, e.g., an unstruct schema.
137
- *
138
- * Struct schemas can be used to describe uniform and storage buffers,
139
- * whereas unstruct schemas cannot.
140
- *
141
- * @example
142
- * isWgslStruct(d.struct({ a: d.u32 })) // true
143
- * isWgslStruct(d.unstruct({ a: d.u32 })) // false
144
- * isWgslStruct(d.vec3f) // false
145
- */
146
- function isWgslStruct(schema) {
147
- return isMarkedInternal(schema) && schema?.type === "struct";
142
+ * Checks whether passed in value is a struct schema,
143
+ * as opposed to, e.g., an unstruct schema.
144
+ *
145
+ * Struct schemas can be used to describe uniform and storage buffers,
146
+ * whereas unstruct schemas cannot.
147
+ *
148
+ * @example
149
+ * isWgslStruct(d.struct({ a: d.u32 })) // true
150
+ * isWgslStruct(d.unstruct({ a: d.u32 })) // false
151
+ * isWgslStruct(d.vec3f) // false
152
+ */
153
+ export function isWgslStruct(schema) {
154
+ return isMarkedInternal(schema) && schema?.type === 'struct';
148
155
  }
149
156
  /**
150
- * Checks whether passed in value is a pointer schema.
151
- *
152
- * @example
153
- * isPtr(d.ptrFn(d.f32)) // true
154
- * isPtr(d.ptrPrivate(d.f32)) // true
155
- * isPtr(d.f32) // false
156
- */
157
- function isPtr(schema) {
158
- return isMarkedInternal(schema) && schema?.type === "ptr";
157
+ * Checks whether passed in value is a pointer schema.
158
+ *
159
+ * @example
160
+ * isPtr(d.ptrFn(d.f32)) // true
161
+ * isPtr(d.ptrPrivate(d.f32)) // true
162
+ * isPtr(d.f32) // false
163
+ */
164
+ export function isPtr(schema) {
165
+ return isMarkedInternal(schema) && schema?.type === 'ptr';
159
166
  }
160
167
  /**
161
- * Checks whether the passed in value is an atomic schema.
162
- *
163
- * @example
164
- * isAtomic(d.atomic(d.u32)) // true
165
- * isAtomic(d.u32) // false
166
- */
167
- function isAtomic(schema) {
168
- return isMarkedInternal(schema) && schema?.type === "atomic";
169
- }
170
- function isAlignAttrib(value) {
171
- return isMarkedInternal(value) && value?.type === "@align";
172
- }
173
- function isSizeAttrib(value) {
174
- return isMarkedInternal(value) && value?.type === "@size";
175
- }
176
- function isLocationAttrib(value) {
177
- return isMarkedInternal(value) && value?.type === "@location";
178
- }
179
- function isInterpolateAttrib(value) {
180
- return isMarkedInternal(value) && value?.type === "@interpolate";
181
- }
182
- function isBuiltinAttrib(value) {
183
- return isMarkedInternal(value) && value?.type === "@builtin";
184
- }
185
- function isDecorated(value) {
186
- return isMarkedInternal(value) && value?.type === "decorated";
187
- }
188
- function isVoid(value) {
189
- return isMarkedInternal(value) && value.type === "void";
190
- }
191
- function isBool(value) {
192
- return isMarkedInternal(value) && value.type === "bool";
193
- }
194
- function isNumericSchema(schema) {
195
- const type = schema?.type;
196
- return isMarkedInternal(schema) && (type === "abstractInt" || type === "abstractFloat" || type === "f32" || type === "f16" || type === "i32" || type === "u32");
197
- }
198
- function isHalfPrecisionSchema(schema) {
199
- const type = schema?.type;
200
- return isMarkedInternal(schema) && (type === "f16" || type === "vec2h" || type === "vec3h" || type === "vec4h");
201
- }
202
- const ephemeralTypes = [
203
- "abstractInt",
204
- "abstractFloat",
205
- "f32",
206
- "f16",
207
- "i32",
208
- "u32",
209
- "bool"
210
- ];
168
+ * Checks whether the passed in value is an atomic schema.
169
+ *
170
+ * @example
171
+ * isAtomic(d.atomic(d.u32)) // true
172
+ * isAtomic(d.u32) // false
173
+ */
174
+ export function isAtomic(schema) {
175
+ return isMarkedInternal(schema) && schema?.type === 'atomic';
176
+ }
177
+ export function isAlignAttrib(value) {
178
+ return isMarkedInternal(value) && value?.type === '@align';
179
+ }
180
+ export function isSizeAttrib(value) {
181
+ return isMarkedInternal(value) && value?.type === '@size';
182
+ }
183
+ export function isLocationAttrib(value) {
184
+ return isMarkedInternal(value) && value?.type === '@location';
185
+ }
186
+ export function isInterpolateAttrib(value) {
187
+ return isMarkedInternal(value) && value?.type === '@interpolate';
188
+ }
189
+ export function isBuiltinAttrib(value) {
190
+ return isMarkedInternal(value) && value?.type === '@builtin';
191
+ }
192
+ export function isInvariantAttrib(value) {
193
+ return isMarkedInternal(value) && value?.type === '@invariant';
194
+ }
195
+ export function isDecorated(value) {
196
+ return isMarkedInternal(value) && value?.type === 'decorated';
197
+ }
198
+ export function isAbstractFloat(value) {
199
+ return isMarkedInternal(value) && value.type === 'abstractFloat';
200
+ }
201
+ export function isAbstractInt(value) {
202
+ return isMarkedInternal(value) && value.type === 'abstractInt';
203
+ }
204
+ export function isAbstract(value) {
205
+ return isAbstractFloat(value) || isAbstractInt(value);
206
+ }
207
+ export function isConcrete(value) {
208
+ return !isAbstract(value);
209
+ }
210
+ export function isVoid(value) {
211
+ return isMarkedInternal(value) && value.type === 'void';
212
+ }
213
+ export function isBool(value) {
214
+ return isMarkedInternal(value) && value.type === 'bool';
215
+ }
216
+ export function isNumericSchema(schema) {
217
+ const type = schema?.type;
218
+ return (isMarkedInternal(schema) &&
219
+ (type === 'abstractInt' ||
220
+ type === 'abstractFloat' ||
221
+ type === 'f32' ||
222
+ type === 'f16' ||
223
+ type === 'i32' ||
224
+ type === 'u32'));
225
+ }
226
+ export function isHalfPrecisionSchema(schema) {
227
+ const type = schema?.type;
228
+ return (isMarkedInternal(schema) &&
229
+ (type === 'f16' || type === 'vec2h' || type === 'vec3h' || type === 'vec4h'));
230
+ }
231
+ const ephemeralTypes = ['abstractInt', 'abstractFloat', 'f32', 'f16', 'i32', 'u32', 'bool'];
211
232
  /**
212
- * Returns true for schemas that are not naturally referential in JS (primitives).
213
- * @param schema
214
- * @returns
215
- */
216
- function isNaturallyEphemeral(schema) {
217
- return !isMarkedInternal(schema) || ephemeralTypes.includes(schema?.type);
218
- }
219
- function WORKAROUND_getSchema(vec) {
220
- return vec.schema;
221
- }
222
-
223
- //#endregion
224
- export { Void, WORKAROUND_getSchema, isAlignAttrib, isAtomic, isBool, isBuiltinAttrib, isDecorated, isFloat32VecInstance, isHalfPrecisionSchema, isInteger32VecInstance, isInterpolateAttrib, isLocationAttrib, isMat, isMat2x2f, isMat3x3f, isMatInstance, isNaturallyEphemeral, isNumericSchema, isPtr, isSizeAttrib, isUint32VecInstance, isVec, isVecBool, isVecInstance, isVoid, isWgslArray, isWgslData, isWgslStruct };
233
+ * Returns true for schemas that are not naturally referential in JS (primitives).
234
+ * @param schema
235
+ * @returns
236
+ */
237
+ export function isNaturallyEphemeral(schema) {
238
+ return !isMarkedInternal(schema) || ephemeralTypes.includes(schema?.type);
239
+ }
240
+ export function WORKAROUND_getSchema(vec) {
241
+ // TODO: Remove workaround
242
+ // it's a workaround for circular dependencies caused by us using schemas in the shader generator
243
+ // these schema properties are assigned on the prototype of vector and matrix instances
244
+ // oxlint-disable-next-line typescript/no-explicit-any -- explained above
245
+ return vec.schema;
246
+ }
package/errors.d.ts CHANGED
@@ -1,11 +1,12 @@
1
- import { TgpuSlot } from "./core/slot/slotTypes.js";
2
- import { TgpuVertexLayout } from "./core/vertexLayout/vertexLayout.js";
3
- import { TgpuBindGroupLayout } from "./tgpuBindGroupLayout.js";
4
- import { TgpuBuffer } from "./core/buffer/buffer.js";
5
- import { BaseData } from "./data/wgslTypes.js";
6
-
7
- //#region src/errors.d.ts
8
-
1
+ import type { TgpuBuffer } from './core/buffer/buffer.ts';
2
+ import type { TgpuSlot } from './core/slot/slotTypes.ts';
3
+ import type { TgpuVertexLayout } from './core/vertexLayout/vertexLayout.ts';
4
+ import type { BaseData } from './data/wgslTypes.ts';
5
+ import type { TgpuBindGroupLayout } from './tgpuBindGroupLayout.ts';
6
+ /**
7
+ * Inspired by: https://github.com/alexreardon/tiny-invariant/blob/master/src/tiny-invariant.ts
8
+ */
9
+ export declare function invariant(condition: unknown, message?: string | (() => string)): asserts condition;
9
10
  /**
10
11
  * An error that happens during resolution of WGSL code.
11
12
  * Contains a trace of all ancestor resolvables in
@@ -13,30 +14,55 @@ import { BaseData } from "./data/wgslTypes.js";
13
14
  *
14
15
  * @category Errors
15
16
  */
16
- declare class ResolutionError extends Error {
17
- readonly cause: unknown;
18
- readonly trace: unknown[];
19
- constructor(cause: unknown, trace: unknown[]);
20
- appendToTrace(ancestor: unknown): ResolutionError;
17
+ export declare class ResolutionError extends Error {
18
+ readonly cause: unknown;
19
+ readonly trace: unknown[];
20
+ constructor(cause: unknown, trace: unknown[]);
21
+ appendToTrace(ancestor: unknown): ResolutionError;
22
+ }
23
+ /**
24
+ * An error that happens during execution of TypeGPU functions.
25
+ * Contains a trace of all TypeGPU functions called along the way.
26
+ *
27
+ * @category Errors
28
+ */
29
+ export declare class ExecutionError extends Error {
30
+ readonly cause: unknown;
31
+ readonly trace: unknown[];
32
+ constructor(cause: unknown, trace: unknown[]);
33
+ appendToTrace(ancestor: unknown): ExecutionError;
21
34
  }
22
35
  /**
23
36
  * @category Errors
24
37
  */
25
- declare class MissingSlotValueError extends Error {
26
- readonly slot: TgpuSlot<unknown>;
27
- constructor(slot: TgpuSlot<unknown>);
38
+ export declare class MissingSlotValueError extends Error {
39
+ readonly slot: TgpuSlot<unknown>;
40
+ constructor(slot: TgpuSlot<unknown>);
28
41
  }
29
42
  /**
30
43
  * @category Errors
31
44
  */
32
- declare class NotUniformError extends Error {
33
- constructor(value: TgpuBuffer<BaseData>);
45
+ export declare class NotUniformError extends Error {
46
+ constructor(value: TgpuBuffer<BaseData>);
47
+ }
48
+ export declare class MissingBindGroupsError extends Error {
49
+ constructor(layouts: Iterable<TgpuBindGroupLayout>);
50
+ }
51
+ export declare class MissingVertexBuffersError extends Error {
52
+ constructor(layouts: Iterable<TgpuVertexLayout>);
53
+ }
54
+ export declare class IllegalVarAccessError extends Error {
55
+ constructor(msg: string);
56
+ }
57
+ export declare class IllegalBufferAccessError extends Error {
58
+ constructor(msg: string);
59
+ }
60
+ export declare class WgslTypeError extends Error {
61
+ constructor(msg: string);
34
62
  }
35
- declare class MissingBindGroupsError extends Error {
36
- constructor(layouts: Iterable<TgpuBindGroupLayout>);
63
+ export declare class SignatureNotSupportedError extends Error {
64
+ constructor(actual: BaseData[], candidates: BaseData[]);
37
65
  }
38
- declare class MissingVertexBuffersError extends Error {
39
- constructor(layouts: Iterable<TgpuVertexLayout>);
66
+ export declare class FiniteMathAssumptionError extends Error {
67
+ constructor(value: number, type: BaseData);
40
68
  }
41
- //#endregion
42
- export { MissingBindGroupsError, MissingSlotValueError, MissingVertexBuffersError, NotUniformError, ResolutionError };