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
@@ -1,284 +1,269 @@
1
- import { TgpuNamable } from "../../shared/meta.js";
2
- import { $internal, $resolve } from "../../shared/symbols.js";
3
- import { AnyBuiltin, OmitBuiltins } from "../../builtin.js";
4
- import { TgpuQuerySet } from "../querySet/querySet.js";
5
- import { ResolvedSnippet } from "../../data/snippet.js";
6
- import { LogResources } from "../../tgsl/consoleLog/types.js";
7
- import { TgpuSlot } from "../slot/slotTypes.js";
8
- import { PrimitiveOffsetInfo } from "../../data/offsetUtils.js";
9
- import { Timeable, TimestampWritesPriors } from "./timeable.js";
10
- import { AnyVertexAttribs } from "../../shared/vertexFormat.js";
11
- import { AnyAutoCustoms, AutoFragmentIn, AutoFragmentOut, AutoVertexIn, AutoVertexOut } from "../function/autoIO.js";
12
- import { TgpuFragmentFn } from "../function/tgpuFragmentFn.js";
13
- import { TgpuVertexFn } from "../function/tgpuVertexFn.js";
14
- import { RenderFlag } from "../texture/usageExtension.js";
15
- import { TgpuVertexLayout } from "../vertexLayout/vertexLayout.js";
16
- import { TgpuBindGroup, TgpuBindGroupLayout, TgpuLayoutEntry } from "../../tgpuBindGroupLayout.js";
17
- import { ExperimentalTgpuRoot } from "../root/rootTypes.js";
18
- import { IndexFlag, IndirectFlag, TgpuBuffer, VertexFlag } from "../buffer/buffer.js";
19
- import { ResolutionCtx, SelfResolvable } from "../../types.js";
20
- import { AnyVecInstance, BaseData, U16, U32, Void, WgslArray, v4f } from "../../data/wgslTypes.js";
21
- import { WgslTexture, WgslTextureDepth2d, WgslTextureDepthMultisampled2d } from "../../data/texture.js";
22
- import { TextureInternals, TgpuTextureRenderView, TgpuTextureView } from "../texture/texture.js";
23
- import { Disarray, UndecorateRecord } from "../../data/dataTypes.js";
24
-
25
- //#region src/core/pipeline/renderPipeline.d.ts
26
- interface RenderPipelineInternals {
27
- readonly core: RenderPipelineCore;
28
- readonly priors: TgpuRenderPipelinePriors & TimestampWritesPriors;
29
- readonly root: ExperimentalTgpuRoot;
1
+ import type { AnyBuiltin, OmitBuiltins } from '../../builtin.ts';
2
+ import type { IndexFlag, IndirectFlag, TgpuBuffer, VertexFlag } from '../buffer/buffer.ts';
3
+ import type { TgpuQuerySet } from '../querySet/querySet.ts';
4
+ import { type Disarray, type UndecorateRecord } from '../../data/dataTypes.ts';
5
+ import { type ResolvedSnippet } from '../../data/snippet.ts';
6
+ import { type AnyVecInstance, type BaseData, type U16, type U32, type v4f, Void, type WgslArray, type WgslStruct } from '../../data/wgslTypes.ts';
7
+ import type { TgpuNamable } from '../../shared/meta.ts';
8
+ import type { TgpuDeviceOwningSoul } from '../../shared/soul.ts';
9
+ import { $getNameForward, $internal, $resolve, $soul } from '../../shared/symbols.ts';
10
+ import type { AnyVertexAttribs } from '../../shared/vertexFormat.ts';
11
+ import { type TgpuBindGroup, type TgpuBindGroupLayout, type TgpuLayoutEntry } from '../../tgpuBindGroupLayout.ts';
12
+ import type { LogResources } from '../../tgsl/consoleLog/types.ts';
13
+ import type { ResolutionCtx, SelfResolvable } from '../../types.ts';
14
+ import { type AnyAutoCustoms, type AutoFragmentIn, type AutoFragmentOut, type AutoVertexIn, type AutoVertexOut } from '../function/autoIO.ts';
15
+ import type { TgpuFragmentFn } from '../function/tgpuFragmentFn.ts';
16
+ import type { TgpuVertexFn } from '../function/tgpuVertexFn.ts';
17
+ import type { ExperimentalTgpuRoot } from '../root/rootTypes.ts';
18
+ import type { TgpuSlot } from '../slot/slotTypes.ts';
19
+ import { type TgpuVertexLayout } from '../vertexLayout/vertexLayout.ts';
20
+ import { type TgpuCommandEncoder } from '../commandEncoder/commandEncoder.ts';
21
+ import type { ColorAttachment, DepthStencilAttachment } from '../commandEncoder/attachments.ts';
22
+ import { type TgpuRenderCommands } from '../commandEncoder/renderPass.ts';
23
+ import { type Timeable, type TimestampWritesPriors } from './timeable.ts';
24
+ import { type PrimitiveOffsetInfo } from '../../data/offsetUtils.ts';
25
+ import type { RestoreContext } from '../../serial/types.ts';
26
+ export interface RenderPipelineInternals {
27
+ readonly core: RenderPipelineCore;
28
+ readonly priors: TgpuRenderPipelinePriors & TimestampWritesPriors;
29
+ readonly root: ExperimentalTgpuRoot;
30
+ readonly materialize: () => GPURenderPipeline;
30
31
  }
31
- type TgpuPrimitiveState = GPUPrimitiveState | (Omit<GPUPrimitiveState, 'stripIndexFormat'> & {
32
- stripIndexFormat?: U32 | U16;
32
+ export interface TgpuRenderPipelineSoul extends TgpuDeviceOwningSoul<'render-pipeline', GPURenderPipeline> {
33
+ usedBindGroupLayouts?: TgpuBindGroupLayout[] | undefined;
34
+ usedVertexLayouts?: TgpuVertexLayout[] | undefined;
35
+ fragmentOut?: BaseData | undefined;
36
+ bindGroups?: [TgpuBindGroupLayout, TgpuBindGroup | GPUBindGroup][] | undefined;
37
+ vertexBuffers?: [TgpuVertexLayout, (TgpuBuffer<BaseData> & VertexFlag) | GPUBuffer][] | undefined;
38
+ indexBuffer?: {
39
+ buffer: (TgpuBuffer<BaseData> & IndexFlag) | GPUBuffer;
40
+ indexFormat: GPUIndexFormat;
41
+ offsetBytes?: number | undefined;
42
+ sizeBytes?: number | undefined;
43
+ } | undefined;
44
+ stencilReference?: GPUStencilValue | undefined;
45
+ timestampWrites?: TimestampWritesPriors['timestampWrites'];
46
+ performanceCallback?: TimestampWritesPriors['performanceCallback'];
47
+ nonTransferablePriors?: string[] | undefined;
48
+ }
49
+ export type TgpuPrimitiveState = GPUPrimitiveState | (Omit<GPUPrimitiveState, 'stripIndexFormat'> & {
50
+ stripIndexFormat?: U32 | U16;
33
51
  }) | undefined;
34
- type TgpuColorTargetState = (Omit<GPUColorTargetState, 'format'> & {
35
- /**
36
- * The {@link GPUTextureFormat} of this color target. The pipeline will only be compatible with
37
- * {@link GPURenderPassEncoder}s which use a {@link GPUTextureView} of this format in the
38
- * corresponding color attachment.
39
- *
40
- * @default navigator.gpu.getPreferredCanvasFormat()
41
- */
42
- format?: GPUTextureFormat | undefined;
52
+ export type TgpuColorTargetState = (Omit<GPUColorTargetState, 'format'> & {
53
+ /**
54
+ * The {@link GPUTextureFormat} of this color target. The pipeline will only be compatible with
55
+ * {@link GPURenderPassEncoder}s which use a {@link GPUTextureView} of this format in the
56
+ * corresponding color attachment.
57
+ *
58
+ * @default navigator.gpu.getPreferredCanvasFormat()
59
+ */
60
+ format?: GPUTextureFormat | undefined;
43
61
  }) | undefined;
44
- interface HasIndexBuffer {
45
- readonly hasIndexBuffer: true;
46
- drawIndexed(indexCount: number, instanceCount?: number, firstIndex?: number, baseVertex?: number, firstInstance?: number): void;
62
+ export interface HasIndexBuffer {
63
+ readonly hasIndexBuffer: true;
64
+ drawIndexed(indexCount: number, instanceCount?: number, firstIndex?: number, baseVertex?: number, firstInstance?: number): void;
47
65
  }
48
- interface TgpuRenderPipeline<in Targets = never> extends TgpuNamable, SelfResolvable, Timeable {
49
- readonly [$internal]: RenderPipelineInternals;
50
- readonly resourceType: 'render-pipeline';
51
- readonly hasIndexBuffer: boolean;
52
- with<TData extends WgslArray | Disarray>(vertexLayout: TgpuVertexLayout<TData>, buffer: (TgpuBuffer<TData> & VertexFlag) | GPUBuffer): this;
53
- /**
54
- * @deprecated This overload is outdated.
55
- * Call `pipeline.with(bindGroup)` instead.
56
- */
57
- with<Entries extends Record<string, TgpuLayoutEntry | null>>(bindGroupLayout: TgpuBindGroupLayout<Entries>, bindGroup: TgpuBindGroup<Entries>): this;
58
- with(bindGroupLayout: TgpuBindGroupLayout, bindGroup: GPUBindGroup): this;
59
- with(bindGroup: TgpuBindGroup): this;
60
- with(encoder: GPUCommandEncoder): this;
61
- with(pass: GPURenderPassEncoder): this;
62
- with(bundleEncoder: GPURenderBundleEncoder): this;
63
- /**
64
- * Attaches texture views to the pipeline's targets (outputs).
65
- *
66
- * @example
67
- * // Draw 3 vertices onto the context's canvas
68
- * pipeline
69
- * .withColorAttachment({ view: context })
70
- * .draw(3)
71
- *
72
- * @param attachment The object should match the shape
73
- * returned by the fragment shader, with values matching the {@link ColorAttachment} type.
74
- */
75
- withColorAttachment(attachment: FragmentOutToColorAttachment<Targets>): this;
76
- withDepthStencilAttachment(attachment: DepthStencilAttachment): this;
77
- withStencilReference(reference: GPUStencilValue): this;
78
- withIndexBuffer(buffer: TgpuBuffer<BaseData> & IndexFlag, offsetElements?: number, sizeElements?: number): this & HasIndexBuffer;
79
- withIndexBuffer(buffer: GPUBuffer, indexFormat: GPUIndexFormat, offsetBytes?: number, sizeBytes?: number): this & HasIndexBuffer;
80
- draw(vertexCount: number, instanceCount?: number, firstVertex?: number, firstInstance?: number): void;
81
- /**
82
- * Draws primitives using parameters read from a buffer.
83
- * The buffer must contain 4 consecutive u32 values (vertexCount, instanceCount, firstVertex, firstInstance).
84
- * To get the correct offset within complex data structures, use `d.memoryLayoutOf(...)`.
85
- *
86
- * @param indirectBuffer - Buffer marked with 'indirect' usage containing draw parameters or raw GPUBuffer
87
- * @param indirectOffset - PrimitiveOffsetInfo pointing to the first draw parameter. If not provided, starts at offset 0. To obtain safe offsets, use `d.memoryLayoutOf(...)`.
88
- */
89
- drawIndirect(indirectBuffer: (TgpuBuffer<BaseData> & IndirectFlag) | GPUBuffer, indirectOffset?: PrimitiveOffsetInfo | number): void;
90
- /**
91
- * Draws indexed primitives using parameters read from a buffer.
92
- * The buffer must contain 5 consecutive 32-bit integer values (indexCount u32, instanceCount u32, firstIndex u32, baseVertex i32, firstInstance u32).
93
- * To get the correct offset within complex data structures, use `d.memoryLayoutOf(...)`.
94
- *
95
- * @param indirectBuffer - Buffer marked with 'indirect' usage containing draw parameters or raw GPUBuffer
96
- * @param indirectOffset - PrimitiveOffsetInfo pointing to the first draw parameter. If not provided, starts at offset 0. To obtain safe offsets, use `d.memoryLayoutOf(...)`.
97
- */
98
- drawIndexedIndirect(indirectBuffer: (TgpuBuffer<BaseData> & IndirectFlag) | GPUBuffer, indirectOffset?: PrimitiveOffsetInfo | number): void;
99
- }
100
- declare namespace TgpuRenderPipeline {
101
- interface DescriptorBase {
66
+ export interface TgpuRenderPipeline<in Targets = never> extends TgpuNamable, SelfResolvable, Timeable {
67
+ readonly [$internal]: RenderPipelineInternals;
68
+ readonly [$soul]: TgpuRenderPipelineSoul;
69
+ readonly resourceType: 'render-pipeline';
70
+ readonly hasIndexBuffer: boolean;
71
+ with<TData extends WgslArray | Disarray>(vertexLayout: TgpuVertexLayout<TData>, buffer: (TgpuBuffer<TData> & VertexFlag) | GPUBuffer): this;
102
72
  /**
103
- * Describes the primitive-related properties of the pipeline.
73
+ * @deprecated This overload is outdated.
74
+ * Call `pipeline.with(bindGroup)` instead.
104
75
  */
105
- primitive?: TgpuPrimitiveState | undefined;
76
+ with<Entries extends Record<string, TgpuLayoutEntry | null>>(bindGroupLayout: TgpuBindGroupLayout<Entries>, bindGroup: TgpuBindGroup<Entries>): this;
77
+ with(bindGroupLayout: TgpuBindGroupLayout, bindGroup: GPUBindGroup): this;
78
+ with(bindGroup: TgpuBindGroup): this;
106
79
  /**
107
- * Describes the optional depth-stencil properties, including the testing, operations, and bias.
80
+ * Directs subsequent draw calls into the given render pass or render bundle
81
+ * encoder, letting multiple pipelines share one pass (and one submission).
108
82
  */
109
- depthStencil?: GPUDepthStencilState | undefined;
83
+ with(pass: TgpuRenderCommands): this;
110
84
  /**
111
- * Describes the multi-sampling properties of the pipeline.
85
+ * Directs subsequent draw calls into the given command encoder. Each draw
86
+ * records its own render pass; the caller owns the submission.
112
87
  */
113
- multisample?: GPUMultisampleState | undefined;
114
- }
115
- interface Descriptor extends DescriptorBase {
116
- vertex: TgpuVertexFn | ((input: AutoVertexIn<Record<string, never>>) => AutoVertexOut<AnyAutoCustoms>);
117
- fragment?: TgpuFragmentFn | ((input: AutoFragmentIn<Record<string, never>>) => AutoFragmentOut<undefined | v4f | AnyAutoCustoms>) | undefined;
118
- attribs?: AnyVertexAttribs | undefined;
119
- targets?: AnyFragmentTargets | undefined;
120
- }
121
- }
122
- type FragmentOutToTargets<T> = T extends undefined | AnyBuiltin | Void | Record<string, never> ? Record<string, never> | undefined : T extends {
123
- readonly [$internal]: unknown;
124
- } | number | boolean | AnyVecInstance ? TgpuColorTargetState : T extends Record<string, unknown> ? { [Key in keyof OmitBuiltins<T>]?: TgpuColorTargetState } | undefined : TgpuColorTargetState | Record<string, TgpuColorTargetState>;
125
- type FragmentOutToColorAttachment<T> = T extends {
126
- readonly [$internal]: unknown;
127
- } ? ColorAttachment : T extends Record<string, unknown> ? { [Key in keyof UndecorateRecord<T>]: ColorAttachment } : Record<string, never>;
128
- type AnyFragmentTargets = TgpuColorTargetState | Record<string, TgpuColorTargetState>;
129
- interface ColorTextureConstraint {
130
- readonly [$internal]: TextureInternals;
131
- readonly resourceType: 'texture';
132
- readonly props: {
133
- format: GPUTextureFormat;
134
- };
135
- }
136
- interface ColorAttachment {
137
- /**
138
- * A {@link GPUTextureView} describing the texture subresource that will be output to for this
139
- * color attachment.
140
- */
141
- view: (ColorTextureConstraint & RenderFlag) | GPUTextureView | TgpuTextureView<WgslTexture> | TgpuTextureRenderView | GPUCanvasContext;
142
- /**
143
- * Indicates the depth slice index of {@link GPUTextureViewDimension#"3d"} {@link GPURenderPassColorAttachment#view}
144
- * that will be output to for this color attachment.
145
- */
146
- depthSlice?: GPUIntegerCoordinate;
147
- /**
148
- * A {@link GPUTextureView} describing the texture subresource that will receive the resolved
149
- * output for this color attachment if {@link GPURenderPassColorAttachment#view} is
150
- * multisampled.
151
- */
152
- resolveTarget?: (ColorTextureConstraint & RenderFlag) | GPUTextureView | TgpuTextureView<WgslTexture> | TgpuTextureRenderView | GPUCanvasContext;
153
- /**
154
- * Indicates the value to clear {@link GPURenderPassColorAttachment#view} to prior to executing the
155
- * render pass. If not map/exist|provided, defaults to `{r: 0, g: 0, b: 0, a: 0}`. Ignored
156
- * if {@link GPURenderPassColorAttachment#loadOp} is not {@link GPULoadOp#"clear"}.
157
- * The components of {@link GPURenderPassColorAttachment#clearValue} are all double values.
158
- * They are converted to a texel value of texture format matching the render attachment.
159
- * If conversion fails, a validation error is generated.
160
- */
161
- clearValue?: GPUColor;
162
- /**
163
- * Indicates the load operation to perform on {@link GPURenderPassColorAttachment#view} prior to
164
- * executing the render pass.
165
- * Note: It is recommended to prefer clearing; see {@link GPULoadOp#"clear"} for details.
166
- *
167
- * @default 'clear'
168
- */
169
- loadOp?: GPULoadOp | undefined;
170
- /**
171
- * The store operation to perform on {@link GPURenderPassColorAttachment#view}
172
- * after executing the render pass.
173
- *
174
- * @default 'store'
175
- */
176
- storeOp?: GPUStoreOp | undefined;
177
- }
178
- type DepthStencilFormat = 'stencil8' | 'depth16unorm' | 'depth24plus' | 'depth24plus-stencil8' | 'depth32float' | 'depth32float-stencil8';
179
- interface DepthStencilTextureConstraint {
180
- readonly [$internal]: TextureInternals;
181
- readonly resourceType: 'texture';
182
- readonly props: {
183
- format: DepthStencilFormat;
184
- };
88
+ with(encoder: TgpuCommandEncoder): this;
89
+ with(encoder: GPUCommandEncoder): this;
90
+ with(pass: GPURenderPassEncoder): this;
91
+ with(bundleEncoder: GPURenderBundleEncoder): this;
92
+ /**
93
+ * Attaches texture views to the pipeline's targets (outputs).
94
+ *
95
+ * @example
96
+ * // Draw 3 vertices onto the context's canvas
97
+ * pipeline
98
+ * .withColorAttachment({ view: context })
99
+ * .draw(3)
100
+ *
101
+ * @param attachment The object should match the shape
102
+ * returned by the fragment shader, with values matching the {@link ColorAttachment} type.
103
+ */
104
+ withColorAttachment(attachment: FragmentOutToColorAttachment<Targets>): this;
105
+ withDepthStencilAttachment(attachment: DepthStencilAttachment): this;
106
+ withStencilReference(reference: GPUStencilValue): this;
107
+ withIndexBuffer(buffer: TgpuBuffer<BaseData> & IndexFlag, offsetElements?: number, sizeElements?: number): this & HasIndexBuffer;
108
+ withIndexBuffer(buffer: GPUBuffer, indexFormat: GPUIndexFormat, offsetBytes?: number, sizeBytes?: number): this & HasIndexBuffer;
109
+ draw(vertexCount: number, instanceCount?: number, firstVertex?: number, firstInstance?: number): void;
110
+ /**
111
+ * Immediately resolves the pipeline, then awaits `device.createRenderPipelineAsync()`.
112
+ * NOTE: it is not necessary to initialize pipelines manually.
113
+ */
114
+ initAsync(): Promise<void>;
115
+ /**
116
+ * Immediately resolves the pipeline and creates WebGPU resources.
117
+ * NOTE: it is not necessary to initialize pipelines manually.
118
+ */
119
+ initSync(): void;
120
+ /**
121
+ * Draws primitives using parameters read from a buffer.
122
+ * The buffer must contain 4 consecutive u32 values (vertexCount, instanceCount, firstVertex, firstInstance).
123
+ * To get the correct offset within complex data structures, use `d.memoryLayoutOf(...)`.
124
+ *
125
+ * @param indirectBuffer - Buffer marked with 'indirect' usage containing draw parameters or raw GPUBuffer
126
+ * @param indirectOffset - PrimitiveOffsetInfo pointing to the first draw parameter. If not provided, starts at offset 0. To obtain safe offsets, use `d.memoryLayoutOf(...)`.
127
+ */
128
+ drawIndirect(indirectBuffer: (TgpuBuffer<BaseData> & IndirectFlag) | GPUBuffer, indirectOffset?: PrimitiveOffsetInfo | number): void;
129
+ /**
130
+ * Draws indexed primitives using parameters read from a buffer.
131
+ * The buffer must contain 5 consecutive 32-bit integer values (indexCount u32, instanceCount u32, firstIndex u32, baseVertex i32, firstInstance u32).
132
+ * To get the correct offset within complex data structures, use `d.memoryLayoutOf(...)`.
133
+ *
134
+ * @param indirectBuffer - Buffer marked with 'indirect' usage containing draw parameters or raw GPUBuffer
135
+ * @param indirectOffset - PrimitiveOffsetInfo pointing to the first draw parameter. If not provided, starts at offset 0. To obtain safe offsets, use `d.memoryLayoutOf(...)`.
136
+ */
137
+ drawIndexedIndirect(indirectBuffer: (TgpuBuffer<BaseData> & IndirectFlag) | GPUBuffer, indirectOffset?: PrimitiveOffsetInfo | number): void;
185
138
  }
186
- interface DepthStencilAttachment {
187
- /**
188
- * A {@link GPUTextureView} | ({@link TgpuTexture} & {@link RenderFlag}) describing the texture subresource that will be output to
189
- * and read from for this depth/stencil attachment.
190
- */
191
- view: (DepthStencilTextureConstraint & RenderFlag) | TgpuTextureView<WgslTextureDepth2d | WgslTextureDepthMultisampled2d> | TgpuTextureRenderView | GPUTextureView;
192
- /**
193
- * Indicates the value to clear {@link GPURenderPassDepthStencilAttachment#view}'s depth component
194
- * to prior to executing the render pass. Ignored if {@link GPURenderPassDepthStencilAttachment#depthLoadOp}
195
- * is not {@link GPULoadOp#"clear"}. Must be between 0.0 and 1.0, inclusive (unless unrestricted depth is enabled).
196
- */
197
- depthClearValue?: number;
198
- /**
199
- * Indicates the load operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
200
- * depth component prior to executing the render pass.
201
- * Note: It is recommended to prefer clearing; see {@link GPULoadOp#"clear"} for details.
202
- */
203
- depthLoadOp?: GPULoadOp;
204
- /**
205
- * The store operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
206
- * depth component after executing the render pass.
207
- */
208
- depthStoreOp?: GPUStoreOp;
209
- /**
210
- * Indicates that the depth component of {@link GPURenderPassDepthStencilAttachment#view}
211
- * is read only.
212
- */
213
- depthReadOnly?: boolean;
214
- /**
215
- * Indicates the value to clear {@link GPURenderPassDepthStencilAttachment#view}'s stencil component
216
- * to prior to executing the render pass. Ignored if {@link GPURenderPassDepthStencilAttachment#stencilLoadOp}
217
- * is not {@link GPULoadOp#"clear"}.
218
- * The value will be converted to the type of the stencil aspect of `view` by taking the same
219
- * number of LSBs as the number of bits in the stencil aspect of one texel block|texel of `view`.
220
- */
221
- stencilClearValue?: GPUStencilValue;
222
- /**
223
- * Indicates the load operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
224
- * stencil component prior to executing the render pass.
225
- * Note: It is recommended to prefer clearing; see {@link GPULoadOp#"clear"} for details.
226
- */
227
- stencilLoadOp?: GPULoadOp;
228
- /**
229
- * The store operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
230
- * stencil component after executing the render pass.
231
- */
232
- stencilStoreOp?: GPUStoreOp;
233
- /**
234
- * Indicates that the stencil component of {@link GPURenderPassDepthStencilAttachment#view}
235
- * is read only.
236
- */
237
- stencilReadOnly?: boolean;
139
+ export declare namespace TgpuRenderPipeline {
140
+ interface DescriptorBase {
141
+ /**
142
+ * Describes the primitive-related properties of the pipeline.
143
+ */
144
+ primitive?: TgpuPrimitiveState | undefined;
145
+ /**
146
+ * Describes the optional depth-stencil properties, including the testing, operations, and bias.
147
+ */
148
+ depthStencil?: GPUDepthStencilState | undefined;
149
+ /**
150
+ * Describes the multi-sampling properties of the pipeline.
151
+ */
152
+ multisample?: GPUMultisampleState | undefined;
153
+ }
154
+ interface Descriptor extends DescriptorBase {
155
+ vertex: TgpuVertexFn | ((input: AutoVertexIn<Record<string, never>>) => AutoVertexOut<AnyAutoCustoms>);
156
+ fragment?: TgpuFragmentFn | ((input: AutoFragmentIn<Record<string, never>>) => AutoFragmentOut<undefined | v4f | AnyAutoCustoms>) | undefined;
157
+ attribs?: AnyVertexAttribs | undefined;
158
+ targets?: AnyFragmentTargets | undefined;
159
+ }
238
160
  }
239
- type AnyFragmentColorAttachment = ColorAttachment | Record<string, ColorAttachment>;
240
- type RenderPipelineCoreOptions = {
241
- root: ExperimentalTgpuRoot;
242
- slotBindings: [TgpuSlot<unknown>, unknown][];
243
- descriptor: TgpuRenderPipeline.Descriptor;
161
+ export type FragmentOutToTargets<T> = T extends undefined | AnyBuiltin | Void | Record<string, never> ? Record<string, never> | undefined : T extends {
162
+ readonly [$internal]: unknown;
163
+ } | number | boolean | AnyVecInstance ? TgpuColorTargetState : T extends Record<string, unknown> ? {
164
+ [Key in keyof OmitBuiltins<T>]?: TgpuColorTargetState;
165
+ } | undefined : TgpuColorTargetState | Record<string, TgpuColorTargetState>;
166
+ export type FragmentOutToColorAttachment<T> = T extends {
167
+ readonly [$internal]: unknown;
168
+ } ? ColorAttachment : T extends Record<string, unknown> ? {
169
+ [Key in keyof UndecorateRecord<T>]: ColorAttachment;
170
+ } : Record<string, never>;
171
+ export type AnyFragmentTargets = TgpuColorTargetState | Record<string, TgpuColorTargetState>;
172
+ export type AnyFragmentColorAttachment = ColorAttachment | Record<string, ColorAttachment>;
173
+ export type RenderPipelineCoreOptions = {
174
+ root: ExperimentalTgpuRoot;
175
+ slotBindings: [TgpuSlot<unknown>, unknown][];
176
+ /** Undefined for precompiled pipelines, which are never resolved again */
177
+ descriptor: TgpuRenderPipeline.Descriptor | undefined;
244
178
  };
179
+ export declare function INTERNAL_createRenderPipeline(options: RenderPipelineCoreOptions): TgpuRenderPipelineImpl;
180
+ export declare function INTERNAL_restoreRenderPipeline(soul: TgpuRenderPipelineSoul, ctx: RestoreContext): TgpuRenderPipeline;
245
181
  type TgpuRenderPipelinePriors = {
246
- readonly vertexLayoutMap?: Map<TgpuVertexLayout, (TgpuBuffer<BaseData> & VertexFlag) | GPUBuffer> | undefined;
247
- readonly bindGroupLayoutMap?: Map<TgpuBindGroupLayout, TgpuBindGroup | GPUBindGroup> | undefined;
248
- readonly colorAttachment?: AnyFragmentColorAttachment | undefined;
249
- readonly depthStencilAttachment?: DepthStencilAttachment | undefined;
250
- readonly stencilReference?: GPUStencilValue | undefined;
251
- readonly indexBuffer?: {
252
- buffer: (TgpuBuffer<BaseData> & IndexFlag) | GPUBuffer;
253
- indexFormat: GPUIndexFormat;
254
- offsetBytes?: number | undefined;
255
- sizeBytes?: number | undefined;
256
- } | undefined;
257
- readonly externalEncoder?: GPUCommandEncoder | undefined;
258
- readonly externalRenderEncoder?: GPURenderPassEncoder | GPURenderBundleEncoder | undefined;
182
+ readonly vertexLayoutMap?: Map<TgpuVertexLayout, (TgpuBuffer<BaseData> & VertexFlag) | GPUBuffer> | undefined;
183
+ readonly bindGroupLayoutMap?: Map<TgpuBindGroupLayout, TgpuBindGroup | GPUBindGroup> | undefined;
184
+ readonly colorAttachment?: AnyFragmentColorAttachment | undefined;
185
+ readonly depthStencilAttachment?: DepthStencilAttachment | undefined;
186
+ readonly stencilReference?: GPUStencilValue | undefined;
187
+ readonly indexBuffer?: {
188
+ buffer: (TgpuBuffer<BaseData> & IndexFlag) | GPUBuffer;
189
+ indexFormat: GPUIndexFormat;
190
+ offsetBytes?: number | undefined;
191
+ sizeBytes?: number | undefined;
192
+ } | undefined;
193
+ /** A pass the pipeline draws into, but does not own */
194
+ readonly pass?: TgpuRenderCommands | undefined;
195
+ /** An encoder the pipeline records its own passes into, but does not submit */
196
+ readonly encoder?: TgpuCommandEncoder | undefined;
259
197
  } & TimestampWritesPriors;
260
198
  type Memo = {
261
- pipeline: GPURenderPipeline;
262
- usedBindGroupLayouts: TgpuBindGroupLayout[];
263
- catchall: [number, TgpuBindGroup] | undefined;
264
- logResources: LogResources | undefined;
265
- usedVertexLayouts: TgpuVertexLayout[];
266
- fragmentOut: BaseData;
199
+ pipeline: GPURenderPipeline;
200
+ usedBindGroupLayouts: TgpuBindGroupLayout[];
201
+ catchall: [number, TgpuBindGroup] | undefined;
202
+ logResources: LogResources | undefined;
203
+ usedVertexLayouts: TgpuVertexLayout[];
204
+ fragmentOut: BaseData | undefined;
267
205
  };
206
+ declare class TgpuRenderPipelineImpl implements TgpuRenderPipeline {
207
+ #private;
208
+ readonly [$internal]: RenderPipelineInternals;
209
+ readonly [$soul]: TgpuRenderPipelineSoul;
210
+ readonly resourceType = "render-pipeline";
211
+ [$getNameForward]: RenderPipelineCore;
212
+ constructor(core: RenderPipelineCore, priors: TgpuRenderPipelinePriors);
213
+ [$resolve](ctx: ResolutionCtx): ResolvedSnippet;
214
+ toString(): string;
215
+ $name(label: string): this;
216
+ with<TData extends WgslArray>(vertexLayout: TgpuVertexLayout<TData>, buffer: TgpuBuffer<TData> & VertexFlag): this;
217
+ with(bindGroupLayout: TgpuBindGroupLayout, bindGroup: TgpuBindGroup): this;
218
+ with(bindGroupLayout: TgpuBindGroupLayout, bindGroup: GPUBindGroup): this;
219
+ with(bindGroup: TgpuBindGroup): this;
220
+ with<TData extends WgslArray | Disarray>(vertexLayout: TgpuVertexLayout<TData>, buffer: GPUBuffer): this;
221
+ with(pass: TgpuRenderCommands): this;
222
+ with(encoder: TgpuCommandEncoder): this;
223
+ with(encoder: GPUCommandEncoder): this;
224
+ with(pass: GPURenderPassEncoder): this;
225
+ with(bundleEncoder: GPURenderBundleEncoder): this;
226
+ withPerformanceCallback(callback: (start: bigint, end: bigint) => void | Promise<void>): this;
227
+ withTimestampWrites(options: {
228
+ querySet: TgpuQuerySet<'timestamp'> | GPUQuerySet;
229
+ beginningOfPassWriteIndex?: number;
230
+ endOfPassWriteIndex?: number;
231
+ }): this;
232
+ withColorAttachment(attachment: AnyFragmentColorAttachment): this;
233
+ withDepthStencilAttachment(attachment: DepthStencilAttachment): this;
234
+ withStencilReference(reference: GPUStencilValue): this;
235
+ withIndexBuffer(buffer: TgpuBuffer<BaseData> & IndexFlag, offsetElements?: number, sizeElements?: number): this & HasIndexBuffer;
236
+ withIndexBuffer(buffer: GPUBuffer, indexFormat: GPUIndexFormat, offsetBytes?: number, sizeBytes?: number): this & HasIndexBuffer;
237
+ initAsync(): Promise<void>;
238
+ initSync(): void;
239
+ get hasIndexBuffer(): boolean;
240
+ draw(vertexCount: number, instanceCount?: number, firstVertex?: number, firstInstance?: number): void;
241
+ drawIndexed(indexCount: number, instanceCount?: number, firstIndex?: number, baseVertex?: number, firstInstance?: number): void;
242
+ drawIndirect(indirectBuffer: (TgpuBuffer<BaseData> & IndirectFlag) | GPUBuffer, indirectOffset?: PrimitiveOffsetInfo | number): void;
243
+ drawIndexedIndirect(indirectBuffer: (TgpuBuffer<BaseData> & IndirectFlag) | GPUBuffer, indirectOffset?: PrimitiveOffsetInfo | number): void;
244
+ }
268
245
  declare class RenderPipelineCore implements SelfResolvable {
269
- #private;
270
- readonly [$internal] = true;
271
- readonly options: RenderPipelineCoreOptions;
272
- private _memo;
273
- constructor(options: RenderPipelineCoreOptions);
274
- [$resolve](ctx: ResolutionCtx): ResolvedSnippet;
275
- toString(): string;
276
- get performanceCallbackQuerySet(): TgpuQuerySet<"timestamp"> | undefined;
277
- unwrap(): Memo;
246
+ #private;
247
+ readonly [$internal] = true;
248
+ readonly options: RenderPipelineCoreOptions;
249
+ constructor(options: RenderPipelineCoreOptions);
250
+ static precompiled(root: ExperimentalTgpuRoot, memo: Memo): RenderPipelineCore;
251
+ [$resolve](ctx: ResolutionCtx): ResolvedSnippet;
252
+ toString(): string;
253
+ get performanceCallbackQuerySet(): TgpuQuerySet<"timestamp"> | undefined;
254
+ initAsync(): Promise<void>;
255
+ initSync(): void;
256
+ unwrap(): Memo;
257
+ resolveAndCreateShaderModule(): {
258
+ resolutionResult: import("../../resolutionCtx.ts").ResolutionResult;
259
+ descriptor: GPURenderPipelineDescriptor;
260
+ connectedAttribs: import("../vertexLayout/connectAttributesToShader.ts").ConnectAttributesToShaderResult;
261
+ fragmentOut: WgslStruct<import("../function/ioSchema.ts").WithLocations<Record<string, BaseData>>>;
262
+ };
278
263
  }
279
264
  /**
280
265
  * Assumes vertexOut and fragmentIn are matching when it comes to the keys, that is fragmentIn's keyset is a subset of vertexOut's
281
266
  * Logs a warning, when they don't match in terms of custom locations
282
267
  */
283
- //#endregion
284
- export { ColorAttachment, FragmentOutToTargets, TgpuPrimitiveState, TgpuRenderPipeline };
268
+ export declare function matchUpVaryingLocations(vertexOut: TgpuVertexFn.Out | undefined, fragmentIn: TgpuFragmentFn.In | undefined, vertexFnName: string, fragmentFnName: string): Record<string, number>;
269
+ export {};