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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typegpu",
3
- "version": "0.11.9",
3
+ "version": "0.12.1",
4
4
  "description": "A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.",
5
5
  "keywords": [
6
6
  "compute",
@@ -41,6 +41,10 @@
41
41
  "./common": {
42
42
  "types": "./common/index.d.ts",
43
43
  "default": "./common/index.js"
44
+ },
45
+ "./~internal": {
46
+ "types": "./internal.d.ts",
47
+ "default": "./internal.js"
44
48
  }
45
49
  },
46
50
  "dependencies": {
@@ -1,30 +1,170 @@
1
- import "./data/snippet.js";
2
- import "./tgsl/shellless.js";
3
- import { LogResources } from "./tgsl/consoleLog/types.js";
4
- import "./core/slot/slotTypes.js";
5
- import { TgpuBindGroup, TgpuBindGroupLayout } from "./tgpuBindGroupLayout.js";
6
- import "./tgsl/shaderGenerator.js";
7
- import "./core/root/rootTypes.js";
8
- import "./types.js";
9
- import "./data/wgslTypes.js";
10
- import "./data/dataTypes.js";
11
- import "./core/resolve/namespace.js";
12
-
13
- //#region src/resolutionCtx.d.ts
14
-
1
+ import type { Namespace } from './core/resolve/namespace.ts';
2
+ import type { Configurable, ExperimentalTgpuRoot } from './core/root/rootTypes.ts';
3
+ import { type Eventual, type SlotValuePair, type TgpuLazy, type TgpuSlot } from './core/slot/slotTypes.ts';
4
+ import { UnknownData } from './data/dataTypes.ts';
5
+ import { type ResolvedSnippet, type Snippet } from './data/snippet.ts';
6
+ import { type BaseData } from './data/wgslTypes.ts';
7
+ import { $internal } from './shared/symbols.ts';
8
+ import { type TgpuBindGroup, type TgpuBindGroupLayout, type TgpuLayoutEntry } from './tgpuBindGroupLayout.ts';
9
+ import type { LogResources, SupportedLogOp } from './tgsl/consoleLog/types.ts';
10
+ import type { ShaderGenerator } from './tgsl/shaderGenerator.ts';
11
+ import type { BlockScopeLayer, ExecMode, ExecState, ResolveFunctionOptions, FunctionArgumentAccess, FunctionScopeLayer, ItemLayer, ItemStateStack, ResolutionCtx, StackLayer, ShaderStage, Wgsl } from './types.ts';
12
+ import type { WgslEnableExtension } from './wgslExtensions.ts';
13
+ export type ResolutionCtxImplOptions = {
14
+ readonly enableExtensions?: WgslEnableExtension[] | undefined;
15
+ readonly shaderGenerator?: ShaderGenerator | undefined;
16
+ readonly config?: ((cfg: Configurable) => Configurable) | undefined;
17
+ readonly root?: ExperimentalTgpuRoot | undefined;
18
+ readonly namespace: Namespace;
19
+ readonly minify: boolean;
20
+ };
21
+ declare class ItemStateStackImpl implements ItemStateStack {
22
+ private _stack;
23
+ private _itemDepth;
24
+ get itemDepth(): number;
25
+ get topItem(): ItemLayer;
26
+ get topFunctionScope(): FunctionScopeLayer | undefined;
27
+ get topBlockScope(): BlockScopeLayer | undefined;
28
+ get blockDepth(): number;
29
+ pushItem(): void;
30
+ pushSlotBindings(pairs: SlotValuePair[]): void;
31
+ pushFunctionScope(functionType: 'normal' | ShaderStage, argAccess: Record<string, FunctionArgumentAccess>, returnType: BaseData | undefined, externalMap: Record<string, unknown>): FunctionScopeLayer;
32
+ pushBlockScope(): void;
33
+ pop<T extends StackLayer['type']>(type: T): Extract<StackLayer, {
34
+ type: T;
35
+ }>;
36
+ pop(): StackLayer | undefined;
37
+ readSlot<T>(slot: TgpuSlot<T>): T | undefined;
38
+ getSnippetById(id: string): Snippet | undefined;
39
+ /**
40
+ * Returns whether the given identifier is taken in any block scope up to the nearest function scope.
41
+ */
42
+ isIdentifierTakenLocally(id: string): boolean;
43
+ /**
44
+ * Returns whether the given identifier is taken in any block scope on the stack.
45
+ *
46
+ * This is useful when resolving a global identifier for the first time within a nested function.
47
+ */
48
+ isIdentifierTakenInCallStack(id: string): boolean;
49
+ defineBlockVariable(id: string, snippet: Snippet): void;
50
+ setBlockExternals(externals: Record<string, Snippet>): void;
51
+ clearBlockExternals(): void;
52
+ }
53
+ export declare class IndentController {
54
+ identLevel: number;
55
+ get pre(): string;
56
+ indent(): string;
57
+ dedent(): string;
58
+ withResetLevel<T>(callback: () => T): T;
59
+ }
60
+ interface FixedBindingConfig {
61
+ layoutEntry: TgpuLayoutEntry;
62
+ resource: object;
63
+ }
64
+ export declare class ResolutionCtxImpl implements ResolutionCtx {
65
+ #private;
66
+ private readonly _indentController;
67
+ private readonly _itemStateStack;
68
+ private readonly _declarations;
69
+ private _varyingLocations;
70
+ readonly gen: ShaderGenerator;
71
+ get varyingLocations(): Record<string, number> | undefined;
72
+ readonly [$internal]: {
73
+ itemStateStack: ItemStateStackImpl;
74
+ };
75
+ /**
76
+ * A map from registered bind group layouts to random strings put in
77
+ * place of their group index. The whole tree has to be traversed to
78
+ * collect every use of a typed bind group layout, since they can be
79
+ * explicitly imposed group indices, and they cannot collide.
80
+ */
81
+ readonly bindGroupLayoutsToPlaceholderMap: Map<TgpuBindGroupLayout<Record<string, TgpuLayoutEntry | null>>, string>;
82
+ private _nextFreeLayoutPlaceholderIdx;
83
+ readonly fixedBindings: FixedBindingConfig[];
84
+ readonly enableExtensions: WgslEnableExtension[] | undefined;
85
+ expectedType: BaseData | undefined;
86
+ constructor(opts: ResolutionCtxImplOptions);
87
+ isIdentifierBanned(name: string): boolean;
88
+ isIdentifierTaken(name: string, scope: 'global' | 'block'): boolean;
89
+ makeUniqueIdentifier(primer: string | undefined, scope: 'global' | 'block'): string;
90
+ reserveIdentifier(name: string, scope: 'global' | 'block'): void;
91
+ get pre(): string;
92
+ get topFunctionScope(): FunctionScopeLayer | undefined;
93
+ get topFunctionReturnType(): BaseData | undefined;
94
+ get shelllessRepo(): import("./tgsl/shellless.ts").ShelllessRepository;
95
+ get blockDepth(): number;
96
+ indent(): string;
97
+ dedent(): string;
98
+ getDedented(code: string): string;
99
+ withResetIndentLevel<T>(callback: () => T): T;
100
+ getById(id: string): Snippet | null;
101
+ defineVariable(id: string, snippet: Snippet): void;
102
+ reportReturnType(dataType: BaseData): void;
103
+ pushBlockScope(): void;
104
+ popBlockScope(): void;
105
+ setBlockExternals(externals: Record<string, Snippet>): void;
106
+ clearBlockExternals(): void;
107
+ generateLog(op: SupportedLogOp, args: Snippet[]): Snippet;
108
+ get logResources(): LogResources | undefined;
109
+ resolveFunction(options: ResolveFunctionOptions): {
110
+ code: string;
111
+ returnType: BaseData;
112
+ };
113
+ addDeclaration(declaration: string, name?: string): void;
114
+ get declarations(): readonly ResolvedDeclaration[];
115
+ allocateLayoutEntry(layout: TgpuBindGroupLayout): string;
116
+ allocateFixedEntry(layoutEntry: TgpuLayoutEntry, resource: object): {
117
+ group: string;
118
+ binding: number;
119
+ };
120
+ readSlot<T>(slot: TgpuSlot<T>): T;
121
+ withSlots<T>(pairs: SlotValuePair[], callback: () => T): T;
122
+ withVaryingLocations<T>(locations: Record<string, number>, callback: () => T): T;
123
+ withRenamed<T>(item: object, name: string | undefined, callback: () => T): T;
124
+ unwrap<T>(eventual: Eventual<T>): T;
125
+ _getOrCompute<T>(lazy: TgpuLazy<T>): T;
126
+ /**
127
+ * @param item The item whose resolution should be either retrieved from the cache (if there is a cache hit), or resolved.
128
+ */
129
+ _getOrInstantiate(item: object): ResolvedSnippet;
130
+ resolve(item: unknown, schema?: BaseData | UnknownData): ResolvedSnippet;
131
+ resolveSnippet(snippet: Snippet): ResolvedSnippet;
132
+ pushMode(mode: ExecState): void;
133
+ popMode(expected?: ExecMode): void;
134
+ get mode(): ExecState;
135
+ }
136
+ /**
137
+ * A single module-scope declaration emitted during resolution.
138
+ *
139
+ * @property name - The resolved identifier the declaration declares (a fn, struct, var, const or
140
+ * alias name), or `undefined` for declarations that don't declare a single identifier (e.g.
141
+ * `tgpu['~unstable'].declare`).
142
+ * @property code - The WGSL code of the declaration.
143
+ */
144
+ export interface ResolvedDeclaration {
145
+ name: string | undefined;
146
+ code: string;
147
+ }
15
148
  /**
16
149
  * The results of a WGSL resolution.
17
150
  *
18
151
  * @param code - The resolved code.
152
+ * @param declarations - The module-scope declarations emitted by TypeGPU
153
+ * during this resolution, in emission order. When resolving an array without a
154
+ * template, `code` equals `declarations.map((d) => d.code).join('\n\n')` (unless extensions are enabled or minification is enabled).
155
+ * When resolving a template, the template itself is not included in `declarations`.
156
+ * With a shared namespace, only declarations emitted by *this* resolution are
157
+ * included (memoized ones are not re-emitted).
19
158
  * @param usedBindGroupLayouts - List of used `tgpu.bindGroupLayout`s.
20
- * @param catchall - Automatically constructed bind group for buffer usages and buffer shorthands, preceded by its index.
159
+ * @param catchall - Automatically constructed bind group for buffer usages and buffer bindings, preceded by its index.
21
160
  * @param logResources - Buffers and information about used console.logs needed to decode the raw data.
22
161
  */
23
- interface ResolutionResult {
24
- code: string;
25
- usedBindGroupLayouts: TgpuBindGroupLayout[];
26
- catchall: [number, TgpuBindGroup] | undefined;
27
- logResources: LogResources | undefined;
162
+ export interface ResolutionResult {
163
+ code: string;
164
+ declarations: ResolvedDeclaration[];
165
+ usedBindGroupLayouts: TgpuBindGroupLayout[];
166
+ catchall: [number, TgpuBindGroup] | undefined;
167
+ logResources: LogResources | undefined;
28
168
  }
29
- //#endregion
30
- export { ResolutionResult };
169
+ export declare function resolve(item: Wgsl, options: ResolutionCtxImplOptions): ResolutionResult;
170
+ export {};