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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typegpu",
3
- "version": "0.11.8",
3
+ "version": "0.12.0",
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",
@@ -22,7 +22,6 @@
22
22
  "url": "git+https://github.com/software-mansion/TypeGPU.git",
23
23
  "directory": "packages/typegpu"
24
24
  },
25
- "bin": "./bin.mjs",
26
25
  "type": "module",
27
26
  "sideEffects": false,
28
27
  "exports": {
@@ -42,6 +41,10 @@
42
41
  "./common": {
43
42
  "types": "./common/index.d.ts",
44
43
  "default": "./common/index.js"
44
+ },
45
+ "./~internal": {
46
+ "types": "./internal.d.ts",
47
+ "default": "./internal.js"
45
48
  }
46
49
  },
47
50
  "dependencies": {
@@ -55,5 +58,8 @@
55
58
  "main": "./index.js",
56
59
  "types": "./index.d.ts",
57
60
  "private": false,
58
- "scripts": {}
61
+ "scripts": {},
62
+ "bin": {
63
+ "typegpu": "./bin.mjs"
64
+ }
59
65
  }
@@ -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 {};