typegpu 0.4.6 → 0.5.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.
package/std/index.d.cts CHANGED
@@ -1,85 +1,117 @@
1
1
  import { bk as VecKind, J as AnyMatInstance, bl as vBaseForMat, ai as v3f, aj as v3i, ak as v3u, af as v2f, al as v4f, bm as v2h, bn as v3h, bo as v4h, bp as atomicI32, bq as atomicU32 } from '../wgslTypes-VtSRoe90.cjs';
2
2
 
3
- declare function discard(): never;
3
+ declare const discard: () => never;
4
4
 
5
5
  type vBase = {
6
6
  kind: VecKind;
7
7
  };
8
- declare function add<T extends vBase>(lhs: T, rhs: T): T;
9
- declare function sub<T extends vBase>(lhs: T, rhs: T): T;
10
- declare function mul<T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;
11
- declare function mul<T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;
12
- declare function mul<T extends vBase | AnyMatInstance>(s: number | T, v: T): T;
13
- declare function abs<T extends vBase | number>(value: T): T;
14
- declare function atan2<T extends vBase | number>(y: T, x: T): T;
8
+ declare const add: <T extends vBase>(lhs: T, rhs: T) => T;
9
+ declare const sub: <T extends vBase>(lhs: T, rhs: T) => T;
10
+ type MulOverload = {
11
+ <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;
12
+ <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;
13
+ <T extends vBase | AnyMatInstance>(s: number | T, v: T): T;
14
+ };
15
+ declare const mul: MulOverload;
16
+ declare const abs: <T extends vBase | number>(value: T) => T;
17
+ declare const atan2: <T extends vBase | number>(y: T, x: T) => T;
18
+ declare const acos: <T extends vBase | number>(value: T) => T;
19
+ declare const asin: <T extends vBase | number>(value: T) => T;
15
20
  /**
16
21
  * @privateRemarks
17
22
  * https://www.w3.org/TR/WGSL/#ceil-builtin
18
23
  */
19
- declare function ceil<T extends vBase | number>(value: T): T;
24
+ declare const ceil: <T extends vBase | number>(value: T) => T;
20
25
  /**
21
26
  * @privateRemarks
22
27
  * https://www.w3.org/TR/WGSL/#clamp
23
28
  */
24
- declare function clamp<T extends vBase | number>(value: T, low: T, high: T): T;
29
+ declare const clamp: <T extends vBase | number>(value: T, low: T, high: T) => T;
25
30
  /**
26
31
  * @privateRemarks
27
32
  * https://www.w3.org/TR/WGSL/#cos-builtin
28
33
  */
29
- declare function cos(radians: number): number;
34
+ declare const cos: <T extends vBase | number>(value: T) => T;
30
35
  /**
31
36
  * @privateRemarks
32
37
  * https://www.w3.org/TR/WGSL/#cross-builtin
33
38
  */
34
- declare function cross<T extends v3f | v3i | v3u>(a: T, b: T): T;
39
+ declare const cross: <T extends v3f | v3i | v3u>(a: T, b: T) => T;
35
40
  /**
36
41
  * @privateRemarks
37
42
  * https://www.w3.org/TR/WGSL/#dot-builtin
38
43
  */
39
- declare function dot<T extends vBase>(lhs: T, rhs: T): number;
40
- declare function normalize<T extends vBase>(v: T): T;
44
+ declare const dot: <T extends vBase>(lhs: T, rhs: T) => number;
45
+ declare const normalize: <T extends vBase>(v: T) => T;
41
46
  /**
42
47
  * @privateRemarks
43
48
  * https://www.w3.org/TR/WGSL/#floor-builtin
44
49
  */
45
- declare function floor<T extends vBase | number>(value: T): T;
46
- declare function fract(a: number): number;
50
+ declare const floor: <T extends vBase | number>(value: T) => T;
51
+ declare const fract: <T extends vBase | number>(a: T) => T;
47
52
  /**
48
53
  * @privateRemarks
49
54
  * https://www.w3.org/TR/WGSL/#length-builtin
50
55
  */
51
- declare function length<T extends vBase | number>(value: T): number;
56
+ declare const length: <T extends vBase | number>(value: T) => number;
52
57
  /**
53
58
  * @privateRemarks
54
59
  * https://www.w3.org/TR/WGSL/#max-float-builtin
55
60
  */
56
- declare function max<T extends vBase | number>(a: T, b: T): T;
61
+ declare const max: <T extends vBase | number>(a: T, b: T) => T;
57
62
  /**
58
63
  * @privateRemarks
59
64
  * https://www.w3.org/TR/WGSL/#min-float-builtin
60
65
  */
61
- declare function min<T extends vBase | number>(a: T, b: T): T;
62
- declare function sin(radians: number): number;
63
- declare function exp(value: number): number;
64
- declare function pow(base: number, exponent: number): number;
65
- declare function pow<T extends v2f | v3f | v4f | v2h | v3h | v4h>(base: T, exponent: T): T;
66
- declare function mix(e1: number, e2: number, e3: number): number;
67
- declare function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: number): T;
68
- declare function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: T): T;
69
- declare function reflect<T extends vBase>(e1: T, e2: T): T;
66
+ declare const min: <T extends vBase | number>(a: T, b: T) => T;
67
+ /**
68
+ * @privateRemarks
69
+ * https://www.w3.org/TR/WGSL/#sin-builtin
70
+ */
71
+ declare const sin: <T extends vBase | number>(value: T) => T;
72
+ /**
73
+ * @privateRemarks
74
+ * https://www.w3.org/TR/WGSL/#exp-builtin
75
+ */
76
+ declare const exp: <T extends vBase | number>(value: T) => T;
77
+ type PowOverload = {
78
+ (base: number, exponent: number): number;
79
+ <T extends v2f | v3f | v4f | v2h | v3h | v4h>(base: T, exponent: T): T;
80
+ };
81
+ declare const pow: PowOverload;
82
+ type MixOverload = {
83
+ (e1: number, e2: number, e3: number): number;
84
+ <T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: number): T;
85
+ <T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: T): T;
86
+ };
87
+ declare const mix: MixOverload;
88
+ declare const reflect: <T extends vBase>(e1: T, e2: T) => T;
89
+ declare const distance: <T extends vBase | number>(a: T, b: T) => number;
90
+ /**
91
+ * Checks whether the given elements differ by at most 0.01.
92
+ * Component-wise if arguments are vectors.
93
+ * @example
94
+ * isCloseTo(0, 0.1) // returns false
95
+ * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true
96
+ *
97
+ * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.
98
+ */
99
+ declare const isCloseTo: <T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(e1: T, e2: T, precision?: number) => boolean;
70
100
 
71
101
  type AnyAtomic = atomicI32 | atomicU32;
72
- declare function workgroupBarrier(): void;
73
- declare function storageBarrier(): void;
74
- declare function textureBarrier(): void;
75
- declare function atomicLoad<T extends AnyAtomic>(a: T): number;
76
- declare function atomicStore<T extends AnyAtomic>(a: T, value: number): void;
77
- declare function atomicAdd<T extends AnyAtomic>(a: T, value: number): number;
78
- declare function atomicSub<T extends AnyAtomic>(a: T, value: number): number;
79
- declare function atomicMax<T extends AnyAtomic>(a: T, value: number): number;
80
- declare function atomicMin<T extends AnyAtomic>(a: T, value: number): number;
81
- declare function atomicAnd<T extends AnyAtomic>(a: T, value: number): number;
82
- declare function atomicOr<T extends AnyAtomic>(a: T, value: number): number;
83
- declare function atomicXor<T extends AnyAtomic>(a: T, value: number): number;
102
+ declare const workgroupBarrier: () => void;
103
+ declare const storageBarrier: () => void;
104
+ declare const textureBarrier: () => void;
105
+ declare const atomicLoad: <T extends AnyAtomic>(a: T) => number;
106
+ declare const atomicStore: <T extends AnyAtomic>(a: T, value: number) => void;
107
+ declare const atomicAdd: <T extends AnyAtomic>(a: T, value: number) => number;
108
+ declare const atomicSub: <T extends AnyAtomic>(a: T, value: number) => number;
109
+ declare const atomicMax: <T extends AnyAtomic>(a: T, value: number) => number;
110
+ declare const atomicMin: <T extends AnyAtomic>(a: T, value: number) => number;
111
+ declare const atomicAnd: <T extends AnyAtomic>(a: T, value: number) => number;
112
+ declare const atomicOr: <T extends AnyAtomic>(a: T, value: number) => number;
113
+ declare const atomicXor: <T extends AnyAtomic>(a: T, value: number) => number;
114
+
115
+ declare const arrayLength: (a: unknown[]) => number;
84
116
 
85
- export { abs, add, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, dot, exp, floor, fract, length, max, min, mix, mul, normalize, pow, reflect, sin, storageBarrier, sub, textureBarrier, workgroupBarrier };
117
+ export { abs, acos, add, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, distance, dot, exp, floor, fract, isCloseTo, length, max, min, mix, mul, normalize, pow, reflect, sin, storageBarrier, sub, textureBarrier, workgroupBarrier };
package/std/index.d.ts CHANGED
@@ -1,85 +1,117 @@
1
1
  import { bk as VecKind, J as AnyMatInstance, bl as vBaseForMat, ai as v3f, aj as v3i, ak as v3u, af as v2f, al as v4f, bm as v2h, bn as v3h, bo as v4h, bp as atomicI32, bq as atomicU32 } from '../wgslTypes-VtSRoe90.js';
2
2
 
3
- declare function discard(): never;
3
+ declare const discard: () => never;
4
4
 
5
5
  type vBase = {
6
6
  kind: VecKind;
7
7
  };
8
- declare function add<T extends vBase>(lhs: T, rhs: T): T;
9
- declare function sub<T extends vBase>(lhs: T, rhs: T): T;
10
- declare function mul<T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;
11
- declare function mul<T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;
12
- declare function mul<T extends vBase | AnyMatInstance>(s: number | T, v: T): T;
13
- declare function abs<T extends vBase | number>(value: T): T;
14
- declare function atan2<T extends vBase | number>(y: T, x: T): T;
8
+ declare const add: <T extends vBase>(lhs: T, rhs: T) => T;
9
+ declare const sub: <T extends vBase>(lhs: T, rhs: T) => T;
10
+ type MulOverload = {
11
+ <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: T, v: TVec): TVec;
12
+ <T extends AnyMatInstance, TVec extends vBaseForMat<T>>(s: TVec, v: T): TVec;
13
+ <T extends vBase | AnyMatInstance>(s: number | T, v: T): T;
14
+ };
15
+ declare const mul: MulOverload;
16
+ declare const abs: <T extends vBase | number>(value: T) => T;
17
+ declare const atan2: <T extends vBase | number>(y: T, x: T) => T;
18
+ declare const acos: <T extends vBase | number>(value: T) => T;
19
+ declare const asin: <T extends vBase | number>(value: T) => T;
15
20
  /**
16
21
  * @privateRemarks
17
22
  * https://www.w3.org/TR/WGSL/#ceil-builtin
18
23
  */
19
- declare function ceil<T extends vBase | number>(value: T): T;
24
+ declare const ceil: <T extends vBase | number>(value: T) => T;
20
25
  /**
21
26
  * @privateRemarks
22
27
  * https://www.w3.org/TR/WGSL/#clamp
23
28
  */
24
- declare function clamp<T extends vBase | number>(value: T, low: T, high: T): T;
29
+ declare const clamp: <T extends vBase | number>(value: T, low: T, high: T) => T;
25
30
  /**
26
31
  * @privateRemarks
27
32
  * https://www.w3.org/TR/WGSL/#cos-builtin
28
33
  */
29
- declare function cos(radians: number): number;
34
+ declare const cos: <T extends vBase | number>(value: T) => T;
30
35
  /**
31
36
  * @privateRemarks
32
37
  * https://www.w3.org/TR/WGSL/#cross-builtin
33
38
  */
34
- declare function cross<T extends v3f | v3i | v3u>(a: T, b: T): T;
39
+ declare const cross: <T extends v3f | v3i | v3u>(a: T, b: T) => T;
35
40
  /**
36
41
  * @privateRemarks
37
42
  * https://www.w3.org/TR/WGSL/#dot-builtin
38
43
  */
39
- declare function dot<T extends vBase>(lhs: T, rhs: T): number;
40
- declare function normalize<T extends vBase>(v: T): T;
44
+ declare const dot: <T extends vBase>(lhs: T, rhs: T) => number;
45
+ declare const normalize: <T extends vBase>(v: T) => T;
41
46
  /**
42
47
  * @privateRemarks
43
48
  * https://www.w3.org/TR/WGSL/#floor-builtin
44
49
  */
45
- declare function floor<T extends vBase | number>(value: T): T;
46
- declare function fract(a: number): number;
50
+ declare const floor: <T extends vBase | number>(value: T) => T;
51
+ declare const fract: <T extends vBase | number>(a: T) => T;
47
52
  /**
48
53
  * @privateRemarks
49
54
  * https://www.w3.org/TR/WGSL/#length-builtin
50
55
  */
51
- declare function length<T extends vBase | number>(value: T): number;
56
+ declare const length: <T extends vBase | number>(value: T) => number;
52
57
  /**
53
58
  * @privateRemarks
54
59
  * https://www.w3.org/TR/WGSL/#max-float-builtin
55
60
  */
56
- declare function max<T extends vBase | number>(a: T, b: T): T;
61
+ declare const max: <T extends vBase | number>(a: T, b: T) => T;
57
62
  /**
58
63
  * @privateRemarks
59
64
  * https://www.w3.org/TR/WGSL/#min-float-builtin
60
65
  */
61
- declare function min<T extends vBase | number>(a: T, b: T): T;
62
- declare function sin(radians: number): number;
63
- declare function exp(value: number): number;
64
- declare function pow(base: number, exponent: number): number;
65
- declare function pow<T extends v2f | v3f | v4f | v2h | v3h | v4h>(base: T, exponent: T): T;
66
- declare function mix(e1: number, e2: number, e3: number): number;
67
- declare function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: number): T;
68
- declare function mix<T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: T): T;
69
- declare function reflect<T extends vBase>(e1: T, e2: T): T;
66
+ declare const min: <T extends vBase | number>(a: T, b: T) => T;
67
+ /**
68
+ * @privateRemarks
69
+ * https://www.w3.org/TR/WGSL/#sin-builtin
70
+ */
71
+ declare const sin: <T extends vBase | number>(value: T) => T;
72
+ /**
73
+ * @privateRemarks
74
+ * https://www.w3.org/TR/WGSL/#exp-builtin
75
+ */
76
+ declare const exp: <T extends vBase | number>(value: T) => T;
77
+ type PowOverload = {
78
+ (base: number, exponent: number): number;
79
+ <T extends v2f | v3f | v4f | v2h | v3h | v4h>(base: T, exponent: T): T;
80
+ };
81
+ declare const pow: PowOverload;
82
+ type MixOverload = {
83
+ (e1: number, e2: number, e3: number): number;
84
+ <T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: number): T;
85
+ <T extends v2f | v3f | v4f | v2h | v3h | v4h>(e1: T, e2: T, e3: T): T;
86
+ };
87
+ declare const mix: MixOverload;
88
+ declare const reflect: <T extends vBase>(e1: T, e2: T) => T;
89
+ declare const distance: <T extends vBase | number>(a: T, b: T) => number;
90
+ /**
91
+ * Checks whether the given elements differ by at most 0.01.
92
+ * Component-wise if arguments are vectors.
93
+ * @example
94
+ * isCloseTo(0, 0.1) // returns false
95
+ * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true
96
+ *
97
+ * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.
98
+ */
99
+ declare const isCloseTo: <T extends v2f | v3f | v4f | v2h | v3h | v4h | number>(e1: T, e2: T, precision?: number) => boolean;
70
100
 
71
101
  type AnyAtomic = atomicI32 | atomicU32;
72
- declare function workgroupBarrier(): void;
73
- declare function storageBarrier(): void;
74
- declare function textureBarrier(): void;
75
- declare function atomicLoad<T extends AnyAtomic>(a: T): number;
76
- declare function atomicStore<T extends AnyAtomic>(a: T, value: number): void;
77
- declare function atomicAdd<T extends AnyAtomic>(a: T, value: number): number;
78
- declare function atomicSub<T extends AnyAtomic>(a: T, value: number): number;
79
- declare function atomicMax<T extends AnyAtomic>(a: T, value: number): number;
80
- declare function atomicMin<T extends AnyAtomic>(a: T, value: number): number;
81
- declare function atomicAnd<T extends AnyAtomic>(a: T, value: number): number;
82
- declare function atomicOr<T extends AnyAtomic>(a: T, value: number): number;
83
- declare function atomicXor<T extends AnyAtomic>(a: T, value: number): number;
102
+ declare const workgroupBarrier: () => void;
103
+ declare const storageBarrier: () => void;
104
+ declare const textureBarrier: () => void;
105
+ declare const atomicLoad: <T extends AnyAtomic>(a: T) => number;
106
+ declare const atomicStore: <T extends AnyAtomic>(a: T, value: number) => void;
107
+ declare const atomicAdd: <T extends AnyAtomic>(a: T, value: number) => number;
108
+ declare const atomicSub: <T extends AnyAtomic>(a: T, value: number) => number;
109
+ declare const atomicMax: <T extends AnyAtomic>(a: T, value: number) => number;
110
+ declare const atomicMin: <T extends AnyAtomic>(a: T, value: number) => number;
111
+ declare const atomicAnd: <T extends AnyAtomic>(a: T, value: number) => number;
112
+ declare const atomicOr: <T extends AnyAtomic>(a: T, value: number) => number;
113
+ declare const atomicXor: <T extends AnyAtomic>(a: T, value: number) => number;
114
+
115
+ declare const arrayLength: (a: unknown[]) => number;
84
116
 
85
- export { abs, add, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, dot, exp, floor, fract, length, max, min, mix, mul, normalize, pow, reflect, sin, storageBarrier, sub, textureBarrier, workgroupBarrier };
117
+ export { abs, acos, add, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cross, discard, distance, dot, exp, floor, fract, isCloseTo, length, max, min, mix, mul, normalize, pow, reflect, sin, storageBarrier, sub, textureBarrier, workgroupBarrier };
package/std/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{A as g,B as z,C as k,D as A,E as $,p as s,q as o,r as v,s as l,t as m,u as w,v as y,w as f,x as a,y as u,z as i}from"../chunk-7S2KQX6O.js";function en(){if(!s())throw new Error("discard() can only be used on the GPU.");return"discard;"}var d=n=>Math.sqrt(n.x**2+n.y**2),T=n=>Math.sqrt(n.x**2+n.y**2+n.z**2),h=n=>Math.sqrt(n.x**2+n.y**2+n.z**2+n.w**2),M=(n,e)=>n.x*e.x+n.y*e.y,p=(n,e)=>n.x*e.x+n.y*e.y+n.z*e.z,B=(n,e)=>n.x*e.x+n.y*e.y+n.z*e.z+n.w*e.w,c=(n,e,t)=>Math.min(Math.max(e,n),t),b=n=>e=>o(n(e.x),n(e.y)),V=n=>e=>v(n(e.x),n(e.y)),O=n=>e=>l(n(e.x),n(e.y)),U=n=>e=>m(n(e.x),n(e.y)),I=n=>e=>w(n(e.x),n(e.y),n(e.z)),K=n=>e=>y(n(e.x),n(e.y),n(e.z)),R=n=>e=>f(n(e.x),n(e.y),n(e.z)),G=n=>e=>a(n(e.x),n(e.y),n(e.z)),P=n=>e=>u(n(e.x),n(e.y),n(e.z),n(e.w)),W=n=>e=>i(n(e.x),n(e.y),n(e.z),n(e.w)),_=n=>e=>g(n(e.x),n(e.y),n(e.z),n(e.w)),E=n=>e=>z(n(e.x),n(e.y),n(e.z),n(e.w)),C=n=>(e,t)=>o(n(e.x,t.x),n(e.y,t.y)),F=n=>(e,t)=>v(n(e.x,t.x),n(e.y,t.y)),S=n=>(e,t)=>l(n(e.x,t.x),n(e.y,t.y)),j=n=>(e,t)=>m(n(e.x,t.x),n(e.y,t.y)),q=n=>(e,t)=>w(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z)),L=n=>(e,t)=>y(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z)),X=n=>(e,t)=>f(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z)),D=n=>(e,t)=>a(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z)),H=n=>(e,t)=>u(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z),n(e.w,t.w)),J=n=>(e,t)=>i(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z),n(e.w,t.w)),N=n=>(e,t)=>g(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z),n(e.w,t.w)),Q=n=>(e,t)=>z(n(e.x,t.x),n(e.y,t.y),n(e.z,t.z),n(e.w,t.w)),x={abs:{vec2f:b(Math.abs),vec2h:V(Math.abs),vec2i:O(Math.abs),vec2u:U(Math.abs),vec3f:I(Math.abs),vec3h:K(Math.abs),vec3i:R(Math.abs),vec3u:G(Math.abs),vec4f:P(Math.abs),vec4h:W(Math.abs),vec4i:_(Math.abs),vec4u:E(Math.abs)},atan2:{vec2f:C(Math.atan2),vec2h:F(Math.atan2),vec2i:S(Math.atan2),vec2u:j(Math.atan2),vec3f:q(Math.atan2),vec3h:L(Math.atan2),vec3i:X(Math.atan2),vec3u:D(Math.atan2),vec4f:H(Math.atan2),vec4h:J(Math.atan2),vec4i:N(Math.atan2),vec4u:Q(Math.atan2)},ceil:{vec2f:b(Math.ceil),vec2h:V(Math.ceil),vec2i:O(Math.ceil),vec2u:U(Math.ceil),vec3f:I(Math.ceil),vec3h:K(Math.ceil),vec3i:R(Math.ceil),vec3u:G(Math.ceil),vec4f:P(Math.ceil),vec4h:W(Math.ceil),vec4i:_(Math.ceil),vec4u:E(Math.ceil)},clamp:{vec2f:(n,e,t)=>o(c(n.x,e.x,t.x),c(n.y,e.y,t.y)),vec2h:(n,e,t)=>v(c(n.x,e.x,t.x),c(n.y,e.y,t.y)),vec2i:(n,e,t)=>l(c(n.x,e.x,t.x),c(n.y,e.y,t.y)),vec2u:(n,e,t)=>m(c(n.x,e.x,t.x),c(n.y,e.y,t.y)),vec3f:(n,e,t)=>w(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z)),vec3h:(n,e,t)=>y(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z)),vec3i:(n,e,t)=>f(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z)),vec3u:(n,e,t)=>a(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z)),vec4f:(n,e,t)=>u(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z),c(n.w,e.w,t.w)),vec4h:(n,e,t)=>i(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z),c(n.w,e.w,t.w)),vec4i:(n,e,t)=>g(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z),c(n.w,e.w,t.w)),vec4u:(n,e,t)=>z(c(n.x,e.x,t.x),c(n.y,e.y,t.y),c(n.z,e.z,t.z),c(n.w,e.w,t.w))},length:{vec2f:d,vec2h:d,vec2i:d,vec2u:d,vec3f:T,vec3h:T,vec3i:T,vec3u:T,vec4f:h,vec4h:h,vec4i:h,vec4u:h},add:{vec2f:(n,e)=>o(n.x+e.x,n.y+e.y),vec2h:(n,e)=>v(n.x+e.x,n.y+e.y),vec2i:(n,e)=>l(n.x+e.x,n.y+e.y),vec2u:(n,e)=>m(n.x+e.x,n.y+e.y),vec3f:(n,e)=>w(n.x+e.x,n.y+e.y,n.z+e.z),vec3h:(n,e)=>y(n.x+e.x,n.y+e.y,n.z+e.z),vec3i:(n,e)=>f(n.x+e.x,n.y+e.y,n.z+e.z),vec3u:(n,e)=>a(n.x+e.x,n.y+e.y,n.z+e.z),vec4f:(n,e)=>u(n.x+e.x,n.y+e.y,n.z+e.z,n.w+e.w),vec4h:(n,e)=>i(n.x+e.x,n.y+e.y,n.z+e.z,n.w+e.w),vec4i:(n,e)=>g(n.x+e.x,n.y+e.y,n.z+e.z,n.w+e.w),vec4u:(n,e)=>z(n.x+e.x,n.y+e.y,n.z+e.z,n.w+e.w)},sub:{vec2f:(n,e)=>o(n.x-e.x,n.y-e.y),vec2h:(n,e)=>v(n.x-e.x,n.y-e.y),vec2i:(n,e)=>l(n.x-e.x,n.y-e.y),vec2u:(n,e)=>m(n.x-e.x,n.y-e.y),vec3f:(n,e)=>w(n.x-e.x,n.y-e.y,n.z-e.z),vec3h:(n,e)=>y(n.x-e.x,n.y-e.y,n.z-e.z),vec3i:(n,e)=>f(n.x-e.x,n.y-e.y,n.z-e.z),vec3u:(n,e)=>a(n.x-e.x,n.y-e.y,n.z-e.z),vec4f:(n,e)=>u(n.x-e.x,n.y-e.y,n.z-e.z,n.w-e.w),vec4h:(n,e)=>i(n.x-e.x,n.y-e.y,n.z-e.z,n.w-e.w),vec4i:(n,e)=>g(n.x-e.x,n.y-e.y,n.z-e.z,n.w-e.w),vec4u:(n,e)=>z(n.x-e.x,n.y-e.y,n.z-e.z,n.w-e.w)},mulSxV:{vec2f:(n,e)=>o(n*e.x,n*e.y),vec2h:(n,e)=>v(n*e.x,n*e.y),vec2i:(n,e)=>l(n*e.x,n*e.y),vec2u:(n,e)=>m(n*e.x,n*e.y),vec3f:(n,e)=>w(n*e.x,n*e.y,n*e.z),vec3h:(n,e)=>y(n*e.x,n*e.y,n*e.z),vec3i:(n,e)=>f(n*e.x,n*e.y,n*e.z),vec3u:(n,e)=>a(n*e.x,n*e.y,n*e.z),vec4f:(n,e)=>u(n*e.x,n*e.y,n*e.z,n*e.w),vec4h:(n,e)=>i(n*e.x,n*e.y,n*e.z,n*e.w),vec4i:(n,e)=>g(n*e.x,n*e.y,n*e.z,n*e.w),vec4u:(n,e)=>z(n*e.x,n*e.y,n*e.z,n*e.w),mat2x2f:(n,e)=>{let t=e.columns;return k(n*t[0].x,n*t[0].y,n*t[1].x,n*t[1].y)},mat3x3f:(n,e)=>{let t=e.columns;return A(n*t[0].x,n*t[0].y,n*t[0].z,n*t[1].x,n*t[1].y,n*t[1].z,n*t[2].x,n*t[2].y,n*t[2].z)},mat4x4f:(n,e)=>{let t=e.columns;return $(n*t[0].x,n*t[0].y,n*t[0].z,n*t[0].w,n*t[1].x,n*t[1].y,n*t[1].z,n*t[1].w,n*t[2].x,n*t[2].y,n*t[2].z,n*t[2].w,n*t[3].x,n*t[3].y,n*t[3].z,n*t[3].w)}},mulVxV:{vec2f:(n,e)=>o(n.x*e.x,n.y*e.y),vec2h:(n,e)=>v(n.x*e.x,n.y*e.y),vec2i:(n,e)=>l(n.x*e.x,n.y*e.y),vec2u:(n,e)=>m(n.x*e.x,n.y*e.y),vec3f:(n,e)=>w(n.x*e.x,n.y*e.y,n.z*e.z),vec3h:(n,e)=>y(n.x*e.x,n.y*e.y,n.z*e.z),vec3i:(n,e)=>f(n.x*e.x,n.y*e.y,n.z*e.z),vec3u:(n,e)=>a(n.x*e.x,n.y*e.y,n.z*e.z),vec4f:(n,e)=>u(n.x*e.x,n.y*e.y,n.z*e.z,n.w*e.w),vec4h:(n,e)=>i(n.x*e.x,n.y*e.y,n.z*e.z,n.w*e.w),vec4i:(n,e)=>g(n.x*e.x,n.y*e.y,n.z*e.z,n.w*e.w),vec4u:(n,e)=>z(n.x*e.x,n.y*e.y,n.z*e.z,n.w*e.w),mat2x2f:(n,e)=>{let t=n.columns,r=e.columns;return k(t[0].x*r[0].x+t[1].x*r[0].y,t[0].y*r[0].x+t[1].y*r[0].y,t[0].x*r[1].x+t[1].x*r[1].y,t[0].y*r[1].x+t[1].y*r[1].y)},mat3x3f:(n,e)=>{let t=n.columns,r=e.columns;return A(t[0].x*r[0].x+t[1].x*r[0].y+t[2].x*r[0].z,t[0].y*r[0].x+t[1].y*r[0].y+t[2].y*r[0].z,t[0].z*r[0].x+t[1].z*r[0].y+t[2].z*r[0].z,t[0].x*r[1].x+t[1].x*r[1].y+t[2].x*r[1].z,t[0].y*r[1].x+t[1].y*r[1].y+t[2].y*r[1].z,t[0].z*r[1].x+t[1].z*r[1].y+t[2].z*r[1].z,t[0].x*r[2].x+t[1].x*r[2].y+t[2].x*r[2].z,t[0].y*r[2].x+t[1].y*r[2].y+t[2].y*r[2].z,t[0].z*r[2].x+t[1].z*r[2].y+t[2].z*r[2].z)},mat4x4f:(n,e)=>{let t=n.columns,r=e.columns;return $(t[0].x*r[0].x+t[1].x*r[0].y+t[2].x*r[0].z+t[3].x*r[0].w,t[0].y*r[0].x+t[1].y*r[0].y+t[2].y*r[0].z+t[3].y*r[0].w,t[0].z*r[0].x+t[1].z*r[0].y+t[2].z*r[0].z+t[3].z*r[0].w,t[0].w*r[0].x+t[1].w*r[0].y+t[2].w*r[0].z+t[3].w*r[0].w,t[0].x*r[1].x+t[1].x*r[1].y+t[2].x*r[1].z+t[3].x*r[1].w,t[0].y*r[1].x+t[1].y*r[1].y+t[2].y*r[1].z+t[3].y*r[1].w,t[0].z*r[1].x+t[1].z*r[1].y+t[2].z*r[1].z+t[3].z*r[1].w,t[0].w*r[1].x+t[1].w*r[1].y+t[2].w*r[1].z+t[3].w*r[1].w,t[0].x*r[2].x+t[1].x*r[2].y+t[2].x*r[2].z+t[3].x*r[2].w,t[0].y*r[2].x+t[1].y*r[2].y+t[2].y*r[2].z+t[3].y*r[2].w,t[0].z*r[2].x+t[1].z*r[2].y+t[2].z*r[2].z+t[3].z*r[2].w,t[0].w*r[2].x+t[1].w*r[2].y+t[2].w*r[2].z+t[3].w*r[2].w,t[0].x*r[3].x+t[1].x*r[3].y+t[2].x*r[3].z+t[3].x*r[3].w,t[0].y*r[3].x+t[1].y*r[3].y+t[2].y*r[3].z+t[3].y*r[3].w,t[0].z*r[3].x+t[1].z*r[3].y+t[2].z*r[3].z+t[3].z*r[3].w,t[0].w*r[3].x+t[1].w*r[3].y+t[2].w*r[3].z+t[3].w*r[3].w)}},mulMxV:{mat2x2f:(n,e)=>{let t=n.columns;return o(t[0].x*e.x+t[1].x*e.y,t[0].y*e.x+t[1].y*e.y)},mat3x3f:(n,e)=>{let t=n.columns;return w(t[0].x*e.x+t[1].x*e.y+t[2].x*e.z,t[0].y*e.x+t[1].y*e.y+t[2].y*e.z,t[0].z*e.x+t[1].z*e.y+t[2].z*e.z)},mat4x4f:(n,e)=>{let t=n.columns;return u(t[0].x*e.x+t[1].x*e.y+t[2].x*e.z+t[3].x*e.w,t[0].y*e.x+t[1].y*e.y+t[2].y*e.z+t[3].y*e.w,t[0].z*e.x+t[1].z*e.y+t[2].z*e.z+t[3].z*e.w,t[0].w*e.x+t[1].w*e.y+t[2].w*e.z+t[3].w*e.w)}},mulVxM:{mat2x2f:(n,e)=>{let t=e.columns;return o(n.x*t[0].x+n.y*t[0].y,n.x*t[1].x+n.y*t[1].y)},mat3x3f:(n,e)=>{let t=e.columns;return w(n.x*t[0].x+n.y*t[0].y+n.z*t[0].z,n.x*t[1].x+n.y*t[1].y+n.z*t[1].z,n.x*t[2].x+n.y*t[2].y+n.z*t[2].z)},mat4x4f:(n,e)=>{let t=e.columns;return u(n.x*t[0].x+n.y*t[0].y+n.z*t[0].z+n.w*t[0].w,n.x*t[1].x+n.y*t[1].y+n.z*t[1].z+n.w*t[1].w,n.x*t[2].x+n.y*t[2].y+n.z*t[2].z+n.w*t[2].w,n.x*t[3].x+n.y*t[3].y+n.z*t[3].z+n.w*t[3].w)}},dot:{vec2f:M,vec2h:M,vec2i:M,vec2u:M,vec3f:p,vec3h:p,vec3i:p,vec3u:p,vec4f:B,vec4h:B,vec4i:B,vec4u:B},normalize:{vec2f:n=>{let e=d(n);return o(n.x/e,n.y/e)},vec2h:n=>{let e=d(n);return v(n.x/e,n.y/e)},vec2i:n=>{let e=d(n);return l(n.x/e,n.y/e)},vec2u:n=>{let e=d(n);return m(n.x/e,n.y/e)},vec3f:n=>{let e=T(n);return w(n.x/e,n.y/e,n.z/e)},vec3h:n=>{let e=T(n);return y(n.x/e,n.y/e,n.z/e)},vec3i:n=>{let e=T(n);return f(n.x/e,n.y/e,n.z/e)},vec3u:n=>{let e=T(n);return a(n.x/e,n.y/e,n.z/e)},vec4f:n=>{let e=h(n);return u(n.x/e,n.y/e,n.z/e,n.w/e)},vec4h:n=>{let e=h(n);return i(n.x/e,n.y/e,n.z/e,n.w/e)},vec4i:n=>{let e=h(n);return g(n.x/e,n.y/e,n.z/e,n.w/e)},vec4u:n=>{let e=h(n);return z(n.x/e,n.y/e,n.z/e,n.w/e)}},cross:{vec3f:(n,e)=>w(n.y*e.z-n.z*e.y,n.z*e.x-n.x*e.z,n.x*e.y-n.y*e.x),vec3h:(n,e)=>y(n.y*e.z-n.z*e.y,n.z*e.x-n.x*e.z,n.x*e.y-n.y*e.x),vec3i:(n,e)=>f(n.y*e.z-n.z*e.y,n.z*e.x-n.x*e.z,n.x*e.y-n.y*e.x),vec3u:(n,e)=>a(n.y*e.z-n.z*e.y,n.z*e.x-n.x*e.z,n.x*e.y-n.y*e.x)},floor:{vec2f:b(Math.floor),vec2h:V(Math.floor),vec2i:O(Math.floor),vec2u:U(Math.floor),vec3f:I(Math.floor),vec3h:K(Math.floor),vec3i:R(Math.floor),vec3u:G(Math.floor),vec4f:P(Math.floor),vec4h:W(Math.floor),vec4i:_(Math.floor),vec4u:E(Math.floor)},max:{vec2f:C(Math.max),vec2h:F(Math.max),vec2i:S(Math.max),vec2u:j(Math.max),vec3f:q(Math.max),vec3h:L(Math.max),vec3i:X(Math.max),vec3u:D(Math.max),vec4f:H(Math.max),vec4h:J(Math.max),vec4i:N(Math.max),vec4u:Q(Math.max)},min:{vec2f:C(Math.min),vec2h:F(Math.min),vec2i:S(Math.min),vec2u:j(Math.min),vec3f:q(Math.min),vec3h:L(Math.min),vec3i:X(Math.min),vec3u:D(Math.min),vec4f:H(Math.min),vec4h:J(Math.min),vec4i:N(Math.min),vec4u:Q(Math.min)},pow:{vec2f:(n,e)=>o(n.x**e.x,n.y**e.y),vec2h:(n,e)=>v(n.x**e.x,n.y**e.y),vec3f:(n,e)=>w(n.x**e.x,n.y**e.y,n.z**e.z),vec3h:(n,e)=>y(n.x**e.x,n.y**e.y,n.z**e.z),vec4f:(n,e)=>u(n.x**e.x,n.y**e.y,n.z**e.z,n.w**e.w),vec4h:(n,e)=>i(n.x**e.x,n.y**e.y,n.z**e.z,n.w**e.w)},mix:{vec2f:(n,e,t)=>typeof t=="number"?o(n.x*(1-t)+e.x*t,n.y*(1-t)+e.y*t):o(n.x*(1-t.x)+e.x*t.x,n.y*(1-t.y)+e.y*t.y),vec2h:(n,e,t)=>typeof t=="number"?v(n.x*(1-t)+e.x*t,n.y*(1-t)+e.y*t):v(n.x*(1-t.x)+e.x*t.x,n.y*(1-t.y)+e.y*t.y),vec3f:(n,e,t)=>typeof t=="number"?w(n.x*(1-t)+e.x*t,n.y*(1-t)+e.y*t,n.z*(1-t)+e.z*t):w(n.x*(1-t.x)+e.x*t.x,n.y*(1-t.y)+e.y*t.y,n.z*(1-t.z)+e.z*t.z),vec3h:(n,e,t)=>typeof t=="number"?y(n.x*(1-t)+e.x*t,n.y*(1-t)+e.y*t,n.z*(1-t)+e.z*t):y(n.x*(1-t.x)+e.x*t.x,n.y*(1-t.y)+e.y*t.y,n.z*(1-t.z)+e.z*t.z),vec4f:(n,e,t)=>typeof t=="number"?u(n.x*(1-t)+e.x*t,n.y*(1-t)+e.y*t,n.z*(1-t)+e.z*t,n.w*(1-t)+e.w*t):u(n.x*(1-t.x)+e.x*t.x,n.y*(1-t.y)+e.y*t.y,n.z*(1-t.z)+e.z*t.z,n.w*(1-t.w)+e.w*t.w),vec4h:(n,e,t)=>typeof t=="number"?i(n.x*(1-t)+e.x*t,n.y*(1-t)+e.y*t,n.z*(1-t)+e.z*t,n.w*(1-t)+e.w*t):i(n.x*(1-t.x)+e.x*t.x,n.y*(1-t.y)+e.y*t.y,n.z*(1-t.z)+e.z*t.z,n.w*(1-t.w)+e.w*t.w)}};function tn(n,e){return s()?`(${n} + ${e})`:x.add[n.kind](n,e)}function Y(n,e){return s()?`(${n} - ${e})`:x.sub[n.kind](n,e)}function Z(n,e){if(s())return`(${n} * ${e})`;if(typeof n=="number")return x.mulSxV[e.kind](n,e);if(typeof n=="object"&&typeof e=="object"&&"kind"in n&&"kind"in e){let t=!n.kind.startsWith("mat"),r=!e.kind.startsWith("mat");if(!t&&r)return x.mulMxV[n.kind](n,e);if(t&&!r)return x.mulVxM[e.kind](n,e)}return x.mulVxV[e.kind](n,e)}function rn(n){return s()?`abs(${n})`:typeof n=="number"?Math.abs(n):x.abs[n.kind](n)}function sn(n,e){return s()?`atan2(${n}, ${e})`:typeof n=="number"&&typeof e=="number"?Math.atan2(n,e):x.atan2[n.kind](n,e)}function cn(n){return s()?`ceil(${n})`:typeof n=="number"?Math.ceil(n):x.ceil[n.kind](n)}function xn(n,e,t){return s()?`clamp(${n}, ${e}, ${t})`:typeof n=="number"?Math.min(Math.max(e,n),t):x.clamp[n.kind](n,e,t)}function wn(n){return s()?`cos(${n})`:Math.cos(n)}function on(n,e){return s()?`cross(${n}, ${e})`:x.cross[n.kind](n,e)}function nn(n,e){return s()?`dot(${n}, ${e})`:x.dot[n.kind](n,e)}function un(n){return s()?`normalize(${n})`:x.normalize[n.kind](n)}function yn(n){return s()?`floor(${n})`:typeof n=="number"?Math.floor(n):x.floor[n.kind](n)}function vn(n){return s()?`fract(${n})`:n-Math.floor(n)}function fn(n){return s()?`length(${n})`:typeof n=="number"?Math.abs(n):x.length[n.kind](n)}function an(n,e){return s()?`max(${n}, ${e})`:typeof n=="number"?Math.max(n,e):x.max[n.kind](n,e)}function ln(n,e){return s()?`min(${n}, ${e})`:typeof n=="number"?Math.min(n,e):x.min[n.kind](n,e)}function mn(n){return s()?`sin(${n})`:Math.sin(n)}function gn(n){return s()?`exp(${n})`:Math.exp(n)}function zn(n,e){if(s())return`pow(${n}, ${e})`;if(typeof n=="number"&&typeof e=="number")return n**e;if(typeof n=="object"&&typeof e=="object"&&"kind"in n&&"kind"in e)return x.pow[n.kind](n,e);throw new Error("Invalid arguments to pow()")}function dn(n,e,t){if(s())return`mix(${n}, ${e}, ${t})`;if(typeof n=="number"){if(typeof t!="number"||typeof e!="number")throw new Error("When e1 and e2 are numbers, the blend factor must be a number.");return n*(1-t)+e*t}if(typeof n=="number"||typeof e=="number")throw new Error("e1 and e2 need to both be vectors of the same kind.");return x.mix[n.kind](n,e,t)}function Tn(n,e){return s()?`reflect(${n}, ${e})`:Y(n,Z(2*nn(e,n),e))}function hn(){if(s())return"workgroupBarrier()";console.warn("workgroupBarrier is a no-op outside of GPU mode.")}function Mn(){if(s())return"storageBarrier()";console.warn("storageBarrier is a no-op outside of GPU mode.")}function pn(){if(s())return"textureBarrier()";console.warn("textureBarrier is a no-op outside of GPU mode.")}function Bn(n){if(s())return`atomicLoad(&${n})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function kn(n,e){if(s())return`atomicStore(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function An(n,e){if(s())return`atomicAdd(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function $n(n,e){if(s())return`atomicSub(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function bn(n,e){if(s())return`atomicMax(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function Vn(n,e){if(s())return`atomicMin(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function On(n,e){if(s())return`atomicAnd(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function Un(n,e){if(s())return`atomicOr(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}function In(n,e){if(s())return`atomicXor(&${n}, ${e})`;throw new Error("Atomic operations are not supported outside of GPU mode.")}export{rn as abs,tn as add,sn as atan2,An as atomicAdd,On as atomicAnd,Bn as atomicLoad,bn as atomicMax,Vn as atomicMin,Un as atomicOr,kn as atomicStore,$n as atomicSub,In as atomicXor,cn as ceil,xn as clamp,wn as cos,on as cross,en as discard,nn as dot,gn as exp,yn as floor,vn as fract,fn as length,an as max,ln as min,dn as mix,Z as mul,un as normalize,zn as pow,Tn as reflect,mn as sin,Mn as storageBarrier,Y as sub,pn as textureBarrier,hn as workgroupBarrier};
1
+ import{g as W}from"../chunk-KVOFUY5A.js";import{A as o,B as u,C as d,D as h,E as F,F as N,G as J,K as C,L as ne,N as E,V as f,r as n,s as y,t as l,u as m,v as T,w as v,x,y as i,z as w}from"../chunk-DR55IHDD.js";var ye=n(()=>{throw new Error("discard() can only be used on the GPU.")},()=>({value:"discard;",dataType:W}));var K=e=>Math.sqrt(e.x**2+e.y**2),R=e=>Math.sqrt(e.x**2+e.y**2+e.z**2),U=e=>Math.sqrt(e.x**2+e.y**2+e.z**2+e.w**2),P=(e,t)=>e.x*t.x+e.y*t.y,_=(e,t)=>e.x*t.x+e.y*t.y+e.z*t.z,G=(e,t)=>e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w,r=(e,t,a)=>Math.min(Math.max(t,e),a),g=e=>t=>y(e(t.x),e(t.y)),p=e=>t=>l(e(t.x),e(t.y)),z=e=>t=>m(e(t.x),e(t.y)),M=e=>t=>T(e(t.x),e(t.y)),B=e=>t=>v(e(t.x),e(t.y),e(t.z)),b=e=>t=>x(e(t.x),e(t.y),e(t.z)),$=e=>t=>i(e(t.x),e(t.y),e(t.z)),A=e=>t=>w(e(t.x),e(t.y),e(t.z)),V=e=>t=>o(e(t.x),e(t.y),e(t.z),e(t.w)),O=e=>t=>u(e(t.x),e(t.y),e(t.z),e(t.w)),k=e=>t=>d(e(t.x),e(t.y),e(t.z),e(t.w)),I=e=>t=>h(e(t.x),e(t.y),e(t.z),e(t.w)),L=e=>(t,a)=>y(e(t.x,a.x),e(t.y,a.y)),j=e=>(t,a)=>l(e(t.x,a.x),e(t.y,a.y)),q=e=>(t,a)=>m(e(t.x,a.x),e(t.y,a.y)),X=e=>(t,a)=>T(e(t.x,a.x),e(t.y,a.y)),Z=e=>(t,a)=>v(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z)),H=e=>(t,a)=>x(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z)),Q=e=>(t,a)=>i(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z)),Y=e=>(t,a)=>w(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z)),ee=e=>(t,a)=>o(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z),e(t.w,a.w)),te=e=>(t,a)=>u(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z),e(t.w,a.w)),ae=e=>(t,a)=>d(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z),e(t.w,a.w)),se=e=>(t,a)=>h(e(t.x,a.x),e(t.y,a.y),e(t.z,a.z),e(t.w,a.w)),c={abs:{vec2f:g(Math.abs),vec2h:p(Math.abs),vec2i:z(Math.abs),vec2u:M(Math.abs),vec3f:B(Math.abs),vec3h:b(Math.abs),vec3i:$(Math.abs),vec3u:A(Math.abs),vec4f:V(Math.abs),vec4h:O(Math.abs),vec4i:k(Math.abs),vec4u:I(Math.abs)},atan2:{vec2f:L(Math.atan2),vec2h:j(Math.atan2),vec2i:q(Math.atan2),vec2u:X(Math.atan2),vec3f:Z(Math.atan2),vec3h:H(Math.atan2),vec3i:Q(Math.atan2),vec3u:Y(Math.atan2),vec4f:ee(Math.atan2),vec4h:te(Math.atan2),vec4i:ae(Math.atan2),vec4u:se(Math.atan2)},acos:{vec2f:g(Math.acos),vec2h:p(Math.acos),vec2i:z(Math.acos),vec2u:M(Math.acos),vec3f:B(Math.acos),vec3h:b(Math.acos),vec3i:$(Math.acos),vec3u:A(Math.acos),vec4f:V(Math.acos),vec4h:O(Math.acos),vec4i:k(Math.acos),vec4u:I(Math.acos)},asin:{vec2f:g(Math.asin),vec2h:p(Math.asin),vec2i:z(Math.asin),vec2u:M(Math.asin),vec3f:B(Math.asin),vec3h:b(Math.asin),vec3i:$(Math.asin),vec3u:A(Math.asin),vec4f:V(Math.asin),vec4h:O(Math.asin),vec4i:k(Math.asin),vec4u:I(Math.asin)},ceil:{vec2f:g(Math.ceil),vec2h:p(Math.ceil),vec2i:z(Math.ceil),vec2u:M(Math.ceil),vec3f:B(Math.ceil),vec3h:b(Math.ceil),vec3i:$(Math.ceil),vec3u:A(Math.ceil),vec4f:V(Math.ceil),vec4h:O(Math.ceil),vec4i:k(Math.ceil),vec4u:I(Math.ceil)},clamp:{vec2f:(e,t,a)=>y(r(e.x,t.x,a.x),r(e.y,t.y,a.y)),vec2h:(e,t,a)=>l(r(e.x,t.x,a.x),r(e.y,t.y,a.y)),vec2i:(e,t,a)=>m(r(e.x,t.x,a.x),r(e.y,t.y,a.y)),vec2u:(e,t,a)=>T(r(e.x,t.x,a.x),r(e.y,t.y,a.y)),vec3f:(e,t,a)=>v(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z)),vec3h:(e,t,a)=>x(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z)),vec3i:(e,t,a)=>i(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z)),vec3u:(e,t,a)=>w(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z)),vec4f:(e,t,a)=>o(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z),r(e.w,t.w,a.w)),vec4h:(e,t,a)=>u(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z),r(e.w,t.w,a.w)),vec4i:(e,t,a)=>d(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z),r(e.w,t.w,a.w)),vec4u:(e,t,a)=>h(r(e.x,t.x,a.x),r(e.y,t.y,a.y),r(e.z,t.z,a.z),r(e.w,t.w,a.w))},length:{vec2f:K,vec2h:K,vec2i:K,vec2u:K,vec3f:R,vec3h:R,vec3i:R,vec3u:R,vec4f:U,vec4h:U,vec4i:U,vec4u:U},add:{vec2f:(e,t)=>y(e.x+t.x,e.y+t.y),vec2h:(e,t)=>l(e.x+t.x,e.y+t.y),vec2i:(e,t)=>m(e.x+t.x,e.y+t.y),vec2u:(e,t)=>T(e.x+t.x,e.y+t.y),vec3f:(e,t)=>v(e.x+t.x,e.y+t.y,e.z+t.z),vec3h:(e,t)=>x(e.x+t.x,e.y+t.y,e.z+t.z),vec3i:(e,t)=>i(e.x+t.x,e.y+t.y,e.z+t.z),vec3u:(e,t)=>w(e.x+t.x,e.y+t.y,e.z+t.z),vec4f:(e,t)=>o(e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w),vec4h:(e,t)=>u(e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w),vec4i:(e,t)=>d(e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w),vec4u:(e,t)=>h(e.x+t.x,e.y+t.y,e.z+t.z,e.w+t.w)},sub:{vec2f:(e,t)=>y(e.x-t.x,e.y-t.y),vec2h:(e,t)=>l(e.x-t.x,e.y-t.y),vec2i:(e,t)=>m(e.x-t.x,e.y-t.y),vec2u:(e,t)=>T(e.x-t.x,e.y-t.y),vec3f:(e,t)=>v(e.x-t.x,e.y-t.y,e.z-t.z),vec3h:(e,t)=>x(e.x-t.x,e.y-t.y,e.z-t.z),vec3i:(e,t)=>i(e.x-t.x,e.y-t.y,e.z-t.z),vec3u:(e,t)=>w(e.x-t.x,e.y-t.y,e.z-t.z),vec4f:(e,t)=>o(e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w),vec4h:(e,t)=>u(e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w),vec4i:(e,t)=>d(e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w),vec4u:(e,t)=>h(e.x-t.x,e.y-t.y,e.z-t.z,e.w-t.w)},mulSxV:{vec2f:(e,t)=>y(e*t.x,e*t.y),vec2h:(e,t)=>l(e*t.x,e*t.y),vec2i:(e,t)=>m(e*t.x,e*t.y),vec2u:(e,t)=>T(e*t.x,e*t.y),vec3f:(e,t)=>v(e*t.x,e*t.y,e*t.z),vec3h:(e,t)=>x(e*t.x,e*t.y,e*t.z),vec3i:(e,t)=>i(e*t.x,e*t.y,e*t.z),vec3u:(e,t)=>w(e*t.x,e*t.y,e*t.z),vec4f:(e,t)=>o(e*t.x,e*t.y,e*t.z,e*t.w),vec4h:(e,t)=>u(e*t.x,e*t.y,e*t.z,e*t.w),vec4i:(e,t)=>d(e*t.x,e*t.y,e*t.z,e*t.w),vec4u:(e,t)=>h(e*t.x,e*t.y,e*t.z,e*t.w),mat2x2f:(e,t)=>{let a=t.columns;return F(e*a[0].x,e*a[0].y,e*a[1].x,e*a[1].y)},mat3x3f:(e,t)=>{let a=t.columns;return N(e*a[0].x,e*a[0].y,e*a[0].z,e*a[1].x,e*a[1].y,e*a[1].z,e*a[2].x,e*a[2].y,e*a[2].z)},mat4x4f:(e,t)=>{let a=t.columns;return J(e*a[0].x,e*a[0].y,e*a[0].z,e*a[0].w,e*a[1].x,e*a[1].y,e*a[1].z,e*a[1].w,e*a[2].x,e*a[2].y,e*a[2].z,e*a[2].w,e*a[3].x,e*a[3].y,e*a[3].z,e*a[3].w)}},mulVxV:{vec2f:(e,t)=>y(e.x*t.x,e.y*t.y),vec2h:(e,t)=>l(e.x*t.x,e.y*t.y),vec2i:(e,t)=>m(e.x*t.x,e.y*t.y),vec2u:(e,t)=>T(e.x*t.x,e.y*t.y),vec3f:(e,t)=>v(e.x*t.x,e.y*t.y,e.z*t.z),vec3h:(e,t)=>x(e.x*t.x,e.y*t.y,e.z*t.z),vec3i:(e,t)=>i(e.x*t.x,e.y*t.y,e.z*t.z),vec3u:(e,t)=>w(e.x*t.x,e.y*t.y,e.z*t.z),vec4f:(e,t)=>o(e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),vec4h:(e,t)=>u(e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),vec4i:(e,t)=>d(e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),vec4u:(e,t)=>h(e.x*t.x,e.y*t.y,e.z*t.z,e.w*t.w),mat2x2f:(e,t)=>{let a=e.columns,s=t.columns;return F(a[0].x*s[0].x+a[1].x*s[0].y,a[0].y*s[0].x+a[1].y*s[0].y,a[0].x*s[1].x+a[1].x*s[1].y,a[0].y*s[1].x+a[1].y*s[1].y)},mat3x3f:(e,t)=>{let a=e.columns,s=t.columns;return N(a[0].x*s[0].x+a[1].x*s[0].y+a[2].x*s[0].z,a[0].y*s[0].x+a[1].y*s[0].y+a[2].y*s[0].z,a[0].z*s[0].x+a[1].z*s[0].y+a[2].z*s[0].z,a[0].x*s[1].x+a[1].x*s[1].y+a[2].x*s[1].z,a[0].y*s[1].x+a[1].y*s[1].y+a[2].y*s[1].z,a[0].z*s[1].x+a[1].z*s[1].y+a[2].z*s[1].z,a[0].x*s[2].x+a[1].x*s[2].y+a[2].x*s[2].z,a[0].y*s[2].x+a[1].y*s[2].y+a[2].y*s[2].z,a[0].z*s[2].x+a[1].z*s[2].y+a[2].z*s[2].z)},mat4x4f:(e,t)=>{let a=e.columns,s=t.columns;return J(a[0].x*s[0].x+a[1].x*s[0].y+a[2].x*s[0].z+a[3].x*s[0].w,a[0].y*s[0].x+a[1].y*s[0].y+a[2].y*s[0].z+a[3].y*s[0].w,a[0].z*s[0].x+a[1].z*s[0].y+a[2].z*s[0].z+a[3].z*s[0].w,a[0].w*s[0].x+a[1].w*s[0].y+a[2].w*s[0].z+a[3].w*s[0].w,a[0].x*s[1].x+a[1].x*s[1].y+a[2].x*s[1].z+a[3].x*s[1].w,a[0].y*s[1].x+a[1].y*s[1].y+a[2].y*s[1].z+a[3].y*s[1].w,a[0].z*s[1].x+a[1].z*s[1].y+a[2].z*s[1].z+a[3].z*s[1].w,a[0].w*s[1].x+a[1].w*s[1].y+a[2].w*s[1].z+a[3].w*s[1].w,a[0].x*s[2].x+a[1].x*s[2].y+a[2].x*s[2].z+a[3].x*s[2].w,a[0].y*s[2].x+a[1].y*s[2].y+a[2].y*s[2].z+a[3].y*s[2].w,a[0].z*s[2].x+a[1].z*s[2].y+a[2].z*s[2].z+a[3].z*s[2].w,a[0].w*s[2].x+a[1].w*s[2].y+a[2].w*s[2].z+a[3].w*s[2].w,a[0].x*s[3].x+a[1].x*s[3].y+a[2].x*s[3].z+a[3].x*s[3].w,a[0].y*s[3].x+a[1].y*s[3].y+a[2].y*s[3].z+a[3].y*s[3].w,a[0].z*s[3].x+a[1].z*s[3].y+a[2].z*s[3].z+a[3].z*s[3].w,a[0].w*s[3].x+a[1].w*s[3].y+a[2].w*s[3].z+a[3].w*s[3].w)}},mulMxV:{mat2x2f:(e,t)=>{let a=e.columns;return y(a[0].x*t.x+a[1].x*t.y,a[0].y*t.x+a[1].y*t.y)},mat3x3f:(e,t)=>{let a=e.columns;return v(a[0].x*t.x+a[1].x*t.y+a[2].x*t.z,a[0].y*t.x+a[1].y*t.y+a[2].y*t.z,a[0].z*t.x+a[1].z*t.y+a[2].z*t.z)},mat4x4f:(e,t)=>{let a=e.columns;return o(a[0].x*t.x+a[1].x*t.y+a[2].x*t.z+a[3].x*t.w,a[0].y*t.x+a[1].y*t.y+a[2].y*t.z+a[3].y*t.w,a[0].z*t.x+a[1].z*t.y+a[2].z*t.z+a[3].z*t.w,a[0].w*t.x+a[1].w*t.y+a[2].w*t.z+a[3].w*t.w)}},mulVxM:{mat2x2f:(e,t)=>{let a=t.columns;return y(e.x*a[0].x+e.y*a[0].y,e.x*a[1].x+e.y*a[1].y)},mat3x3f:(e,t)=>{let a=t.columns;return v(e.x*a[0].x+e.y*a[0].y+e.z*a[0].z,e.x*a[1].x+e.y*a[1].y+e.z*a[1].z,e.x*a[2].x+e.y*a[2].y+e.z*a[2].z)},mat4x4f:(e,t)=>{let a=t.columns;return o(e.x*a[0].x+e.y*a[0].y+e.z*a[0].z+e.w*a[0].w,e.x*a[1].x+e.y*a[1].y+e.z*a[1].z+e.w*a[1].w,e.x*a[2].x+e.y*a[2].y+e.z*a[2].z+e.w*a[2].w,e.x*a[3].x+e.y*a[3].y+e.z*a[3].z+e.w*a[3].w)}},dot:{vec2f:P,vec2h:P,vec2i:P,vec2u:P,vec3f:_,vec3h:_,vec3i:_,vec3u:_,vec4f:G,vec4h:G,vec4i:G,vec4u:G},normalize:{vec2f:e=>{let t=K(e);return y(e.x/t,e.y/t)},vec2h:e=>{let t=K(e);return l(e.x/t,e.y/t)},vec2i:e=>{let t=K(e);return m(e.x/t,e.y/t)},vec2u:e=>{let t=K(e);return T(e.x/t,e.y/t)},vec3f:e=>{let t=R(e);return v(e.x/t,e.y/t,e.z/t)},vec3h:e=>{let t=R(e);return x(e.x/t,e.y/t,e.z/t)},vec3i:e=>{let t=R(e);return i(e.x/t,e.y/t,e.z/t)},vec3u:e=>{let t=R(e);return w(e.x/t,e.y/t,e.z/t)},vec4f:e=>{let t=U(e);return o(e.x/t,e.y/t,e.z/t,e.w/t)},vec4h:e=>{let t=U(e);return u(e.x/t,e.y/t,e.z/t,e.w/t)},vec4i:e=>{let t=U(e);return d(e.x/t,e.y/t,e.z/t,e.w/t)},vec4u:e=>{let t=U(e);return h(e.x/t,e.y/t,e.z/t,e.w/t)}},cross:{vec3f:(e,t)=>v(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x),vec3h:(e,t)=>x(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x),vec3i:(e,t)=>i(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x),vec3u:(e,t)=>w(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)},floor:{vec2f:g(Math.floor),vec2h:p(Math.floor),vec2i:z(Math.floor),vec2u:M(Math.floor),vec3f:B(Math.floor),vec3h:b(Math.floor),vec3i:$(Math.floor),vec3u:A(Math.floor),vec4f:V(Math.floor),vec4h:O(Math.floor),vec4i:k(Math.floor),vec4u:I(Math.floor)},max:{vec2f:L(Math.max),vec2h:j(Math.max),vec2i:q(Math.max),vec2u:X(Math.max),vec3f:Z(Math.max),vec3h:H(Math.max),vec3i:Q(Math.max),vec3u:Y(Math.max),vec4f:ee(Math.max),vec4h:te(Math.max),vec4i:ae(Math.max),vec4u:se(Math.max)},min:{vec2f:L(Math.min),vec2h:j(Math.min),vec2i:q(Math.min),vec2u:X(Math.min),vec3f:Z(Math.min),vec3h:H(Math.min),vec3i:Q(Math.min),vec3u:Y(Math.min),vec4f:ee(Math.min),vec4h:te(Math.min),vec4i:ae(Math.min),vec4u:se(Math.min)},pow:{vec2f:(e,t)=>y(e.x**t.x,e.y**t.y),vec2h:(e,t)=>l(e.x**t.x,e.y**t.y),vec3f:(e,t)=>v(e.x**t.x,e.y**t.y,e.z**t.z),vec3h:(e,t)=>x(e.x**t.x,e.y**t.y,e.z**t.z),vec4f:(e,t)=>o(e.x**t.x,e.y**t.y,e.z**t.z,e.w**t.w),vec4h:(e,t)=>u(e.x**t.x,e.y**t.y,e.z**t.z,e.w**t.w)},mix:{vec2f:(e,t,a)=>typeof a=="number"?y(e.x*(1-a)+t.x*a,e.y*(1-a)+t.y*a):y(e.x*(1-a.x)+t.x*a.x,e.y*(1-a.y)+t.y*a.y),vec2h:(e,t,a)=>typeof a=="number"?l(e.x*(1-a)+t.x*a,e.y*(1-a)+t.y*a):l(e.x*(1-a.x)+t.x*a.x,e.y*(1-a.y)+t.y*a.y),vec3f:(e,t,a)=>typeof a=="number"?v(e.x*(1-a)+t.x*a,e.y*(1-a)+t.y*a,e.z*(1-a)+t.z*a):v(e.x*(1-a.x)+t.x*a.x,e.y*(1-a.y)+t.y*a.y,e.z*(1-a.z)+t.z*a.z),vec3h:(e,t,a)=>typeof a=="number"?x(e.x*(1-a)+t.x*a,e.y*(1-a)+t.y*a,e.z*(1-a)+t.z*a):x(e.x*(1-a.x)+t.x*a.x,e.y*(1-a.y)+t.y*a.y,e.z*(1-a.z)+t.z*a.z),vec4f:(e,t,a)=>typeof a=="number"?o(e.x*(1-a)+t.x*a,e.y*(1-a)+t.y*a,e.z*(1-a)+t.z*a,e.w*(1-a)+t.w*a):o(e.x*(1-a.x)+t.x*a.x,e.y*(1-a.y)+t.y*a.y,e.z*(1-a.z)+t.z*a.z,e.w*(1-a.w)+t.w*a.w),vec4h:(e,t,a)=>typeof a=="number"?u(e.x*(1-a)+t.x*a,e.y*(1-a)+t.y*a,e.z*(1-a)+t.z*a,e.w*(1-a)+t.w*a):u(e.x*(1-a.x)+t.x*a.x,e.y*(1-a.y)+t.y*a.y,e.z*(1-a.z)+t.z*a.z,e.w*(1-a.w)+t.w*a.w)},sin:{vec2f:g(Math.sin),vec2h:p(Math.sin),vec2i:z(Math.sin),vec2u:M(Math.sin),vec3f:B(Math.sin),vec3h:b(Math.sin),vec3i:$(Math.sin),vec3u:A(Math.sin),vec4f:V(Math.sin),vec4h:O(Math.sin),vec4i:k(Math.sin),vec4u:I(Math.sin)},cos:{vec2f:g(Math.cos),vec2h:p(Math.cos),vec2i:z(Math.cos),vec2u:M(Math.cos),vec3f:B(Math.cos),vec3h:b(Math.cos),vec3i:$(Math.cos),vec3u:A(Math.cos),vec4f:V(Math.cos),vec4h:O(Math.cos),vec4i:k(Math.cos),vec4u:I(Math.cos)},exp:{vec2f:g(Math.exp),vec2h:p(Math.exp),vec2i:z(Math.exp),vec2u:M(Math.exp),vec3f:B(Math.exp),vec3h:b(Math.exp),vec3i:$(Math.exp),vec3u:A(Math.exp),vec4f:V(Math.exp),vec4h:O(Math.exp),vec4i:k(Math.exp),vec4u:I(Math.exp)},fract:{vec2f:g(e=>e-Math.floor(e)),vec2h:p(e=>e-Math.floor(e)),vec2i:z(e=>e-Math.floor(e)),vec2u:M(e=>e-Math.floor(e)),vec3f:B(e=>e-Math.floor(e)),vec3h:b(e=>e-Math.floor(e)),vec3i:$(e=>e-Math.floor(e)),vec3u:A(e=>e-Math.floor(e)),vec4f:V(e=>e-Math.floor(e)),vec4h:O(e=>e-Math.floor(e)),vec4i:k(e=>e-Math.floor(e)),vec4u:I(e=>e-Math.floor(e))},isCloseToZero:{vec2f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t,vec2h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t,vec3f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t,vec3h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t,vec4f:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t&&Math.abs(e.w)<=t,vec4h:(e,t)=>Math.abs(e.x)<=t&&Math.abs(e.y)<=t&&Math.abs(e.z)<=t&&Math.abs(e.w)<=t}};function S(e){let t=e.dataType.type;return t==="abstractInt"||t==="abstractFloat"||t==="f32"||t==="f16"||t==="i32"||t==="u32"}var oe=n((e,t)=>c.add[e.kind](e,t),(e,t)=>({value:`(${e.value} + ${t.value})`,dataType:e.dataType})),D=n((e,t)=>c.sub[e.kind](e,t),(e,t)=>({value:`(${e.value} - ${t.value})`,dataType:e.dataType})),re=n((e,t)=>{if(typeof e=="number")return c.mulSxV[t.kind](e,t);if(typeof e=="object"&&typeof t=="object"&&"kind"in e&&"kind"in t){let a=!e.kind.startsWith("mat"),s=!t.kind.startsWith("mat");if(!a&&s)return c.mulMxV[e.kind](e,t);if(a&&!s)return c.mulVxM[t.kind](e,t)}return c.mulVxV[t.kind](e,t)},(e,t)=>{let a=S(e)?t.dataType:e.dataType.type.startsWith("mat")?t.dataType.type.startsWith("mat")?e.dataType:t.dataType:e.dataType;return{value:`(${e.value} * ${t.value})`,dataType:a}}),xe=n(e=>typeof e=="number"?Math.abs(e):c.abs[e.kind](e),e=>({value:`abs(${e.value})`,dataType:e.dataType})),le=n((e,t)=>typeof e=="number"&&typeof t=="number"?Math.atan2(e,t):c.atan2[e.kind](e,t),(e,t)=>({value:`atan2(${e.value}, ${t.value})`,dataType:e.dataType})),ue=n(e=>typeof e=="number"?Math.acos(e):c.acos[e.kind](e),e=>({value:`acos(${e.value})`,dataType:e.dataType})),ie=n(e=>typeof e=="number"?Math.asin(e):c.asin[e.kind](e),e=>({value:`asin(${e.value})`,dataType:e.dataType})),we=n(e=>typeof e=="number"?Math.ceil(e):c.ceil[e.kind](e),e=>({value:`ceil(${e.value})`,dataType:e.dataType})),fe=n((e,t,a)=>typeof e=="number"?Math.min(Math.max(t,e),a):c.clamp[e.kind](e,t,a),(e,t,a)=>({value:`clamp(${e.value}, ${t.value}, ${a.value})`,dataType:e.dataType})),me=n(e=>typeof e=="number"?Math.cos(e):c.cos[e.kind](e),e=>({value:`cos(${e.value})`,dataType:e.dataType})),Te=n((e,t)=>c.cross[e.kind](e,t),(e,t)=>({value:`cross(${e.value}, ${t.value})`,dataType:e.dataType})),ce=n((e,t)=>c.dot[e.kind](e,t),(e,t)=>({value:`dot(${e.value}, ${t.value})`,dataType:E})),de=n(e=>c.normalize[e.kind](e),e=>({value:`normalize(${e.value})`,dataType:e.dataType})),he=n(e=>typeof e=="number"?Math.floor(e):c.floor[e.kind](e),e=>({value:`floor(${e.value})`,dataType:e.dataType})),ge=n(e=>typeof e=="number"?e-Math.floor(e):c.fract[e.kind](e),e=>({value:`fract(${e.value})`,dataType:e.dataType})),ve=n(e=>typeof e=="number"?Math.abs(e):c.length[e.kind](e),e=>({value:`length(${e.value})`,dataType:E})),pe=n((e,t)=>typeof e=="number"?Math.max(e,t):c.max[e.kind](e,t),(e,t)=>({value:`max(${e.value}, ${t.value})`,dataType:e.dataType})),ze=n((e,t)=>typeof e=="number"?Math.min(e,t):c.min[e.kind](e,t),(e,t)=>({value:`min(${e.value}, ${t.value})`,dataType:e.dataType})),Me=n(e=>typeof e=="number"?Math.sin(e):c.sin[e.kind](e),e=>({value:`sin(${e.value})`,dataType:e.dataType})),Be=n(e=>typeof e=="number"?Math.exp(e):c.exp[e.kind](e),e=>({value:`exp(${e.value})`,dataType:e.dataType})),be=n((e,t)=>{if(typeof e=="number"&&typeof t=="number")return e**t;if(typeof e=="object"&&typeof t=="object"&&"kind"in e&&"kind"in t)return c.pow[e.kind](e,t);throw new Error("Invalid arguments to pow()")},(e,t)=>({value:`pow(${e.value}, ${t.value})`,dataType:e.dataType})),$e=n((e,t,a)=>{if(typeof e=="number"){if(typeof a!="number"||typeof t!="number")throw new Error("When e1 and e2 are numbers, the blend factor must be a number.");return e*(1-a)+t*a}if(typeof e=="number"||typeof t=="number")throw new Error("e1 and e2 need to both be vectors of the same kind.");return c.mix[e.kind](e,t,a)},(e,t,a)=>({value:`mix(${e.value}, ${t.value}, ${a.value})`,dataType:e.dataType})),Ae=n((e,t)=>D(e,re(2*ce(t,e),t)),(e,t)=>({value:`reflect(${e.value}, ${t.value})`,dataType:e.dataType})),Ve=n((e,t)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t):ve(D(e,t)),(e,t)=>({value:`distance(${e.value}, ${t.value})`,dataType:E})),Oe=n((e,t,a=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<a:typeof e!="number"&&typeof t!="number"?c.isCloseToZero[e.kind](D(e,t),a):!1,(e,t,a={value:.01,dataType:E})=>S(e)&&S(t)?{value:`abs(f32(${e.value})-f32(${t.value})) <= ${a.value}`,dataType:C}:!S(e)&&!S(t)?{value:`all(abs(${e.value}-${t.value}) <= (${e.value} - ${e.value})+${a.value})`,dataType:C}:{value:"false",dataType:C});var ke=n(()=>console.warn("workgroupBarrier is a no-op outside of GPU mode."),()=>({value:"workgroupBarrier()",dataType:W})),Ie=n(()=>console.warn("storageBarrier is a no-op outside of GPU mode."),()=>({value:"storageBarrier()",dataType:W})),Ke=n(()=>console.warn("textureBarrier is a no-op outside of GPU mode."),()=>({value:"textureBarrier()",dataType:W})),Re=n(e=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},e=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicLoad(&${e.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Ue=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(!f(e.dataType)||e.dataType.type!=="atomic")throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`);return{value:`atomicStore(&${e.value}, ${t.value})`,dataType:W}}),We=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicAdd(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Ee=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicSub(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Se=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicMax(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Ce=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicMin(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Pe=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicAnd(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),_e=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicOr(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Ge=n((e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(f(e.dataType)&&e.dataType.type==="atomic")return{value:`atomicXor(&${e.value}, ${t.value})`,dataType:e.dataType.inner};throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)});var De=n(e=>e.length,e=>({value:`arrayLength(&${e.value})`,dataType:ne}));export{xe as abs,ue as acos,oe as add,De as arrayLength,ie as asin,le as atan2,We as atomicAdd,Pe as atomicAnd,Re as atomicLoad,Se as atomicMax,Ce as atomicMin,_e as atomicOr,Ue as atomicStore,Ee as atomicSub,Ge as atomicXor,we as ceil,fe as clamp,me as cos,Te as cross,ye as discard,Ve as distance,ce as dot,Be as exp,he as floor,ge as fract,Oe as isCloseTo,ve as length,pe as max,ze as min,$e as mix,re as mul,de as normalize,be as pow,Ae as reflect,Me as sin,Ie as storageBarrier,D as sub,Ke as textureBarrier,ke as workgroupBarrier};
2
2
  //# sourceMappingURL=index.js.map