typegpu 0.5.4 → 0.5.5

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.
package/std/index.d.cts CHANGED
@@ -1,76 +1,77 @@
1
- import { as as AnyNumericVecInstance, y as AnyMatInstance, at as vBaseForMat, au as AnyFloatVecInstance, af as v3f, av as v3h, x as AnyVecInstance, aw as AnyVec2Instance, ax as v2b, ay as AnyVec3Instance, az as v3b, aA as v4b, aB as AnyBooleanVecInstance, aC as ScalarData, aD as atomicI32, aE as atomicU32 } from '../wgslTypes-Bh2dG5qv.cjs';
1
+ import { bn as TgpuDualFn, bo as AnyNumericVecInstance, H as AnyMatInstance, bp as vBaseForMat, bq as AnyFloatVecInstance, am as v3f, br as v3h, G as AnyVecInstance, bs as AnyVec2Instance, bt as v2b, bu as AnyVec3Instance, bv as v3b, bw as v4b, bx as AnyBooleanVecInstance, by as ScalarData, bz as atomicI32, bA as atomicU32, ap as v4f, aj as v2f, ak as v2i, an as v3i } from '../dataTypes-ts2Ccted.cjs';
2
+ import { d as TgpuSampledTexture, e as TgpuSampler } from '../sampler-DeX4AnIZ.cjs';
2
3
 
3
- declare const discard: () => never;
4
+ declare const discard: TgpuDualFn<() => never>;
4
5
 
5
- declare const add: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T;
6
- declare const sub: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T;
6
+ declare const add: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T)>;
7
+ declare const sub: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T)>;
7
8
  type MulOverload = {
8
9
  <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;
9
10
  <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;
10
11
  <T extends AnyNumericVecInstance | AnyMatInstance>(s: number | T, v: T): T;
11
12
  };
12
13
  declare const mul: MulOverload;
13
- declare const abs: <T extends AnyNumericVecInstance | number>(value: T) => T;
14
- declare const atan2: <T extends AnyFloatVecInstance | number>(y: T, x: T) => T;
15
- declare const acos: <T extends AnyFloatVecInstance | number>(value: T) => T;
16
- declare const asin: <T extends AnyFloatVecInstance | number>(value: T) => T;
14
+ declare const abs: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(value: T) => T)>;
15
+ declare const atan2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(y: T, x: T) => T)>;
16
+ declare const acos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
17
+ declare const asin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
17
18
  /**
18
19
  * @privateRemarks
19
20
  * https://www.w3.org/TR/WGSL/#ceil-builtin
20
21
  */
21
- declare const ceil: <T extends AnyFloatVecInstance | number>(value: T) => T;
22
+ declare const ceil: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
22
23
  /**
23
24
  * @privateRemarks
24
25
  * https://www.w3.org/TR/WGSL/#clamp
25
26
  */
26
- declare const clamp: <T extends AnyNumericVecInstance | number>(value: T, low: T, high: T) => T;
27
+ declare const clamp: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(value: T, low: T, high: T) => T)>;
27
28
  /**
28
29
  * @privateRemarks
29
30
  * https://www.w3.org/TR/WGSL/#cos-builtin
30
31
  */
31
- declare const cos: <T extends AnyFloatVecInstance | number>(value: T) => T;
32
+ declare const cos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
32
33
  /**
33
34
  * @privateRemarks
34
35
  * https://www.w3.org/TR/WGSL/#cross-builtin
35
36
  */
36
- declare const cross: <T extends v3f | v3h>(a: T, b: T) => T;
37
+ declare const cross: TgpuDualFn<(<T extends v3f | v3h>(a: T, b: T) => T)>;
37
38
  /**
38
39
  * @privateRemarks
39
40
  * https://www.w3.org/TR/WGSL/#dot-builtin
40
41
  */
41
- declare const dot: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => number;
42
- declare const normalize: <T extends AnyFloatVecInstance>(v: T) => T;
42
+ declare const dot: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => number)>;
43
+ declare const normalize: TgpuDualFn<(<T extends AnyFloatVecInstance>(v: T) => T)>;
43
44
  /**
44
45
  * @privateRemarks
45
46
  * https://www.w3.org/TR/WGSL/#floor-builtin
46
47
  */
47
- declare const floor: <T extends AnyFloatVecInstance | number>(value: T) => T;
48
- declare const fract: <T extends AnyFloatVecInstance | number>(a: T) => T;
48
+ declare const floor: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
49
+ declare const fract: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T) => T)>;
49
50
  /**
50
51
  * @privateRemarks
51
52
  * https://www.w3.org/TR/WGSL/#length-builtin
52
53
  */
53
- declare const length: <T extends AnyFloatVecInstance | number>(value: T) => number;
54
+ declare const length: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => number)>;
54
55
  /**
55
56
  * @privateRemarks
56
57
  * https://www.w3.org/TR/WGSL/#max-float-builtin
57
58
  */
58
- declare const max: <T extends AnyNumericVecInstance | number>(a: T, b: T) => T;
59
+ declare const max: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(a: T, b: T) => T)>;
59
60
  /**
60
61
  * @privateRemarks
61
62
  * https://www.w3.org/TR/WGSL/#min-float-builtin
62
63
  */
63
- declare const min: <T extends AnyNumericVecInstance | number>(a: T, b: T) => T;
64
+ declare const min: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(a: T, b: T) => T)>;
64
65
  /**
65
66
  * @privateRemarks
66
67
  * https://www.w3.org/TR/WGSL/#sin-builtin
67
68
  */
68
- declare const sin: <T extends AnyFloatVecInstance | number>(value: T) => T;
69
+ declare const sin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
69
70
  /**
70
71
  * @privateRemarks
71
72
  * https://www.w3.org/TR/WGSL/#exp-builtin
72
73
  */
73
- declare const exp: <T extends AnyFloatVecInstance | number>(value: T) => T;
74
+ declare const exp: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
74
75
  type PowOverload = {
75
76
  (base: number, exponent: number): number;
76
77
  <T extends AnyFloatVecInstance>(base: T, exponent: T): T;
@@ -82,8 +83,9 @@ type MixOverload = {
82
83
  <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;
83
84
  };
84
85
  declare const mix: MixOverload;
85
- declare const reflect: <T extends AnyFloatVecInstance>(e1: T, e2: T) => T;
86
- declare const distance: <T extends AnyFloatVecInstance | number>(a: T, b: T) => number;
86
+ declare const reflect: TgpuDualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T) => T)>;
87
+ declare const distance: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T, b: T) => number)>;
88
+ declare const neg: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(value: T) => T)>;
87
89
 
88
90
  /**
89
91
  * Checks whether `lhs == rhs` on all components.
@@ -92,7 +94,7 @@ declare const distance: <T extends AnyFloatVecInstance | number>(a: T, b: T) =>
92
94
  * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false
93
95
  * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true
94
96
  */
95
- declare const allEq: <T extends AnyVecInstance>(lhs: T, rhs: T) => boolean;
97
+ declare const allEq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => boolean)>;
96
98
  /**
97
99
  * Checks **component-wise** whether `lhs == rhs`.
98
100
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.
@@ -102,7 +104,7 @@ declare const allEq: <T extends AnyVecInstance>(lhs: T, rhs: T) => boolean;
102
104
  * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true
103
105
  * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true
104
106
  */
105
- declare const eq: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
107
+ declare const eq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
106
108
  /**
107
109
  * Checks **component-wise** whether `lhs != rhs`.
108
110
  * This function does **not** return `bool`, for that use-case, wrap the result in `any`.
@@ -111,7 +113,7 @@ declare const eq: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec
111
113
  * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)
112
114
  * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true
113
115
  */
114
- declare const ne: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
116
+ declare const ne: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
115
117
  /**
116
118
  * Checks **component-wise** whether `lhs < rhs`.
117
119
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -120,7 +122,7 @@ declare const ne: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec
120
122
  * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)
121
123
  * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true
122
124
  */
123
- declare const lt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
125
+ declare const lt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
124
126
  /**
125
127
  * Checks **component-wise** whether `lhs <= rhs`.
126
128
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -129,7 +131,7 @@ declare const lt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends
129
131
  * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)
130
132
  * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true
131
133
  */
132
- declare const le: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
134
+ declare const le: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
133
135
  /**
134
136
  * Checks **component-wise** whether `lhs > rhs`.
135
137
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -138,7 +140,7 @@ declare const le: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends
138
140
  * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)
139
141
  * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true
140
142
  */
141
- declare const gt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
143
+ declare const gt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
142
144
  /**
143
145
  * Checks **component-wise** whether `lhs >= rhs`.
144
146
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -147,42 +149,42 @@ declare const gt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends
147
149
  * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)
148
150
  * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true
149
151
  */
150
- declare const ge: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
152
+ declare const ge: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
151
153
  /**
152
154
  * Returns **component-wise** `!value`.
153
155
  * @example
154
156
  * not(vec2b(false, true)) // returns vec2b(true, false)
155
157
  * not(vec3b(true, true, false)) // returns vec3b(false, false, true)
156
158
  */
157
- declare const not: <T extends AnyBooleanVecInstance>(value: T) => T;
159
+ declare const not: TgpuDualFn<(<T extends AnyBooleanVecInstance>(value: T) => T)>;
158
160
  /**
159
161
  * Returns **component-wise** logical `or` result.
160
162
  * @example
161
163
  * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)
162
164
  * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)
163
165
  */
164
- declare const or: <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T;
166
+ declare const or: TgpuDualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
165
167
  /**
166
168
  * Returns **component-wise** logical `and` result.
167
169
  * @example
168
170
  * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)
169
171
  * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)
170
172
  */
171
- declare const and: <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T;
173
+ declare const and: TgpuDualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
172
174
  /**
173
175
  * Returns `true` if each component of `value` is true.
174
176
  * @example
175
177
  * all(vec2b(false, true)) // returns false
176
178
  * all(vec3b(true, true, true)) // returns true
177
179
  */
178
- declare const all: (value: AnyBooleanVecInstance) => boolean;
180
+ declare const all: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
179
181
  /**
180
182
  * Returns `true` if any component of `value` is true.
181
183
  * @example
182
184
  * any(vec2b(false, true)) // returns true
183
185
  * any(vec3b(false, false, false)) // returns false
184
186
  */
185
- declare const any: (value: AnyBooleanVecInstance) => boolean;
187
+ declare const any: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
186
188
  /**
187
189
  * Checks whether the given elements differ by at most the `precision` value.
188
190
  * Checks all elements of `lhs` and `rhs` if arguments are vectors.
@@ -192,7 +194,7 @@ declare const any: (value: AnyBooleanVecInstance) => boolean;
192
194
  *
193
195
  * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.
194
196
  */
195
- declare const isCloseTo: <T extends AnyFloatVecInstance | number>(lhs: T, rhs: T, precision?: number) => boolean;
197
+ declare const isCloseTo: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(lhs: T, rhs: T, precision?: number) => boolean)>;
196
198
  type SelectOverload = {
197
199
  <T extends ScalarData | AnyVecInstance>(f: T, t: T, cond: boolean): T;
198
200
  <T extends AnyVecInstance>(f: T, t: T, cond: T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b): T;
@@ -207,19 +209,52 @@ type SelectOverload = {
207
209
  declare const select: SelectOverload;
208
210
 
209
211
  type AnyAtomic = atomicI32 | atomicU32;
210
- declare const workgroupBarrier: () => void;
211
- declare const storageBarrier: () => void;
212
- declare const textureBarrier: () => void;
213
- declare const atomicLoad: <T extends AnyAtomic>(a: T) => number;
214
- declare const atomicStore: <T extends AnyAtomic>(a: T, value: number) => void;
215
- declare const atomicAdd: <T extends AnyAtomic>(a: T, value: number) => number;
216
- declare const atomicSub: <T extends AnyAtomic>(a: T, value: number) => number;
217
- declare const atomicMax: <T extends AnyAtomic>(a: T, value: number) => number;
218
- declare const atomicMin: <T extends AnyAtomic>(a: T, value: number) => number;
219
- declare const atomicAnd: <T extends AnyAtomic>(a: T, value: number) => number;
220
- declare const atomicOr: <T extends AnyAtomic>(a: T, value: number) => number;
221
- declare const atomicXor: <T extends AnyAtomic>(a: T, value: number) => number;
212
+ declare const workgroupBarrier: TgpuDualFn<() => void>;
213
+ declare const storageBarrier: TgpuDualFn<() => void>;
214
+ declare const textureBarrier: TgpuDualFn<() => void>;
215
+ declare const atomicLoad: TgpuDualFn<(<T extends AnyAtomic>(a: T) => number)>;
216
+ declare const atomicStore: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
217
+ declare const atomicAdd: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
218
+ declare const atomicSub: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
219
+ declare const atomicMax: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
220
+ declare const atomicMin: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
221
+ declare const atomicAnd: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
222
+ declare const atomicOr: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
223
+ declare const atomicXor: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
222
224
 
223
- declare const arrayLength: (a: unknown[]) => number;
225
+ declare const arrayLength: TgpuDualFn<(a: unknown[]) => number>;
224
226
 
225
- export { abs, acos, add, all, allEq, and, any, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, distance, dot, eq, exp, floor, fract, ge, gt, isCloseTo, le, length, lt, max, min, mix, mul, ne, normalize, not, or, pow, reflect, select, sin, storageBarrier, sub, textureBarrier, workgroupBarrier };
227
+ /**
228
+ * @privateRemarks
229
+ * https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
230
+ */
231
+ declare const unpack2x16float: TgpuDualFn<(e: number) => v2f>;
232
+ /**
233
+ * @privateRemarks
234
+ * https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
235
+ */
236
+ declare const pack2x16float: TgpuDualFn<(e: v2f) => number>;
237
+ /**
238
+ * @privateRemarks
239
+ * https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
240
+ */
241
+ declare const unpack4x8unorm: TgpuDualFn<(e: number) => v4f>;
242
+ /**
243
+ * @privateRemarks
244
+ * https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
245
+ */
246
+ declare const pack4x8unorm: TgpuDualFn<(e: v4f) => number>;
247
+
248
+ type TextureSampleOverload = {
249
+ <T extends TgpuSampledTexture<'1d'>>(texture: T, sampler: TgpuSampler, coords: number): v4f;
250
+ <T extends TgpuSampledTexture<'2d'>>(texture: T, sampler: TgpuSampler, coords: v2f): v4f;
251
+ <T extends TgpuSampledTexture<'2d'>>(texture: T, sampler: TgpuSampler, coords: v2f, offset: v2i): v4f;
252
+ <T extends TgpuSampledTexture<'2d-array'>>(texture: T, sampler: TgpuSampler, coords: v2f, arrayIndex: number): v4f;
253
+ <T extends TgpuSampledTexture<'2d-array'>>(texture: T, sampler: TgpuSampler, coords: v2f, arrayIndex: number, offset: v2i): v4f;
254
+ <T extends TgpuSampledTexture<'3d' | 'cube'>>(texture: T, sampler: TgpuSampler, coords: v3f): v4f;
255
+ <T extends TgpuSampledTexture<'3d'>>(texture: T, sampler: TgpuSampler, coords: v3f, offset: v3i): v4f;
256
+ <T extends TgpuSampledTexture<'cube-array'>>(texture: T, sampler: TgpuSampler, coords: v3f, arrayIndex: number): v4f;
257
+ };
258
+ declare const textureSample: TextureSampleOverload;
259
+
260
+ export { abs, acos, add, all, allEq, and, any, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, distance, dot, eq, exp, floor, fract, ge, gt, isCloseTo, le, length, lt, max, min, mix, mul, ne, neg, normalize, not, or, pack2x16float, pack4x8unorm, pow, reflect, select, sin, storageBarrier, sub, textureBarrier, textureSample, unpack2x16float, unpack4x8unorm, workgroupBarrier };
package/std/index.d.ts CHANGED
@@ -1,76 +1,77 @@
1
- import { as as AnyNumericVecInstance, y as AnyMatInstance, at as vBaseForMat, au as AnyFloatVecInstance, af as v3f, av as v3h, x as AnyVecInstance, aw as AnyVec2Instance, ax as v2b, ay as AnyVec3Instance, az as v3b, aA as v4b, aB as AnyBooleanVecInstance, aC as ScalarData, aD as atomicI32, aE as atomicU32 } from '../wgslTypes-Bh2dG5qv.js';
1
+ import { bn as TgpuDualFn, bo as AnyNumericVecInstance, H as AnyMatInstance, bp as vBaseForMat, bq as AnyFloatVecInstance, am as v3f, br as v3h, G as AnyVecInstance, bs as AnyVec2Instance, bt as v2b, bu as AnyVec3Instance, bv as v3b, bw as v4b, bx as AnyBooleanVecInstance, by as ScalarData, bz as atomicI32, bA as atomicU32, ap as v4f, aj as v2f, ak as v2i, an as v3i } from '../dataTypes-ts2Ccted.js';
2
+ import { d as TgpuSampledTexture, e as TgpuSampler } from '../sampler-CPNwYXSH.js';
2
3
 
3
- declare const discard: () => never;
4
+ declare const discard: TgpuDualFn<() => never>;
4
5
 
5
- declare const add: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T;
6
- declare const sub: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T;
6
+ declare const add: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T)>;
7
+ declare const sub: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T)>;
7
8
  type MulOverload = {
8
9
  <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;
9
10
  <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;
10
11
  <T extends AnyNumericVecInstance | AnyMatInstance>(s: number | T, v: T): T;
11
12
  };
12
13
  declare const mul: MulOverload;
13
- declare const abs: <T extends AnyNumericVecInstance | number>(value: T) => T;
14
- declare const atan2: <T extends AnyFloatVecInstance | number>(y: T, x: T) => T;
15
- declare const acos: <T extends AnyFloatVecInstance | number>(value: T) => T;
16
- declare const asin: <T extends AnyFloatVecInstance | number>(value: T) => T;
14
+ declare const abs: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(value: T) => T)>;
15
+ declare const atan2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(y: T, x: T) => T)>;
16
+ declare const acos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
17
+ declare const asin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
17
18
  /**
18
19
  * @privateRemarks
19
20
  * https://www.w3.org/TR/WGSL/#ceil-builtin
20
21
  */
21
- declare const ceil: <T extends AnyFloatVecInstance | number>(value: T) => T;
22
+ declare const ceil: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
22
23
  /**
23
24
  * @privateRemarks
24
25
  * https://www.w3.org/TR/WGSL/#clamp
25
26
  */
26
- declare const clamp: <T extends AnyNumericVecInstance | number>(value: T, low: T, high: T) => T;
27
+ declare const clamp: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(value: T, low: T, high: T) => T)>;
27
28
  /**
28
29
  * @privateRemarks
29
30
  * https://www.w3.org/TR/WGSL/#cos-builtin
30
31
  */
31
- declare const cos: <T extends AnyFloatVecInstance | number>(value: T) => T;
32
+ declare const cos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
32
33
  /**
33
34
  * @privateRemarks
34
35
  * https://www.w3.org/TR/WGSL/#cross-builtin
35
36
  */
36
- declare const cross: <T extends v3f | v3h>(a: T, b: T) => T;
37
+ declare const cross: TgpuDualFn<(<T extends v3f | v3h>(a: T, b: T) => T)>;
37
38
  /**
38
39
  * @privateRemarks
39
40
  * https://www.w3.org/TR/WGSL/#dot-builtin
40
41
  */
41
- declare const dot: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => number;
42
- declare const normalize: <T extends AnyFloatVecInstance>(v: T) => T;
42
+ declare const dot: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => number)>;
43
+ declare const normalize: TgpuDualFn<(<T extends AnyFloatVecInstance>(v: T) => T)>;
43
44
  /**
44
45
  * @privateRemarks
45
46
  * https://www.w3.org/TR/WGSL/#floor-builtin
46
47
  */
47
- declare const floor: <T extends AnyFloatVecInstance | number>(value: T) => T;
48
- declare const fract: <T extends AnyFloatVecInstance | number>(a: T) => T;
48
+ declare const floor: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
49
+ declare const fract: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T) => T)>;
49
50
  /**
50
51
  * @privateRemarks
51
52
  * https://www.w3.org/TR/WGSL/#length-builtin
52
53
  */
53
- declare const length: <T extends AnyFloatVecInstance | number>(value: T) => number;
54
+ declare const length: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => number)>;
54
55
  /**
55
56
  * @privateRemarks
56
57
  * https://www.w3.org/TR/WGSL/#max-float-builtin
57
58
  */
58
- declare const max: <T extends AnyNumericVecInstance | number>(a: T, b: T) => T;
59
+ declare const max: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(a: T, b: T) => T)>;
59
60
  /**
60
61
  * @privateRemarks
61
62
  * https://www.w3.org/TR/WGSL/#min-float-builtin
62
63
  */
63
- declare const min: <T extends AnyNumericVecInstance | number>(a: T, b: T) => T;
64
+ declare const min: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(a: T, b: T) => T)>;
64
65
  /**
65
66
  * @privateRemarks
66
67
  * https://www.w3.org/TR/WGSL/#sin-builtin
67
68
  */
68
- declare const sin: <T extends AnyFloatVecInstance | number>(value: T) => T;
69
+ declare const sin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
69
70
  /**
70
71
  * @privateRemarks
71
72
  * https://www.w3.org/TR/WGSL/#exp-builtin
72
73
  */
73
- declare const exp: <T extends AnyFloatVecInstance | number>(value: T) => T;
74
+ declare const exp: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
74
75
  type PowOverload = {
75
76
  (base: number, exponent: number): number;
76
77
  <T extends AnyFloatVecInstance>(base: T, exponent: T): T;
@@ -82,8 +83,9 @@ type MixOverload = {
82
83
  <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;
83
84
  };
84
85
  declare const mix: MixOverload;
85
- declare const reflect: <T extends AnyFloatVecInstance>(e1: T, e2: T) => T;
86
- declare const distance: <T extends AnyFloatVecInstance | number>(a: T, b: T) => number;
86
+ declare const reflect: TgpuDualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T) => T)>;
87
+ declare const distance: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T, b: T) => number)>;
88
+ declare const neg: TgpuDualFn<(<T extends AnyNumericVecInstance | number>(value: T) => T)>;
87
89
 
88
90
  /**
89
91
  * Checks whether `lhs == rhs` on all components.
@@ -92,7 +94,7 @@ declare const distance: <T extends AnyFloatVecInstance | number>(a: T, b: T) =>
92
94
  * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false
93
95
  * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true
94
96
  */
95
- declare const allEq: <T extends AnyVecInstance>(lhs: T, rhs: T) => boolean;
97
+ declare const allEq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => boolean)>;
96
98
  /**
97
99
  * Checks **component-wise** whether `lhs == rhs`.
98
100
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.
@@ -102,7 +104,7 @@ declare const allEq: <T extends AnyVecInstance>(lhs: T, rhs: T) => boolean;
102
104
  * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true
103
105
  * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true
104
106
  */
105
- declare const eq: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
107
+ declare const eq: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
106
108
  /**
107
109
  * Checks **component-wise** whether `lhs != rhs`.
108
110
  * This function does **not** return `bool`, for that use-case, wrap the result in `any`.
@@ -111,7 +113,7 @@ declare const eq: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec
111
113
  * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)
112
114
  * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true
113
115
  */
114
- declare const ne: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
116
+ declare const ne: TgpuDualFn<(<T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
115
117
  /**
116
118
  * Checks **component-wise** whether `lhs < rhs`.
117
119
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -120,7 +122,7 @@ declare const ne: <T extends AnyVecInstance>(lhs: T, rhs: T) => T extends AnyVec
120
122
  * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)
121
123
  * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true
122
124
  */
123
- declare const lt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
125
+ declare const lt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
124
126
  /**
125
127
  * Checks **component-wise** whether `lhs <= rhs`.
126
128
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -129,7 +131,7 @@ declare const lt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends
129
131
  * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)
130
132
  * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true
131
133
  */
132
- declare const le: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
134
+ declare const le: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
133
135
  /**
134
136
  * Checks **component-wise** whether `lhs > rhs`.
135
137
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -138,7 +140,7 @@ declare const le: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends
138
140
  * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)
139
141
  * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true
140
142
  */
141
- declare const gt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
143
+ declare const gt: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
142
144
  /**
143
145
  * Checks **component-wise** whether `lhs >= rhs`.
144
146
  * This function does **not** return `bool`, for that use-case, wrap the result in `all`.
@@ -147,42 +149,42 @@ declare const gt: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends
147
149
  * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)
148
150
  * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true
149
151
  */
150
- declare const ge: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b;
152
+ declare const ge: TgpuDualFn<(<T extends AnyNumericVecInstance>(lhs: T, rhs: T) => T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b)>;
151
153
  /**
152
154
  * Returns **component-wise** `!value`.
153
155
  * @example
154
156
  * not(vec2b(false, true)) // returns vec2b(true, false)
155
157
  * not(vec3b(true, true, false)) // returns vec3b(false, false, true)
156
158
  */
157
- declare const not: <T extends AnyBooleanVecInstance>(value: T) => T;
159
+ declare const not: TgpuDualFn<(<T extends AnyBooleanVecInstance>(value: T) => T)>;
158
160
  /**
159
161
  * Returns **component-wise** logical `or` result.
160
162
  * @example
161
163
  * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)
162
164
  * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)
163
165
  */
164
- declare const or: <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T;
166
+ declare const or: TgpuDualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
165
167
  /**
166
168
  * Returns **component-wise** logical `and` result.
167
169
  * @example
168
170
  * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)
169
171
  * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)
170
172
  */
171
- declare const and: <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T;
173
+ declare const and: TgpuDualFn<(<T extends AnyBooleanVecInstance>(lhs: T, rhs: T) => T)>;
172
174
  /**
173
175
  * Returns `true` if each component of `value` is true.
174
176
  * @example
175
177
  * all(vec2b(false, true)) // returns false
176
178
  * all(vec3b(true, true, true)) // returns true
177
179
  */
178
- declare const all: (value: AnyBooleanVecInstance) => boolean;
180
+ declare const all: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
179
181
  /**
180
182
  * Returns `true` if any component of `value` is true.
181
183
  * @example
182
184
  * any(vec2b(false, true)) // returns true
183
185
  * any(vec3b(false, false, false)) // returns false
184
186
  */
185
- declare const any: (value: AnyBooleanVecInstance) => boolean;
187
+ declare const any: TgpuDualFn<(value: AnyBooleanVecInstance) => boolean>;
186
188
  /**
187
189
  * Checks whether the given elements differ by at most the `precision` value.
188
190
  * Checks all elements of `lhs` and `rhs` if arguments are vectors.
@@ -192,7 +194,7 @@ declare const any: (value: AnyBooleanVecInstance) => boolean;
192
194
  *
193
195
  * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.
194
196
  */
195
- declare const isCloseTo: <T extends AnyFloatVecInstance | number>(lhs: T, rhs: T, precision?: number) => boolean;
197
+ declare const isCloseTo: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(lhs: T, rhs: T, precision?: number) => boolean)>;
196
198
  type SelectOverload = {
197
199
  <T extends ScalarData | AnyVecInstance>(f: T, t: T, cond: boolean): T;
198
200
  <T extends AnyVecInstance>(f: T, t: T, cond: T extends AnyVec2Instance ? v2b : T extends AnyVec3Instance ? v3b : v4b): T;
@@ -207,19 +209,52 @@ type SelectOverload = {
207
209
  declare const select: SelectOverload;
208
210
 
209
211
  type AnyAtomic = atomicI32 | atomicU32;
210
- declare const workgroupBarrier: () => void;
211
- declare const storageBarrier: () => void;
212
- declare const textureBarrier: () => void;
213
- declare const atomicLoad: <T extends AnyAtomic>(a: T) => number;
214
- declare const atomicStore: <T extends AnyAtomic>(a: T, value: number) => void;
215
- declare const atomicAdd: <T extends AnyAtomic>(a: T, value: number) => number;
216
- declare const atomicSub: <T extends AnyAtomic>(a: T, value: number) => number;
217
- declare const atomicMax: <T extends AnyAtomic>(a: T, value: number) => number;
218
- declare const atomicMin: <T extends AnyAtomic>(a: T, value: number) => number;
219
- declare const atomicAnd: <T extends AnyAtomic>(a: T, value: number) => number;
220
- declare const atomicOr: <T extends AnyAtomic>(a: T, value: number) => number;
221
- declare const atomicXor: <T extends AnyAtomic>(a: T, value: number) => number;
212
+ declare const workgroupBarrier: TgpuDualFn<() => void>;
213
+ declare const storageBarrier: TgpuDualFn<() => void>;
214
+ declare const textureBarrier: TgpuDualFn<() => void>;
215
+ declare const atomicLoad: TgpuDualFn<(<T extends AnyAtomic>(a: T) => number)>;
216
+ declare const atomicStore: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => void)>;
217
+ declare const atomicAdd: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
218
+ declare const atomicSub: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
219
+ declare const atomicMax: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
220
+ declare const atomicMin: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
221
+ declare const atomicAnd: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
222
+ declare const atomicOr: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
223
+ declare const atomicXor: TgpuDualFn<(<T extends AnyAtomic>(a: T, value: number) => number)>;
222
224
 
223
- declare const arrayLength: (a: unknown[]) => number;
225
+ declare const arrayLength: TgpuDualFn<(a: unknown[]) => number>;
224
226
 
225
- export { abs, acos, add, all, allEq, and, any, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, distance, dot, eq, exp, floor, fract, ge, gt, isCloseTo, le, length, lt, max, min, mix, mul, ne, normalize, not, or, pow, reflect, select, sin, storageBarrier, sub, textureBarrier, workgroupBarrier };
227
+ /**
228
+ * @privateRemarks
229
+ * https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin
230
+ */
231
+ declare const unpack2x16float: TgpuDualFn<(e: number) => v2f>;
232
+ /**
233
+ * @privateRemarks
234
+ * https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin
235
+ */
236
+ declare const pack2x16float: TgpuDualFn<(e: v2f) => number>;
237
+ /**
238
+ * @privateRemarks
239
+ * https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin
240
+ */
241
+ declare const unpack4x8unorm: TgpuDualFn<(e: number) => v4f>;
242
+ /**
243
+ * @privateRemarks
244
+ * https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin
245
+ */
246
+ declare const pack4x8unorm: TgpuDualFn<(e: v4f) => number>;
247
+
248
+ type TextureSampleOverload = {
249
+ <T extends TgpuSampledTexture<'1d'>>(texture: T, sampler: TgpuSampler, coords: number): v4f;
250
+ <T extends TgpuSampledTexture<'2d'>>(texture: T, sampler: TgpuSampler, coords: v2f): v4f;
251
+ <T extends TgpuSampledTexture<'2d'>>(texture: T, sampler: TgpuSampler, coords: v2f, offset: v2i): v4f;
252
+ <T extends TgpuSampledTexture<'2d-array'>>(texture: T, sampler: TgpuSampler, coords: v2f, arrayIndex: number): v4f;
253
+ <T extends TgpuSampledTexture<'2d-array'>>(texture: T, sampler: TgpuSampler, coords: v2f, arrayIndex: number, offset: v2i): v4f;
254
+ <T extends TgpuSampledTexture<'3d' | 'cube'>>(texture: T, sampler: TgpuSampler, coords: v3f): v4f;
255
+ <T extends TgpuSampledTexture<'3d'>>(texture: T, sampler: TgpuSampler, coords: v3f, offset: v3i): v4f;
256
+ <T extends TgpuSampledTexture<'cube-array'>>(texture: T, sampler: TgpuSampler, coords: v3f, arrayIndex: number): v4f;
257
+ };
258
+ declare const textureSample: TextureSampleOverload;
259
+
260
+ export { abs, acos, add, all, allEq, and, any, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, distance, dot, eq, exp, floor, fract, ge, gt, isCloseTo, le, length, lt, max, min, mix, mul, ne, neg, normalize, not, or, pack2x16float, pack4x8unorm, pow, reflect, select, sin, storageBarrier, sub, textureBarrier, textureSample, unpack2x16float, unpack4x8unorm, workgroupBarrier };