typegpu 0.11.9 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/builtin.d.ts +51 -53
  2. package/builtin.js +30 -34
  3. package/common/fullScreenTriangle.d.ts +2 -10
  4. package/common/fullScreenTriangle.js +20 -28
  5. package/common/index.d.ts +2 -9
  6. package/common/index.js +3 -12
  7. package/common/writeSoA.d.ts +11 -12
  8. package/common/writeSoA.js +88 -76
  9. package/core/buffer/buffer.d.ts +79 -62
  10. package/core/buffer/buffer.js +279 -205
  11. package/core/buffer/bufferBinding.d.ts +71 -0
  12. package/core/buffer/bufferBinding.js +154 -0
  13. package/core/buffer/bufferUsage.d.ts +14 -45
  14. package/core/buffer/bufferUsage.js +1 -171
  15. package/core/buffer/laidOutBuffer.d.ts +25 -0
  16. package/core/buffer/laidOutBuffer.js +55 -0
  17. package/core/commandEncoder/attachments.d.ts +125 -0
  18. package/core/commandEncoder/attachments.js +29 -0
  19. package/core/commandEncoder/commandEncoder.d.ts +53 -0
  20. package/core/commandEncoder/commandEncoder.js +56 -0
  21. package/core/commandEncoder/computePass.d.ts +58 -0
  22. package/core/commandEncoder/computePass.js +63 -0
  23. package/core/commandEncoder/renderPass.d.ts +121 -0
  24. package/core/commandEncoder/renderPass.js +196 -0
  25. package/core/constant/tgpuConstant.d.ts +26 -26
  26. package/core/constant/tgpuConstant.js +76 -65
  27. package/core/declare/tgpuDeclare.d.ts +3 -6
  28. package/core/declare/tgpuDeclare.js +36 -36
  29. package/core/function/autoIO.d.ts +61 -33
  30. package/core/function/autoIO.js +68 -73
  31. package/core/function/comptime.d.ts +11 -13
  32. package/core/function/comptime.js +60 -52
  33. package/core/function/createCallableSchema.d.ts +16 -0
  34. package/core/function/createCallableSchema.js +50 -40
  35. package/core/function/dualImpl.d.ts +44 -0
  36. package/core/function/dualImpl.js +71 -50
  37. package/core/function/entryInputRouter.d.ts +26 -0
  38. package/core/function/entryInputRouter.js +31 -33
  39. package/core/function/extractArgs.d.ts +38 -0
  40. package/core/function/extractArgs.js +202 -200
  41. package/core/function/fnCore.d.ts +44 -5
  42. package/core/function/fnCore.js +148 -93
  43. package/core/function/fnTypes.d.ts +31 -29
  44. package/core/function/fnTypes.js +1 -0
  45. package/core/function/ioSchema.d.ts +12 -10
  46. package/core/function/ioSchema.js +65 -47
  47. package/core/function/shelllessImpl.d.ts +9 -12
  48. package/core/function/shelllessImpl.js +17 -22
  49. package/core/function/templateUtils.d.ts +2 -0
  50. package/core/function/templateUtils.js +9 -8
  51. package/core/function/tgpuComputeFn.d.ts +26 -28
  52. package/core/function/tgpuComputeFn.js +47 -48
  53. package/core/function/tgpuFn.d.ts +34 -37
  54. package/core/function/tgpuFn.js +179 -153
  55. package/core/function/tgpuFragmentFn.d.ts +52 -53
  56. package/core/function/tgpuFragmentFn.js +63 -56
  57. package/core/function/tgpuVertexFn.d.ts +36 -39
  58. package/core/function/tgpuVertexFn.js +56 -53
  59. package/core/pipeline/computePipeline.d.ts +141 -53
  60. package/core/pipeline/computePipeline.js +291 -225
  61. package/core/pipeline/connectAttachmentToShader.d.ts +4 -0
  62. package/core/pipeline/connectAttachmentToShader.js +25 -22
  63. package/core/pipeline/connectTargetsToShader.d.ts +3 -0
  64. package/core/pipeline/connectTargetsToShader.js +29 -27
  65. package/core/pipeline/drawState.d.ts +52 -0
  66. package/core/pipeline/drawState.js +225 -0
  67. package/core/pipeline/limitsOverflow.d.ts +2 -0
  68. package/core/pipeline/limitsOverflow.js +13 -10
  69. package/core/pipeline/performanceTracker.d.ts +14 -0
  70. package/core/pipeline/performanceTracker.js +34 -0
  71. package/core/pipeline/pipelineUtils.d.ts +18 -0
  72. package/core/pipeline/pipelineUtils.js +54 -25
  73. package/core/pipeline/priors.d.ts +1 -0
  74. package/core/pipeline/priors.js +12 -0
  75. package/core/pipeline/renderPipeline.d.ts +246 -261
  76. package/core/pipeline/renderPipeline.js +487 -480
  77. package/core/pipeline/timeable.d.ts +28 -18
  78. package/core/pipeline/timeable.js +90 -52
  79. package/core/pipeline/typeGuards.d.ts +17 -0
  80. package/core/pipeline/typeGuards.js +52 -22
  81. package/core/querySet/querySet.d.ts +26 -21
  82. package/core/querySet/querySet.js +127 -103
  83. package/core/rawCodeSnippet/tgpuRawCodeSnippet.d.ts +13 -18
  84. package/core/rawCodeSnippet/tgpuRawCodeSnippet.js +89 -90
  85. package/core/resolve/externals.d.ts +25 -8
  86. package/core/resolve/externals.js +78 -54
  87. package/core/resolve/namespace.d.ts +22 -25
  88. package/core/resolve/namespace.js +16 -21
  89. package/core/resolve/resolvableString.d.ts +7 -0
  90. package/core/resolve/resolvableString.js +13 -0
  91. package/core/resolve/resolveData.d.ts +10 -0
  92. package/core/resolve/resolveData.js +162 -121
  93. package/core/resolve/stitch.d.ts +8 -0
  94. package/core/resolve/stitch.js +23 -21
  95. package/core/resolve/tgpuResolve.d.ts +55 -53
  96. package/core/resolve/tgpuResolve.js +106 -53
  97. package/core/root/configurableImpl.d.ts +10 -0
  98. package/core/root/configurableImpl.js +17 -19
  99. package/core/root/init.d.ts +76 -38
  100. package/core/root/init.js +346 -455
  101. package/core/root/rootTypes.d.ts +461 -636
  102. package/core/root/rootTypes.js +1 -0
  103. package/core/sampler/sampler.d.ts +50 -31
  104. package/core/sampler/sampler.js +120 -113
  105. package/core/simulate/tgpuSimulate.d.ts +9 -12
  106. package/core/simulate/tgpuSimulate.js +68 -71
  107. package/core/slot/accessor.d.ts +36 -13
  108. package/core/slot/accessor.js +138 -91
  109. package/core/slot/internalSlots.d.ts +2 -0
  110. package/core/slot/internalSlots.js +1 -6
  111. package/core/slot/lazy.d.ts +2 -6
  112. package/core/slot/lazy.js +71 -39
  113. package/core/slot/slot.d.ts +2 -6
  114. package/core/slot/slot.js +45 -38
  115. package/core/slot/slotTypes.d.ts +78 -80
  116. package/core/slot/slotTypes.js +11 -16
  117. package/core/texture/externalTexture.d.ts +20 -11
  118. package/core/texture/externalTexture.js +46 -46
  119. package/core/texture/texture.d.ts +152 -97
  120. package/core/texture/texture.js +407 -314
  121. package/core/texture/textureFormats.d.ts +42 -23
  122. package/core/texture/textureFormats.js +104 -75
  123. package/core/texture/textureProps.d.ts +7 -10
  124. package/core/texture/textureProps.js +1 -0
  125. package/core/texture/textureUtils.d.ts +8 -0
  126. package/core/texture/textureUtils.js +185 -179
  127. package/core/texture/usageExtension.d.ts +21 -18
  128. package/core/texture/usageExtension.js +13 -17
  129. package/core/unroll/tgpuUnroll.d.ts +20 -19
  130. package/core/unroll/tgpuUnroll.js +82 -91
  131. package/core/valueProxyUtils.d.ts +3 -0
  132. package/core/valueProxyUtils.js +52 -41
  133. package/core/variable/tgpuVariable.d.ts +26 -27
  134. package/core/variable/tgpuVariable.js +93 -96
  135. package/core/vertexLayout/connectAttributesToShader.d.ts +9 -0
  136. package/core/vertexLayout/connectAttributesToShader.js +61 -56
  137. package/core/vertexLayout/vertexAttribute.d.ts +21 -17
  138. package/core/vertexLayout/vertexAttribute.js +1 -0
  139. package/core/vertexLayout/vertexLayout.d.ts +24 -18
  140. package/core/vertexLayout/vertexLayout.js +130 -99
  141. package/core/whitespaces.d.ts +2 -0
  142. package/core/whitespaces.js +16 -0
  143. package/data/alignIO.d.ts +7 -0
  144. package/data/alignIO.js +13 -13
  145. package/data/alignmentOf.d.ts +5 -8
  146. package/data/alignmentOf.js +90 -75
  147. package/data/array.d.ts +6 -9
  148. package/data/array.js +48 -40
  149. package/data/atomic.d.ts +2 -7
  150. package/data/atomic.js +26 -23
  151. package/data/attributes.d.ts +19 -21
  152. package/data/attributes.js +192 -132
  153. package/data/autoStruct.d.ts +36 -3
  154. package/data/autoStruct.js +84 -81
  155. package/data/compiledIO.d.ts +5 -0
  156. package/data/compiledIO.js +231 -215
  157. package/data/dataIO.d.ts +13 -11
  158. package/data/dataIO.js +643 -589
  159. package/data/dataTypes.d.ts +83 -65
  160. package/data/dataTypes.js +66 -68
  161. package/data/deepEqual.d.ts +2 -7
  162. package/data/deepEqual.js +80 -55
  163. package/data/disarray.d.ts +6 -10
  164. package/data/disarray.js +52 -46
  165. package/data/float16Conversion.d.ts +4 -0
  166. package/data/float16Conversion.js +7 -0
  167. package/data/getLongestContiguousPrefix.d.ts +4 -8
  168. package/data/getLongestContiguousPrefix.js +6 -11
  169. package/data/index.d.ts +30 -31
  170. package/data/index.js +39 -172
  171. package/data/instanceToSchema.d.ts +24 -27
  172. package/data/instanceToSchema.js +1 -0
  173. package/data/isContiguous.d.ts +4 -8
  174. package/data/isContiguous.js +6 -11
  175. package/data/matrix.d.ts +21 -21
  176. package/data/matrix.js +513 -505
  177. package/data/numberOps.d.ts +6 -0
  178. package/data/numberOps.js +26 -20
  179. package/data/numeric.d.ts +21 -12
  180. package/data/numeric.js +287 -197
  181. package/data/offsetUtils.d.ts +9 -13
  182. package/data/offsetUtils.js +204 -144
  183. package/data/offsets.d.ts +8 -0
  184. package/data/offsets.js +33 -33
  185. package/data/partialIO.d.ts +13 -8
  186. package/data/partialIO.js +124 -113
  187. package/data/ptr.d.ts +12 -12
  188. package/data/ptr.js +42 -44
  189. package/data/ref.d.ts +40 -27
  190. package/data/ref.js +125 -95
  191. package/data/sampler.d.ts +99 -101
  192. package/data/sampler.js +17 -21
  193. package/data/schemaCallWrapper.d.ts +19 -0
  194. package/data/schemaCallWrapper.js +31 -26
  195. package/data/schemaMemoryLayout.d.ts +8 -0
  196. package/data/schemaMemoryLayout.js +213 -185
  197. package/data/sizeOf.d.ts +4 -8
  198. package/data/sizeOf.js +6 -11
  199. package/data/snippet.d.ts +96 -20
  200. package/data/snippet.js +75 -86
  201. package/data/struct.d.ts +4 -7
  202. package/data/struct.js +51 -39
  203. package/data/texture.d.ts +253 -250
  204. package/data/texture.js +238 -200
  205. package/data/unstruct.d.ts +2 -7
  206. package/data/unstruct.js +43 -37
  207. package/data/vector.d.ts +33 -21
  208. package/data/vector.js +234 -221
  209. package/data/vectorImpl.d.ts +231 -0
  210. package/data/vectorImpl.js +563 -515
  211. package/data/vectorOps.d.ts +63 -0
  212. package/data/vectorOps.js +642 -630
  213. package/data/vertexFormatData.d.ts +181 -184
  214. package/data/vertexFormatData.js +104 -106
  215. package/data/wgslTypes.d.ts +665 -600
  216. package/data/wgslTypes.js +220 -198
  217. package/errors.d.ts +50 -24
  218. package/errors.js +146 -126
  219. package/execMode.d.ts +16 -0
  220. package/execMode.js +47 -40
  221. package/extension.d.ts +13 -8
  222. package/extension.js +10 -16
  223. package/getGPUValue.d.ts +1 -0
  224. package/getGPUValue.js +2 -7
  225. package/index.d.ts +28 -68
  226. package/index.js +8 -28
  227. package/indexNamedExports.d.ts +69 -42
  228. package/indexNamedExports.js +25 -0
  229. package/internal.d.ts +16 -0
  230. package/internal.js +12 -0
  231. package/mathUtils.d.ts +5 -0
  232. package/mathUtils.js +7 -11
  233. package/memo.d.ts +11 -0
  234. package/memo.js +20 -22
  235. package/minify.d.ts +5 -0
  236. package/minify.js +93 -0
  237. package/nameUtils.d.ts +29 -0
  238. package/nameUtils.js +427 -394
  239. package/package.json +5 -1
  240. package/resolutionCtx.d.ts +162 -22
  241. package/resolutionCtx.js +911 -629
  242. package/serial/registry.d.ts +15 -0
  243. package/serial/registry.js +106 -0
  244. package/serial/restore.d.ts +49 -0
  245. package/serial/restore.js +68 -0
  246. package/serial/schema.d.ts +58 -0
  247. package/serial/schema.js +209 -0
  248. package/serial/types.d.ts +5 -0
  249. package/serial/types.js +1 -0
  250. package/shared/env.d.ts +9 -0
  251. package/shared/env.js +9 -12
  252. package/shared/generators.d.ts +4 -0
  253. package/shared/generators.js +10 -12
  254. package/shared/meta.d.ts +29 -14
  255. package/shared/meta.js +71 -55
  256. package/shared/normalizeMetadata.d.ts +32 -27
  257. package/shared/normalizeMetadata.js +23 -36
  258. package/shared/repr.d.ts +73 -55
  259. package/shared/repr.js +1 -0
  260. package/shared/soul.d.ts +17 -0
  261. package/shared/soul.js +1 -0
  262. package/shared/stringify.d.ts +2 -0
  263. package/shared/stringify.js +29 -20
  264. package/shared/symbols.d.ts +26 -20
  265. package/shared/symbols.js +79 -79
  266. package/shared/tseynit.d.ts +2 -0
  267. package/shared/tseynit.js +160 -75
  268. package/shared/utilityTypes.d.ts +30 -14
  269. package/shared/utilityTypes.js +2 -6
  270. package/shared/vertexFormat.d.ts +41 -43
  271. package/shared/vertexFormat.js +59 -62
  272. package/std/array.d.ts +2 -7
  273. package/std/array.js +18 -23
  274. package/std/atomic.d.ts +14 -18
  275. package/std/atomic.js +96 -95
  276. package/std/bitcast.d.ts +193 -10
  277. package/std/bitcast.js +309 -39
  278. package/std/boolean.d.ts +19 -33
  279. package/std/boolean.js +296 -288
  280. package/std/copy.d.ts +2 -7
  281. package/std/copy.js +27 -24
  282. package/std/derivative.d.ts +11 -15
  283. package/std/derivative.js +56 -79
  284. package/std/discard.d.ts +1 -6
  285. package/std/discard.js +7 -14
  286. package/std/environment.d.ts +19 -14
  287. package/std/environment.js +71 -51
  288. package/std/extensions.d.ts +2 -8
  289. package/std/extensions.js +10 -11
  290. package/std/index.d.ts +20 -24
  291. package/std/index.js +32 -187
  292. package/std/matrix.d.ts +6 -12
  293. package/std/matrix.js +60 -69
  294. package/std/numeric.d.ts +143 -146
  295. package/std/numeric.js +858 -749
  296. package/std/operators.d.ts +19 -27
  297. package/std/operators.js +227 -193
  298. package/std/packing.d.ts +5 -11
  299. package/std/packing.js +67 -75
  300. package/std/range.d.ts +6 -11
  301. package/std/range.js +48 -36
  302. package/std/subgroup.d.ts +33 -37
  303. package/std/subgroup.js +180 -217
  304. package/std/texture.d.ts +70 -38
  305. package/std/texture.js +176 -172
  306. package/taskQueue.d.ts +6 -0
  307. package/taskQueue.js +30 -0
  308. package/tgpu.d.ts +16 -0
  309. package/tgpu.js +17 -44
  310. package/tgpuBindGroupLayout.d.ts +132 -152
  311. package/tgpuBindGroupLayout.js +346 -268
  312. package/tgpuLogger.d.ts +34 -0
  313. package/tgpuLogger.js +63 -0
  314. package/tgpuUnstable.d.ts +16 -22
  315. package/tgpuUnstable.js +13 -35
  316. package/tgsl/accessIndex.d.ts +2 -0
  317. package/tgsl/accessIndex.js +76 -33
  318. package/tgsl/accessProp.d.ts +2 -0
  319. package/tgsl/accessProp.js +142 -101
  320. package/tgsl/accessStructProp.d.ts +5 -0
  321. package/tgsl/accessStructProp.js +13 -15
  322. package/tgsl/consoleLog/deserializers.d.ts +13 -0
  323. package/tgsl/consoleLog/deserializers.js +119 -103
  324. package/tgsl/consoleLog/logGenerator.d.ts +21 -0
  325. package/tgsl/consoleLog/logGenerator.js +85 -80
  326. package/tgsl/consoleLog/serializers.d.ts +21 -0
  327. package/tgsl/consoleLog/serializers.js +119 -100
  328. package/tgsl/consoleLog/types.d.ts +40 -39
  329. package/tgsl/consoleLog/types.js +1 -0
  330. package/tgsl/conversion.d.ts +33 -0
  331. package/tgsl/conversion.js +271 -216
  332. package/tgsl/forOfUtils.d.ts +15 -0
  333. package/tgsl/forOfUtils.js +85 -70
  334. package/tgsl/generationHelpers.d.ts +22 -39
  335. package/tgsl/generationHelpers.js +85 -58
  336. package/tgsl/infixDispatch.d.ts +70 -0
  337. package/tgsl/infixDispatch.js +48 -46
  338. package/tgsl/jsPolyfills.d.ts +16 -19
  339. package/tgsl/jsPolyfills.js +44 -42
  340. package/tgsl/makeDereferenceable.d.ts +48 -0
  341. package/tgsl/makeDereferenceable.js +86 -0
  342. package/tgsl/makeResolvable.d.ts +22 -0
  343. package/tgsl/makeResolvable.js +33 -0
  344. package/tgsl/shaderGenerator.d.ts +77 -17
  345. package/tgsl/shaderGenerator.js +1 -0
  346. package/tgsl/shellless.d.ts +6 -9
  347. package/tgsl/shellless.js +73 -43
  348. package/tgsl/wgslGenerator.d.ts +66 -59
  349. package/tgsl/wgslGenerator.js +1344 -760
  350. package/types.d.ts +287 -222
  351. package/types.js +61 -44
  352. package/unwrapper.d.ts +31 -26
  353. package/unwrapper.js +1 -0
  354. package/wgslExtensions.d.ts +3 -5
  355. package/wgslExtensions.js +12 -16
  356. package/_virtual/rolldown_runtime.js +0 -13
  357. package/core/buffer/bufferShorthand.d.ts +0 -50
  358. package/core/buffer/bufferShorthand.js +0 -55
  359. package/core/pipeline/applyPipelineState.js +0 -37
  360. package/package.js +0 -5
  361. package/tgsl/shaderGenerator_members.d.ts +0 -33
  362. package/tgsl/shaderGenerator_members.js +0 -12
@@ -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 {};