typegpu 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/chunk-2VTISQYP.cjs +10 -0
  2. package/chunk-2VTISQYP.cjs.map +1 -0
  3. package/chunk-CYZBRBPD.cjs +6 -0
  4. package/chunk-CYZBRBPD.cjs.map +1 -0
  5. package/chunk-SAMYKEUN.js +6 -0
  6. package/chunk-SAMYKEUN.js.map +1 -0
  7. package/chunk-WP6W72RY.js +10 -0
  8. package/chunk-WP6W72RY.js.map +1 -0
  9. package/data/index.cjs +1 -1
  10. package/data/index.cjs.map +1 -1
  11. package/data/index.d.cts +17 -5
  12. package/data/index.d.ts +17 -5
  13. package/data/index.js +1 -1
  14. package/index.cjs +18 -29
  15. package/index.cjs.map +1 -1
  16. package/index.d.cts +38 -3
  17. package/index.d.ts +38 -3
  18. package/index.js +18 -29
  19. package/index.js.map +1 -1
  20. package/{matrix-S8W4dk8I.d.ts → matrix-4h_aOtIE.d.cts} +9 -9
  21. package/{matrix-BN6ObiMv.d.cts → matrix-Domrg-ap.d.ts} +9 -9
  22. package/package.json +1 -1
  23. package/std/index.cjs +1 -1
  24. package/std/index.cjs.map +1 -1
  25. package/std/index.d.cts +274 -112
  26. package/std/index.d.ts +274 -112
  27. package/std/index.js +1 -1
  28. package/std/index.js.map +1 -1
  29. package/{tgpuComputeFn-DOUjhQua.d.ts → tgpuConstant-BSgcF4zi.d.cts} +3058 -2938
  30. package/{tgpuComputeFn-DOUjhQua.d.cts → tgpuConstant-BSgcF4zi.d.ts} +3058 -2938
  31. package/chunk-APTRHY5Y.js +0 -41
  32. package/chunk-APTRHY5Y.js.map +0 -1
  33. package/chunk-RC26P3MP.cjs +0 -2
  34. package/chunk-RC26P3MP.cjs.map +0 -1
  35. package/chunk-RK6TMFVW.js +0 -2
  36. package/chunk-RK6TMFVW.js.map +0 -1
  37. package/chunk-S62QJDM6.js +0 -2
  38. package/chunk-S62QJDM6.js.map +0 -1
  39. package/chunk-TG4A6AM3.cjs +0 -2
  40. package/chunk-TG4A6AM3.cjs.map +0 -1
  41. package/chunk-UMHCZDPA.cjs +0 -41
  42. package/chunk-UMHCZDPA.cjs.map +0 -1
package/std/index.d.cts CHANGED
@@ -1,145 +1,297 @@
1
- import { c_ as TgpuDualFn, c$ as AnyNumericVecInstance, d0 as AnyMatInstance, d1 as vBaseForMat, d2 as mBaseForVec, d3 as AnyFloatVecInstance, bF as v3f, d4 as v3h, bB as v2f, d5 as v2h, bC as v2i, bG as v3i, bJ as v4f, d6 as v4h, bK as v4i, bv as m4x4f, bn as AnyVecInstance, d7 as AnyVec2Instance, bA as v2b, d8 as AnyVec3Instance, bE as v3b, bI as v4b, d9 as AnyBooleanVecInstance, da as atomicI32, db as atomicU32, ai as TgpuSampledTexture, dc as TgpuStorageTexture, bD as v2u, bH as v3u, dd as TexelData, bL as v4u, de as ChannelData, ar as TgpuSampler } from '../tgpuComputeFn-DOUjhQua.cjs';
2
- export { i as identity2, d as identity3, e as identity4, r as rotationX4, f as rotationY4, g as rotationZ4, s as scaling4, t as translation4 } from '../matrix-BN6ObiMv.cjs';
1
+ import { c_ as DualFn, c$ as AnyNumericVecInstance, d0 as AnyFloatVecInstance, d1 as AnyIntegerVecInstance, bD as v3f, d2 as v3h, d3 as AnyMatInstance, I as Infer, aQ as WgslStruct, aM as F32, aN as I32, aL as F16, d4 as AbstractFloat, d5 as AbstractInt, aT as Vec2f, aV as Vec2i, aY as Vec3f, a_ as Vec3i, b1 as Vec4f, b3 as Vec4i, aU as Vec2h, aZ as Vec3h, b2 as Vec4h, bA as v2i, bE as v3i, bI as v4i, d6 as AnyFloat32VecInstance, d7 as AnySignedVecInstance, d8 as vBaseForMat, d9 as mBaseForVec, bt as m4x4f, bl as AnyVecInstance, da as AnyVec2Instance, by as v2b, db as AnyVec3Instance, bC as v3b, bG as v4b, dc as AnyBooleanVecInstance, dd as atomicI32, de as atomicU32, bH as v4f, bz as v2f, ag as TgpuSampledTexture, df as TgpuStorageTexture, bB as v2u, bF as v3u, dg as TexelData, bJ as v4u, dh as ChannelData, ao as TgpuSampler } from '../tgpuConstant-BSgcF4zi.cjs';
2
+ export { i as identity2, d as identity3, e as identity4, r as rotationX4, f as rotationY4, g as rotationZ4, s as scaling4, t as translation4 } from '../matrix-4h_aOtIE.cjs';
3
3
  import 'tinyest';
4
4
 
5
- declare const discard: TgpuDualFn<() => never>;
5
+ declare const discard: DualFn<() => never>;
6
6
 
7
- type NumVec = AnyNumericVecInstance;
8
- type Mat = AnyMatInstance;
9
- declare function cpuAdd(lhs: number, rhs: number): number;
10
- declare function cpuAdd<T extends NumVec>(lhs: number, rhs: T): T;
11
- declare function cpuAdd<T extends NumVec>(lhs: T, rhs: number): T;
12
- declare function cpuAdd<T extends NumVec | Mat>(lhs: T, rhs: T): T;
13
- declare function cpuAdd<Lhs extends number | NumVec | Mat, Rhs extends (Lhs extends number ? number | NumVec : Lhs extends NumVec ? number | Lhs : Lhs extends Mat ? Lhs : never)>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
14
- declare const add: TgpuDualFn<typeof cpuAdd>;
15
- declare function cpuSub(lhs: number, rhs: number): number;
16
- declare function cpuSub<T extends NumVec>(lhs: number, rhs: T): T;
17
- declare function cpuSub<T extends NumVec>(lhs: T, rhs: number): T;
18
- declare function cpuSub<T extends NumVec | Mat>(lhs: T, rhs: T): T;
19
- declare function cpuSub<Lhs extends number | NumVec | Mat, Rhs extends (Lhs extends number ? number | NumVec : Lhs extends NumVec ? number | Lhs : Lhs extends Mat ? Lhs : never)>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
20
- declare const sub: TgpuDualFn<typeof cpuSub>;
21
- declare function cpuMul(lhs: number, rhs: number): number;
22
- declare function cpuMul<MV extends NumVec | Mat>(lhs: number, rhs: MV): MV;
23
- declare function cpuMul<MV extends NumVec | Mat>(lhs: MV, rhs: number): MV;
24
- declare function cpuMul<V extends NumVec>(lhs: V, rhs: V): V;
25
- declare function cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: V, rhs: M): V;
26
- declare function cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: M, rhs: V): V;
27
- declare function cpuMul<M extends Mat>(lhs: M, rhs: M): M;
28
- declare function cpuMul<Lhs extends number | NumVec | Mat, Rhs extends (Lhs extends number ? number | NumVec | Mat : Lhs extends NumVec ? number | Lhs | mBaseForVec<Lhs> : Lhs extends Mat ? number | vBaseForMat<Lhs> | Lhs : never)>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
29
- declare const mul: TgpuDualFn<typeof cpuMul>;
30
- declare function cpuDiv(lhs: number, rhs: number): number;
31
- declare function cpuDiv<MV extends NumVec>(lhs: number, rhs: MV): MV;
32
- declare function cpuDiv<MV extends NumVec>(lhs: MV, rhs: number): MV;
33
- declare function cpuDiv<V extends NumVec>(lhs: V, rhs: V): V;
34
- declare function cpuDiv<Lhs extends number | NumVec, Rhs extends (Lhs extends number ? number | NumVec : Lhs extends NumVec ? number | Lhs : never)>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
35
- declare const div: TgpuDualFn<typeof cpuDiv>;
36
- declare const abs: TgpuDualFn<(<T extends NumVec | number>(value: T) => T)>;
37
- declare const atan2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(y: T, x: T) => T)>;
38
- declare const acos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
7
+ type NumVec$1 = AnyNumericVecInstance;
8
+ declare const abs: DualFn<(<T extends NumVec$1 | number>(value: T) => T)>;
9
+ declare const acos: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
39
10
  /**
40
11
  * @privateRemarks
41
12
  * https://www.w3.org/TR/WGSL/#acosh-builtin
42
13
  */
43
- declare const acosh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
14
+ declare const acosh: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
44
15
  /**
45
16
  * @privateRemarks
46
17
  * https://www.w3.org/TR/WGSL/#asin-builtin
47
18
  */
48
- declare const asin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
19
+ declare const asin: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
20
+ /**
21
+ * @privateRemarks
22
+ * https://www.w3.org/TR/WGSL/#asinh-builtin
23
+ */
24
+ declare const asinh: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
25
+ /**
26
+ * @privateRemarks
27
+ * https://www.w3.org/TR/WGSL/#atan-builtin
28
+ */
29
+ declare const atan: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
30
+ /**
31
+ * @privateRemarks
32
+ * https://www.w3.org/TR/WGSL/#atanh-builtin
33
+ */
34
+ declare const atanh: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
35
+ declare const atan2: DualFn<(<T extends AnyFloatVecInstance | number>(y: T, x: T) => T)>;
49
36
  /**
50
37
  * @privateRemarks
51
38
  * https://www.w3.org/TR/WGSL/#ceil-builtin
52
39
  */
53
- declare const ceil: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
40
+ declare const ceil: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
54
41
  /**
55
42
  * @privateRemarks
56
43
  * https://www.w3.org/TR/WGSL/#clamp
57
44
  */
58
- declare const clamp: TgpuDualFn<(<T extends NumVec | number>(value: T, low: T, high: T) => T)>;
45
+ declare const clamp: DualFn<(<T extends NumVec$1 | number>(value: T, low: T, high: T) => T)>;
59
46
  /**
60
47
  * @privateRemarks
61
48
  * https://www.w3.org/TR/WGSL/#cos-builtin
62
49
  */
63
- declare const cos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
50
+ declare const cos: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
64
51
  /**
65
52
  * @privateRemarks
66
53
  * https://www.w3.org/TR/WGSL/#cosh-builtin
67
54
  */
68
- declare const cosh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
55
+ declare const cosh: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
56
+ declare const countLeadingZeros: DualFn<(<T extends AnyIntegerVecInstance | number>(value: T) => T)>;
57
+ declare const countOneBits: DualFn<(<T extends AnyIntegerVecInstance | number>(value: T) => T)>;
58
+ declare const countTrailingZeros: DualFn<(<T extends AnyIntegerVecInstance | number>(value: T) => T)>;
69
59
  /**
70
60
  * @privateRemarks
71
61
  * https://www.w3.org/TR/WGSL/#cross-builtin
72
62
  */
73
- declare const cross: TgpuDualFn<(<T extends v3f | v3h>(a: T, b: T) => T)>;
63
+ declare const cross: DualFn<(<T extends v3f | v3h>(a: T, b: T) => T)>;
64
+ declare const degrees: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
65
+ declare const determinant: DualFn<(value: AnyMatInstance) => number>;
66
+ declare const distance: DualFn<(<T extends AnyFloatVecInstance | number>(a: T, b: T) => number)>;
74
67
  /**
75
68
  * @privateRemarks
76
69
  * https://www.w3.org/TR/WGSL/#dot-builtin
77
70
  */
78
- declare const dot: TgpuDualFn<(<T extends NumVec>(lhs: T, rhs: T) => number)>;
79
- declare const normalize: TgpuDualFn<(<T extends AnyFloatVecInstance>(v: T) => T)>;
71
+ declare const dot: DualFn<(<T extends NumVec$1>(lhs: T, rhs: T) => number)>;
72
+ declare const dot4U8Packed: DualFn<(e1: number, e2: number) => number>;
73
+ declare const dot4I8Packed: DualFn<(e1: number, e2: number) => number>;
74
+ /**
75
+ * @privateRemarks
76
+ * https://www.w3.org/TR/WGSL/#exp-builtin
77
+ */
78
+ declare const exp: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
79
+ /**
80
+ * @privateRemarks
81
+ * https://www.w3.org/TR/WGSL/#exp2-builtin
82
+ */
83
+ declare const exp2: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
84
+ declare const extractBits: DualFn<(<T extends AnyIntegerVecInstance | number>(e: T, offset: number, count: number) => T)>;
85
+ declare const faceForward: DualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T) => T)>;
86
+ declare const firstLeadingBit: DualFn<(<T extends AnyIntegerVecInstance | number>(value: T) => T)>;
87
+ declare const firstTrailingBit: DualFn<(<T extends AnyIntegerVecInstance | number>(value: T) => T)>;
80
88
  /**
81
89
  * @privateRemarks
82
90
  * https://www.w3.org/TR/WGSL/#floor-builtin
83
91
  */
84
- declare const floor: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
85
- declare const fract: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T) => T)>;
92
+ declare const floor: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
93
+ declare const fma: DualFn<(<T extends AnyFloatVecInstance | number>(e1: T, e2: T, e3: T) => T)>;
94
+ declare const fract: DualFn<(<T extends AnyFloatVecInstance | number>(a: T) => T)>;
95
+ declare const FrexpResults: {
96
+ readonly f32: WgslStruct<{
97
+ fract: F32;
98
+ exp: I32;
99
+ }>;
100
+ readonly f16: WgslStruct<{
101
+ fract: F16;
102
+ exp: I32;
103
+ }>;
104
+ readonly abstractFloat: WgslStruct<{
105
+ fract: AbstractFloat;
106
+ exp: AbstractInt;
107
+ }>;
108
+ readonly vec2f: WgslStruct<{
109
+ fract: Vec2f;
110
+ exp: Vec2i;
111
+ }>;
112
+ readonly vec3f: WgslStruct<{
113
+ fract: Vec3f;
114
+ exp: Vec3i;
115
+ }>;
116
+ readonly vec4f: WgslStruct<{
117
+ fract: Vec4f;
118
+ exp: Vec4i;
119
+ }>;
120
+ readonly vec2h: WgslStruct<{
121
+ fract: Vec2h;
122
+ exp: Vec2i;
123
+ }>;
124
+ readonly vec3h: WgslStruct<{
125
+ fract: Vec3h;
126
+ exp: Vec3i;
127
+ }>;
128
+ readonly vec4h: WgslStruct<{
129
+ fract: Vec4h;
130
+ exp: Vec4i;
131
+ }>;
132
+ };
133
+ type FrexpOverload = {
134
+ (value: number): Infer<typeof FrexpResults['f32']>;
135
+ <T extends AnyFloatVecInstance>(value: T): Infer<typeof FrexpResults[T['kind']]>;
136
+ };
137
+ declare const frexp: FrexpOverload;
138
+ declare const insertBits: DualFn<(<T extends AnyIntegerVecInstance | number>(e: T, newbits: T, offset: number, count: number) => T)>;
139
+ declare const inverseSqrt: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
140
+ type FloatVecInstanceToIntVecInstance<T extends AnyFloatVecInstance> = {
141
+ 'vec2f': v2i;
142
+ 'vec3f': v3i;
143
+ 'vec4f': v4i;
144
+ 'vec2h': v2i;
145
+ 'vec3h': v3i;
146
+ 'vec4h': v4i;
147
+ }[T['kind']];
148
+ type LdexpOverload = {
149
+ (e1: number, e2: number): number;
150
+ <T extends AnyFloatVecInstance>(e1: T, e2: FloatVecInstanceToIntVecInstance<T>): T;
151
+ };
152
+ declare const ldexp: LdexpOverload;
86
153
  /**
87
154
  * @privateRemarks
88
155
  * https://www.w3.org/TR/WGSL/#length-builtin
89
156
  */
90
- declare const length: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => number)>;
157
+ declare const length: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => number)>;
91
158
  /**
92
159
  * @privateRemarks
93
160
  * https://www.w3.org/TR/WGSL/#log-builtin
94
161
  */
95
- declare const log: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
162
+ declare const log: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
96
163
  /**
97
164
  * @privateRemarks
98
165
  * https://www.w3.org/TR/WGSL/#log2-builtin
99
166
  */
100
- declare const log2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
167
+ declare const log2: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
101
168
  /**
102
169
  * @privateRemarks
103
170
  * https://www.w3.org/TR/WGSL/#max-float-builtin
104
171
  */
105
- declare const max: TgpuDualFn<(<T extends NumVec | number>(a: T, b: T) => T)>;
172
+ declare const max: DualFn<(<T extends NumVec$1 | number>(a: T, b: T) => T)>;
106
173
  /**
107
174
  * @privateRemarks
108
175
  * https://www.w3.org/TR/WGSL/#min-float-builtin
109
176
  */
110
- declare const min: TgpuDualFn<(<T extends NumVec | number>(a: T, b: T) => T)>;
111
- declare const sign: TgpuDualFn<(<T extends v2f | v2h | v2i | v3f | v3h | v3i | v4f | v4h | v4i | number>(e: T) => T)>;
177
+ declare const min: DualFn<(<T extends NumVec$1 | number>(a: T, b: T) => T)>;
178
+ type MixOverload = {
179
+ (e1: number, e2: number, e3: number): number;
180
+ <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: number): T;
181
+ <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;
182
+ };
183
+ declare const mix: MixOverload;
184
+ declare const ModfResult: {
185
+ readonly f32: WgslStruct<{
186
+ fract: F32;
187
+ whole: F32;
188
+ }>;
189
+ readonly f16: WgslStruct<{
190
+ fract: F16;
191
+ whole: F16;
192
+ }>;
193
+ readonly abstractFloat: WgslStruct<{
194
+ fract: AbstractFloat;
195
+ whole: AbstractFloat;
196
+ }>;
197
+ readonly vec2f: WgslStruct<{
198
+ fract: Vec2f;
199
+ whole: Vec2f;
200
+ }>;
201
+ readonly vec3f: WgslStruct<{
202
+ fract: Vec3f;
203
+ whole: Vec3f;
204
+ }>;
205
+ readonly vec4f: WgslStruct<{
206
+ fract: Vec4f;
207
+ whole: Vec4f;
208
+ }>;
209
+ readonly vec2h: WgslStruct<{
210
+ fract: Vec2h;
211
+ whole: Vec2h;
212
+ }>;
213
+ readonly vec3h: WgslStruct<{
214
+ fract: Vec3h;
215
+ whole: Vec3h;
216
+ }>;
217
+ readonly vec4h: WgslStruct<{
218
+ fract: Vec4h;
219
+ whole: Vec4h;
220
+ }>;
221
+ };
222
+ type ModfOverload = {
223
+ (value: number): Infer<typeof ModfResult['f32']>;
224
+ <T extends AnyFloatVecInstance>(value: T): Infer<typeof ModfResult[T['kind']]>;
225
+ };
226
+ declare const modf: ModfOverload;
227
+ declare const normalize: DualFn<(<T extends AnyFloatVecInstance>(v: T) => T)>;
228
+ type PowOverload = {
229
+ (base: number, exponent: number): number;
230
+ <T extends AnyFloatVecInstance>(base: T, exponent: T): T;
231
+ };
232
+ declare const pow: PowOverload;
233
+ declare const quantizeToF16: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
234
+ declare const radians: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
235
+ declare const reflect: DualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T) => T)>;
236
+ declare const refract: DualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T, e3: number) => T)>;
237
+ declare const reverseBits: DualFn<(<T extends AnyIntegerVecInstance | number>(value: T) => T)>;
238
+ declare const round: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
239
+ declare const saturate: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
240
+ declare const sign: DualFn<(<T extends AnySignedVecInstance | number>(e: T) => T)>;
112
241
  /**
113
242
  * @privateRemarks
114
243
  * https://www.w3.org/TR/WGSL/#sin-builtin
115
244
  */
116
- declare const sin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
117
- /**
118
- * @privateRemarks
119
- * https://www.w3.org/TR/WGSL/#exp-builtin
120
- */
121
- declare const exp: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
245
+ declare const sin: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
246
+ declare const sinh: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
247
+ declare const smoothstep: DualFn<(<T extends AnyFloatVecInstance | number>(edge0: T, edge1: T, x: T) => T)>;
248
+ declare const sqrt: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
249
+ declare const step: DualFn<(<T extends AnyFloatVecInstance | number>(edge: T, x: T) => T)>;
250
+ declare const tan: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
251
+ declare const tanh: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
252
+ declare const transpose: DualFn<(e: AnyMatInstance) => never>;
253
+ declare const trunc: DualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
254
+
255
+ type NumVec = AnyNumericVecInstance;
256
+ type Mat = AnyMatInstance;
257
+ declare function cpuAdd(lhs: number, rhs: number): number;
258
+ declare function cpuAdd<T extends NumVec>(lhs: number, rhs: T): T;
259
+ declare function cpuAdd<T extends NumVec>(lhs: T, rhs: number): T;
260
+ declare function cpuAdd<T extends NumVec | Mat>(lhs: T, rhs: T): T;
261
+ declare function cpuAdd<Lhs extends number | NumVec | Mat, Rhs extends Lhs extends number ? number | NumVec : Lhs extends NumVec ? number | Lhs : Lhs extends Mat ? Lhs : never>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
262
+ declare const add: DualFn<typeof cpuAdd>;
263
+ declare function cpuSub(lhs: number, rhs: number): number;
264
+ declare function cpuSub<T extends NumVec>(lhs: number, rhs: T): T;
265
+ declare function cpuSub<T extends NumVec>(lhs: T, rhs: number): T;
266
+ declare function cpuSub<T extends NumVec | Mat>(lhs: T, rhs: T): T;
267
+ declare function cpuSub<Lhs extends number | NumVec | Mat, Rhs extends Lhs extends number ? number | NumVec : Lhs extends NumVec ? number | Lhs : Lhs extends Mat ? Lhs : never>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
268
+ declare const sub: DualFn<typeof cpuSub>;
269
+ declare function cpuMul(lhs: number, rhs: number): number;
270
+ declare function cpuMul<MV extends NumVec | Mat>(lhs: number, rhs: MV): MV;
271
+ declare function cpuMul<MV extends NumVec | Mat>(lhs: MV, rhs: number): MV;
272
+ declare function cpuMul<V extends NumVec>(lhs: V, rhs: V): V;
273
+ declare function cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: V, rhs: M): V;
274
+ declare function cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: M, rhs: V): V;
275
+ declare function cpuMul<M extends Mat>(lhs: M, rhs: M): M;
276
+ declare function cpuMul<Lhs extends number | NumVec | Mat, Rhs extends Lhs extends number ? number | NumVec | Mat : Lhs extends NumVec ? number | Lhs | mBaseForVec<Lhs> : Lhs extends Mat ? number | vBaseForMat<Lhs> | Lhs : never>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;
277
+ declare const mul: DualFn<typeof cpuMul>;
278
+ declare function cpuDiv(lhs: number, rhs: number): number;
279
+ declare function cpuDiv<T extends NumVec | number>(lhs: T, rhs: T): T;
280
+ declare function cpuDiv<T extends NumVec | number>(lhs: number, rhs: T): T;
281
+ declare function cpuDiv<T extends NumVec | number>(lhs: T, rhs: number): T;
282
+ declare const div: DualFn<typeof cpuDiv>;
283
+ type ModOverload = {
284
+ (a: number, b: number): number;
285
+ <T extends NumVec>(a: T, b: T): T;
286
+ <T extends NumVec>(a: number, b: T): T;
287
+ <T extends NumVec>(a: T, b: number): T;
288
+ };
122
289
  /**
123
290
  * @privateRemarks
124
- * https://www.w3.org/TR/WGSL/#exp2-builtin
291
+ * Both JS and WGSL implementations use truncated definition of modulo
125
292
  */
126
- declare const exp2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
127
- type PowOverload = {
128
- (base: number, exponent: number): number;
129
- <T extends AnyFloatVecInstance>(base: T, exponent: T): T;
130
- };
131
- declare const pow: PowOverload;
132
- type MixOverload = {
133
- (e1: number, e2: number, e3: number): number;
134
- <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: number): T;
135
- <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;
136
- };
137
- declare const mix: MixOverload;
138
- declare const reflect: TgpuDualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T) => T)>;
139
- declare const distance: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T, b: T) => number)>;
140
- declare const neg: TgpuDualFn<(<T extends NumVec | number>(value: T) => T)>;
141
- declare const sqrt: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
142
- declare const tanh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
293
+ declare const mod: ModOverload;
294
+ declare const neg: DualFn<(<T extends NumVec | number>(value: T) => T)>;
143
295
 
144
296
  /**
145
297
  * Translates the given 4-by-4 matrix by the given vector.
@@ -147,35 +299,35 @@ declare const tanh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value:
147
299
  * @param {v3f} vector - The vector by which to translate the matrix.
148
300
  * @returns {m4x4f} The translated matrix.
149
301
  */
150
- declare const translate4: TgpuDualFn<(matrix: m4x4f, vector: v3f) => m4x4f>;
302
+ declare const translate4: DualFn<(matrix: m4x4f, vector: v3f) => m4x4f>;
151
303
  /**
152
304
  * Scales the given 4-by-4 matrix in each dimension by an amount given by the corresponding entry in the given vector.
153
305
  * @param {m4x4f} matrix - The matrix to be modified.
154
306
  * @param {v3f} vector - A vector of three entries specifying the factor by which to scale in each dimension.
155
307
  * @returns {m4x4f} The scaled matrix.
156
308
  */
157
- declare const scale4: TgpuDualFn<(matrix: m4x4f, vector: v3f) => m4x4f>;
309
+ declare const scale4: DualFn<(matrix: m4x4f, vector: v3f) => m4x4f>;
158
310
  /**
159
311
  * Rotates the given 4-by-4 matrix around the x-axis by the given angle.
160
312
  * @param {m4x4f} matrix - The matrix to be modified.
161
313
  * @param {number} angle - The angle by which to rotate (in radians).
162
314
  * @returns {m4x4f} The rotated matrix.
163
315
  */
164
- declare const rotateX4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
316
+ declare const rotateX4: DualFn<(matrix: m4x4f, angle: number) => m4x4f>;
165
317
  /**
166
318
  * Rotates the given 4-by-4 matrix around the y-axis by the given angle.
167
319
  * @param {m4x4f} matrix - The matrix to be modified.
168
320
  * @param {number} angle - The angle by which to rotate (in radians).
169
321
  * @returns {m4x4f} The rotated matrix.
170
322
  */
171
- declare const rotateY4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
323
+ declare const rotateY4: DualFn<(matrix: m4x4f, angle: number) => m4x4f>;
172
324
  /**
173
325
  * Rotates the given 4-by-4 matrix around the z-axis by the given angle.
174
326
  * @param {m4x4f} matrix - The matrix to be modified.
175
327
  * @param {number} angle - The angle by which to rotate (in radians).
176
328
  * @returns {m4x4f} The rotated matrix.
177
329
  */
178
- declare const rotateZ4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
330
+ declare const rotateZ4: DualFn<(matrix: m4x4f, angle: number) => m4x4f>;
179
331
 
180
332
  /**
181
333
  * Checks whether `lhs == rhs` on all components.
@@ -184,7 +336,7 @@ declare const rotateZ4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
184
336
  * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false
185
337
  * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true
186
338
  */
187
- declare const allEq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => boolean)>;
339
+ declare const allEq: DualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => boolean)>;
188
340
  /**
189
341
  * Checks **component-wise** whether `lhs == rhs`.
190
342
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.
@@ -194,7 +346,7 @@ declare const allEq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => b
194
346
  * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true
195
347
  * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true
196
348
  */
197
- declare const eq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
349
+ declare const eq: DualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
198
350
  /**
199
351
  * Checks **component-wise** whether `lhs != rhs`.
200
352
  * This function does **not** return `bool`, for that use-case, wrap the result in `any`.
@@ -203,7 +355,7 @@ declare const eq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T ex
203
355
  * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)
204
356
  * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true
205
357
  */
206
- declare const ne: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
358
+ declare const ne: DualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
207
359
  /**
208
360
  * Checks **component-wise** whether `lhs < rhs`.
209
361
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -212,7 +364,7 @@ declare const ne: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T ex
212
364
  * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)
213
365
  * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true
214
366
  */
215
- declare const lt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
367
+ declare const lt: DualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
216
368
  /**
217
369
  * Checks **component-wise** whether `lhs <= rhs`.
218
370
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -221,7 +373,7 @@ declare const lt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T)
221
373
  * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)
222
374
  * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true
223
375
  */
224
- declare const le: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
376
+ declare const le: DualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
225
377
  /**
226
378
  * Checks **component-wise** whether `lhs > rhs`.
227
379
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -230,7 +382,7 @@ declare const le: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T)
230
382
  * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)
231
383
  * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true
232
384
  */
233
- declare const gt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
385
+ declare const gt: DualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
234
386
  /**
235
387
  * Checks **component-wise** whether `lhs >= rhs`.
236
388
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -239,42 +391,42 @@ declare const gt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T)
239
391
  * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)
240
392
  * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true
241
393
  */
242
- declare const ge: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
394
+ declare const ge: DualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
243
395
  /**
244
396
  * Returns **component-wise** `!value`.
245
397
  * @example
246
398
  * not(vec2b(false, true)) // returns vec2b(true, false)
247
399
  * not(vec3b(true, true, false)) // returns vec3b(false, false, true)
248
400
  */
249
- declare const not: TgpuDualFn<(<T extends AnyBooleanVecInstance>(value: T) => T)>;
401
+ declare const not: DualFn<(<T extends AnyBooleanVecInstance>(value: T) => T)>;
250
402
  /**
251
403
  * Returns **component-wise** logical `or` result.
252
404
  * @example
253
405
  * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)
254
406
  * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)
255
407
  */
256
- declare const or: TgpuDualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
408
+ declare const or: DualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
257
409
  /**
258
410
  * Returns **component-wise** logical `and` result.
259
411
  * @example
260
412
  * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)
261
413
  * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)
262
414
  */
263
- declare const and: TgpuDualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
415
+ declare const and: DualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
264
416
  /**
265
417
  * Returns `true` if each component of `value` is true.
266
418
  * @example
267
419
  * all(vec2b(false, true)) // returns false
268
420
  * all(vec3b(true, true, true)) // returns true
269
421
  */
270
- declare const all: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
422
+ declare const all: DualFn<(value: AnyBooleanVecInstance) => boolean>;
271
423
  /**
272
424
  * Returns `true` if any component of `value` is true.
273
425
  * @example
274
426
  * any(vec2b(false, true)) // returns true
275
427
  * any(vec3b(false, false, false)) // returns false
276
428
  */
277
- declare const any: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
429
+ declare const any: DualFn<(value: AnyBooleanVecInstance) => boolean>;
278
430
  /**
279
431
  * Checks whether the given elements differ by at most the `precision` value.
280
432
  * Checks all elements of `lhs` and `rhs` if arguments are vectors.
@@ -284,7 +436,7 @@ declare const any: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
284
436
  *
285
437
  * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.
286
438
  */
287
- declare const isCloseTo: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(lhs: T, rhs: T, precision?: number) => boolean)>;
439
+ declare const isCloseTo: DualFn<(<T extends AnyFloatVecInstance | number>(lhs: T, rhs: T, precision?: number) => boolean)>;
288
440
  type SelectOverload = {
289
441
  <T extends number | boolean | AnyVecInstance>(f: T, t: T, cond: boolean): T;
290
442
  <T extends AnyVecInstance>(f: T, t: T, cond: T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b): T;
@@ -301,41 +453,51 @@ type SelectOverload = {
301
453
  declare const select: SelectOverload;
302
454
 
303
455
  type AnyAtomic = atomicI32 | atomicU32;
304
- declare const workgroupBarrier: TgpuDualFn<() => void>;
305
- declare const storageBarrier: TgpuDualFn<() => void>;
306
- declare const textureBarrier: TgpuDualFn<() => void>;
307
- declare const atomicLoad: TgpuDualFn<(<T extends AnyAtomic>(a: T) => number)>;
308
- declare const atomicStore: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
309
- declare const atomicAdd: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
310
- declare const atomicSub: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
311
- declare const atomicMax: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
312
- declare const atomicMin: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
313
- declare const atomicAnd: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
314
- declare const atomicOr: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
315
- declare const atomicXor: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
456
+ declare const workgroupBarrier: DualFn<() => void>;
457
+ declare const storageBarrier: DualFn<() => void>;
458
+ declare const textureBarrier: DualFn<() => void>;
459
+ declare const atomicLoad: DualFn<(<T extends AnyAtomic>(a: T) => number)>;
460
+ declare const atomicStore: DualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
461
+ declare const atomicAdd: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
462
+ declare const atomicSub: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
463
+ declare const atomicMax: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
464
+ declare const atomicMin: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
465
+ declare const atomicAnd: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
466
+ declare const atomicOr: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
467
+ declare const atomicXor: DualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
468
+
469
+ declare const dpdx: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
470
+ declare const dpdxCoarse: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
471
+ declare const dpdxFine: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
472
+ declare const dpdy: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
473
+ declare const dpdyCoarse: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
474
+ declare const dpdyFine: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
475
+ declare const fwidth: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
476
+ declare const fwidthCoarse: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
477
+ declare const fwidthFine: DualFn<(<T extends AnyFloat32VecInstance | number>(value: T) => T)>;
316
478
 
317
- declare const arrayLength: TgpuDualFn<(a: unknown[]) => number>;
479
+ declare const arrayLength: DualFn<(a: unknown[]) => number>;
318
480
 
319
481
  /**
320
482
  * @privateRemarks
321
483
  * https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
322
484
  */
323
- declare const unpack2x16float: TgpuDualFn<(e: number) => v2f>;
485
+ declare const unpack2x16float: DualFn<(e: number) => v2f>;
324
486
  /**
325
487
  * @privateRemarks
326
488
  * https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
327
489
  */
328
- declare const pack2x16float: TgpuDualFn<(e: v2f) => number>;
490
+ declare const pack2x16float: DualFn<(e: v2f) => number>;
329
491
  /**
330
492
  * @privateRemarks
331
493
  * https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
332
494
  */
333
- declare const unpack4x8unorm: TgpuDualFn<(e: number) => v4f>;
495
+ declare const unpack4x8unorm: DualFn<(e: number) => v4f>;
334
496
  /**
335
497
  * @privateRemarks
336
498
  * https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
337
499
  */
338
- declare const pack4x8unorm: TgpuDualFn<(e: v4f) => number>;
500
+ declare const pack4x8unorm: DualFn<(e: v4f) => number>;
339
501
 
340
502
  type TextureSampleOverload = {
341
503
  <T extends TgpuSampledTexture<'1d'>>(texture: T, sampler: TgpuSampler, coords: number): v4f;
@@ -393,4 +555,4 @@ type TextureDimensionsOverload = {
393
555
  };
394
556
  declare const textureDimensions: TextureDimensionsOverload;
395
557
 
396
- export { abs, acos, acosh, add, all, allEq, and, any, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cosh, cross, discard, distance, div, dot, eq, exp, exp2, floor, fract, ge, gt, isCloseTo, le, length, log, log2, lt, max, min, mix, mul, ne, neg, normalize, not, or, pack2x16float, pack4x8unorm, pow, reflect, rotateX4, rotateY4, rotateZ4, scale4, select, sign, sin, sqrt, storageBarrier, sub, tanh, textureBarrier, textureDimensions, textureLoad, textureSample, textureSampleLevel, textureStore, translate4, unpack2x16float, unpack4x8unorm, workgroupBarrier };
558
+ export { abs, acos, acosh, add, all, allEq, and, any, arrayLength, asin, asinh, atan, atan2, atanh, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cosh, countLeadingZeros, countOneBits, countTrailingZeros, cross, degrees, determinant, discard, distance, div, dot, dot4I8Packed, dot4U8Packed, dpdx, dpdxCoarse, dpdxFine, dpdy, dpdyCoarse, dpdyFine, eq, exp, exp2, extractBits, faceForward, firstLeadingBit, firstTrailingBit, floor, fma, fract, frexp, fwidth, fwidthCoarse, fwidthFine, ge, gt, insertBits, inverseSqrt, isCloseTo, ldexp, le, length, log, log2, lt, max, min, mix, mod, modf, mul, ne, neg, normalize, not, or, pack2x16float, pack4x8unorm, pow, quantizeToF16, radians, reflect, refract, reverseBits, rotateX4, rotateY4, rotateZ4, round, saturate, scale4, select, sign, sin, sinh, smoothstep, sqrt, step, storageBarrier, sub, tan, tanh, textureBarrier, textureDimensions, textureLoad, textureSample, textureSampleLevel, textureStore, translate4, transpose, trunc, unpack2x16float, unpack4x8unorm, workgroupBarrier };