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
@@ -0,0 +1,71 @@
1
+ import type { AnyWgslData, BaseData } from '../../data/wgslTypes.ts';
2
+ import { type StorageFlag } from '../../extension.ts';
3
+ import { type TgpuNamable } from '../../shared/meta.ts';
4
+ import type { Infer, InferGPU, InferInput, InferPatch, InferPartial } from '../../shared/repr.ts';
5
+ import type { TgpuSoul } from '../../shared/soul.ts';
6
+ import { $getNameForward, $gpuValueOf, $internal, $repr, $soul } from '../../shared/symbols.ts';
7
+ import { type BufferWriteOptions, type TgpuBuffer, type UniformFlag } from './buffer.ts';
8
+ export interface TgpuBufferBindingSoul<TBuffer extends TgpuBuffer<BaseData> = TgpuBuffer<BaseData>> extends TgpuSoul<'uniform' | 'mutable' | 'readonly'> {
9
+ readonly buffer: TBuffer;
10
+ }
11
+ interface TgpuBufferBindingBase<TData extends BaseData> extends TgpuNamable {
12
+ readonly [$internal]: true;
13
+ readonly [$soul]: TgpuBufferBindingSoul<TgpuBuffer<TData>>;
14
+ write(data: InferInput<TData>, options?: BufferWriteOptions): void;
15
+ /** @deprecated Use {@link patch} instead. */
16
+ writePartial(data: InferPartial<TData>): void;
17
+ patch(data: InferPatch<TData>): void;
18
+ read(): Promise<Infer<TData>>;
19
+ readonly [$gpuValueOf]: InferGPU<TData>;
20
+ /** Type-token, not available at runtime */
21
+ readonly [$repr]: Infer<TData>;
22
+ }
23
+ export interface TgpuMutable<out TData extends BaseData> extends TgpuBufferBindingBase<TData> {
24
+ readonly resourceType: 'mutable';
25
+ readonly buffer: TgpuBuffer<TData> & StorageFlag;
26
+ $: InferGPU<TData>;
27
+ /** Type-token, not available at runtime */
28
+ readonly [$repr]: Infer<TData>;
29
+ }
30
+ export interface TgpuReadonly<out TData extends BaseData> extends TgpuBufferBindingBase<TData> {
31
+ readonly resourceType: 'readonly';
32
+ readonly buffer: TgpuBuffer<TData> & StorageFlag;
33
+ readonly $: InferGPU<TData>;
34
+ /** Type-token, not available at runtime */
35
+ readonly [$repr]: Infer<TData>;
36
+ }
37
+ export interface TgpuUniform<out TData extends BaseData> extends TgpuBufferBindingBase<TData> {
38
+ readonly resourceType: 'uniform';
39
+ readonly buffer: TgpuBuffer<TData> & UniformFlag;
40
+ readonly $: InferGPU<TData>;
41
+ }
42
+ export type TgpuBufferBinding<TData extends BaseData> = TgpuMutable<TData> | TgpuReadonly<TData> | TgpuUniform<TData>;
43
+ export declare function isBufferBinding<TData extends BaseData>(value: unknown): value is TgpuBufferBinding<TData>;
44
+ export declare function isUniformBinding<TData extends BaseData>(value: unknown): value is TgpuUniform<TData>;
45
+ export declare function isMutableBinding<TData extends BaseData>(value: unknown): value is TgpuMutable<TData>;
46
+ export declare function isReadonlyBinding<TData extends BaseData>(value: unknown): value is TgpuReadonly<TData>;
47
+ /** @deprecated Use 'isBufferBinding' instead. */
48
+ export declare const isBufferShorthand: typeof isBufferBinding;
49
+ type BoundBuffer<TType, TData extends BaseData> = TgpuBuffer<TData> & (TType extends 'mutable' | 'readonly' ? StorageFlag : UniformFlag);
50
+ export declare class TgpuBufferBindingImpl<TType extends 'mutable' | 'readonly' | 'uniform', TData extends BaseData> {
51
+ /** Type-token, not available at runtime */
52
+ readonly [$repr]: Infer<TData>;
53
+ readonly [$soul]: TgpuBufferBindingSoul<BoundBuffer<TType, TData>>;
54
+ readonly [$getNameForward]: object;
55
+ readonly resourceType: TType;
56
+ [$internal]: true;
57
+ $: InferGPU<TData>;
58
+ readonly [$gpuValueOf]: InferGPU<TData>;
59
+ constructor(usage: TType, buffer: BoundBuffer<TType, TData>);
60
+ get buffer(): BoundBuffer<TType, TData>;
61
+ $name(label: string): this;
62
+ write(data: InferInput<TData>, options?: BufferWriteOptions): void;
63
+ /** @deprecated Use {@link patch} instead. */
64
+ writePartial(data: InferPartial<TData>): void;
65
+ patch(data: InferPatch<TData>): void;
66
+ read(): Promise<Infer<TData>>;
67
+ }
68
+ export declare function mutable<TData extends AnyWgslData>(buffer: TgpuBuffer<TData> & StorageFlag): TgpuMutable<TData>;
69
+ export declare function readonly<TData extends AnyWgslData>(buffer: TgpuBuffer<TData> & StorageFlag): TgpuReadonly<TData>;
70
+ export declare function uniform<TData extends AnyWgslData>(buffer: TgpuBuffer<TData> & UniformFlag): TgpuUniform<TData>;
71
+ export {};
@@ -0,0 +1,154 @@
1
+ import { schemaCallWrapper } from "../../data/schemaCallWrapper.js";
2
+ import { snip } from "../../data/snippet.js";
3
+ import { IllegalBufferAccessError } from "../../errors.js";
4
+ import { isInsideTgpuFn } from "../../execMode.js";
5
+ import {} from "../../extension.js";
6
+ import { getName, setName } from "../../shared/meta.js";
7
+ import { $getNameForward, $gpuValueOf, $internal, $repr, $soul } from "../../shared/symbols.js";
8
+ import { isUsableAsStorage, isUsableAsUniform } from "../../types.js";
9
+ import { makeDereferenceable } from "../../tgsl/makeDereferenceable.js";
10
+ import { makeResolvable } from "../../tgsl/makeResolvable.js";
11
+ import {} from "./buffer.js";
12
+ export function isBufferBinding(value) {
13
+ return value instanceof TgpuBufferBindingImpl;
14
+ }
15
+ export function isUniformBinding(value) {
16
+ return isBufferBinding(value) && value.resourceType === 'uniform';
17
+ }
18
+ export function isMutableBinding(value) {
19
+ return isBufferBinding(value) && value.resourceType === 'mutable';
20
+ }
21
+ export function isReadonlyBinding(value) {
22
+ return isBufferBinding(value) && value.resourceType === 'readonly';
23
+ }
24
+ // TODO(#2666) - remove this
25
+ /** @deprecated Use 'isBufferBinding' instead. */
26
+ export const isBufferShorthand = isBufferBinding;
27
+ export class TgpuBufferBindingImpl {
28
+ [$soul];
29
+ [$getNameForward];
30
+ resourceType;
31
+ static {
32
+ TgpuBufferBindingImpl.prototype[$internal] = true;
33
+ makeDereferenceable(makeResolvable(TgpuBufferBindingImpl.prototype, {
34
+ asString() {
35
+ return `${this.resourceType}BufferBinding:${getName(this) ?? '<unnamed>'}`;
36
+ },
37
+ resolve(ctx) {
38
+ const dataType = this.buffer.dataType;
39
+ const id = ctx.makeUniqueIdentifier(getName(this), 'global');
40
+ const { group, binding } = ctx.allocateFixedEntry(this.resourceType === 'uniform'
41
+ ? { uniform: dataType }
42
+ : { storage: dataType, access: this.resourceType }, this.buffer);
43
+ return ctx.gen.declareGlobalVar({
44
+ group,
45
+ binding,
46
+ scope: this.resourceType,
47
+ id,
48
+ dataType,
49
+ init: undefined,
50
+ });
51
+ },
52
+ }), {
53
+ codegenMode: {
54
+ getBaseSnippet(trackingProxy) {
55
+ return snip(trackingProxy, this.buffer.dataType,
56
+ /* origin */ this.resourceType,
57
+ /* possibleSideEffects */ false);
58
+ },
59
+ },
60
+ simulateMode: {
61
+ get(state) {
62
+ if (!state.buffers.has(this.buffer)) {
63
+ // Not initialized yet
64
+ state.buffers.set(this.buffer, schemaCallWrapper(this.buffer.dataType, this.buffer.initial));
65
+ }
66
+ return state.buffers.get(this.buffer);
67
+ },
68
+ set(state, value) {
69
+ state.buffers.set(this.buffer, value);
70
+ },
71
+ },
72
+ normalMode: {
73
+ get() {
74
+ throw new IllegalBufferAccessError(isInsideTgpuFn()
75
+ ? `Cannot access ${String(this.buffer)}. TypeGPU functions that depends on GPU resources need to be part of a compute dispatch, draw call or simulation`
76
+ : '.$ is inaccessible during normal JS execution. Try `.read()`');
77
+ },
78
+ set() {
79
+ throw new IllegalBufferAccessError(isInsideTgpuFn()
80
+ ? `Cannot access ${String(this.buffer)}. TypeGPU functions that depends on GPU resources need to be part of a compute dispatch, draw call or simulation`
81
+ : '.$ is inaccessible during normal JS execution. Try `.write()`');
82
+ },
83
+ },
84
+ });
85
+ }
86
+ constructor(usage, buffer) {
87
+ this.resourceType = usage;
88
+ this[$getNameForward] = buffer;
89
+ this[$soul] = {
90
+ type: usage,
91
+ buffer,
92
+ label: undefined,
93
+ };
94
+ }
95
+ get buffer() {
96
+ return this[$soul].buffer;
97
+ }
98
+ $name(label) {
99
+ setName(this, label);
100
+ return this;
101
+ }
102
+ write(data, options) {
103
+ this.buffer.write(data, options);
104
+ }
105
+ /** @deprecated Use {@link patch} instead. */
106
+ writePartial(data) {
107
+ this.buffer.writePartial(data);
108
+ }
109
+ patch(data) {
110
+ this.buffer.patch(data);
111
+ }
112
+ read() {
113
+ return this.buffer.read();
114
+ }
115
+ }
116
+ // --------------
117
+ // Constructors
118
+ // --------------
119
+ const mutableUsageMap = new WeakMap();
120
+ export function mutable(buffer) {
121
+ if (!isUsableAsStorage(buffer)) {
122
+ throw new Error(`Cannot call as('mutable') on ${buffer}, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);
123
+ }
124
+ let usage = mutableUsageMap.get(buffer);
125
+ if (!usage) {
126
+ usage = new TgpuBufferBindingImpl('mutable', buffer);
127
+ mutableUsageMap.set(buffer, usage);
128
+ }
129
+ return usage;
130
+ }
131
+ const readonlyUsageMap = new WeakMap();
132
+ export function readonly(buffer) {
133
+ if (!isUsableAsStorage(buffer)) {
134
+ throw new Error(`Cannot call as('readonly') on ${buffer}, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);
135
+ }
136
+ let usage = readonlyUsageMap.get(buffer);
137
+ if (!usage) {
138
+ usage = new TgpuBufferBindingImpl('readonly', buffer);
139
+ readonlyUsageMap.set(buffer, usage);
140
+ }
141
+ return usage;
142
+ }
143
+ const uniformUsageMap = new WeakMap();
144
+ export function uniform(buffer) {
145
+ if (!isUsableAsUniform(buffer)) {
146
+ throw new Error(`Cannot call as('uniform') on ${buffer}, as it is not allowed to be used as a uniform. To allow it, call .$usage('uniform') when creating the buffer.`);
147
+ }
148
+ let usage = uniformUsageMap.get(buffer);
149
+ if (!usage) {
150
+ usage = new TgpuBufferBindingImpl('uniform', buffer);
151
+ uniformUsageMap.set(buffer, usage);
152
+ }
153
+ return usage;
154
+ }
@@ -1,45 +1,14 @@
1
- import { TgpuNamable } from "../../shared/meta.js";
2
- import { $gpuValueOf, $internal, $repr } from "../../shared/symbols.js";
3
- import "../../data/snippet.js";
4
- import "../../tgpuBindGroupLayout.js";
5
- import { TgpuBuffer, UniformFlag } from "./buffer.js";
6
- import { BindableBufferUsage } from "../../types.js";
7
- import { BaseData } from "../../data/wgslTypes.js";
8
- import { Infer, InferGPU } from "../../shared/repr.js";
9
-
10
- //#region src/core/buffer/bufferUsage.d.ts
11
- interface TgpuBufferUsage<TData extends BaseData = BaseData, TUsage extends BindableBufferUsage = BindableBufferUsage> {
12
- readonly resourceType: 'buffer-usage';
13
- readonly usage: TUsage;
14
- readonly [$repr]: Infer<TData>;
15
- readonly [$gpuValueOf]: InferGPU<TData>;
16
- /**
17
- * @deprecated Use `.$` instead, works the same way.
18
- */
19
- value: InferGPU<TData>;
20
- $: InferGPU<TData>;
21
- readonly [$internal]: {
22
- readonly dataType: TData;
23
- };
24
- }
25
- interface TgpuBufferUniform<TData extends BaseData> extends TgpuBufferUsage<TData, 'uniform'> {
26
- /**
27
- * @deprecated Use `.$` instead, works the same way.
28
- */
29
- readonly value: InferGPU<TData>;
30
- readonly $: InferGPU<TData>;
31
- }
32
- interface TgpuBufferReadonly<TData extends BaseData> extends TgpuBufferUsage<TData, 'readonly'> {
33
- /**
34
- * @deprecated Use `.$` instead, works the same way.
35
- */
36
- readonly value: InferGPU<TData>;
37
- readonly $: InferGPU<TData>;
38
- }
39
- interface TgpuFixedBufferUsage<TData extends BaseData> extends TgpuNamable {
40
- readonly buffer: TgpuBuffer<TData>;
41
- }
42
- interface TgpuBufferMutable<TData extends BaseData> extends TgpuBufferUsage<TData, 'mutable'> {}
43
- declare function isUsableAsUniform<T extends TgpuBuffer<BaseData>>(buffer: T): buffer is T & UniformFlag;
44
- //#endregion
45
- export { TgpuBufferMutable, TgpuBufferReadonly, TgpuBufferUniform, TgpuBufferUsage, TgpuFixedBufferUsage, isUsableAsUniform };
1
+ import { type BaseData } from '../../data/wgslTypes.ts';
2
+ import type { TgpuMutable, TgpuReadonly, TgpuUniform } from './bufferBinding.ts';
3
+ /**
4
+ * @deprecated use TgpuUniform instead.
5
+ */
6
+ export type TgpuBufferUniform<TData extends BaseData> = TgpuUniform<TData>;
7
+ /**
8
+ * @deprecated use TgpuReadonly instead.
9
+ */
10
+ export type TgpuBufferReadonly<TData extends BaseData> = TgpuReadonly<TData>;
11
+ /**
12
+ * @deprecated use TgpuMutable instead.
13
+ */
14
+ export type TgpuBufferMutable<TData extends BaseData> = TgpuMutable<TData>;
@@ -1,171 +1 @@
1
- import { $getNameForward, $gpuValueOf, $internal, $ownSnippet, $resolve } from "../../shared/symbols.js";
2
- import { getName, setName } from "../../shared/meta.js";
3
- import { snip } from "../../data/snippet.js";
4
- import { IllegalBufferAccessError } from "../../errors.js";
5
- import { getExecMode, inCodegenMode, isInsideTgpuFn } from "../../execMode.js";
6
- import { schemaCallWrapper } from "../../data/schemaCallWrapper.js";
7
- import { assertExhaustive } from "../../shared/utilityTypes.js";
8
- import { valueProxyHandler } from "../valueProxyUtils.js";
9
- import { isUsableAsStorage } from "../../extension.js";
10
-
11
- //#region src/core/buffer/bufferUsage.ts
12
- function isUsableAsUniform(buffer) {
13
- return !!buffer.usableAsUniform;
14
- }
15
- var TgpuFixedBufferImpl = class {
16
- resourceType = "buffer-usage";
17
- usage;
18
- buffer;
19
- [$internal];
20
- [$getNameForward];
21
- constructor(usage, buffer) {
22
- this.usage = usage;
23
- this.buffer = buffer;
24
- this[$internal] = { dataType: buffer.dataType };
25
- this[$getNameForward] = buffer;
26
- }
27
- $name(label) {
28
- setName(this, label);
29
- return this;
30
- }
31
- [$resolve](ctx) {
32
- const dataType = this.buffer.dataType;
33
- const id = ctx.makeUniqueIdentifier(getName(this), "global");
34
- const { group, binding } = ctx.allocateFixedEntry(this.usage === "uniform" ? { uniform: dataType } : {
35
- storage: dataType,
36
- access: this.usage
37
- }, this.buffer);
38
- return ctx.gen.declareGlobalVar({
39
- group,
40
- binding,
41
- scope: this.usage,
42
- id,
43
- dataType,
44
- init: void 0
45
- });
46
- }
47
- toString() {
48
- return `${this.usage}:${getName(this) ?? "<unnamed>"}`;
49
- }
50
- get [$gpuValueOf]() {
51
- const dataType = this.buffer.dataType;
52
- const usage = this.usage;
53
- return new Proxy({
54
- [$internal]: true,
55
- get [$ownSnippet]() {
56
- return snip(this, dataType, usage);
57
- },
58
- [$resolve]: (ctx) => ctx.resolve(this),
59
- toString: () => `${this.usage}:${getName(this) ?? "<unnamed>"}.$`
60
- }, valueProxyHandler);
61
- }
62
- get $() {
63
- const mode = getExecMode();
64
- const insideTgpuFn = isInsideTgpuFn();
65
- if (mode.type === "normal") throw new IllegalBufferAccessError(insideTgpuFn ? `Cannot access ${String(this.buffer)}. TypeGPU functions that depends on GPU resources need to be part of a compute dispatch, draw call or simulation` : ".$ is inaccessible during normal JS execution. Try `.read()`");
66
- if (mode.type === "codegen") return this[$gpuValueOf];
67
- if (mode.type === "simulate") {
68
- if (!mode.buffers.has(this.buffer)) mode.buffers.set(this.buffer, schemaCallWrapper(this.buffer.dataType, this.buffer.initial));
69
- return mode.buffers.get(this.buffer);
70
- }
71
- return assertExhaustive(mode, "bufferUsage.ts#TgpuFixedBufferImpl/$");
72
- }
73
- get value() {
74
- return this.$;
75
- }
76
- set $(value) {
77
- const mode = getExecMode();
78
- const insideTgpuFn = isInsideTgpuFn();
79
- if (mode.type === "normal") throw new IllegalBufferAccessError(insideTgpuFn ? `Cannot access ${String(this.buffer)}. TypeGPU functions that depends on GPU resources need to be part of a compute dispatch, draw call or simulation` : ".$ is inaccessible during normal JS execution. Try `.write()`");
80
- if (mode.type === "codegen") throw new Error("Unreachable bufferUsage.ts#TgpuFixedBufferImpl/$");
81
- if (mode.type === "simulate") {
82
- mode.buffers.set(this.buffer, value);
83
- return;
84
- }
85
- assertExhaustive(mode, "bufferUsage.ts#TgpuFixedBufferImpl/$");
86
- }
87
- set value(value) {
88
- this.$ = value;
89
- }
90
- };
91
- var TgpuLaidOutBufferImpl = class {
92
- [$internal];
93
- resourceType = "buffer-usage";
94
- usage;
95
- dataType;
96
- #membership;
97
- constructor(usage, dataType, membership) {
98
- this[$internal] = { dataType };
99
- this.usage = usage;
100
- this.dataType = dataType;
101
- this.#membership = membership;
102
- setName(this, membership.key);
103
- }
104
- [$resolve](ctx) {
105
- const id = ctx.makeUniqueIdentifier(getName(this), "global");
106
- const group = ctx.allocateLayoutEntry(this.#membership.layout);
107
- return ctx.gen.declareGlobalVar({
108
- group,
109
- binding: this.#membership.idx,
110
- scope: this.usage,
111
- id,
112
- dataType: this.dataType,
113
- init: void 0
114
- });
115
- }
116
- toString() {
117
- return `${this.usage}:${getName(this) ?? "<unnamed>"}`;
118
- }
119
- get [$gpuValueOf]() {
120
- const schema = this.dataType;
121
- const usage = this.usage;
122
- return new Proxy({
123
- [$internal]: true,
124
- get [$ownSnippet]() {
125
- return snip(this, schema, usage);
126
- },
127
- [$resolve]: (ctx) => ctx.resolve(this),
128
- toString: () => `${this.usage}:${getName(this) ?? "<unnamed>"}.$`
129
- }, valueProxyHandler);
130
- }
131
- get $() {
132
- if (inCodegenMode()) return this[$gpuValueOf];
133
- throw new Error("Direct access to buffer values is possible only as part of a compute dispatch or draw call. Try .read() or .write() instead");
134
- }
135
- get value() {
136
- return this.$;
137
- }
138
- };
139
- const mutableUsageMap = /* @__PURE__ */ new WeakMap();
140
- function mutable(buffer) {
141
- if (!isUsableAsStorage(buffer)) throw new Error(`Cannot call as('mutable') on ${buffer}, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);
142
- let usage = mutableUsageMap.get(buffer);
143
- if (!usage) {
144
- usage = new TgpuFixedBufferImpl("mutable", buffer);
145
- mutableUsageMap.set(buffer, usage);
146
- }
147
- return usage;
148
- }
149
- const readonlyUsageMap = /* @__PURE__ */ new WeakMap();
150
- function readonly(buffer) {
151
- if (!isUsableAsStorage(buffer)) throw new Error(`Cannot call as('readonly') on ${buffer}, as it is not allowed to be used as storage. To allow it, call .$usage('storage') when creating the buffer.`);
152
- let usage = readonlyUsageMap.get(buffer);
153
- if (!usage) {
154
- usage = new TgpuFixedBufferImpl("readonly", buffer);
155
- readonlyUsageMap.set(buffer, usage);
156
- }
157
- return usage;
158
- }
159
- const uniformUsageMap = /* @__PURE__ */ new WeakMap();
160
- function uniform(buffer) {
161
- if (!isUsableAsUniform(buffer)) throw new Error(`Cannot call as('uniform') on ${buffer}, as it is not allowed to be used as a uniform. To allow it, call .$usage('uniform') when creating the buffer.`);
162
- let usage = uniformUsageMap.get(buffer);
163
- if (!usage) {
164
- usage = new TgpuFixedBufferImpl("uniform", buffer);
165
- uniformUsageMap.set(buffer, usage);
166
- }
167
- return usage;
168
- }
169
-
170
- //#endregion
171
- export { TgpuLaidOutBufferImpl, isUsableAsUniform, mutable, readonly, uniform };
1
+ import {} from "../../data/wgslTypes.js";
@@ -0,0 +1,25 @@
1
+ import { type BaseData } from '../../data/wgslTypes.ts';
2
+ import type { Infer, InferGPU } from '../../shared/repr.ts';
3
+ import { $gpuValueOf, $internal, $repr, $resolve } from '../../shared/symbols.ts';
4
+ import type { LayoutMembership } from '../../tgpuBindGroupLayout.ts';
5
+ import type { BindableBufferUsage, SelfResolvable } from '../../types.ts';
6
+ /**
7
+ * A class representing a buffer accessed via a BindGroupLayout.
8
+ * Compared to a regular buffer, it's missing read/write methods,
9
+ * but it holds a membership.
10
+ */
11
+ export declare class TgpuLaidOutBufferImpl<TData extends BaseData, TUsage extends BindableBufferUsage> implements SelfResolvable {
12
+ #private;
13
+ /** Type-token, not available at runtime */
14
+ readonly [$repr]: Infer<TData>;
15
+ readonly [$internal]: {
16
+ readonly dataType: TData;
17
+ };
18
+ readonly usage: TUsage;
19
+ readonly dataType: TData;
20
+ [$resolve]: SelfResolvable[typeof $resolve];
21
+ resourceType: 'laid-out-buffer';
22
+ $: InferGPU<TData>;
23
+ readonly [$gpuValueOf]: InferGPU<TData>;
24
+ constructor(usage: TUsage, dataType: TData, membership: LayoutMembership);
25
+ }
@@ -0,0 +1,55 @@
1
+ import { snip } from "../../data/snippet.js";
2
+ import {} from "../../data/wgslTypes.js";
3
+ import { makeDereferenceable } from "../../tgsl/makeDereferenceable.js";
4
+ import { makeResolvable } from "../../tgsl/makeResolvable.js";
5
+ import { getName, setName } from "../../shared/meta.js";
6
+ import { $gpuValueOf, $internal, $repr, $resolve } from "../../shared/symbols.js";
7
+ /**
8
+ * A class representing a buffer accessed via a BindGroupLayout.
9
+ * Compared to a regular buffer, it's missing read/write methods,
10
+ * but it holds a membership.
11
+ */
12
+ export class TgpuLaidOutBufferImpl {
13
+ [$internal];
14
+ usage;
15
+ dataType;
16
+ #membership;
17
+ static {
18
+ TgpuLaidOutBufferImpl.prototype.resourceType = 'laid-out-buffer';
19
+ makeDereferenceable(makeResolvable(TgpuLaidOutBufferImpl.prototype, {
20
+ asString() {
21
+ return `${this.usage}:${getName(this) ?? '<unnamed>'}`;
22
+ },
23
+ resolve(ctx) {
24
+ const id = ctx.makeUniqueIdentifier(getName(this), 'global');
25
+ const group = ctx.allocateLayoutEntry(this.#membership.layout);
26
+ return ctx.gen.declareGlobalVar({
27
+ group,
28
+ binding: this.#membership.idx,
29
+ scope: this.usage,
30
+ id,
31
+ dataType: this.dataType,
32
+ init: undefined,
33
+ });
34
+ },
35
+ }), {
36
+ codegenMode: {
37
+ getBaseSnippet(trackingProxy) {
38
+ return snip(trackingProxy, this.dataType, this.usage, /* possibleSideEffects */ false);
39
+ },
40
+ },
41
+ normalMode: {
42
+ get() {
43
+ throw new Error('Direct access to buffer values is possible only as part of a compute dispatch or draw call. Try .read() or .write() instead');
44
+ },
45
+ },
46
+ });
47
+ }
48
+ constructor(usage, dataType, membership) {
49
+ this[$internal] = { dataType };
50
+ this.usage = usage;
51
+ this.dataType = dataType;
52
+ this.#membership = membership;
53
+ setName(this, membership.key);
54
+ }
55
+ }
@@ -0,0 +1,125 @@
1
+ import type { WgslTexture, WgslTextureDepth2d, WgslTextureDepthMultisampled2d } from '../../data/texture.ts';
2
+ import { $internal } from '../../shared/symbols.ts';
3
+ import { type TgpuQuerySet } from '../querySet/querySet.ts';
4
+ import type { ExperimentalTgpuRoot } from '../root/rootTypes.ts';
5
+ import { type TextureInternals, type TgpuTextureRenderView, type TgpuTextureView } from '../texture/texture.ts';
6
+ import type { RenderFlag } from '../texture/usageExtension.ts';
7
+ interface ColorTextureConstraint {
8
+ readonly [$internal]: TextureInternals;
9
+ readonly resourceType: 'texture';
10
+ readonly props: {
11
+ format: GPUTextureFormat;
12
+ };
13
+ }
14
+ export interface ColorAttachment {
15
+ /**
16
+ * A {@link GPUTextureView} describing the texture subresource that will be output to for this
17
+ * color attachment.
18
+ */
19
+ view: (ColorTextureConstraint & RenderFlag) | GPUTextureView | TgpuTextureView<WgslTexture> | TgpuTextureRenderView | GPUCanvasContext;
20
+ /**
21
+ * Indicates the depth slice index of {@link GPUTextureViewDimension#"3d"} {@link GPURenderPassColorAttachment#view}
22
+ * that will be output to for this color attachment.
23
+ */
24
+ depthSlice?: GPUIntegerCoordinate;
25
+ /**
26
+ * A {@link GPUTextureView} describing the texture subresource that will receive the resolved
27
+ * output for this color attachment if {@link GPURenderPassColorAttachment#view} is
28
+ * multisampled.
29
+ */
30
+ resolveTarget?: (ColorTextureConstraint & RenderFlag) | GPUTextureView | TgpuTextureView<WgslTexture> | TgpuTextureRenderView | GPUCanvasContext;
31
+ /**
32
+ * Indicates the value to clear {@link GPURenderPassColorAttachment#view} to prior to executing the
33
+ * render pass. If not provided, defaults to `{r: 0, g: 0, b: 0, a: 0}`. Ignored
34
+ * if {@link GPURenderPassColorAttachment#loadOp} is not {@link GPULoadOp#"clear"}.
35
+ * The components of {@link GPURenderPassColorAttachment#clearValue} are all double values.
36
+ * They are converted to a texel value of texture format matching the render attachment.
37
+ * If conversion fails, a validation error is generated.
38
+ */
39
+ clearValue?: readonly [number, number, number, number] | GPUColor;
40
+ /**
41
+ * Indicates the load operation to perform on {@link GPURenderPassColorAttachment#view} prior to
42
+ * executing the render pass.
43
+ * Note: It is recommended to prefer clearing; see {@link GPULoadOp#"clear"} for details.
44
+ *
45
+ * @default 'clear'
46
+ */
47
+ loadOp?: GPULoadOp | undefined;
48
+ /**
49
+ * The store operation to perform on {@link GPURenderPassColorAttachment#view}
50
+ * after executing the render pass.
51
+ *
52
+ * @default 'store'
53
+ */
54
+ storeOp?: GPUStoreOp | undefined;
55
+ }
56
+ export type DepthStencilFormat = 'stencil8' | 'depth16unorm' | 'depth24plus' | 'depth24plus-stencil8' | 'depth32float' | 'depth32float-stencil8';
57
+ interface DepthStencilTextureConstraint {
58
+ readonly [$internal]: TextureInternals;
59
+ readonly resourceType: 'texture';
60
+ readonly props: {
61
+ format: DepthStencilFormat;
62
+ };
63
+ }
64
+ export interface DepthStencilAttachment {
65
+ /**
66
+ * The texture subresource that will be output to and read from for this
67
+ * depth/stencil attachment.
68
+ */
69
+ view: (DepthStencilTextureConstraint & RenderFlag) | TgpuTextureView<WgslTextureDepth2d | WgslTextureDepthMultisampled2d> | TgpuTextureRenderView | GPUTextureView;
70
+ /**
71
+ * Indicates the value to clear {@link GPURenderPassDepthStencilAttachment#view}'s depth component
72
+ * to prior to executing the render pass. Ignored if {@link GPURenderPassDepthStencilAttachment#depthLoadOp}
73
+ * is not {@link GPULoadOp#"clear"}. Must be between 0.0 and 1.0, inclusive (unless unrestricted depth is enabled).
74
+ */
75
+ depthClearValue?: number;
76
+ /**
77
+ * Indicates the load operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
78
+ * depth component prior to executing the render pass.
79
+ * Note: It is recommended to prefer clearing; see {@link GPULoadOp#"clear"} for details.
80
+ */
81
+ depthLoadOp?: GPULoadOp;
82
+ /**
83
+ * The store operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
84
+ * depth component after executing the render pass.
85
+ */
86
+ depthStoreOp?: GPUStoreOp;
87
+ /**
88
+ * Indicates that the depth component of {@link GPURenderPassDepthStencilAttachment#view}
89
+ * is read only.
90
+ */
91
+ depthReadOnly?: boolean;
92
+ /**
93
+ * Indicates the value to clear {@link GPURenderPassDepthStencilAttachment#view}'s stencil component
94
+ * to prior to executing the render pass. Ignored if {@link GPURenderPassDepthStencilAttachment#stencilLoadOp}
95
+ * is not {@link GPULoadOp#"clear"}.
96
+ * The value will be converted to the type of the stencil aspect of `view` by taking the same
97
+ * number of LSBs as the number of bits in the stencil aspect of one texel of `view`.
98
+ */
99
+ stencilClearValue?: GPUStencilValue;
100
+ /**
101
+ * Indicates the load operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
102
+ * stencil component prior to executing the render pass.
103
+ * Note: It is recommended to prefer clearing; see {@link GPULoadOp#"clear"} for details.
104
+ */
105
+ stencilLoadOp?: GPULoadOp;
106
+ /**
107
+ * The store operation to perform on {@link GPURenderPassDepthStencilAttachment#view}'s
108
+ * stencil component after executing the render pass.
109
+ */
110
+ stencilStoreOp?: GPUStoreOp;
111
+ /**
112
+ * Indicates that the stencil component of {@link GPURenderPassDepthStencilAttachment#view}
113
+ * is read only.
114
+ */
115
+ stencilReadOnly?: boolean;
116
+ }
117
+ export type AnyAttachmentView = ColorAttachment['view'] | NonNullable<ColorAttachment['resolveTarget']> | DepthStencilAttachment['view'];
118
+ export declare function unwrapAttachmentView(root: ExperimentalTgpuRoot, view: AnyAttachmentView): GPUTextureView;
119
+ export interface TgpuPassTimestampWrites {
120
+ querySet: TgpuQuerySet<'timestamp'> | GPUQuerySet;
121
+ beginningOfPassWriteIndex?: number | undefined;
122
+ endOfPassWriteIndex?: number | undefined;
123
+ }
124
+ export declare function unwrapTimestampWrites(root: ExperimentalTgpuRoot, timestampWrites: TgpuPassTimestampWrites): GPURenderPassTimestampWrites;
125
+ export {};