typegpu 0.8.1 → 0.9.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 (63) hide show
  1. package/README.md +1 -1
  2. package/chunk-5ABKYSJD.js +2 -0
  3. package/chunk-5ABKYSJD.js.map +1 -0
  4. package/chunk-D5UYO3OX.js +3 -0
  5. package/chunk-D5UYO3OX.js.map +1 -0
  6. package/chunk-EHLRP4V2.js +2 -0
  7. package/chunk-EHLRP4V2.js.map +1 -0
  8. package/chunk-LMPPDGRD.js +2 -0
  9. package/chunk-LMPPDGRD.js.map +1 -0
  10. package/chunk-MBB2XFH6.js +2 -0
  11. package/chunk-MBB2XFH6.js.map +1 -0
  12. package/chunk-SHSILTWI.js +10 -0
  13. package/chunk-SHSILTWI.js.map +1 -0
  14. package/common/index.d.ts +1 -1
  15. package/common/index.js +1 -1
  16. package/common/index.js.map +1 -1
  17. package/comptime-DKpw1IVu.d.ts +28 -0
  18. package/data/index.d.ts +124 -123
  19. package/data/index.js +1 -1
  20. package/data/index.js.map +1 -1
  21. package/index.d.ts +114 -25
  22. package/index.js +169 -164
  23. package/index.js.map +1 -1
  24. package/{matrix-DHFT4O8f.d.cts → matrix-C4IFKU1R.d.ts} +5 -4
  25. package/package.json +6 -14
  26. package/std/index.d.ts +25 -41
  27. package/std/index.js +1 -1
  28. package/std/index.js.map +1 -1
  29. package/{tgpuConstant-BU72w5qs.d.cts → tgpuConstant-BOn7U_lv.d.ts} +135 -1296
  30. package/chunk-2UXPGML5.js +0 -7
  31. package/chunk-2UXPGML5.js.map +0 -1
  32. package/chunk-3246CM7C.cjs +0 -2
  33. package/chunk-3246CM7C.cjs.map +0 -1
  34. package/chunk-4W5Z7BO4.js +0 -10
  35. package/chunk-4W5Z7BO4.js.map +0 -1
  36. package/chunk-5Y6GTBWR.cjs +0 -3
  37. package/chunk-5Y6GTBWR.cjs.map +0 -1
  38. package/chunk-7S3IK3D4.js +0 -2
  39. package/chunk-7S3IK3D4.js.map +0 -1
  40. package/chunk-7XFSK632.js +0 -3
  41. package/chunk-7XFSK632.js.map +0 -1
  42. package/chunk-PRMFGUQT.cjs +0 -2
  43. package/chunk-PRMFGUQT.cjs.map +0 -1
  44. package/chunk-TRE7NUKE.cjs +0 -10
  45. package/chunk-TRE7NUKE.cjs.map +0 -1
  46. package/chunk-VOVQAOVG.js +0 -2
  47. package/chunk-VOVQAOVG.js.map +0 -1
  48. package/chunk-ZYGTVBDH.cjs +0 -7
  49. package/chunk-ZYGTVBDH.cjs.map +0 -1
  50. package/common/index.cjs +0 -7
  51. package/common/index.cjs.map +0 -1
  52. package/common/index.d.cts +0 -24
  53. package/data/index.cjs +0 -2
  54. package/data/index.cjs.map +0 -1
  55. package/data/index.d.cts +0 -402
  56. package/index.cjs +0 -192
  57. package/index.cjs.map +0 -1
  58. package/index.d.cts +0 -369
  59. package/matrix-DLipCOZF.d.ts +0 -122
  60. package/std/index.cjs +0 -2
  61. package/std/index.cjs.map +0 -1
  62. package/std/index.d.cts +0 -639
  63. package/tgpuConstant-BU72w5qs.d.ts +0 -5192
@@ -8,7 +8,7 @@ interface MetaData {
8
8
  body: Block;
9
9
  externalNames: string[];
10
10
  } | undefined;
11
- externals?: Record<string, unknown> | undefined;
11
+ externals?: Record<string, unknown> | (() => Record<string, unknown>) | undefined;
12
12
  }
13
13
  /**
14
14
  * Don't use or you WILL get fired from your job.
@@ -43,1225 +43,24 @@ type ViewDimensionToDimension = {
43
43
  cube: '2d';
44
44
  'cube-array': '2d';
45
45
  };
46
- /**
47
- * https://www.w3.org/TR/WGSL/#storage-texel-formats
48
- */
49
46
  type StorageTextureFormats = 'rgba8unorm' | 'rgba8snorm' | 'rgba8uint' | 'rgba8sint' | 'rgba16unorm' | 'rgba16snorm' | 'rgba16uint' | 'rgba16sint' | 'rgba16float' | 'rg8unorm' | 'rg8snorm' | 'rg8uint' | 'rg8sint' | 'rg16unorm' | 'rg16snorm' | 'rg16uint' | 'rg16sint' | 'rg16float' | 'r32uint' | 'r32sint' | 'r32float' | 'rg32uint' | 'rg32sint' | 'rg32float' | 'rgba32uint' | 'rgba32sint' | 'rgba32float' | 'bgra8unorm' | 'r8unorm' | 'r8snorm' | 'r8uint' | 'r8sint' | 'r16unorm' | 'r16snorm' | 'r16uint' | 'r16sint' | 'r16float' | 'rgb10a2unorm' | 'rgb10a2uint' | 'rg11b10ufloat';
50
- declare const textureFormats: {
51
- readonly r8unorm: {
52
- readonly channelType: F32;
53
- readonly vectorType: Vec4f;
54
- readonly texelSize: 1;
55
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
56
- readonly aspects: readonly ["color"];
57
- readonly canRenderAttachment: true;
58
- readonly canBlend: true;
59
- readonly canMultisample: true;
60
- readonly canResolve: true;
61
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
62
- };
63
- readonly r8snorm: {
64
- readonly channelType: F32;
65
- readonly vectorType: Vec4f;
66
- readonly texelSize: 1;
67
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
68
- readonly aspects: readonly ["color"];
69
- readonly canRenderAttachment: false;
70
- readonly canBlend: false;
71
- readonly canMultisample: false;
72
- readonly canResolve: false;
73
- readonly storageBindings: readonly ["write-only", "read-only"];
74
- };
75
- readonly r8uint: {
76
- readonly channelType: U32;
77
- readonly vectorType: Vec4u;
78
- readonly texelSize: 1;
79
- readonly sampleTypes: readonly ["uint"];
80
- readonly aspects: readonly ["color"];
81
- readonly canRenderAttachment: true;
82
- readonly canBlend: false;
83
- readonly canMultisample: true;
84
- readonly canResolve: false;
85
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
86
- };
87
- readonly r8sint: {
88
- readonly channelType: I32;
89
- readonly vectorType: Vec4i;
90
- readonly texelSize: 1;
91
- readonly sampleTypes: readonly ["sint"];
92
- readonly aspects: readonly ["color"];
93
- readonly canRenderAttachment: true;
94
- readonly canBlend: false;
95
- readonly canMultisample: true;
96
- readonly canResolve: false;
97
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
98
- };
99
- readonly rg8unorm: {
100
- readonly channelType: F32;
101
- readonly vectorType: Vec4f;
102
- readonly texelSize: 2;
103
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
104
- readonly aspects: readonly ["color"];
105
- readonly canRenderAttachment: true;
106
- readonly canBlend: true;
107
- readonly canMultisample: true;
108
- readonly canResolve: true;
109
- readonly storageBindings: readonly ["write-only", "read-only"];
110
- };
111
- readonly rg8snorm: {
112
- readonly channelType: F32;
113
- readonly vectorType: Vec4f;
114
- readonly texelSize: 2;
115
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
116
- readonly aspects: readonly ["color"];
117
- readonly canRenderAttachment: false;
118
- readonly canBlend: false;
119
- readonly canMultisample: false;
120
- readonly canResolve: false;
121
- readonly storageBindings: readonly ["write-only", "read-only"];
122
- };
123
- readonly rg8uint: {
124
- readonly channelType: U32;
125
- readonly vectorType: Vec4u;
126
- readonly texelSize: 2;
127
- readonly sampleTypes: readonly ["uint"];
128
- readonly aspects: readonly ["color"];
129
- readonly canRenderAttachment: true;
130
- readonly canBlend: false;
131
- readonly canMultisample: true;
132
- readonly canResolve: false;
133
- readonly storageBindings: readonly ["write-only", "read-only"];
134
- };
135
- readonly rg8sint: {
136
- readonly channelType: I32;
137
- readonly vectorType: Vec4i;
138
- readonly texelSize: 2;
139
- readonly sampleTypes: readonly ["sint"];
140
- readonly aspects: readonly ["color"];
141
- readonly canRenderAttachment: true;
142
- readonly canBlend: false;
143
- readonly canMultisample: true;
144
- readonly canResolve: false;
145
- readonly storageBindings: readonly ["write-only", "read-only"];
146
- };
147
- readonly rgba8unorm: {
148
- readonly channelType: F32;
149
- readonly vectorType: Vec4f;
150
- readonly texelSize: 4;
151
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
152
- readonly aspects: readonly ["color"];
153
- readonly canRenderAttachment: true;
154
- readonly canBlend: true;
155
- readonly canMultisample: true;
156
- readonly canResolve: true;
157
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
158
- };
159
- readonly 'rgba8unorm-srgb': {
160
- readonly channelType: F32;
161
- readonly vectorType: Vec4f;
162
- readonly texelSize: 4;
163
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
164
- readonly aspects: readonly ["color"];
165
- readonly canRenderAttachment: true;
166
- readonly canBlend: true;
167
- readonly canMultisample: true;
168
- readonly canResolve: true;
169
- readonly storageBindings: null;
170
- };
171
- readonly rgba8snorm: {
172
- readonly channelType: F32;
173
- readonly vectorType: Vec4f;
174
- readonly texelSize: 4;
175
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
176
- readonly aspects: readonly ["color"];
177
- readonly canRenderAttachment: true;
178
- readonly canBlend: false;
179
- readonly canMultisample: true;
180
- readonly canResolve: false;
181
- readonly storageBindings: readonly ["write-only", "read-only"];
182
- };
183
- readonly rgba8uint: {
184
- readonly channelType: U32;
185
- readonly vectorType: Vec4u;
186
- readonly texelSize: 4;
187
- readonly sampleTypes: readonly ["uint"];
188
- readonly aspects: readonly ["color"];
189
- readonly canRenderAttachment: true;
190
- readonly canBlend: false;
191
- readonly canMultisample: true;
192
- readonly canResolve: false;
193
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
194
- };
195
- readonly rgba8sint: {
196
- readonly channelType: I32;
197
- readonly vectorType: Vec4i;
198
- readonly texelSize: 4;
199
- readonly sampleTypes: readonly ["sint"];
200
- readonly aspects: readonly ["color"];
201
- readonly canRenderAttachment: true;
202
- readonly canBlend: false;
203
- readonly canMultisample: true;
204
- readonly canResolve: false;
205
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
206
- };
207
- readonly bgra8unorm: {
208
- readonly channelType: F32;
209
- readonly vectorType: Vec4f;
210
- readonly texelSize: 4;
211
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
212
- readonly aspects: readonly ["color"];
213
- readonly canRenderAttachment: true;
214
- readonly canBlend: true;
215
- readonly canMultisample: true;
216
- readonly canResolve: true;
217
- readonly storageBindings: readonly ["write-only"];
218
- };
219
- readonly 'bgra8unorm-srgb': {
220
- readonly channelType: F32;
221
- readonly vectorType: Vec4f;
222
- readonly texelSize: 4;
223
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
224
- readonly aspects: readonly ["color"];
225
- readonly canRenderAttachment: true;
226
- readonly canBlend: true;
227
- readonly canMultisample: true;
228
- readonly canResolve: true;
229
- readonly storageBindings: null;
230
- };
231
- readonly r16unorm: {
232
- readonly channelType: F32;
233
- readonly vectorType: Vec4f;
234
- readonly texelSize: 2;
235
- readonly sampleTypes: readonly ["unfilterable-float"];
236
- readonly aspects: readonly ["color"];
237
- readonly canRenderAttachment: true;
238
- readonly canBlend: true;
239
- readonly canMultisample: true;
240
- readonly canResolve: false;
241
- readonly storageBindings: readonly ["write-only", "read-only"];
242
- };
243
- readonly r16snorm: {
244
- readonly channelType: F32;
245
- readonly vectorType: Vec4f;
246
- readonly texelSize: 2;
247
- readonly sampleTypes: readonly ["unfilterable-float"];
248
- readonly aspects: readonly ["color"];
249
- readonly canRenderAttachment: true;
250
- readonly canBlend: true;
251
- readonly canMultisample: true;
252
- readonly canResolve: false;
253
- readonly storageBindings: readonly ["write-only", "read-only"];
254
- };
255
- readonly r16uint: {
256
- readonly channelType: U32;
257
- readonly vectorType: Vec4u;
258
- readonly texelSize: 2;
259
- readonly sampleTypes: readonly ["uint"];
260
- readonly aspects: readonly ["color"];
261
- readonly canRenderAttachment: true;
262
- readonly canBlend: false;
263
- readonly canMultisample: true;
264
- readonly canResolve: false;
265
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
266
- };
267
- readonly r16sint: {
268
- readonly channelType: I32;
269
- readonly vectorType: Vec4i;
270
- readonly texelSize: 2;
271
- readonly sampleTypes: readonly ["sint"];
272
- readonly aspects: readonly ["color"];
273
- readonly canRenderAttachment: true;
274
- readonly canBlend: false;
275
- readonly canMultisample: true;
276
- readonly canResolve: false;
277
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
278
- };
279
- readonly r16float: {
280
- readonly channelType: F32;
281
- readonly vectorType: Vec4f;
282
- readonly texelSize: 2;
283
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
284
- readonly aspects: readonly ["color"];
285
- readonly canRenderAttachment: true;
286
- readonly canBlend: true;
287
- readonly canMultisample: true;
288
- readonly canResolve: true;
289
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
290
- };
291
- readonly rg16unorm: {
292
- readonly channelType: F32;
293
- readonly vectorType: Vec4f;
294
- readonly texelSize: 4;
295
- readonly sampleTypes: readonly ["unfilterable-float"];
296
- readonly aspects: readonly ["color"];
297
- readonly canRenderAttachment: true;
298
- readonly canBlend: true;
299
- readonly canMultisample: true;
300
- readonly canResolve: false;
301
- readonly storageBindings: readonly ["write-only", "read-only"];
302
- };
303
- readonly rg16snorm: {
304
- readonly channelType: F32;
305
- readonly vectorType: Vec4f;
306
- readonly texelSize: 4;
307
- readonly sampleTypes: readonly ["unfilterable-float"];
308
- readonly aspects: readonly ["color"];
309
- readonly canRenderAttachment: true;
310
- readonly canBlend: true;
311
- readonly canMultisample: true;
312
- readonly canResolve: false;
313
- readonly storageBindings: readonly ["write-only", "read-only"];
314
- };
315
- readonly rg16uint: {
316
- readonly channelType: U32;
317
- readonly vectorType: Vec4u;
318
- readonly texelSize: 4;
319
- readonly sampleTypes: readonly ["uint"];
320
- readonly aspects: readonly ["color"];
321
- readonly canRenderAttachment: true;
322
- readonly canBlend: false;
323
- readonly canMultisample: true;
324
- readonly canResolve: false;
325
- readonly storageBindings: readonly ["write-only", "read-only"];
326
- };
327
- readonly rg16sint: {
328
- readonly channelType: I32;
329
- readonly vectorType: Vec4i;
330
- readonly texelSize: 4;
331
- readonly sampleTypes: readonly ["sint"];
332
- readonly aspects: readonly ["color"];
333
- readonly canRenderAttachment: true;
334
- readonly canBlend: false;
335
- readonly canMultisample: true;
336
- readonly canResolve: false;
337
- readonly storageBindings: readonly ["write-only", "read-only"];
338
- };
339
- readonly rg16float: {
340
- readonly channelType: F32;
341
- readonly vectorType: Vec4f;
342
- readonly texelSize: 4;
343
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
344
- readonly aspects: readonly ["color"];
345
- readonly canRenderAttachment: true;
346
- readonly canBlend: true;
347
- readonly canMultisample: true;
348
- readonly canResolve: true;
349
- readonly storageBindings: readonly ["write-only", "read-only"];
350
- };
351
- readonly rgba16unorm: {
352
- readonly channelType: F32;
353
- readonly vectorType: Vec4f;
354
- readonly texelSize: 8;
355
- readonly sampleTypes: readonly ["unfilterable-float"];
356
- readonly aspects: readonly ["color"];
357
- readonly canRenderAttachment: true;
358
- readonly canBlend: true;
359
- readonly canMultisample: true;
360
- readonly canResolve: false;
361
- readonly storageBindings: readonly ["write-only", "read-only"];
362
- };
363
- readonly rgba16snorm: {
364
- readonly channelType: F32;
365
- readonly vectorType: Vec4f;
366
- readonly texelSize: 8;
367
- readonly sampleTypes: readonly ["unfilterable-float"];
368
- readonly aspects: readonly ["color"];
369
- readonly canRenderAttachment: true;
370
- readonly canBlend: true;
371
- readonly canMultisample: true;
372
- readonly canResolve: false;
373
- readonly storageBindings: readonly ["write-only", "read-only"];
374
- };
375
- readonly rgba16uint: {
376
- readonly channelType: U32;
377
- readonly vectorType: Vec4u;
378
- readonly texelSize: 8;
379
- readonly sampleTypes: readonly ["uint"];
380
- readonly aspects: readonly ["color"];
381
- readonly canRenderAttachment: true;
382
- readonly canBlend: false;
383
- readonly canMultisample: true;
384
- readonly canResolve: false;
385
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
386
- };
387
- readonly rgba16sint: {
388
- readonly channelType: I32;
389
- readonly vectorType: Vec4i;
390
- readonly texelSize: 8;
391
- readonly sampleTypes: readonly ["sint"];
392
- readonly aspects: readonly ["color"];
393
- readonly canRenderAttachment: true;
394
- readonly canBlend: false;
395
- readonly canMultisample: true;
396
- readonly canResolve: false;
397
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
398
- };
399
- readonly rgba16float: {
400
- readonly channelType: F32;
401
- readonly vectorType: Vec4f;
402
- readonly texelSize: 8;
403
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
404
- readonly aspects: readonly ["color"];
405
- readonly canRenderAttachment: true;
406
- readonly canBlend: true;
407
- readonly canMultisample: true;
408
- readonly canResolve: true;
409
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
410
- };
411
- readonly r32uint: {
412
- readonly channelType: U32;
413
- readonly vectorType: Vec4u;
414
- readonly texelSize: 4;
415
- readonly sampleTypes: readonly ["uint"];
416
- readonly aspects: readonly ["color"];
417
- readonly canRenderAttachment: true;
418
- readonly canBlend: false;
419
- readonly canMultisample: false;
420
- readonly canResolve: false;
421
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
422
- };
423
- readonly r32sint: {
424
- readonly channelType: I32;
425
- readonly vectorType: Vec4i;
426
- readonly texelSize: 4;
427
- readonly sampleTypes: readonly ["sint"];
428
- readonly aspects: readonly ["color"];
429
- readonly canRenderAttachment: true;
430
- readonly canBlend: false;
431
- readonly canMultisample: false;
432
- readonly canResolve: false;
433
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
434
- };
435
- readonly r32float: {
436
- readonly channelType: F32;
437
- readonly vectorType: Vec4f;
438
- readonly texelSize: 4;
439
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
440
- readonly aspects: readonly ["color"];
441
- readonly canRenderAttachment: true;
442
- readonly canBlend: true;
443
- readonly canMultisample: true;
444
- readonly canResolve: false;
445
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
446
- };
447
- readonly rg32uint: {
448
- readonly channelType: U32;
449
- readonly vectorType: Vec4u;
450
- readonly texelSize: 8;
451
- readonly sampleTypes: readonly ["uint"];
452
- readonly aspects: readonly ["color"];
453
- readonly canRenderAttachment: true;
454
- readonly canBlend: false;
455
- readonly canMultisample: false;
456
- readonly canResolve: false;
457
- readonly storageBindings: readonly ["write-only", "read-only"];
458
- };
459
- readonly rg32sint: {
460
- readonly channelType: I32;
461
- readonly vectorType: Vec4i;
462
- readonly texelSize: 8;
463
- readonly sampleTypes: readonly ["sint"];
464
- readonly aspects: readonly ["color"];
465
- readonly canRenderAttachment: true;
466
- readonly canBlend: false;
467
- readonly canMultisample: false;
468
- readonly canResolve: false;
469
- readonly storageBindings: readonly ["write-only", "read-only"];
470
- };
471
- readonly rg32float: {
472
- readonly channelType: F32;
473
- readonly vectorType: Vec4f;
474
- readonly texelSize: 8;
475
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
476
- readonly aspects: readonly ["color"];
477
- readonly canRenderAttachment: true;
478
- readonly canBlend: true;
479
- readonly canMultisample: false;
480
- readonly canResolve: false;
481
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
482
- };
483
- readonly rgba32uint: {
484
- readonly channelType: U32;
485
- readonly vectorType: Vec4u;
486
- readonly texelSize: 16;
487
- readonly sampleTypes: readonly ["uint"];
488
- readonly aspects: readonly ["color"];
489
- readonly canRenderAttachment: true;
490
- readonly canBlend: false;
491
- readonly canMultisample: false;
492
- readonly canResolve: false;
493
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
494
- };
495
- readonly rgba32sint: {
496
- readonly channelType: I32;
497
- readonly vectorType: Vec4i;
498
- readonly texelSize: 16;
499
- readonly sampleTypes: readonly ["sint"];
500
- readonly aspects: readonly ["color"];
501
- readonly canRenderAttachment: true;
502
- readonly canBlend: false;
503
- readonly canMultisample: false;
504
- readonly canResolve: false;
505
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
506
- };
507
- readonly rgba32float: {
508
- readonly channelType: F32;
509
- readonly vectorType: Vec4f;
510
- readonly texelSize: 16;
511
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
512
- readonly aspects: readonly ["color"];
513
- readonly canRenderAttachment: true;
514
- readonly canBlend: true;
515
- readonly canMultisample: false;
516
- readonly canResolve: false;
517
- readonly storageBindings: readonly ["write-only", "read-only", "read-write"];
518
- };
519
- readonly rgb10a2uint: {
520
- readonly channelType: U32;
521
- readonly vectorType: Vec4u;
522
- readonly texelSize: 4;
523
- readonly sampleTypes: readonly ["uint"];
524
- readonly aspects: readonly ["color"];
525
- readonly canRenderAttachment: true;
526
- readonly canBlend: false;
527
- readonly canMultisample: true;
528
- readonly canResolve: false;
529
- readonly storageBindings: readonly ["write-only", "read-only"];
530
- };
531
- readonly rgb10a2unorm: {
532
- readonly channelType: F32;
533
- readonly vectorType: Vec4f;
534
- readonly texelSize: 4;
535
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
536
- readonly aspects: readonly ["color"];
537
- readonly canRenderAttachment: true;
538
- readonly canBlend: true;
539
- readonly canMultisample: true;
540
- readonly canResolve: true;
541
- readonly storageBindings: readonly ["write-only", "read-only"];
542
- };
543
- readonly rg11b10ufloat: {
544
- readonly channelType: F32;
545
- readonly vectorType: Vec4f;
546
- readonly texelSize: 4;
547
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
548
- readonly aspects: readonly ["color"];
549
- readonly canRenderAttachment: true;
550
- readonly canBlend: true;
551
- readonly canMultisample: true;
552
- readonly canResolve: true;
553
- readonly storageBindings: readonly ["write-only", "read-only"];
554
- };
555
- readonly rgb9e5ufloat: {
556
- readonly channelType: F32;
557
- readonly vectorType: Vec4f;
558
- readonly texelSize: 4;
559
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
560
- readonly aspects: readonly ["color"];
561
- readonly canRenderAttachment: false;
562
- readonly canBlend: false;
563
- readonly canMultisample: false;
564
- readonly canResolve: false;
565
- readonly storageBindings: null;
566
- };
567
- readonly stencil8: {
568
- readonly channelType: U32;
569
- readonly vectorType: Vec4u;
570
- readonly texelSize: 1;
571
- readonly sampleTypes: readonly ["uint"];
572
- readonly aspects: readonly ["stencil"];
573
- readonly canRenderAttachment: true;
574
- readonly canBlend: false;
575
- readonly canMultisample: true;
576
- readonly canResolve: false;
577
- readonly storageBindings: null;
578
- };
579
- readonly depth16unorm: {
580
- readonly channelType: F32;
581
- readonly vectorType: Vec4f;
582
- readonly texelSize: 2;
583
- readonly sampleTypes: readonly ["depth", "unfilterable-float"];
584
- readonly aspects: readonly ["depth"];
585
- readonly canRenderAttachment: true;
586
- readonly canBlend: false;
587
- readonly canMultisample: true;
588
- readonly canResolve: false;
589
- readonly storageBindings: null;
590
- };
591
- readonly depth24plus: {
592
- readonly channelType: F32;
593
- readonly vectorType: Vec4f;
594
- readonly texelSize: 4;
595
- readonly sampleTypes: readonly ["depth", "unfilterable-float"];
596
- readonly aspects: readonly ["depth"];
597
- readonly canRenderAttachment: true;
598
- readonly canBlend: false;
599
- readonly canMultisample: true;
600
- readonly canResolve: false;
601
- readonly storageBindings: null;
602
- };
603
- readonly 'depth24plus-stencil8': {
604
- readonly channelType: F32;
605
- readonly vectorType: Vec4f;
606
- readonly texelSize: 4;
607
- readonly sampleTypes: readonly ["depth", "unfilterable-float"];
608
- readonly aspects: readonly ["depth", "stencil"];
609
- readonly canRenderAttachment: true;
610
- readonly canBlend: false;
611
- readonly canMultisample: true;
612
- readonly canResolve: false;
613
- readonly storageBindings: null;
614
- };
615
- readonly depth32float: {
616
- readonly channelType: F32;
617
- readonly vectorType: Vec4f;
618
- readonly texelSize: 4;
619
- readonly sampleTypes: readonly ["depth", "unfilterable-float"];
620
- readonly aspects: readonly ["depth"];
621
- readonly canRenderAttachment: true;
622
- readonly canBlend: false;
623
- readonly canMultisample: true;
624
- readonly canResolve: false;
625
- readonly storageBindings: null;
626
- };
627
- readonly 'depth32float-stencil8': {
628
- readonly channelType: F32;
629
- readonly vectorType: Vec4f;
630
- readonly texelSize: 4;
631
- readonly sampleTypes: readonly ["depth", "unfilterable-float"];
632
- readonly aspects: readonly ["depth", "stencil"];
633
- readonly canRenderAttachment: true;
634
- readonly canBlend: false;
635
- readonly canMultisample: true;
636
- readonly canResolve: false;
637
- readonly storageBindings: null;
638
- };
639
- readonly 'bc1-rgba-unorm': {
640
- readonly channelType: F32;
641
- readonly vectorType: Vec4f;
642
- readonly texelSize: 8;
643
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
644
- readonly aspects: readonly ["color"];
645
- readonly canRenderAttachment: false;
646
- readonly canBlend: false;
647
- readonly canMultisample: false;
648
- readonly canResolve: false;
649
- readonly storageBindings: null;
650
- };
651
- readonly 'bc1-rgba-unorm-srgb': {
652
- readonly channelType: F32;
653
- readonly vectorType: Vec4f;
654
- readonly texelSize: 8;
655
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
656
- readonly aspects: readonly ["color"];
657
- readonly canRenderAttachment: false;
658
- readonly canBlend: false;
659
- readonly canMultisample: false;
660
- readonly canResolve: false;
661
- readonly storageBindings: null;
662
- };
663
- readonly 'bc2-rgba-unorm': {
664
- readonly channelType: F32;
665
- readonly vectorType: Vec4f;
666
- readonly texelSize: 16;
667
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
668
- readonly aspects: readonly ["color"];
669
- readonly canRenderAttachment: false;
670
- readonly canBlend: false;
671
- readonly canMultisample: false;
672
- readonly canResolve: false;
673
- readonly storageBindings: null;
674
- };
675
- readonly 'bc2-rgba-unorm-srgb': {
676
- readonly channelType: F32;
677
- readonly vectorType: Vec4f;
678
- readonly texelSize: 16;
679
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
680
- readonly aspects: readonly ["color"];
681
- readonly canRenderAttachment: false;
682
- readonly canBlend: false;
683
- readonly canMultisample: false;
684
- readonly canResolve: false;
685
- readonly storageBindings: null;
686
- };
687
- readonly 'bc3-rgba-unorm': {
688
- readonly channelType: F32;
689
- readonly vectorType: Vec4f;
690
- readonly texelSize: 16;
691
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
692
- readonly aspects: readonly ["color"];
693
- readonly canRenderAttachment: false;
694
- readonly canBlend: false;
695
- readonly canMultisample: false;
696
- readonly canResolve: false;
697
- readonly storageBindings: null;
698
- };
699
- readonly 'bc3-rgba-unorm-srgb': {
700
- readonly channelType: F32;
701
- readonly vectorType: Vec4f;
702
- readonly texelSize: 16;
703
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
704
- readonly aspects: readonly ["color"];
705
- readonly canRenderAttachment: false;
706
- readonly canBlend: false;
707
- readonly canMultisample: false;
708
- readonly canResolve: false;
709
- readonly storageBindings: null;
710
- };
711
- readonly 'bc4-r-unorm': {
712
- readonly channelType: F32;
713
- readonly vectorType: Vec4f;
714
- readonly texelSize: 8;
715
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
716
- readonly aspects: readonly ["color"];
717
- readonly canRenderAttachment: false;
718
- readonly canBlend: false;
719
- readonly canMultisample: false;
720
- readonly canResolve: false;
721
- readonly storageBindings: null;
722
- };
723
- readonly 'bc4-r-snorm': {
724
- readonly channelType: F32;
725
- readonly vectorType: Vec4f;
726
- readonly texelSize: 8;
727
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
728
- readonly aspects: readonly ["color"];
729
- readonly canRenderAttachment: false;
730
- readonly canBlend: false;
731
- readonly canMultisample: false;
732
- readonly canResolve: false;
733
- readonly storageBindings: null;
734
- };
735
- readonly 'bc5-rg-unorm': {
736
- readonly channelType: F32;
737
- readonly vectorType: Vec4f;
738
- readonly texelSize: 16;
739
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
740
- readonly aspects: readonly ["color"];
741
- readonly canRenderAttachment: false;
742
- readonly canBlend: false;
743
- readonly canMultisample: false;
744
- readonly canResolve: false;
745
- readonly storageBindings: null;
746
- };
747
- readonly 'bc5-rg-snorm': {
748
- readonly channelType: F32;
749
- readonly vectorType: Vec4f;
750
- readonly texelSize: 16;
751
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
752
- readonly aspects: readonly ["color"];
753
- readonly canRenderAttachment: false;
754
- readonly canBlend: false;
755
- readonly canMultisample: false;
756
- readonly canResolve: false;
757
- readonly storageBindings: null;
758
- };
759
- readonly 'bc6h-rgb-ufloat': {
760
- readonly channelType: F32;
761
- readonly vectorType: Vec4f;
762
- readonly texelSize: 16;
763
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
764
- readonly aspects: readonly ["color"];
765
- readonly canRenderAttachment: false;
766
- readonly canBlend: false;
767
- readonly canMultisample: false;
768
- readonly canResolve: false;
769
- readonly storageBindings: null;
770
- };
771
- readonly 'bc6h-rgb-float': {
772
- readonly channelType: F32;
773
- readonly vectorType: Vec4f;
774
- readonly texelSize: 16;
775
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
776
- readonly aspects: readonly ["color"];
777
- readonly canRenderAttachment: false;
778
- readonly canBlend: false;
779
- readonly canMultisample: false;
780
- readonly canResolve: false;
781
- readonly storageBindings: null;
782
- };
783
- readonly 'bc7-rgba-unorm': {
784
- readonly channelType: F32;
785
- readonly vectorType: Vec4f;
786
- readonly texelSize: 16;
787
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
788
- readonly aspects: readonly ["color"];
789
- readonly canRenderAttachment: false;
790
- readonly canBlend: false;
791
- readonly canMultisample: false;
792
- readonly canResolve: false;
793
- readonly storageBindings: null;
794
- };
795
- readonly 'bc7-rgba-unorm-srgb': {
796
- readonly channelType: F32;
797
- readonly vectorType: Vec4f;
798
- readonly texelSize: 16;
799
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
800
- readonly aspects: readonly ["color"];
801
- readonly canRenderAttachment: false;
802
- readonly canBlend: false;
803
- readonly canMultisample: false;
804
- readonly canResolve: false;
805
- readonly storageBindings: null;
806
- };
807
- readonly 'etc2-rgb8unorm': {
808
- readonly channelType: F32;
809
- readonly vectorType: Vec4f;
810
- readonly texelSize: 8;
811
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
812
- readonly aspects: readonly ["color"];
813
- readonly canRenderAttachment: false;
814
- readonly canBlend: false;
815
- readonly canMultisample: false;
816
- readonly canResolve: false;
817
- readonly storageBindings: null;
818
- };
819
- readonly 'etc2-rgb8unorm-srgb': {
820
- readonly channelType: F32;
821
- readonly vectorType: Vec4f;
822
- readonly texelSize: 8;
823
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
824
- readonly aspects: readonly ["color"];
825
- readonly canRenderAttachment: false;
826
- readonly canBlend: false;
827
- readonly canMultisample: false;
828
- readonly canResolve: false;
829
- readonly storageBindings: null;
830
- };
831
- readonly 'etc2-rgb8a1unorm': {
832
- readonly channelType: F32;
833
- readonly vectorType: Vec4f;
834
- readonly texelSize: 8;
835
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
836
- readonly aspects: readonly ["color"];
837
- readonly canRenderAttachment: false;
838
- readonly canBlend: false;
839
- readonly canMultisample: false;
840
- readonly canResolve: false;
841
- readonly storageBindings: null;
842
- };
843
- readonly 'etc2-rgb8a1unorm-srgb': {
844
- readonly channelType: F32;
845
- readonly vectorType: Vec4f;
846
- readonly texelSize: 8;
847
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
848
- readonly aspects: readonly ["color"];
849
- readonly canRenderAttachment: false;
850
- readonly canBlend: false;
851
- readonly canMultisample: false;
852
- readonly canResolve: false;
853
- readonly storageBindings: null;
854
- };
855
- readonly 'etc2-rgba8unorm': {
856
- readonly channelType: F32;
857
- readonly vectorType: Vec4f;
858
- readonly texelSize: 16;
859
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
860
- readonly aspects: readonly ["color"];
861
- readonly canRenderAttachment: false;
862
- readonly canBlend: false;
863
- readonly canMultisample: false;
864
- readonly canResolve: false;
865
- readonly storageBindings: null;
866
- };
867
- readonly 'etc2-rgba8unorm-srgb': {
868
- readonly channelType: F32;
869
- readonly vectorType: Vec4f;
870
- readonly texelSize: 16;
871
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
872
- readonly aspects: readonly ["color"];
873
- readonly canRenderAttachment: false;
874
- readonly canBlend: false;
875
- readonly canMultisample: false;
876
- readonly canResolve: false;
877
- readonly storageBindings: null;
878
- };
879
- readonly 'eac-r11unorm': {
880
- readonly channelType: F32;
881
- readonly vectorType: Vec4f;
882
- readonly texelSize: 8;
883
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
884
- readonly aspects: readonly ["color"];
885
- readonly canRenderAttachment: false;
886
- readonly canBlend: false;
887
- readonly canMultisample: false;
888
- readonly canResolve: false;
889
- readonly storageBindings: null;
890
- };
891
- readonly 'eac-r11snorm': {
892
- readonly channelType: F32;
893
- readonly vectorType: Vec4f;
894
- readonly texelSize: 8;
895
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
896
- readonly aspects: readonly ["color"];
897
- readonly canRenderAttachment: false;
898
- readonly canBlend: false;
899
- readonly canMultisample: false;
900
- readonly canResolve: false;
901
- readonly storageBindings: null;
902
- };
903
- readonly 'eac-rg11unorm': {
904
- readonly channelType: F32;
905
- readonly vectorType: Vec4f;
906
- readonly texelSize: 16;
907
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
908
- readonly aspects: readonly ["color"];
909
- readonly canRenderAttachment: false;
910
- readonly canBlend: false;
911
- readonly canMultisample: false;
912
- readonly canResolve: false;
913
- readonly storageBindings: null;
914
- };
915
- readonly 'eac-rg11snorm': {
916
- readonly channelType: F32;
917
- readonly vectorType: Vec4f;
918
- readonly texelSize: 16;
919
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
920
- readonly aspects: readonly ["color"];
921
- readonly canRenderAttachment: false;
922
- readonly canBlend: false;
923
- readonly canMultisample: false;
924
- readonly canResolve: false;
925
- readonly storageBindings: null;
926
- };
927
- readonly 'astc-4x4-unorm': {
928
- readonly channelType: F32;
929
- readonly vectorType: Vec4f;
930
- readonly texelSize: 16;
931
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
932
- readonly aspects: readonly ["color"];
933
- readonly canRenderAttachment: false;
934
- readonly canBlend: false;
935
- readonly canMultisample: false;
936
- readonly canResolve: false;
937
- readonly storageBindings: null;
938
- };
939
- readonly 'astc-4x4-unorm-srgb': {
940
- readonly channelType: F32;
941
- readonly vectorType: Vec4f;
942
- readonly texelSize: 16;
943
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
944
- readonly aspects: readonly ["color"];
945
- readonly canRenderAttachment: false;
946
- readonly canBlend: false;
947
- readonly canMultisample: false;
948
- readonly canResolve: false;
949
- readonly storageBindings: null;
950
- };
951
- readonly 'astc-5x4-unorm': {
952
- readonly channelType: F32;
953
- readonly vectorType: Vec4f;
954
- readonly texelSize: 16;
955
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
956
- readonly aspects: readonly ["color"];
957
- readonly canRenderAttachment: false;
958
- readonly canBlend: false;
959
- readonly canMultisample: false;
960
- readonly canResolve: false;
961
- readonly storageBindings: null;
962
- };
963
- readonly 'astc-5x4-unorm-srgb': {
964
- readonly channelType: F32;
965
- readonly vectorType: Vec4f;
966
- readonly texelSize: 16;
967
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
968
- readonly aspects: readonly ["color"];
969
- readonly canRenderAttachment: false;
970
- readonly canBlend: false;
971
- readonly canMultisample: false;
972
- readonly canResolve: false;
973
- readonly storageBindings: null;
974
- };
975
- readonly 'astc-5x5-unorm': {
976
- readonly channelType: F32;
977
- readonly vectorType: Vec4f;
978
- readonly texelSize: 16;
979
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
980
- readonly aspects: readonly ["color"];
981
- readonly canRenderAttachment: false;
982
- readonly canBlend: false;
983
- readonly canMultisample: false;
984
- readonly canResolve: false;
985
- readonly storageBindings: null;
986
- };
987
- readonly 'astc-5x5-unorm-srgb': {
988
- readonly channelType: F32;
989
- readonly vectorType: Vec4f;
990
- readonly texelSize: 16;
991
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
992
- readonly aspects: readonly ["color"];
993
- readonly canRenderAttachment: false;
994
- readonly canBlend: false;
995
- readonly canMultisample: false;
996
- readonly canResolve: false;
997
- readonly storageBindings: null;
998
- };
999
- readonly 'astc-6x5-unorm': {
1000
- readonly channelType: F32;
1001
- readonly vectorType: Vec4f;
1002
- readonly texelSize: 16;
1003
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1004
- readonly aspects: readonly ["color"];
1005
- readonly canRenderAttachment: false;
1006
- readonly canBlend: false;
1007
- readonly canMultisample: false;
1008
- readonly canResolve: false;
1009
- readonly storageBindings: null;
1010
- };
1011
- readonly 'astc-6x5-unorm-srgb': {
1012
- readonly channelType: F32;
1013
- readonly vectorType: Vec4f;
1014
- readonly texelSize: 16;
1015
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1016
- readonly aspects: readonly ["color"];
1017
- readonly canRenderAttachment: false;
1018
- readonly canBlend: false;
1019
- readonly canMultisample: false;
1020
- readonly canResolve: false;
1021
- readonly storageBindings: null;
1022
- };
1023
- readonly 'astc-6x6-unorm': {
1024
- readonly channelType: F32;
1025
- readonly vectorType: Vec4f;
1026
- readonly texelSize: 16;
1027
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1028
- readonly aspects: readonly ["color"];
1029
- readonly canRenderAttachment: false;
1030
- readonly canBlend: false;
1031
- readonly canMultisample: false;
1032
- readonly canResolve: false;
1033
- readonly storageBindings: null;
1034
- };
1035
- readonly 'astc-6x6-unorm-srgb': {
1036
- readonly channelType: F32;
1037
- readonly vectorType: Vec4f;
1038
- readonly texelSize: 16;
1039
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1040
- readonly aspects: readonly ["color"];
1041
- readonly canRenderAttachment: false;
1042
- readonly canBlend: false;
1043
- readonly canMultisample: false;
1044
- readonly canResolve: false;
1045
- readonly storageBindings: null;
1046
- };
1047
- readonly 'astc-8x5-unorm': {
1048
- readonly channelType: F32;
1049
- readonly vectorType: Vec4f;
1050
- readonly texelSize: 16;
1051
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1052
- readonly aspects: readonly ["color"];
1053
- readonly canRenderAttachment: false;
1054
- readonly canBlend: false;
1055
- readonly canMultisample: false;
1056
- readonly canResolve: false;
1057
- readonly storageBindings: null;
1058
- };
1059
- readonly 'astc-8x5-unorm-srgb': {
1060
- readonly channelType: F32;
1061
- readonly vectorType: Vec4f;
1062
- readonly texelSize: 16;
1063
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1064
- readonly aspects: readonly ["color"];
1065
- readonly canRenderAttachment: false;
1066
- readonly canBlend: false;
1067
- readonly canMultisample: false;
1068
- readonly canResolve: false;
1069
- readonly storageBindings: null;
1070
- };
1071
- readonly 'astc-8x6-unorm': {
1072
- readonly channelType: F32;
1073
- readonly vectorType: Vec4f;
1074
- readonly texelSize: 16;
1075
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1076
- readonly aspects: readonly ["color"];
1077
- readonly canRenderAttachment: false;
1078
- readonly canBlend: false;
1079
- readonly canMultisample: false;
1080
- readonly canResolve: false;
1081
- readonly storageBindings: null;
1082
- };
1083
- readonly 'astc-8x6-unorm-srgb': {
1084
- readonly channelType: F32;
1085
- readonly vectorType: Vec4f;
1086
- readonly texelSize: 16;
1087
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1088
- readonly aspects: readonly ["color"];
1089
- readonly canRenderAttachment: false;
1090
- readonly canBlend: false;
1091
- readonly canMultisample: false;
1092
- readonly canResolve: false;
1093
- readonly storageBindings: null;
1094
- };
1095
- readonly 'astc-8x8-unorm': {
1096
- readonly channelType: F32;
1097
- readonly vectorType: Vec4f;
1098
- readonly texelSize: 16;
1099
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1100
- readonly aspects: readonly ["color"];
1101
- readonly canRenderAttachment: false;
1102
- readonly canBlend: false;
1103
- readonly canMultisample: false;
1104
- readonly canResolve: false;
1105
- readonly storageBindings: null;
1106
- };
1107
- readonly 'astc-8x8-unorm-srgb': {
1108
- readonly channelType: F32;
1109
- readonly vectorType: Vec4f;
1110
- readonly texelSize: 16;
1111
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1112
- readonly aspects: readonly ["color"];
1113
- readonly canRenderAttachment: false;
1114
- readonly canBlend: false;
1115
- readonly canMultisample: false;
1116
- readonly canResolve: false;
1117
- readonly storageBindings: null;
1118
- };
1119
- readonly 'astc-10x5-unorm': {
1120
- readonly channelType: F32;
1121
- readonly vectorType: Vec4f;
1122
- readonly texelSize: 16;
1123
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1124
- readonly aspects: readonly ["color"];
1125
- readonly canRenderAttachment: false;
1126
- readonly canBlend: false;
1127
- readonly canMultisample: false;
1128
- readonly canResolve: false;
1129
- readonly storageBindings: null;
1130
- };
1131
- readonly 'astc-10x5-unorm-srgb': {
1132
- readonly channelType: F32;
1133
- readonly vectorType: Vec4f;
1134
- readonly texelSize: 16;
1135
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1136
- readonly aspects: readonly ["color"];
1137
- readonly canRenderAttachment: false;
1138
- readonly canBlend: false;
1139
- readonly canMultisample: false;
1140
- readonly canResolve: false;
1141
- readonly storageBindings: null;
1142
- };
1143
- readonly 'astc-10x6-unorm': {
1144
- readonly channelType: F32;
1145
- readonly vectorType: Vec4f;
1146
- readonly texelSize: 16;
1147
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1148
- readonly aspects: readonly ["color"];
1149
- readonly canRenderAttachment: false;
1150
- readonly canBlend: false;
1151
- readonly canMultisample: false;
1152
- readonly canResolve: false;
1153
- readonly storageBindings: null;
1154
- };
1155
- readonly 'astc-10x6-unorm-srgb': {
1156
- readonly channelType: F32;
1157
- readonly vectorType: Vec4f;
1158
- readonly texelSize: 16;
1159
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1160
- readonly aspects: readonly ["color"];
1161
- readonly canRenderAttachment: false;
1162
- readonly canBlend: false;
1163
- readonly canMultisample: false;
1164
- readonly canResolve: false;
1165
- readonly storageBindings: null;
1166
- };
1167
- readonly 'astc-10x8-unorm': {
1168
- readonly channelType: F32;
1169
- readonly vectorType: Vec4f;
1170
- readonly texelSize: 16;
1171
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1172
- readonly aspects: readonly ["color"];
1173
- readonly canRenderAttachment: false;
1174
- readonly canBlend: false;
1175
- readonly canMultisample: false;
1176
- readonly canResolve: false;
1177
- readonly storageBindings: null;
1178
- };
1179
- readonly 'astc-10x8-unorm-srgb': {
1180
- readonly channelType: F32;
1181
- readonly vectorType: Vec4f;
1182
- readonly texelSize: 16;
1183
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1184
- readonly aspects: readonly ["color"];
1185
- readonly canRenderAttachment: false;
1186
- readonly canBlend: false;
1187
- readonly canMultisample: false;
1188
- readonly canResolve: false;
1189
- readonly storageBindings: null;
1190
- };
1191
- readonly 'astc-10x10-unorm': {
1192
- readonly channelType: F32;
1193
- readonly vectorType: Vec4f;
1194
- readonly texelSize: 16;
1195
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1196
- readonly aspects: readonly ["color"];
1197
- readonly canRenderAttachment: false;
1198
- readonly canBlend: false;
1199
- readonly canMultisample: false;
1200
- readonly canResolve: false;
1201
- readonly storageBindings: null;
1202
- };
1203
- readonly 'astc-10x10-unorm-srgb': {
1204
- readonly channelType: F32;
1205
- readonly vectorType: Vec4f;
1206
- readonly texelSize: 16;
1207
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1208
- readonly aspects: readonly ["color"];
1209
- readonly canRenderAttachment: false;
1210
- readonly canBlend: false;
1211
- readonly canMultisample: false;
1212
- readonly canResolve: false;
1213
- readonly storageBindings: null;
1214
- };
1215
- readonly 'astc-12x10-unorm': {
1216
- readonly channelType: F32;
1217
- readonly vectorType: Vec4f;
1218
- readonly texelSize: 16;
1219
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1220
- readonly aspects: readonly ["color"];
1221
- readonly canRenderAttachment: false;
1222
- readonly canBlend: false;
1223
- readonly canMultisample: false;
1224
- readonly canResolve: false;
1225
- readonly storageBindings: null;
1226
- };
1227
- readonly 'astc-12x10-unorm-srgb': {
1228
- readonly channelType: F32;
1229
- readonly vectorType: Vec4f;
1230
- readonly texelSize: 16;
1231
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1232
- readonly aspects: readonly ["color"];
1233
- readonly canRenderAttachment: false;
1234
- readonly canBlend: false;
1235
- readonly canMultisample: false;
1236
- readonly canResolve: false;
1237
- readonly storageBindings: null;
1238
- };
1239
- readonly 'astc-12x12-unorm': {
1240
- readonly channelType: F32;
1241
- readonly vectorType: Vec4f;
1242
- readonly texelSize: 16;
1243
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1244
- readonly aspects: readonly ["color"];
1245
- readonly canRenderAttachment: false;
1246
- readonly canBlend: false;
1247
- readonly canMultisample: false;
1248
- readonly canResolve: false;
1249
- readonly storageBindings: null;
1250
- };
1251
- readonly 'astc-12x12-unorm-srgb': {
1252
- readonly channelType: F32;
1253
- readonly vectorType: Vec4f;
1254
- readonly texelSize: 16;
1255
- readonly sampleTypes: readonly ["float", "unfilterable-float"];
1256
- readonly aspects: readonly ["color"];
1257
- readonly canRenderAttachment: false;
1258
- readonly canBlend: false;
1259
- readonly canMultisample: false;
1260
- readonly canResolve: false;
1261
- readonly storageBindings: null;
47
+ type ParseChannelType<T extends GPUTextureFormat> = T extends `${string}uint${string}` ? 'u32' : T extends `${string}sint${string}` ? 'i32' : 'f32';
48
+ type ChannelTypeToSampleType<T extends 'f32' | 'i32' | 'u32'> = {
49
+ f32: F32;
50
+ i32: I32;
51
+ u32: U32;
52
+ }[T];
53
+ type ChannelTypeToVectorType<T extends 'f32' | 'i32' | 'u32'> = {
54
+ f32: Vec4f;
55
+ i32: Vec4i;
56
+ u32: Vec4u;
57
+ }[T];
58
+ type TextureFormats = {
59
+ [K in GPUTextureFormat]: {
60
+ channelType: ChannelTypeToSampleType<ParseChannelType<K>>;
61
+ vectorType: ChannelTypeToVectorType<ParseChannelType<K>>;
1262
62
  };
1263
63
  };
1264
- type TextureFormats = typeof textureFormats;
1265
64
 
1266
65
  declare const $internal: unique symbol;
1267
66
  /**
@@ -1447,7 +246,7 @@ interface WgslTextureDepthMultisampled2d extends WgslTexture<{
1447
246
  multisampled: true;
1448
247
  }> {
1449
248
  readonly type: 'texture_depth_multisampled_2d';
1450
- readonly [$repr]: textureMultisampled2d<F32>;
249
+ readonly [$repr]: textureDepthMultisampled2d;
1451
250
  }
1452
251
  interface WgslTextureDepth2dArray extends WgslTexture<{
1453
252
  dimension: '2d-array';
@@ -1455,7 +254,7 @@ interface WgslTextureDepth2dArray extends WgslTexture<{
1455
254
  multisampled: false;
1456
255
  }> {
1457
256
  readonly type: 'texture_depth_2d_array';
1458
- readonly [$repr]: texture2dArray<F32>;
257
+ readonly [$repr]: textureDepth2dArray;
1459
258
  }
1460
259
  interface WgslTextureDepthCube extends WgslTexture<{
1461
260
  dimension: 'cube';
@@ -1463,7 +262,7 @@ interface WgslTextureDepthCube extends WgslTexture<{
1463
262
  multisampled: false;
1464
263
  }> {
1465
264
  readonly type: 'texture_depth_cube';
1466
- readonly [$repr]: textureCube<F32>;
265
+ readonly [$repr]: textureDepthCube;
1467
266
  }
1468
267
  interface WgslTextureDepthCubeArray extends WgslTexture<{
1469
268
  dimension: 'cube-array';
@@ -1471,7 +270,7 @@ interface WgslTextureDepthCubeArray extends WgslTexture<{
1471
270
  multisampled: false;
1472
271
  }> {
1473
272
  readonly type: 'texture_depth_cube_array';
1474
- readonly [$repr]: textureCubeArray<F32>;
273
+ readonly [$repr]: textureDepthCubeArray;
1475
274
  }
1476
275
  interface WgslStorageTexture1d<TFormat extends StorageTextureFormats = StorageTextureFormats, TAccess extends GPUStorageTextureAccess = GPUStorageTextureAccess> extends WgslStorageTexture<{
1477
276
  dimension: '1d';
@@ -2038,6 +837,7 @@ interface UnknownData {
2038
837
  }
2039
838
  declare const UnknownData: UnknownData;
2040
839
 
840
+ type Origin = 'uniform' | 'readonly' | 'mutable' | 'workgroup' | 'private' | 'function' | 'this-function' | 'handle' | 'argument' | 'runtime' | 'constant' | 'constant-tgpu-const-ref' | 'runtime-tgpu-const-ref';
2041
841
  interface Snippet {
2042
842
  readonly value: unknown;
2043
843
  /**
@@ -2045,6 +845,7 @@ interface Snippet {
2045
845
  * E.g. `1.1` is assignable to `f32`, but `1.1` itself is an abstract float
2046
846
  */
2047
847
  readonly dataType: AnyData | UnknownData;
848
+ readonly origin: Origin;
2048
849
  }
2049
850
  interface ResolvedSnippet {
2050
851
  readonly value: string;
@@ -2053,6 +854,7 @@ interface ResolvedSnippet {
2053
854
  * E.g. `1.1` is assignable to `f32`, but `1.1` itself is an abstract float
2054
855
  */
2055
856
  readonly dataType: AnyData;
857
+ readonly origin: Origin;
2056
858
  }
2057
859
  type MapValueToSnippet<T> = {
2058
860
  [K in keyof T]: Snippet;
@@ -2357,17 +1159,7 @@ type TgpuComputeFnShell<ComputeIn extends IORecord<AnyComputeBuiltin>> = TgpuCom
2357
1159
  * Raw WGSL function implementation with header and body
2358
1160
  * without `fn` keyword and function name
2359
1161
  * e.g. `"(x: f32) -> f32 { return x; }"`;
2360
- */ ((implementation: string) => TgpuComputeFn<ComputeIn>) & ((strings: TemplateStringsArray, ...values: unknown[]) => TgpuComputeFn<ComputeIn>) & {
2361
- /**
2362
- * @deprecated Invoke the shell as a function instead.
2363
- */
2364
- does: ((implementation: (input: InferIO<ComputeIn>) => undefined) => TgpuComputeFn<ComputeIn>) & /**
2365
- * @param implementation
2366
- * Raw WGSL function implementation with header and body
2367
- * without `fn` keyword and function name
2368
- * e.g. `"(x: f32) -> f32 { return x; }"`;
2369
- */ ((implementation: string) => TgpuComputeFn<ComputeIn>);
2370
- };
1162
+ */ ((implementation: string) => TgpuComputeFn<ComputeIn>) & ((strings: TemplateStringsArray, ...values: unknown[]) => TgpuComputeFn<ComputeIn>);
2371
1163
  interface TgpuComputeFn<ComputeIn extends IORecord<AnyComputeBuiltin> = any> extends TgpuNamable {
2372
1164
  readonly [$internal]: true;
2373
1165
  readonly shell: TgpuComputeFnShellHeader<ComputeIn>;
@@ -2381,11 +1173,15 @@ declare function computeFn<ComputeIn extends IORecord<AnyComputeBuiltin>>(option
2381
1173
  workgroupSize: number[];
2382
1174
  }): TgpuComputeFnShell<ComputeIn>;
2383
1175
 
2384
- type DualFn<TImpl extends (...args: never[]) => unknown> = TImpl & {
1176
+ type DualFn<TImpl extends (...args: never[]) => unknown = (...args: never[]) => unknown> = TImpl & {
2385
1177
  readonly [$internal]: {
2386
1178
  jsImpl: TImpl;
2387
1179
  gpuImpl: (...args: MapValueToSnippet<Parameters<TImpl>>) => Snippet;
2388
1180
  argConversionHint: FnArgsConversionHint;
1181
+ strictSignature?: {
1182
+ argTypes: AnyData[];
1183
+ returnType: AnyData;
1184
+ } | undefined;
2389
1185
  };
2390
1186
  };
2391
1187
 
@@ -2419,8 +1215,8 @@ interface TgpuAccessor<T extends AnyData = AnyData> extends TgpuNamable {
2419
1215
  readonly [$internal]: true;
2420
1216
  readonly resourceType: 'accessor';
2421
1217
  readonly schema: T;
2422
- readonly defaultValue: TgpuFn<() => T> | TgpuBufferUsage<T> | Infer<T> | undefined;
2423
- readonly slot: TgpuSlot<TgpuFn<() => T> | TgpuBufferUsage<T> | Infer<T>>;
1218
+ readonly defaultValue: TgpuFn<() => T> | TgpuBufferUsage<T> | TgpuBufferShorthand<T> | Infer<T> | undefined;
1219
+ readonly slot: TgpuSlot<TgpuFn<() => T> | TgpuBufferUsage<T> | TgpuBufferShorthand<T> | Infer<T>>;
2424
1220
  readonly [$gpuValueOf]: InferGPU<T>;
2425
1221
  readonly value: InferGPU<T>;
2426
1222
  readonly $: InferGPU<T>;
@@ -2470,7 +1266,8 @@ declare function fn<Args extends AnyData[] | [], Return extends AnyData>(argType
2470
1266
  declare function isTgpuFn<Args extends AnyData[] | [], Return extends AnyData>(value: unknown | TgpuFn<(...args: Args) => Return>): value is TgpuFn<(...args: Args) => Return>;
2471
1267
 
2472
1268
  type FragmentInConstrained = IORecord<BaseIOData | Decorated<BaseIOData, (Location | Interpolate)[]> | AnyFragmentInputBuiltin>;
2473
- type FragmentOutConstrained = IOLayout<Vec4f | Decorated<Vec4f, (Location | Interpolate)[]> | AnyFragmentOutputBuiltin>;
1269
+ type FragmentColorValue = Vec4f | Vec4i | Vec4u;
1270
+ type FragmentOutConstrained = IOLayout<FragmentColorValue | Decorated<FragmentColorValue, (Location | Interpolate)[]> | AnyFragmentOutputBuiltin>;
2474
1271
  /**
2475
1272
  * Describes a fragment entry function signature (its arguments, return type and targets)
2476
1273
  */
@@ -2487,22 +1284,12 @@ type TgpuFragmentFnShellHeader<FragmentIn extends FragmentInConstrained, Fragmen
2487
1284
  */
2488
1285
  type TgpuFragmentFnShell<FragmentIn extends FragmentInConstrained, FragmentOut extends FragmentOutConstrained> = TgpuFragmentFnShellHeader<FragmentIn, FragmentOut> /**
2489
1286
  * Creates a type-safe implementation of this signature
2490
- */ & ((implementation: (input: InferIO<FragmentIn>, out: FragmentOut extends IORecord ? WgslStruct<FragmentOut> : FragmentOut) => InferIO<FragmentOut>) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, OmitBuiltins<FragmentOut>>) & /**
1287
+ */ & ((implementation: (input: InferIO<FragmentIn>, out: FragmentOut extends IORecord ? WgslStruct<FragmentOut> : FragmentOut) => InferIO<FragmentOut>) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, FragmentOut>) & /**
2491
1288
  * @param implementation
2492
1289
  * Raw WGSL function implementation with header and body
2493
1290
  * without `fn` keyword and function name
2494
1291
  * e.g. `"(x: f32) -> f32 { return x; }"`;
2495
- */ ((implementation: string) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, OmitBuiltins<FragmentOut>>) & ((strings: TemplateStringsArray, ...values: unknown[]) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, OmitBuiltins<FragmentOut>>) & {
2496
- /**
2497
- * @deprecated Invoke the shell as a function instead.
2498
- */
2499
- does: ((implementation: (input: InferIO<FragmentIn>) => InferIO<FragmentOut>) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, OmitBuiltins<FragmentOut>>) & /**
2500
- * @param implementation
2501
- * Raw WGSL function implementation with header and body
2502
- * without `fn` keyword and function name
2503
- * e.g. `"(x: f32) -> f32 { return x; }"`;
2504
- */ ((implementation: string) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, OmitBuiltins<FragmentOut>>);
2505
- };
1292
+ */ ((implementation: string) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, FragmentOut>) & ((strings: TemplateStringsArray, ...values: unknown[]) => TgpuFragmentFn<OmitBuiltins<FragmentIn>, FragmentOut>);
2506
1293
  interface TgpuFragmentFn<Varying extends FragmentInConstrained = FragmentInConstrained, Output extends FragmentOutConstrained = FragmentOutConstrained> extends TgpuNamable {
2507
1294
  readonly [$internal]: true;
2508
1295
  readonly shell: TgpuFragmentFnShellHeader<Varying, Output>;
@@ -2533,12 +1320,7 @@ type TgpuVertexFnShellHeader<VertexIn extends VertexInConstrained, VertexOut ext
2533
1320
  * Allows creating tgpu vertex functions by calling this shell
2534
1321
  * and passing the implementation (as WGSL string or JS function) as the argument.
2535
1322
  */
2536
- type TgpuVertexFnShell<VertexIn extends VertexInConstrained, VertexOut extends VertexOutConstrained> = TgpuVertexFnShellHeader<VertexIn, VertexOut> & ((implementation: (input: InferIO<VertexIn>, out: WgslStruct<VertexOut>) => InferIO<VertexOut>) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>) & ((implementation: string) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>) & ((strings: TemplateStringsArray, ...values: unknown[]) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>) & {
2537
- /**
2538
- * @deprecated Invoke the shell as a function instead.
2539
- */
2540
- does: ((implementation: (input: InferIO<VertexIn>) => InferIO<VertexOut>) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>) & ((implementation: string) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>);
2541
- };
1323
+ type TgpuVertexFnShell<VertexIn extends VertexInConstrained, VertexOut extends VertexOutConstrained> = TgpuVertexFnShellHeader<VertexIn, VertexOut> & ((implementation: (input: InferIO<VertexIn>, out: WgslStruct<VertexOut>) => InferIO<VertexOut>) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>) & ((implementation: string) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>) & ((strings: TemplateStringsArray, ...values: unknown[]) => TgpuVertexFn<OmitBuiltins<VertexIn>, OmitBuiltins<VertexOut>>);
2542
1324
  interface TgpuVertexFn<VertexIn extends VertexInConstrained = VertexInConstrained, VertexOut extends VertexOutConstrained = VertexOutConstrained> extends TgpuNamable {
2543
1325
  readonly [$internal]: true;
2544
1326
  readonly shell: TgpuVertexFnShellHeader<VertexIn, VertexOut>;
@@ -2672,25 +1454,35 @@ interface TgpuRenderPipeline<Output extends IOLayout = IOLayout> extends TgpuNam
2672
1454
  with(bindGroup: TgpuBindGroup): this;
2673
1455
  withColorAttachment(attachment: FragmentOutToColorAttachment<Output>): this;
2674
1456
  withDepthStencilAttachment(attachment: DepthStencilAttachment): this;
1457
+ withStencilReference(reference: GPUStencilValue): this;
2675
1458
  withIndexBuffer(buffer: TgpuBuffer<AnyWgslData> & IndexFlag, offsetElements?: number, sizeElements?: number): this & HasIndexBuffer;
2676
1459
  withIndexBuffer(buffer: GPUBuffer, indexFormat: GPUIndexFormat, offsetBytes?: number, sizeBytes?: number): this & HasIndexBuffer;
2677
1460
  draw(vertexCount: number, instanceCount?: number, firstVertex?: number, firstInstance?: number): void;
2678
1461
  }
2679
- type FragmentOutToTargets<T extends IOLayout> = T extends IOData ? GPUColorTargetState : T extends Record<string, unknown> ? {
2680
- [Key in keyof T]: GPUColorTargetState;
1462
+ type FragmentOutToTargets<T extends IOLayout> = T extends IOData ? T extends Decorated ? Record<string, never> : GPUColorTargetState : T extends Record<string, unknown> ? {
1463
+ [Key in keyof T as T[Key] extends Decorated ? never : Key]: GPUColorTargetState;
1464
+ } : T extends {
1465
+ type: 'void';
1466
+ } ? Record<string, never> : never;
1467
+ type FragmentOutToColorAttachment<T extends IOLayout> = T extends IOData ? T extends Decorated ? Record<string, never> : ColorAttachment : T extends Record<string, unknown> ? {
1468
+ [Key in keyof T as T[Key] extends Decorated ? never : Key]: ColorAttachment;
2681
1469
  } : T extends {
2682
1470
  type: 'void';
2683
1471
  } ? Record<string, never> : never;
2684
- type FragmentOutToColorAttachment<T extends IOLayout> = T extends IOData ? ColorAttachment : T extends Record<string, unknown> ? {
2685
- [Key in keyof T]: ColorAttachment;
2686
- } : never;
2687
1472
  type AnyFragmentTargets = GPUColorTargetState | Record<string, GPUColorTargetState>;
1473
+ interface ColorTextureConstraint {
1474
+ readonly [$internal]: TextureInternals;
1475
+ readonly resourceType: 'texture';
1476
+ readonly props: {
1477
+ format: GPUTextureFormat;
1478
+ };
1479
+ }
2688
1480
  interface ColorAttachment {
2689
1481
  /**
2690
1482
  * A {@link GPUTextureView} describing the texture subresource that will be output to for this
2691
1483
  * color attachment.
2692
1484
  */
2693
- view: (TgpuTexture & RenderFlag) | GPUTextureView | TgpuTextureView<WgslTexture>;
1485
+ view: (ColorTextureConstraint & RenderFlag) | GPUTextureView | TgpuTextureView<WgslTexture> | TgpuTextureRenderView;
2694
1486
  /**
2695
1487
  * Indicates the depth slice index of {@link GPUTextureViewDimension#"3d"} {@link GPURenderPassColorAttachment#view}
2696
1488
  * that will be output to for this color attachment.
@@ -2723,12 +1515,20 @@ interface ColorAttachment {
2723
1515
  */
2724
1516
  storeOp: GPUStoreOp;
2725
1517
  }
1518
+ type DepthStencilFormat = 'stencil8' | 'depth16unorm' | 'depth24plus' | 'depth24plus-stencil8' | 'depth32float' | 'depth32float-stencil8';
1519
+ interface DepthStencilTextureConstraint {
1520
+ readonly [$internal]: TextureInternals;
1521
+ readonly resourceType: 'texture';
1522
+ readonly props: {
1523
+ format: DepthStencilFormat;
1524
+ };
1525
+ }
2726
1526
  interface DepthStencilAttachment {
2727
1527
  /**
2728
1528
  * A {@link GPUTextureView} | ({@link TgpuTexture} & {@link RenderFlag}) describing the texture subresource that will be output to
2729
1529
  * and read from for this depth/stencil attachment.
2730
1530
  */
2731
- view: (TgpuTexture & RenderFlag) | GPUTextureView;
1531
+ view: (DepthStencilTextureConstraint & RenderFlag) | TgpuTextureView<WgslTextureDepth2d | WgslTextureDepthMultisampled2d> | TgpuTextureRenderView | GPUTextureView;
2732
1532
  /**
2733
1533
  * Indicates the value to clear {@link GPURenderPassDepthStencilAttachment#view}'s depth component
2734
1534
  * to prior to executing the render pass. Ignored if {@link GPURenderPassDepthStencilAttachment#depthLoadOp}
@@ -2795,6 +1595,7 @@ type TgpuRenderPipelinePriors = {
2795
1595
  readonly bindGroupLayoutMap?: Map<TgpuBindGroupLayout, TgpuBindGroup> | undefined;
2796
1596
  readonly colorAttachment?: AnyFragmentColorAttachment | undefined;
2797
1597
  readonly depthStencilAttachment?: DepthStencilAttachment | undefined;
1598
+ readonly stencilReference?: GPUStencilValue | undefined;
2798
1599
  readonly indexBuffer?: {
2799
1600
  buffer: TgpuBuffer<AnyWgslData> & IndexFlag | GPUBuffer;
2800
1601
  indexFormat: GPUIndexFormat;
@@ -2897,18 +1698,19 @@ declare function isVariable<T extends TgpuVar>(value: T | unknown): value is T;
2897
1698
  declare const wgslExtensions: readonly ["f16", "clip_distances", "dual_source_blending", "subgroups", "primitive_index"];
2898
1699
  type WgslExtension = (typeof wgslExtensions)[number];
2899
1700
 
2900
- type ResolvableObject = SelfResolvable | TgpuBufferUsage | TgpuConst | TgpuDeclare | TgpuFn | TgpuComputeFn | TgpuFragmentFn | TgpuComputePipeline | TgpuRenderPipeline | TgpuVertexFn | TgpuSampler | TgpuAccessor | TgpuExternalTexture | TgpuTexture | TgpuTextureView | TgpuVar | AnyVecInstance | AnyMatInstance | AnyData | TgpuFn;
1701
+ type ResolvableObject = SelfResolvable | TgpuBufferUsage | TgpuConst | TgpuDeclare | TgpuFn | TgpuComputeFn | TgpuFragmentFn | TgpuComputePipeline | TgpuRenderPipeline | TgpuVertexFn | TgpuSampler | TgpuAccessor | TgpuExternalTexture | TgpuTexture | TgpuTextureView | TgpuVar | AnyVecInstance | AnyMatInstance | AnyData | ((...args: never[]) => unknown);
2901
1702
  type Wgsl = Eventual<string | number | boolean | ResolvableObject>;
2902
1703
  type TgpuShaderStage = 'compute' | 'vertex' | 'fragment';
2903
1704
  interface FnToWgslOptions {
2904
- args: Snippet[];
2905
- argAliases: Record<string, Snippet>;
1705
+ functionType: 'normal' | TgpuShaderStage;
1706
+ argTypes: AnyData[];
2906
1707
  /**
2907
1708
  * The return type of the function. If undefined, the type should be inferred
2908
1709
  * from the implementation (relevant for shellless functions).
2909
1710
  */
2910
1711
  returnType: AnyData | undefined;
2911
1712
  body: Block;
1713
+ params: FuncParameter[];
2912
1714
  externalMap: Record<string, unknown>;
2913
1715
  }
2914
1716
  type ItemLayer = {
@@ -2917,6 +1719,7 @@ type ItemLayer = {
2917
1719
  };
2918
1720
  type FunctionScopeLayer = {
2919
1721
  type: 'functionScope';
1722
+ functionType: 'normal' | 'compute' | 'vertex' | 'fragment';
2920
1723
  args: Snippet[];
2921
1724
  argAliases: Record<string, Snippet>;
2922
1725
  externalMap: Record<string, unknown>;
@@ -2938,7 +1741,7 @@ interface ItemStateStack {
2938
1741
  popItem(): void;
2939
1742
  pushSlotBindings(pairs: SlotValuePair<unknown>[]): void;
2940
1743
  popSlotBindings(): void;
2941
- pushFunctionScope(args: Snippet[], argAliases: Record<string, Snippet>,
1744
+ pushFunctionScope(functionType: 'normal' | TgpuShaderStage, args: Snippet[], argAliases: Record<string, Snippet>,
2942
1745
  /**
2943
1746
  * The return type of the function. If undefined, the type should be inferred
2944
1747
  * from the implementation (relevant for shellless functions).
@@ -3144,29 +1947,27 @@ declare function isBufferShorthand<TData extends BaseData>(value: unknown | Tgpu
3144
1947
  */
3145
1948
  interface ShelllessImpl extends SelfResolvable {
3146
1949
  readonly resourceType: 'shellless-impl';
1950
+ readonly argTypes: AnyData[];
3147
1951
  readonly [$getNameForward]: unknown;
3148
1952
  }
3149
1953
 
3150
- interface ShelllessVariant {
3151
- argTypes: AnyData[];
3152
- value: ShelllessImpl;
3153
- }
3154
1954
  type AnyFn = (...args: never[]) => unknown;
3155
1955
  declare class ShelllessRepository {
3156
- cache: Map<AnyFn, ShelllessVariant[]>;
1956
+ cache: Map<AnyFn, ShelllessImpl[]>;
3157
1957
  get(fn: AnyFn, argSnippets: Snippet[] | undefined): ShelllessImpl | undefined;
3158
1958
  }
3159
1959
 
3160
1960
  type GenerationCtx = ResolutionCtx & {
3161
1961
  readonly pre: string;
3162
1962
  /**
3163
- * Used by `generateTypedExpression` to signal downstream
1963
+ * Used by `typedExpression` to signal downstream
3164
1964
  * expression resolution what type is expected of them.
3165
1965
  *
3166
1966
  * It is used exclusively for inferring the types of structs and arrays.
3167
- * It is modified exclusively by `generateTypedExpression` function.
1967
+ * It is modified exclusively by `typedExpression` function.
3168
1968
  */
3169
1969
  expectedType: AnyData | undefined;
1970
+ readonly topFunctionScope: FunctionScopeLayer | undefined;
3170
1971
  readonly topFunctionReturnType: AnyData | undefined;
3171
1972
  indent(): string;
3172
1973
  dedent(): string;
@@ -3256,14 +2057,22 @@ interface TgpuGuardedComputePipeline<TArgs extends number[] = number[]> {
3256
2057
  * "guarded" by a bounds check.
3257
2058
  */
3258
2059
  dispatchThreads(...args: TArgs): void;
2060
+ /**
2061
+ * The underlying pipeline used during `dispatchThreads`.
2062
+ */
2063
+ pipeline: TgpuComputePipeline;
2064
+ /**
2065
+ * The buffer used to automatically pass the thread count to the underlying pipeline during `dispatchThreads`.
2066
+ * For pipelines with a dimension count lower than 3, the remaining coordinates are expected to be 1.
2067
+ */
2068
+ sizeUniform: TgpuUniform<Vec3u>;
3259
2069
  }
3260
2070
  interface WithCompute {
3261
2071
  createPipeline(): TgpuComputePipeline;
3262
2072
  }
3263
- type ValidateFragmentIn<VertexOut extends VertexOutConstrained, FragmentIn extends FragmentInConstrained, FragmentOut extends FragmentOutConstrained> = UndecorateRecord<FragmentIn> extends Partial<UndecorateRecord<VertexOut>> ? UndecorateRecord<VertexOut> extends UndecorateRecord<FragmentIn> ? [
3264
- entryFn: TgpuFragmentFn<FragmentIn, FragmentOut>,
3265
- targets: FragmentOutToTargets<FragmentOut>
3266
- ] : [
2073
+ type IsEmptyRecord<T> = T extends Record<string, never> ? true : false;
2074
+ type OptionalArgs<T> = IsEmptyRecord<T> extends true ? [] | [T] : [T];
2075
+ type ValidateFragmentIn<VertexOut extends VertexOutConstrained, FragmentIn extends FragmentInConstrained, FragmentOut extends FragmentOutConstrained> = UndecorateRecord<FragmentIn> extends Partial<UndecorateRecord<VertexOut>> ? UndecorateRecord<VertexOut> extends UndecorateRecord<FragmentIn> ? OptionalArgs<FragmentOutToTargets<FragmentOut>> extends infer Args ? Args extends [infer T] ? [entryFn: TgpuFragmentFn<FragmentIn, FragmentOut>, targets: T] : Args extends [] | [infer T] ? [entryFn: TgpuFragmentFn<FragmentIn, FragmentOut>] | [entryFn: TgpuFragmentFn<FragmentIn, FragmentOut>, targets: T] : never : never : [
3267
2076
  entryFn: 'n/a',
3268
2077
  targets: 'n/a',
3269
2078
  MissingFromVertexOutput: {
@@ -3348,7 +2157,7 @@ interface WithBinding {
3348
2157
  * ```
3349
2158
  */
3350
2159
  createGuardedComputePipeline<TArgs extends number[]>(callback: (...args: TArgs) => void): TgpuGuardedComputePipeline<TArgs>;
3351
- withVertex<VertexIn extends VertexInConstrained, VertexOut extends VertexOutConstrained>(entryFn: TgpuVertexFn<VertexIn, VertexOut>, attribs: LayoutToAllowedAttribs<OmitBuiltins<VertexIn>>): WithVertex<VertexOut>;
2160
+ withVertex<VertexIn extends VertexInConstrained, VertexOut extends VertexOutConstrained>(entryFn: TgpuVertexFn<VertexIn, VertexOut>, ...args: OptionalArgs<LayoutToAllowedAttribs<OmitBuiltins<VertexIn>>>): WithVertex<VertexOut>;
3352
2161
  with<T>(slot: TgpuSlot<T>, value: Eventual<T>): WithBinding;
3353
2162
  with<T extends WgslTexture | WgslStorageTexture>(accessor: TgpuAccessor<T>, value: TgpuTextureView<T> | Infer<T>): WithBinding;
3354
2163
  with<T extends AnyWgslData>(accessor: TgpuAccessor<T>, value: TgpuFn<() => T> | TgpuBufferUsage<T> | TgpuBufferShorthand<T> | Infer<T>): WithBinding;
@@ -3931,33 +2740,26 @@ type PropsForSchema<T extends WgslTexture | WgslStorageTexture> = T extends Wgsl
3931
2740
  size: readonly number[];
3932
2741
  format: T['format'];
3933
2742
  } & OptionalDimension<T['dimension']> : never;
3934
- type TextureAspect = 'color' | 'depth' | 'stencil';
3935
- type DepthStencilFormats = 'depth24plus-stencil8' | 'depth32float-stencil8';
3936
- type DepthFormats = 'depth16unorm' | 'depth24plus' | 'depth32float';
3937
- type StencilFormats = 'stencil8';
3938
- type AspectsForFormat<T extends GPUTextureFormat> = GPUTextureFormat extends T ? TextureAspect[] : T extends DepthStencilFormats ? ('depth' | 'stencil')[] : T extends DepthFormats ? 'depth'[] : T extends StencilFormats ? 'stencil'[] : 'color'[];
3939
2743
  type CopyCompatibleTexture<T extends TextureProps> = TgpuTexture<{
3940
2744
  size: T['size'];
3941
2745
  format: T['format'];
3942
2746
  sampleCount?: T['sampleCount'];
3943
2747
  }>;
3944
- /**
3945
- * @param TProps all properties that distinguish this texture apart from other textures on the type level.
3946
- */
3947
- interface TgpuTexture<TProps extends TextureProps = TextureProps> extends TgpuNamable {
2748
+ interface TgpuTexture<TProps extends TextureProps = any> extends TgpuNamable {
3948
2749
  readonly [$internal]: TextureInternals;
3949
2750
  readonly resourceType: 'texture';
3950
2751
  readonly props: TProps;
3951
- readonly aspects: AspectsForFormat<TProps['format']>;
3952
2752
  readonly destroyed: boolean;
3953
2753
  readonly usableAsStorage: boolean;
3954
2754
  readonly usableAsSampled: boolean;
3955
2755
  readonly usableAsRender: boolean;
3956
2756
  $usage<T extends AllowedUsages<TProps>[]>(...usages: T): this & UnionToIntersection<LiteralToExtensionMap[T[number]]>;
3957
2757
  createView(...args: this['usableAsSampled'] extends true ? [] : [ValidateTextureViewSchema<this, WgslTexture>]): TgpuTextureView<DefaultViewSchema<TProps>>;
3958
- createView<T extends WgslTexture | WgslStorageTexture>(schema: ValidateTextureViewSchema<this, T>, viewDescriptor?: TgpuTextureViewDescriptor & {
3959
- sampleType?: T extends WgslTexture ? T['sampleType']['type'] extends 'f32' ? 'float' | 'unfilterable-float' : never : never;
2758
+ createView(schema: 'render', viewDescriptor?: TgpuTextureViewDescriptor): TgpuTextureRenderView;
2759
+ createView<T extends WgslTexture>(schema: ValidateTextureViewSchema<this, T>, viewDescriptor?: TgpuTextureViewDescriptor & {
2760
+ sampleType?: T['sampleType'] extends F32 ? 'float' | 'unfilterable-float' : never;
3960
2761
  }): TgpuTextureView<T>;
2762
+ createView<T extends WgslStorageTexture>(schema: ValidateTextureViewSchema<this, T>, viewDescriptor?: TgpuTextureViewDescriptor): TgpuTextureView<T>;
3961
2763
  clear(mipLevel?: number | 'all'): void;
3962
2764
  generateMipmaps(baseMipLevel?: number, mipLevels?: number): void;
3963
2765
  write(source: ExternalImageSource | ExternalImageSource[]): void;
@@ -3973,6 +2775,11 @@ interface TgpuTextureView<TSchema extends WgslStorageTexture | WgslTexture = Wgs
3973
2775
  value: Infer<TSchema>;
3974
2776
  $: Infer<TSchema>;
3975
2777
  }
2778
+ interface TgpuTextureRenderView {
2779
+ readonly [$internal]: TextureViewInternals;
2780
+ readonly resourceType: 'texture-view';
2781
+ readonly descriptor: TgpuTextureViewDescriptor;
2782
+ }
3976
2783
  declare function isTexture<T extends TgpuTexture>(value: unknown | T): value is T;
3977
2784
 
3978
2785
  /**
@@ -4076,13 +2883,39 @@ type ValidSampledUsage<TTexture extends TgpuTexture, TSchema extends WgslTexture
4076
2883
  /**
4077
2884
  * Validates texture view schema against texture usage
4078
2885
  */
4079
- type ValidateTextureViewSchema<TTexture extends TgpuTexture<any>, TSchema extends WgslTexture | WgslStorageTexture> = TSchema extends WgslStorageTexture ? SelfOrErrors<TSchema, ValidStorageUsage<TTexture, TSchema>> : TSchema extends WgslTexture ? SelfOrErrors<TSchema, ValidSampledUsage<TTexture, TSchema>> : never;
2886
+ type ValidateTextureViewSchema<TTexture extends TgpuTexture, TSchema extends WgslTexture | WgslStorageTexture> = TSchema extends WgslStorageTexture ? SelfOrErrors<TSchema, ValidStorageUsage<TTexture, TSchema>> : TSchema extends WgslTexture ? SelfOrErrors<TSchema, ValidSampledUsage<TTexture, TSchema>> : never;
4080
2887
  type ExtractInvalidSchemaError<T, TPrefix extends string = ''> = [
4081
2888
  T
4082
2889
  ] extends [{
4083
2890
  readonly [$invalidSchemaReason]: string;
4084
2891
  }] ? `${TPrefix}${T[typeof $invalidSchemaReason]}` : never;
4085
2892
 
2893
+ type RefFn = <T>(value: T) => ref<T>;
2894
+ /**
2895
+ * A reference to a value `T`. Can be passed to other functions to give them
2896
+ * mutable access to the underlying value.
2897
+ *
2898
+ * Conceptually, it represents a WGSL pointer.
2899
+ */
2900
+ interface ref<T> {
2901
+ readonly [$internal]: unknown;
2902
+ readonly type: 'ref';
2903
+ /**
2904
+ * Derefences the reference, and gives access to the underlying value.
2905
+ *
2906
+ * @example ```ts
2907
+ * const boid = Boid({ pos: d.vec3f(3, 2, 1) });
2908
+ * const posRef = d.ref(boid.pos);
2909
+ *
2910
+ * // Actually updates `boid.pos`
2911
+ * posRef.$ = d.vec3f(1, 2, 3);
2912
+ * console.log(boid.pos); // Output: vec3f(1, 2, 3)
2913
+ * ```
2914
+ */
2915
+ $: T;
2916
+ }
2917
+ declare const ref: DualFn<RefFn>;
2918
+
4086
2919
  type DecoratedLocation<T extends BaseData> = Decorated<T, Location[]>;
4087
2920
  interface BaseData {
4088
2921
  readonly [$internal]: true | Record<string, any>;
@@ -5042,7 +3875,8 @@ interface Ptr<TAddr extends AddressSpace = AddressSpace, TInner extends Storable
5042
3875
  readonly inner: TInner;
5043
3876
  readonly addressSpace: TAddr;
5044
3877
  readonly access: TAccess;
5045
- readonly [$repr]: Infer<TInner>;
3878
+ readonly implicit: boolean;
3879
+ readonly [$repr]: ref<Infer<TInner>>;
5046
3880
  readonly [$invalidSchemaReason]: 'Pointers are not host-shareable';
5047
3881
  }
5048
3882
  /**
@@ -5122,7 +3956,7 @@ type TextureSampleTypes = F32 | I32 | U32;
5122
3956
  type ScalarData = Bool | F32 | F16 | I32 | U32 | AbstractInt | AbstractFloat;
5123
3957
  type VecData = Vec2f | Vec2h | Vec2i | Vec2u | Vec2b | Vec3f | Vec3h | Vec3i | Vec3u | Vec3b | Vec4f | Vec4h | Vec4i | Vec4u | Vec4b;
5124
3958
  type MatData = Mat2x2f | Mat3x3f | Mat4x4f;
5125
- type StorableData = ScalarData | VecData | MatData | Atomic | WgslArray | WgslStruct;
3959
+ type StorableData = ScalarData | VecData | MatData | Atomic<I32> | Atomic<U32> | WgslArray | WgslStruct;
5126
3960
  type AnyWgslData = Bool | F32 | F16 | I32 | U32 | U16 | Vec2f | Vec2h | Vec2i | Vec2u | Vec2b | Vec3f | Vec3h | Vec3i | Vec3u | Vec3b | Vec4f | Vec4h | Vec4i | Vec4u | Vec4b | Mat2x2f | Mat3x3f | Mat4x4f | WgslStruct | WgslArray | Ptr | Atomic<U32> | Atomic<I32> | Decorated | AbstractInt | AbstractFloat | Void | WgslTexture | WgslStorageTexture | WgslExternalTexture | WgslSampler | WgslComparisonSampler;
5127
3961
  declare function isWgslData(value: unknown): value is AnyWgslData;
5128
3962
  /**
@@ -5175,10 +4009,15 @@ declare function isInterpolateAttrib<T extends Interpolate<InterpolationType>>(v
5175
4009
  declare function isBuiltinAttrib<T extends Builtin<string>>(value: unknown | T): value is T;
5176
4010
  declare function isDecorated<T extends Decorated>(value: unknown | T): value is T;
5177
4011
 
4012
+ type DeepReadonly<T> = T extends {
4013
+ [$internal]: unknown;
4014
+ } ? T : T extends unknown[] ? ReadonlyArray<DeepReadonly<T[number]>> : T extends Record<string, unknown> ? {
4015
+ readonly [K in keyof T]: DeepReadonly<T[K]>;
4016
+ } : T;
5178
4017
  interface TgpuConst<TDataType extends AnyWgslData = AnyWgslData> extends TgpuNamable {
5179
- readonly [$gpuValueOf]: InferGPU<TDataType>;
5180
- readonly value: InferGPU<TDataType>;
5181
- readonly $: InferGPU<TDataType>;
4018
+ readonly [$gpuValueOf]: DeepReadonly<InferGPU<TDataType>>;
4019
+ readonly value: DeepReadonly<InferGPU<TDataType>>;
4020
+ readonly $: DeepReadonly<InferGPU<TDataType>>;
5182
4021
  readonly [$internal]: {
5183
4022
  /** Makes it differentiable on the type level. Does not exist at runtime. */
5184
4023
  dataType?: TDataType;
@@ -5189,4 +4028,4 @@ interface TgpuConst<TDataType extends AnyWgslData = AnyWgslData> extends TgpuNam
5189
4028
  */
5190
4029
  declare function constant<TDataType extends AnyWgslData>(dataType: TDataType, value: InferGPU<TDataType>): TgpuConst<TDataType>;
5191
4030
 
5192
- export { $internal as $, type AnyData as A, isUsableAsVertex as B, type Configurable as C, type Disarray as D, isDerived as E, isSlot as F, isComparisonSampler as G, isSampler as H, type Infer as I, isTexture as J, isUsableAsRender as K, type LogResources as L, isUsableAsSampled as M, isUsableAsStorage as N, isUsableAsUniform as O, isBufferShorthand as P, isTgpuFn as Q, type ResolvedSnippet as R, ShelllessRepository as S, type TgpuSlot as T, isVariable as U, type TgpuGuardedComputePipeline as V, type Wgsl as W, type ValidateBufferSchema as X, type ValidateStorageSchema as Y, type ValidateUniformSchema as Z, type WithBinding as _, type TgpuDerived as a, type Vec4h as a$, type WithCompute as a0, type WithFragment as a1, type WithVertex as a2, type Storage as a3, type StorageFlag as a4, type TgpuRenderPipeline as a5, type TgpuComputePipeline as a6, type IndexFlag as a7, type Uniform as a8, type UniformFlag as a9, type TgpuLayoutEntry as aA, type TgpuLayoutExternalTexture as aB, type TgpuLayoutSampler as aC, type TgpuLayoutStorage as aD, type TgpuLayoutTexture as aE, type TgpuLayoutUniform as aF, type TgpuFnShell as aG, type TgpuVertexFn as aH, type TgpuVertexFnShell as aI, type TgpuFragmentFn as aJ, type TgpuFragmentFnShell as aK, type TgpuComputeFn as aL, type TgpuComputeFnShell as aM, type TgpuDeclare as aN, type INTERNAL_GlobalExt as aO, type Vec2f as aP, type Vec2b as aQ, type Vec2h as aR, type Vec2i as aS, type Vec2u as aT, type Vec3b as aU, type Vec3f as aV, type Vec3h as aW, type Vec3i as aX, type Vec3u as aY, type Vec4b as aZ, type Vec4f as a_, type ValidUsagesFor as aa, type Vertex as ab, type VertexFlag as ac, type TgpuBufferMutable as ad, type TgpuBufferReadonly as ae, type TgpuBufferUniform as af, type TgpuMutable as ag, type TgpuReadonly as ah, type TgpuUniform as ai, type Eventual as aj, type TgpuTexture as ak, type TgpuTextureView as al, type TextureProps as am, type RenderFlag as an, type SampledFlag as ao, type TgpuConst as ap, type VariableScope as aq, type TgpuComparisonSampler as ar, type TgpuFixedComparisonSampler as as, type TgpuFixedSampler as at, type TgpuSampler as au, type TgpuQuerySet as av, type BindLayoutEntry as aw, type ExtractBindGroupInputFromLayout as ax, type LayoutEntryToInput as ay, type TgpuLayoutComparisonSampler as az, type TgpuBindGroupLayout as b, textureDepthCube as b$, type Vec4i as b0, type Vec4u as b1, type Bool as b2, type F16 as b3, type F32 as b4, type I32 as b5, type U16 as b6, type U32 as b7, type WgslStruct as b8, type DualFn as b9, type m4x4f as bA, type Mat2x2f as bB, type Mat3x3f as bC, type Mat4x4f as bD, type Size as bE, type v2b as bF, type v2f as bG, type v2i as bH, type v2u as bI, type v3b as bJ, type v3f as bK, type v3i as bL, type v3u as bM, type v4b as bN, type v4f as bO, type v4i as bP, type v4u as bQ, type AnyLooseData as bR, type LooseDecorated as bS, texture1d as bT, texture2d as bU, texture2dArray as bV, texture3d as bW, textureCube as bX, textureCubeArray as bY, textureDepth2d as bZ, textureDepth2dArray as b_, type StorableData as ba, type Ptr as bb, type BaseData as bc, type Unstruct as bd, type Atomic as be, isAlignAttrib as bf, isAtomic as bg, isBuiltinAttrib as bh, isDecorated as bi, isInterpolateAttrib as bj, isLocationAttrib as bk, isPtr as bl, isSizeAttrib as bm, isWgslArray as bn, isWgslData as bo, isWgslStruct as bp, Void as bq, type Align as br, type AnyVecInstance as bs, type AnyWgslStruct as bt, type Builtin as bu, type Decorated as bv, type Interpolate as bw, type Location as bx, type m2x2f as by, type m3x3f as bz, type TgpuBindGroup as c, type FormatToWGSLType as c$, textureDepthCubeArray as c0, textureDepthMultisampled2d as c1, textureExternal as c2, textureMultisampled2d as c3, textureStorage1d as c4, textureStorage2d as c5, textureStorage2dArray as c6, textureStorage3d as c7, type WgslExternalTexture as c8, type WgslStorageTexture as c9, invariant as cA, type IsBuiltin as cB, isBuiltin as cC, location as cD, size as cE, isData as cF, isDisarray as cG, isLooseData as cH, isLooseDecorated as cI, isUnstruct as cJ, builtin as cK, type AnyBuiltin as cL, type BuiltinClipDistances as cM, type BuiltinFragDepth as cN, type BuiltinFrontFacing as cO, type BuiltinGlobalInvocationId as cP, type BuiltinInstanceIndex as cQ, type BuiltinLocalInvocationId as cR, type BuiltinLocalInvocationIndex as cS, type BuiltinNumWorkgroups as cT, type BuiltinPosition as cU, type BuiltinSampleIndex as cV, type BuiltinSampleMask as cW, type BuiltinVertexIndex as cX, type BuiltinWorkgroupId as cY, type InferGPU as cZ, type InferPartial as c_, type WgslStorageTexture1d as ca, type WgslStorageTexture2d as cb, type WgslStorageTexture2dArray as cc, type WgslStorageTexture3d as cd, type WgslStorageTextureProps as ce, type WgslTexture as cf, type WgslTexture1d as cg, type WgslTexture2d as ch, type WgslTexture2dArray as ci, type WgslTexture3d as cj, type WgslTextureCube as ck, type WgslTextureCubeArray as cl, type WgslTextureDepth2d as cm, type WgslTextureDepth2dArray as cn, type WgslTextureDepthCube as co, type WgslTextureDepthCubeArray as cp, type WgslTextureDepthMultisampled2d as cq, type WgslTextureMultisampled2d as cr, comparisonSampler as cs, sampler as ct, type WgslComparisonSampler as cu, type WgslSampler as cv, align as cw, type AnyAttribute as cx, type HasCustomLocation as cy, interpolate as cz, type WgslExtension as d, type atomicI32 as d$, type TgpuVertexFormatData as d0, formatToWGSLType as d1, packedFormats as d2, uint8 as d3, uint8x2 as d4, uint8x4 as d5, sint8 as d6, sint8x2 as d7, sint8x4 as d8, unorm8 as d9, uint32x2 as dA, uint32x3 as dB, uint32x4 as dC, sint32 as dD, sint32x2 as dE, sint32x3 as dF, sint32x4 as dG, unorm10_10_10_2 as dH, unorm8x4_bgra as dI, type PackedData as dJ, isPackedData as dK, type AnyNumericVecInstance as dL, type AnyFloatVecInstance as dM, type AnyIntegerVecInstance as dN, type v3h as dO, type AnyMatInstance as dP, type AbstractFloat as dQ, type AbstractInt as dR, type v2h as dS, type v4h as dT, type AnyFloat32VecInstance as dU, type AnySignedVecInstance as dV, type vBaseForMat as dW, type mBaseForVec as dX, type AnyVec2Instance as dY, type AnyVec3Instance as dZ, type AnyBooleanVecInstance as d_, unorm8x2 as da, unorm8x4 as db, snorm8 as dc, snorm8x2 as dd, snorm8x4 as de, uint16 as df, uint16x2 as dg, uint16x4 as dh, sint16 as di, sint16x2 as dj, sint16x4 as dk, unorm16 as dl, unorm16x2 as dm, unorm16x4 as dn, snorm16 as dp, snorm16x2 as dq, snorm16x4 as dr, float16 as ds, float16x2 as dt, float16x4 as du, float32 as dv, float32x2 as dw, float32x3 as dx, float32x4 as dy, uint32 as dz, type ShaderGenerator as e, type atomicU32 as e0, type StorageTextureFormats as e1, type TextureFormats as e2, $repr as e3, type TgpuBuffer as f, type TgpuVar as g, type LogGeneratorOptions as h, type TgpuRoot as i, type AnyWgslData as j, type TgpuFn as k, type TgpuBufferUsage as l, type TgpuAccessor as m, type TgpuVertexLayout as n, type WgslArray as o, fn as p, bindGroupLayout as q, privateVar as r, constant as s, fragmentFn as t, vertexFn as u, vertexLayout as v, workgroupVar as w, computeFn as x, declare as y, isBuffer as z };
4031
+ export { $internal as $, type AnyData as A, computeFn as B, type Configurable as C, type Disarray as D, declare as E, isBuffer as F, isUsableAsVertex as G, isDerived as H, type InferGPU as I, isSlot as J, isComparisonSampler as K, type LogResources as L, isSampler as M, isTexture as N, type Origin as O, isUsableAsRender as P, isUsableAsSampled as Q, type ResolvedSnippet as R, ShelllessRepository as S, type TgpuSlot as T, isUsableAsStorage as U, isUsableAsUniform as V, type WgslExtension as W, isBufferShorthand as X, isTgpuFn as Y, isVariable as Z, type TgpuGuardedComputePipeline as _, type TgpuDerived as a, type StorableData as a$, type ValidateBufferSchema as a0, type ValidateStorageSchema as a1, type ValidateUniformSchema as a2, type WithBinding as a3, type WithCompute as a4, type WithFragment as a5, type WithVertex as a6, type Storage as a7, type StorageFlag as a8, type TgpuRenderPipeline as a9, type BindLayoutEntry as aA, type ExtractBindGroupInputFromLayout as aB, type LayoutEntryToInput as aC, type TgpuLayoutComparisonSampler as aD, type TgpuLayoutEntry as aE, type TgpuLayoutExternalTexture as aF, type TgpuLayoutSampler as aG, type TgpuLayoutStorage as aH, type TgpuLayoutTexture as aI, type TgpuLayoutUniform as aJ, type TgpuFnShell as aK, type TgpuVertexFn as aL, type TgpuVertexFnShell as aM, type TgpuFragmentFn as aN, type TgpuFragmentFnShell as aO, type TgpuComputeFn as aP, type TgpuComputeFnShell as aQ, type TgpuDeclare as aR, type INTERNAL_GlobalExt as aS, type Vec2f as aT, type Bool as aU, type F16 as aV, type F32 as aW, type I32 as aX, type U16 as aY, type U32 as aZ, type WgslStruct as a_, type TgpuComputePipeline as aa, type IndexFlag as ab, type Uniform as ac, type UniformFlag as ad, type ValidUsagesFor as ae, type Vertex as af, type VertexFlag as ag, type TgpuBufferMutable as ah, type TgpuBufferReadonly as ai, type TgpuBufferUniform as aj, type TgpuMutable as ak, type TgpuReadonly as al, type TgpuUniform as am, type Eventual as an, type TgpuTexture as ao, type TgpuTextureView as ap, type TextureProps as aq, type RenderFlag as ar, type SampledFlag as as, type TgpuConst as at, type VariableScope as au, type TgpuComparisonSampler as av, type TgpuFixedComparisonSampler as aw, type TgpuFixedSampler as ax, type TgpuSampler as ay, type TgpuQuerySet as az, type TgpuBindGroupLayout as b, textureCubeArray as b$, type Ptr as b0, type Vec2b as b1, type Vec2h as b2, type Vec2i as b3, type Vec2u as b4, type Vec3b as b5, type Vec3f as b6, type Vec3h as b7, type Vec3i as b8, type Vec3u as b9, type Location as bA, type m2x2f as bB, type m3x3f as bC, type m4x4f as bD, type Mat2x2f as bE, type Mat3x3f as bF, type Mat4x4f as bG, type Size as bH, type v2b as bI, type v2f as bJ, type v2i as bK, type v2u as bL, type v3b as bM, type v3f as bN, type v3i as bO, type v3u as bP, type v4b as bQ, type v4f as bR, type v4i as bS, type v4u as bT, type AnyLooseData as bU, type LooseDecorated as bV, texture1d as bW, texture2d as bX, texture2dArray as bY, texture3d as bZ, textureCube as b_, type Vec4b as ba, type Vec4f as bb, type Vec4h as bc, type Vec4i as bd, type Vec4u as be, type BaseData as bf, type Unstruct as bg, type Atomic as bh, isAlignAttrib as bi, isAtomic as bj, isBuiltinAttrib as bk, isDecorated as bl, isInterpolateAttrib as bm, isLocationAttrib as bn, isPtr as bo, isSizeAttrib as bp, isWgslArray as bq, isWgslData as br, isWgslStruct as bs, Void as bt, type Align as bu, type AnyVecInstance as bv, type AnyWgslStruct as bw, type Builtin as bx, type Decorated as by, type Interpolate as bz, type TgpuBindGroup as c, type BuiltinVertexIndex as c$, textureDepth2d as c0, textureDepth2dArray as c1, textureDepthCube as c2, textureDepthCubeArray as c3, textureDepthMultisampled2d as c4, textureExternal as c5, textureMultisampled2d as c6, textureStorage1d as c7, textureStorage2d as c8, textureStorage2dArray as c9, align as cA, type AnyAttribute as cB, type HasCustomLocation as cC, interpolate as cD, invariant as cE, type IsBuiltin as cF, isBuiltin as cG, location as cH, size as cI, isData as cJ, isDisarray as cK, isLooseData as cL, isLooseDecorated as cM, isUnstruct as cN, builtin as cO, type AnyBuiltin as cP, type BuiltinClipDistances as cQ, type BuiltinFragDepth as cR, type BuiltinFrontFacing as cS, type BuiltinGlobalInvocationId as cT, type BuiltinInstanceIndex as cU, type BuiltinLocalInvocationId as cV, type BuiltinLocalInvocationIndex as cW, type BuiltinNumWorkgroups as cX, type BuiltinPosition as cY, type BuiltinSampleIndex as cZ, type BuiltinSampleMask as c_, textureStorage3d as ca, type WgslExternalTexture as cb, type WgslStorageTexture as cc, type WgslStorageTexture1d as cd, type WgslStorageTexture2d as ce, type WgslStorageTexture2dArray as cf, type WgslStorageTexture3d as cg, type WgslStorageTextureProps as ch, type WgslTexture as ci, type WgslTexture1d as cj, type WgslTexture2d as ck, type WgslTexture2dArray as cl, type WgslTexture3d as cm, type WgslTextureCube as cn, type WgslTextureCubeArray as co, type WgslTextureDepth2d as cp, type WgslTextureDepth2dArray as cq, type WgslTextureDepthCube as cr, type WgslTextureDepthCubeArray as cs, type WgslTextureDepthMultisampled2d as ct, type WgslTextureMultisampled2d as cu, comparisonSampler as cv, sampler as cw, type WgslComparisonSampler as cx, type WgslSampler as cy, ref as cz, type ShaderGenerator as d, type mBaseForVec as d$, type BuiltinWorkgroupId as d0, type InferPartial as d1, type FormatToWGSLType as d2, type TgpuVertexFormatData as d3, formatToWGSLType as d4, packedFormats as d5, uint8 as d6, uint8x2 as d7, uint8x4 as d8, sint8 as d9, float32x3 as dA, float32x4 as dB, uint32 as dC, uint32x2 as dD, uint32x3 as dE, uint32x4 as dF, sint32 as dG, sint32x2 as dH, sint32x3 as dI, sint32x4 as dJ, unorm10_10_10_2 as dK, unorm8x4_bgra as dL, type PackedData as dM, isPackedData as dN, type DualFn as dO, type AnyNumericVecInstance as dP, type AnyFloatVecInstance as dQ, type AnyIntegerVecInstance as dR, type v3h as dS, type AnyMatInstance as dT, type AbstractFloat as dU, type AbstractInt as dV, type v2h as dW, type v4h as dX, type AnyFloat32VecInstance as dY, type AnySignedVecInstance as dZ, type vBaseForMat as d_, sint8x2 as da, sint8x4 as db, unorm8 as dc, unorm8x2 as dd, unorm8x4 as de, snorm8 as df, snorm8x2 as dg, snorm8x4 as dh, uint16 as di, uint16x2 as dj, uint16x4 as dk, sint16 as dl, sint16x2 as dm, sint16x4 as dn, unorm16 as dp, unorm16x2 as dq, unorm16x4 as dr, snorm16 as ds, snorm16x2 as dt, snorm16x4 as du, float16 as dv, float16x2 as dw, float16x4 as dx, float32 as dy, float32x2 as dz, type Wgsl as e, type AnyVec2Instance as e0, type AnyVec3Instance as e1, type AnyBooleanVecInstance as e2, type atomicI32 as e3, type atomicU32 as e4, type StorageTextureFormats as e5, type TextureFormats as e6, $repr as e7, type TgpuNamable as e8, $getNameForward as e9, type ResolvableObject as f, type TgpuBuffer as g, type TgpuVar as h, type LogGeneratorOptions as i, type TgpuRoot as j, type AnyWgslData as k, type TgpuFn as l, type TgpuBufferUsage as m, type TgpuBufferShorthand as n, type Infer as o, type TgpuAccessor as p, type TgpuVertexLayout as q, type WgslArray as r, fn as s, bindGroupLayout as t, privateVar as u, vertexLayout as v, workgroupVar as w, constant as x, fragmentFn as y, vertexFn as z };