typegpu 0.5.8 → 0.5.9
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/chunk-734H4JWF.js +2 -0
- package/chunk-734H4JWF.js.map +1 -0
- package/chunk-BJSN5UVV.cjs +41 -0
- package/chunk-BJSN5UVV.cjs.map +1 -0
- package/{chunk-7ACLI4JY.cjs → chunk-BZVU4Q6A.cjs} +2 -2
- package/chunk-BZVU4Q6A.cjs.map +1 -0
- package/chunk-CDUKTYES.cjs +2 -0
- package/chunk-CDUKTYES.cjs.map +1 -0
- package/chunk-CGVYLGBG.js +2 -0
- package/chunk-CGVYLGBG.js.map +1 -0
- package/chunk-SWJVYRFM.js +41 -0
- package/chunk-SWJVYRFM.js.map +1 -0
- package/data/index.cjs +1 -1
- package/data/index.cjs.map +1 -1
- package/data/index.d.cts +4 -77
- package/data/index.d.ts +4 -77
- package/data/index.js +1 -1
- package/index.cjs +21 -20
- package/index.cjs.map +1 -1
- package/index.d.cts +5 -3
- package/index.d.ts +5 -3
- package/index.js +21 -20
- package/index.js.map +1 -1
- package/matrix-BULDDGYa.d.ts +122 -0
- package/matrix-BnXitNJ7.d.cts +122 -0
- package/package.json +1 -1
- package/std/index.cjs +1 -1
- package/std/index.cjs.map +1 -1
- package/std/index.d.cts +69 -2
- package/std/index.d.ts +69 -2
- package/std/index.js +1 -1
- package/std/index.js.map +1 -1
- package/{tgpuComputeFn-S61HxwW-.d.ts → tgpuComputeFn-BxPDI5hQ.d.cts} +90 -28
- package/{tgpuComputeFn-S61HxwW-.d.cts → tgpuComputeFn-BxPDI5hQ.d.ts} +90 -28
- package/chunk-7ACLI4JY.cjs.map +0 -1
- package/chunk-L7HIBZAX.js +0 -4
- package/chunk-L7HIBZAX.js.map +0 -1
- package/chunk-SFECI7OX.js +0 -2
- package/chunk-SFECI7OX.js.map +0 -1
- package/chunk-SLWTVY6K.js +0 -2
- package/chunk-SLWTVY6K.js.map +0 -1
- package/chunk-TF6YPHJS.cjs +0 -2
- package/chunk-TF6YPHJS.cjs.map +0 -1
- package/chunk-V4CSEIB2.cjs +0 -4
- package/chunk-V4CSEIB2.cjs.map +0 -1
@@ -0,0 +1,122 @@
|
|
1
|
+
import { bp as Mat2x2f, bq as Mat3x3f, br as Mat4x4f, bm as m2x2f, bn as m3x3f, bo as m4x4f, cT as TgpuDualFn, by as v3f } from './tgpuComputeFn-BxPDI5hQ.js';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Returns a 2-by-2 identity matrix.
|
5
|
+
* @returns {m2x2f} The result matrix.
|
6
|
+
*/
|
7
|
+
declare const identity2: TgpuDualFn<() => m2x2f>;
|
8
|
+
/**
|
9
|
+
* Returns a 3-by-3 identity matrix.
|
10
|
+
* @returns {m3x3f} The result matrix.
|
11
|
+
*/
|
12
|
+
declare const identity3: TgpuDualFn<() => m3x3f>;
|
13
|
+
/**
|
14
|
+
* Returns a 4-by-4 identity matrix.
|
15
|
+
* @returns {m4x4f} The result matrix.
|
16
|
+
*/
|
17
|
+
declare const identity4: TgpuDualFn<() => m4x4f>;
|
18
|
+
/**
|
19
|
+
* Creates a 4-by-4 matrix which translates by the given vector v.
|
20
|
+
* @param {v3f} vector - The vector by which to translate.
|
21
|
+
* @returns {m4x4f} The translation matrix.
|
22
|
+
*/
|
23
|
+
declare const translation4: TgpuDualFn<(vector: v3f) => m4x4f>;
|
24
|
+
/**
|
25
|
+
* Creates a 4-by-4 matrix which scales in each dimension by an amount given by the corresponding entry in the given vector.
|
26
|
+
* @param {v3f} vector - A vector of three entries specifying the factor by which to scale in each dimension.
|
27
|
+
* @returns {m4x4f} The scaling matrix.
|
28
|
+
*/
|
29
|
+
declare const scaling4: TgpuDualFn<(vector: v3f) => m4x4f>;
|
30
|
+
/**
|
31
|
+
* Creates a 4-by-4 matrix which rotates around the x-axis by the given angle.
|
32
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
33
|
+
* @returns {m4x4f} The rotation matrix.
|
34
|
+
*/
|
35
|
+
declare const rotationX4: TgpuDualFn<(a: number) => m4x4f>;
|
36
|
+
/**
|
37
|
+
* Creates a 4-by-4 matrix which rotates around the y-axis by the given angle.
|
38
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
39
|
+
* @returns {m4x4f} The rotation matrix.
|
40
|
+
*/
|
41
|
+
declare const rotationY4: TgpuDualFn<(a: number) => m4x4f>;
|
42
|
+
/**
|
43
|
+
* Creates a 4-by-4 matrix which rotates around the z-axis by the given angle.
|
44
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
45
|
+
* @returns {m4x4f} The rotation matrix.
|
46
|
+
*/
|
47
|
+
declare const rotationZ4: TgpuDualFn<(a: number) => m4x4f>;
|
48
|
+
/**
|
49
|
+
* Schema representing mat2x2f - a matrix with 2 rows and 2 columns, with elements of type f32.
|
50
|
+
* Also a constructor function for this matrix type.
|
51
|
+
*
|
52
|
+
* @example
|
53
|
+
* const zero2x2 = mat2x2f(); // filled with zeros
|
54
|
+
*
|
55
|
+
* @example
|
56
|
+
* const mat = mat2x2f(0, 1, 2, 3);
|
57
|
+
* mat.columns[0] // vec2f(0, 1)
|
58
|
+
* mat.columns[1] // vec2f(2, 3)
|
59
|
+
*
|
60
|
+
* @example
|
61
|
+
* const mat = mat2x2f(
|
62
|
+
* vec2f(0, 1), // column 0
|
63
|
+
* vec2f(1, 2), // column 1
|
64
|
+
* );
|
65
|
+
*
|
66
|
+
* @example
|
67
|
+
* const buffer = root.createBuffer(d.mat2x2f, d.mat2x2f(0, 1, 2, 3)); // buffer holding a d.mat2x2f value, with an initial value of ((0, 1), (2, 3))
|
68
|
+
*/
|
69
|
+
declare const mat2x2f: Mat2x2f;
|
70
|
+
/**
|
71
|
+
* Schema representing mat3x3f - a matrix with 3 rows and 3 columns, with elements of type f32.
|
72
|
+
* Also a constructor function for this matrix type.
|
73
|
+
*
|
74
|
+
* @example
|
75
|
+
* const zero3x3 = mat3x3f(); // filled with zeros
|
76
|
+
*
|
77
|
+
* @example
|
78
|
+
* const mat = mat3x3f(0, 1, 2, 3, 4, 5, 6, 7, 8);
|
79
|
+
* mat.columns[0] // vec3f(0, 1, 2)
|
80
|
+
* mat.columns[1] // vec3f(3, 4, 5)
|
81
|
+
* mat.columns[2] // vec3f(6, 7, 8)
|
82
|
+
*
|
83
|
+
* @example
|
84
|
+
* const mat = mat3x3f(
|
85
|
+
* vec3f(0, 1, 2), // column 0
|
86
|
+
* vec3f(2, 3, 4), // column 1
|
87
|
+
* vec3f(5, 6, 7), // column 2
|
88
|
+
* );
|
89
|
+
*
|
90
|
+
* @example
|
91
|
+
* const buffer = root.createBuffer(d.mat3x3f, d.mat3x3f()); // buffer holding a d.mat3x3f value, with an initial value of mat3x3f filled with zeros
|
92
|
+
*/
|
93
|
+
declare const mat3x3f: Mat3x3f;
|
94
|
+
/**
|
95
|
+
* Schema representing mat4x4f - a matrix with 4 rows and 4 columns, with elements of type f32.
|
96
|
+
* Also a constructor function for this matrix type.
|
97
|
+
*
|
98
|
+
* @example
|
99
|
+
* const zero4x4 = mat4x4f(); // filled with zeros
|
100
|
+
*
|
101
|
+
* @example
|
102
|
+
* const mat = mat4x4f(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
103
|
+
* mat.columns[0] // vec4f(0, 1, 2, 3)
|
104
|
+
* mat.columns[1] // vec4f(4, 5, 6, 7)
|
105
|
+
* mat.columns[2] // vec4f(8, 9, 10, 11)
|
106
|
+
* mat.columns[3] // vec4f(12, 13, 14, 15)
|
107
|
+
*
|
108
|
+
* @example
|
109
|
+
* const mat = mat4x4f(
|
110
|
+
* vec4f(0, 1, 2, 3), // column 0
|
111
|
+
* vec4f(4, 5, 6, 7), // column 1
|
112
|
+
* vec4f(8, 9, 10, 11), // column 2
|
113
|
+
* vec4f(12, 13, 14, 15), // column 3
|
114
|
+
* );
|
115
|
+
*
|
116
|
+
* @example
|
117
|
+
* const buffer = root.createBuffer(d.mat4x4f, d.mat4x4f()); // buffer holding a d.mat4x4f value, with an initial value of mat4x4f filled with zeros
|
118
|
+
*/
|
119
|
+
declare const mat4x4f: Mat4x4f;
|
120
|
+
declare function matToArray(mat: m2x2f | m3x3f | m4x4f): number[];
|
121
|
+
|
122
|
+
export { mat3x3f as a, mat4x4f as b, matToArray as c, identity3 as d, identity4 as e, rotationY4 as f, rotationZ4 as g, identity2 as i, mat2x2f as m, rotationX4 as r, scaling4 as s, translation4 as t };
|
@@ -0,0 +1,122 @@
|
|
1
|
+
import { bp as Mat2x2f, bq as Mat3x3f, br as Mat4x4f, bm as m2x2f, bn as m3x3f, bo as m4x4f, cT as TgpuDualFn, by as v3f } from './tgpuComputeFn-BxPDI5hQ.cjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Returns a 2-by-2 identity matrix.
|
5
|
+
* @returns {m2x2f} The result matrix.
|
6
|
+
*/
|
7
|
+
declare const identity2: TgpuDualFn<() => m2x2f>;
|
8
|
+
/**
|
9
|
+
* Returns a 3-by-3 identity matrix.
|
10
|
+
* @returns {m3x3f} The result matrix.
|
11
|
+
*/
|
12
|
+
declare const identity3: TgpuDualFn<() => m3x3f>;
|
13
|
+
/**
|
14
|
+
* Returns a 4-by-4 identity matrix.
|
15
|
+
* @returns {m4x4f} The result matrix.
|
16
|
+
*/
|
17
|
+
declare const identity4: TgpuDualFn<() => m4x4f>;
|
18
|
+
/**
|
19
|
+
* Creates a 4-by-4 matrix which translates by the given vector v.
|
20
|
+
* @param {v3f} vector - The vector by which to translate.
|
21
|
+
* @returns {m4x4f} The translation matrix.
|
22
|
+
*/
|
23
|
+
declare const translation4: TgpuDualFn<(vector: v3f) => m4x4f>;
|
24
|
+
/**
|
25
|
+
* Creates a 4-by-4 matrix which scales in each dimension by an amount given by the corresponding entry in the given vector.
|
26
|
+
* @param {v3f} vector - A vector of three entries specifying the factor by which to scale in each dimension.
|
27
|
+
* @returns {m4x4f} The scaling matrix.
|
28
|
+
*/
|
29
|
+
declare const scaling4: TgpuDualFn<(vector: v3f) => m4x4f>;
|
30
|
+
/**
|
31
|
+
* Creates a 4-by-4 matrix which rotates around the x-axis by the given angle.
|
32
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
33
|
+
* @returns {m4x4f} The rotation matrix.
|
34
|
+
*/
|
35
|
+
declare const rotationX4: TgpuDualFn<(a: number) => m4x4f>;
|
36
|
+
/**
|
37
|
+
* Creates a 4-by-4 matrix which rotates around the y-axis by the given angle.
|
38
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
39
|
+
* @returns {m4x4f} The rotation matrix.
|
40
|
+
*/
|
41
|
+
declare const rotationY4: TgpuDualFn<(a: number) => m4x4f>;
|
42
|
+
/**
|
43
|
+
* Creates a 4-by-4 matrix which rotates around the z-axis by the given angle.
|
44
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
45
|
+
* @returns {m4x4f} The rotation matrix.
|
46
|
+
*/
|
47
|
+
declare const rotationZ4: TgpuDualFn<(a: number) => m4x4f>;
|
48
|
+
/**
|
49
|
+
* Schema representing mat2x2f - a matrix with 2 rows and 2 columns, with elements of type f32.
|
50
|
+
* Also a constructor function for this matrix type.
|
51
|
+
*
|
52
|
+
* @example
|
53
|
+
* const zero2x2 = mat2x2f(); // filled with zeros
|
54
|
+
*
|
55
|
+
* @example
|
56
|
+
* const mat = mat2x2f(0, 1, 2, 3);
|
57
|
+
* mat.columns[0] // vec2f(0, 1)
|
58
|
+
* mat.columns[1] // vec2f(2, 3)
|
59
|
+
*
|
60
|
+
* @example
|
61
|
+
* const mat = mat2x2f(
|
62
|
+
* vec2f(0, 1), // column 0
|
63
|
+
* vec2f(1, 2), // column 1
|
64
|
+
* );
|
65
|
+
*
|
66
|
+
* @example
|
67
|
+
* const buffer = root.createBuffer(d.mat2x2f, d.mat2x2f(0, 1, 2, 3)); // buffer holding a d.mat2x2f value, with an initial value of ((0, 1), (2, 3))
|
68
|
+
*/
|
69
|
+
declare const mat2x2f: Mat2x2f;
|
70
|
+
/**
|
71
|
+
* Schema representing mat3x3f - a matrix with 3 rows and 3 columns, with elements of type f32.
|
72
|
+
* Also a constructor function for this matrix type.
|
73
|
+
*
|
74
|
+
* @example
|
75
|
+
* const zero3x3 = mat3x3f(); // filled with zeros
|
76
|
+
*
|
77
|
+
* @example
|
78
|
+
* const mat = mat3x3f(0, 1, 2, 3, 4, 5, 6, 7, 8);
|
79
|
+
* mat.columns[0] // vec3f(0, 1, 2)
|
80
|
+
* mat.columns[1] // vec3f(3, 4, 5)
|
81
|
+
* mat.columns[2] // vec3f(6, 7, 8)
|
82
|
+
*
|
83
|
+
* @example
|
84
|
+
* const mat = mat3x3f(
|
85
|
+
* vec3f(0, 1, 2), // column 0
|
86
|
+
* vec3f(2, 3, 4), // column 1
|
87
|
+
* vec3f(5, 6, 7), // column 2
|
88
|
+
* );
|
89
|
+
*
|
90
|
+
* @example
|
91
|
+
* const buffer = root.createBuffer(d.mat3x3f, d.mat3x3f()); // buffer holding a d.mat3x3f value, with an initial value of mat3x3f filled with zeros
|
92
|
+
*/
|
93
|
+
declare const mat3x3f: Mat3x3f;
|
94
|
+
/**
|
95
|
+
* Schema representing mat4x4f - a matrix with 4 rows and 4 columns, with elements of type f32.
|
96
|
+
* Also a constructor function for this matrix type.
|
97
|
+
*
|
98
|
+
* @example
|
99
|
+
* const zero4x4 = mat4x4f(); // filled with zeros
|
100
|
+
*
|
101
|
+
* @example
|
102
|
+
* const mat = mat4x4f(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
103
|
+
* mat.columns[0] // vec4f(0, 1, 2, 3)
|
104
|
+
* mat.columns[1] // vec4f(4, 5, 6, 7)
|
105
|
+
* mat.columns[2] // vec4f(8, 9, 10, 11)
|
106
|
+
* mat.columns[3] // vec4f(12, 13, 14, 15)
|
107
|
+
*
|
108
|
+
* @example
|
109
|
+
* const mat = mat4x4f(
|
110
|
+
* vec4f(0, 1, 2, 3), // column 0
|
111
|
+
* vec4f(4, 5, 6, 7), // column 1
|
112
|
+
* vec4f(8, 9, 10, 11), // column 2
|
113
|
+
* vec4f(12, 13, 14, 15), // column 3
|
114
|
+
* );
|
115
|
+
*
|
116
|
+
* @example
|
117
|
+
* const buffer = root.createBuffer(d.mat4x4f, d.mat4x4f()); // buffer holding a d.mat4x4f value, with an initial value of mat4x4f filled with zeros
|
118
|
+
*/
|
119
|
+
declare const mat4x4f: Mat4x4f;
|
120
|
+
declare function matToArray(mat: m2x2f | m3x3f | m4x4f): number[];
|
121
|
+
|
122
|
+
export { mat3x3f as a, mat4x4f as b, matToArray as c, identity3 as d, identity4 as e, rotationY4 as f, rotationZ4 as g, identity2 as i, mat2x2f as m, rotationX4 as r, scaling4 as s, translation4 as t };
|
package/package.json
CHANGED
package/std/index.cjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkTF6YPHJScjs = require('../chunk-TF6YPHJS.cjs');var _chunkV4CSEIB2cjs = require('../chunk-V4CSEIB2.cjs');var ce=_chunkV4CSEIB2cjs.ea.call(void 0, ()=>{throw new Error("discard() can only be used on the GPU.")},()=>_chunkV4CSEIB2cjs.ba.call(void 0, "discard;",_chunkV4CSEIB2cjs.y));function v(e){return e.dataType.type.includes("2")?_chunkV4CSEIB2cjs.qa:e.dataType.type.includes("3")?_chunkV4CSEIB2cjs.va:_chunkV4CSEIB2cjs.Aa}var xe=_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>D(g(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `all(${e.value} == ${t.value})`,_chunkV4CSEIB2cjs.ha)),g= exports.eq =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>_chunkTF6YPHJScjs.a.eq[e.kind](e,t),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} == ${t.value})`,v(e))),ye= exports.ne =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>m(g(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} != ${t.value})`,v(e))),S= exports.lt =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>_chunkTF6YPHJScjs.a.lt[e.kind](e,t),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} < ${t.value})`,v(e))),ve= exports.le =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>$(S(e,t),g(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} <= ${t.value})`,v(e))),fe= exports.gt =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>W(m(S(e,t)),m(g(e,t))),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} > ${t.value})`,v(e))),ge= exports.ge =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>m(S(e,t)),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} >= ${t.value})`,v(e))),m= exports.not =_chunkV4CSEIB2cjs.ea.call(void 0, e=>_chunkTF6YPHJScjs.a.neg[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `!(${e.value})`,e.dataType)),$= exports.or =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>_chunkTF6YPHJScjs.a.or[e.kind](e,t),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} | ${t.value})`,e.dataType)),W= exports.and =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>m($(m(e),m(t))),(e,t)=>_chunkV4CSEIB2cjs.ba.call(void 0, `(${e.value} & ${t.value})`,e.dataType)),D= exports.all =_chunkV4CSEIB2cjs.ea.call(void 0, e=>_chunkTF6YPHJScjs.a.all[e.kind](e),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `all(${e.value})`,_chunkV4CSEIB2cjs.ha)),Se= exports.any =_chunkV4CSEIB2cjs.ea.call(void 0, e=>!D(m(e)),e=>_chunkV4CSEIB2cjs.ba.call(void 0, `any(${e.value})`,_chunkV4CSEIB2cjs.ha)),be= exports.isCloseTo =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<o:_chunkV4CSEIB2cjs.z.call(void 0, e)&&_chunkV4CSEIB2cjs.z.call(void 0, t)?_chunkTF6YPHJScjs.a.isCloseToZero[e.kind](_chunkTF6YPHJScjs.e.call(void 0, e,t),o):!1,(e,t,o=_chunkV4CSEIB2cjs.ba.call(void 0, .01,_chunkV4CSEIB2cjs.ka))=>_chunkTF6YPHJScjs.b.call(void 0, e)&&_chunkTF6YPHJScjs.b.call(void 0, t)?_chunkV4CSEIB2cjs.ba.call(void 0, `(abs(f32(${e.value}) - f32(${t.value})) <= ${o.value})`,_chunkV4CSEIB2cjs.ha):!_chunkTF6YPHJScjs.b.call(void 0, e)&&!_chunkTF6YPHJScjs.b.call(void 0, t)?_chunkV4CSEIB2cjs.ba.call(void 0, `all(abs(${e.value} - ${t.value}) <= (${e.value} - ${e.value}) + ${o.value})`,_chunkV4CSEIB2cjs.ha):_chunkV4CSEIB2cjs.ba.call(void 0, "false",_chunkV4CSEIB2cjs.ha)),we= exports.select =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o)=>typeof o=="boolean"?o?t:e:_chunkTF6YPHJScjs.a.select[e.kind](e,t,o),(e,t,o)=>_chunkV4CSEIB2cjs.ba.call(void 0, `select(${e.value}, ${t.value}, ${o.value})`,e.dataType));var Ae=_chunkV4CSEIB2cjs.ea.call(void 0, ()=>console.warn("workgroupBarrier is a no-op outside of GPU mode."),()=>_chunkV4CSEIB2cjs.ba.call(void 0, "workgroupBarrier()",_chunkV4CSEIB2cjs.y)),Ie= exports.storageBarrier =_chunkV4CSEIB2cjs.ea.call(void 0, ()=>console.warn("storageBarrier is a no-op outside of GPU mode."),()=>_chunkV4CSEIB2cjs.ba.call(void 0, "storageBarrier()",_chunkV4CSEIB2cjs.y)),$e= exports.textureBarrier =_chunkV4CSEIB2cjs.ea.call(void 0, ()=>console.warn("textureBarrier is a no-op outside of GPU mode."),()=>_chunkV4CSEIB2cjs.ba.call(void 0, "textureBarrier()",_chunkV4CSEIB2cjs.y)),De= exports.atomicLoad =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},e=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicLoad(&${e.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)}),Be= exports.atomicStore =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(!_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)||e.dataType.type!=="atomic")throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`);return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicStore(&${e.value}, ${t.value})`,_chunkV4CSEIB2cjs.y)}),y=(e,t)=>e.dataType.type==="atomic"&&e.dataType.inner.type==="i32"?[e.dataType,_chunkV4CSEIB2cjs.ja]:[e.dataType,_chunkV4CSEIB2cjs.ia],Ve= exports.atomicAdd =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicAdd(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Ue= exports.atomicSub =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicSub(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),ke= exports.atomicMax =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicMax(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Ee= exports.atomicMin =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicMin(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Oe= exports.atomicAnd =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicAnd(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),_e= exports.atomicOr =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicOr(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y),Pe= exports.atomicXor =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkV4CSEIB2cjs.I.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkV4CSEIB2cjs.ba.call(void 0, `atomicXor(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},y);var Ge=_chunkV4CSEIB2cjs.ea.call(void 0, e=>e.length,e=>_chunkV4CSEIB2cjs.L.call(void 0, e.dataType)&&_chunkV4CSEIB2cjs.J.call(void 0, e.dataType.inner)&&e.dataType.inner.elementCount>0?_chunkV4CSEIB2cjs.ba.call(void 0, String(e.dataType.inner.elementCount),_chunkV4CSEIB2cjs.fa):_chunkV4CSEIB2cjs.ba.call(void 0, `arrayLength(${e.value})`,_chunkV4CSEIB2cjs.ia),e=>[_chunkV4CSEIB2cjs.Ga.call(void 0, e.dataType)]);var _typedbinary = require('typed-binary'); var d = _interopRequireWildcard(_typedbinary);var Le=_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4);new d.BufferWriter(t).writeUint32(e);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.ma.call(void 0, n.readFloat16(),n.readFloat16())},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `unpack2x16float(${e.value})`,_chunkV4CSEIB2cjs.ma)),Ne= exports.pack2x16float =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4),o=new d.BufferWriter(t);o.writeFloat16(e.x),o.writeFloat16(e.y);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.ia.call(void 0, n.readUint32())},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `pack2x16float(${e.value})`,_chunkV4CSEIB2cjs.ia)),he= exports.unpack4x8unorm =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4);new d.BufferWriter(t).writeUint32(e);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.wa.call(void 0, n.readUint8()/255,n.readUint8()/255,n.readUint8()/255,n.readUint8()/255)},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `unpack4x8unorm(${e.value})`,_chunkV4CSEIB2cjs.wa)),Fe= exports.pack4x8unorm =_chunkV4CSEIB2cjs.ea.call(void 0, e=>{let t=new ArrayBuffer(4),o=new d.BufferWriter(t);o.writeUint8(e.x*255),o.writeUint8(e.y*255),o.writeUint8(e.z*255),o.writeUint8(e.w*255);let n=new d.BufferReader(t);return _chunkV4CSEIB2cjs.ia.call(void 0, n.readUint32())},e=>_chunkV4CSEIB2cjs.ba.call(void 0, `pack4x8unorm(${e.value})`,_chunkV4CSEIB2cjs.ia));var We=_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o,n,u)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,o,n,u)=>{let s=[e,t,o];return n!==void 0&&s.push(n),u!==void 0&&s.push(u),_chunkV4CSEIB2cjs.ba.call(void 0, `textureSample(${s.map(b=>b.value).join(", ")})`,_chunkV4CSEIB2cjs.wa)}),Je= exports.textureSampleLevel =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o,n,u)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,o,n,u)=>{let s=[e,t,o,n];return u!==void 0&&s.push(u),_chunkV4CSEIB2cjs.ba.call(void 0, `textureSampleLevel(${s.map(b=>b.value).join(", ")})`,_chunkV4CSEIB2cjs.wa)}),Ce={u32:_chunkV4CSEIB2cjs.za,i32:_chunkV4CSEIB2cjs.ya,f32:_chunkV4CSEIB2cjs.wa},Me= exports.textureLoad =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o)=>{throw new Error("Texture loading is not supported outside of GPU mode.")},(e,t,o)=>{let n=[e,t];o!==void 0&&n.push(o);let u=e.dataType;return _chunkV4CSEIB2cjs.ba.call(void 0, `textureLoad(${n.map(s=>s.value).join(", ")})`,"texelDataType"in u?u.texelDataType:Ce[u.channelDataType.type])}),qe= exports.textureStore =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t,o,n)=>{throw new Error("Texture storing is not supported outside of GPU mode.")},(e,t,o,n)=>_chunkV4CSEIB2cjs.ba.call(void 0, `textureStore(${[e,t,o,n].filter(u=>u!==void 0).map(u=>u.value).join(", ")})`,_chunkV4CSEIB2cjs.y)),je= exports.textureDimensions =_chunkV4CSEIB2cjs.ea.call(void 0, (e,t)=>{throw new Error("Texture dimensions are not supported outside of GPU mode.")},(e,t)=>{let o=e.dataType.dimension;return _chunkV4CSEIB2cjs.ba.call(void 0, `textureDimensions(${e.value}${t!==void 0?`, ${t.value}`:""})`,o==="1d"?_chunkV4CSEIB2cjs.ia:o==="3d"?_chunkV4CSEIB2cjs.ua:_chunkV4CSEIB2cjs.pa)});exports.abs = _chunkTF6YPHJScjs.h; exports.acos = _chunkTF6YPHJScjs.j; exports.add = _chunkTF6YPHJScjs.d; exports.all = D; exports.allEq = xe; exports.and = W; exports.any = Se; exports.arrayLength = Ge; exports.asin = _chunkTF6YPHJScjs.k; exports.atan2 = _chunkTF6YPHJScjs.i; exports.atomicAdd = Ve; exports.atomicAnd = Oe; exports.atomicLoad = De; exports.atomicMax = ke; exports.atomicMin = Ee; exports.atomicOr = _e; exports.atomicStore = Be; exports.atomicSub = Ue; exports.atomicXor = Pe; exports.ceil = _chunkTF6YPHJScjs.l; exports.clamp = _chunkTF6YPHJScjs.m; exports.cos = _chunkTF6YPHJScjs.n; exports.cross = _chunkTF6YPHJScjs.o; exports.discard = ce; exports.distance = _chunkTF6YPHJScjs.C; exports.div = _chunkTF6YPHJScjs.g; exports.dot = _chunkTF6YPHJScjs.p; exports.eq = g; exports.exp = _chunkTF6YPHJScjs.y; exports.floor = _chunkTF6YPHJScjs.r; exports.fract = _chunkTF6YPHJScjs.s; exports.ge = ge; exports.gt = fe; exports.isCloseTo = be; exports.le = ve; exports.length = _chunkTF6YPHJScjs.t; exports.lt = S; exports.max = _chunkTF6YPHJScjs.u; exports.min = _chunkTF6YPHJScjs.v; exports.mix = _chunkTF6YPHJScjs.A; exports.mul = _chunkTF6YPHJScjs.f; exports.ne = ye; exports.neg = _chunkTF6YPHJScjs.D; exports.normalize = _chunkTF6YPHJScjs.q; exports.not = m; exports.or = $; exports.pack2x16float = Ne; exports.pack4x8unorm = Fe; exports.pow = _chunkTF6YPHJScjs.z; exports.reflect = _chunkTF6YPHJScjs.B; exports.select = we; exports.sign = _chunkTF6YPHJScjs.w; exports.sin = _chunkTF6YPHJScjs.x; exports.sqrt = _chunkTF6YPHJScjs.E; exports.storageBarrier = Ie; exports.sub = _chunkTF6YPHJScjs.e; exports.textureBarrier = $e; exports.textureDimensions = je; exports.textureLoad = Me; exports.textureSample = We; exports.textureSampleLevel = Je; exports.textureStore = qe; exports.unpack2x16float = Le; exports.unpack4x8unorm = he; exports.workgroupBarrier = Ae;
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _chunkCDUKTYEScjs = require('../chunk-CDUKTYES.cjs');var _chunkBJSN5UVVcjs = require('../chunk-BJSN5UVV.cjs');var Ve=_chunkBJSN5UVVcjs.ga.call(void 0, ()=>{throw new Error("discard() can only be used on the GPU.")},()=>_chunkBJSN5UVVcjs.da.call(void 0, "discard;",_chunkBJSN5UVVcjs.A),"discard");var Ue=_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.f.call(void 0, _chunkBJSN5UVVcjs.Oa.translation(t),e),(e,t)=>({value:`(${_chunkBJSN5UVVcjs.Oa.translation(t).value} * ${e.value})`,dataType:e.dataType}),"translate4"),Ee= exports.scale4 =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.f.call(void 0, _chunkBJSN5UVVcjs.Oa.scaling(t),e),(e,t)=>({value:`(${_chunkBJSN5UVVcjs.Oa.scaling(t).value} * ${e.value})`,dataType:e.dataType}),"scale4"),Oe= exports.rotateX4 =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.f.call(void 0, _chunkBJSN5UVVcjs.Oa.rotationX(t),e),(e,t)=>({value:`(${_chunkBJSN5UVVcjs.Oa.rotationX(t).value} * ${e.value})`,dataType:e.dataType}),"rotateX4"),Le= exports.rotateY4 =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.f.call(void 0, _chunkBJSN5UVVcjs.Oa.rotationY(t),e),(e,t)=>({value:`(${_chunkBJSN5UVVcjs.Oa.rotationY(t).value} * ${e.value})`,dataType:e.dataType}),"rotateY4"),_e= exports.rotateZ4 =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.f.call(void 0, _chunkBJSN5UVVcjs.Oa.rotationZ(t),e),(e,t)=>({value:`(${_chunkBJSN5UVVcjs.Oa.rotationZ(t).value} * ${e.value})`,dataType:e.dataType}),"rotateZ4");function g(e){return e.dataType.type.includes("2")?_chunkBJSN5UVVcjs.sa:e.dataType.type.includes("3")?_chunkBJSN5UVVcjs.xa:_chunkBJSN5UVVcjs.Ca}var Pe=_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>k(b(e,t)),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `all(${e.value} == ${t.value})`,_chunkBJSN5UVVcjs.ja),"allEq"),b= exports.eq =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.a.eq[e.kind](e,t),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} == ${t.value})`,g(e)),"eq"),he= exports.ne =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>m(b(e,t)),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} != ${t.value})`,g(e)),"ne"),w= exports.lt =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.a.lt[e.kind](e,t),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} < ${t.value})`,g(e)),"lt"),Ge= exports.le =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>B(w(e,t),b(e,t)),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} <= ${t.value})`,g(e)),"le"),Ne= exports.gt =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>J(m(w(e,t)),m(b(e,t))),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} > ${t.value})`,g(e)),"gt"),Fe= exports.ge =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>m(w(e,t)),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} >= ${t.value})`,g(e)),"ge"),m= exports.not =_chunkBJSN5UVVcjs.ga.call(void 0, e=>_chunkCDUKTYEScjs.a.neg[e.kind](e),e=>_chunkBJSN5UVVcjs.da.call(void 0, `!(${e.value})`,e.dataType),"not"),B= exports.or =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>_chunkCDUKTYEScjs.a.or[e.kind](e,t),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} | ${t.value})`,e.dataType),"or"),J= exports.and =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>m(B(m(e),m(t))),(e,t)=>_chunkBJSN5UVVcjs.da.call(void 0, `(${e.value} & ${t.value})`,e.dataType),"and"),k= exports.all =_chunkBJSN5UVVcjs.ga.call(void 0, e=>_chunkCDUKTYEScjs.a.all[e.kind](e),e=>_chunkBJSN5UVVcjs.da.call(void 0, `all(${e.value})`,_chunkBJSN5UVVcjs.ja),"all"),We= exports.any =_chunkBJSN5UVVcjs.ga.call(void 0, e=>!k(m(e)),e=>_chunkBJSN5UVVcjs.da.call(void 0, `any(${e.value})`,_chunkBJSN5UVVcjs.ja),"any"),Xe= exports.isCloseTo =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t,o=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<o:_chunkBJSN5UVVcjs.B.call(void 0, e)&&_chunkBJSN5UVVcjs.B.call(void 0, t)?_chunkCDUKTYEScjs.a.isCloseToZero[e.kind](_chunkCDUKTYEScjs.e.call(void 0, e,t),o):!1,(e,t,o=_chunkBJSN5UVVcjs.da.call(void 0, .01,_chunkBJSN5UVVcjs.ma))=>_chunkCDUKTYEScjs.b.call(void 0, e)&&_chunkCDUKTYEScjs.b.call(void 0, t)?_chunkBJSN5UVVcjs.da.call(void 0, `(abs(f32(${e.value}) - f32(${t.value})) <= ${o.value})`,_chunkBJSN5UVVcjs.ja):!_chunkCDUKTYEScjs.b.call(void 0, e)&&!_chunkCDUKTYEScjs.b.call(void 0, t)?_chunkBJSN5UVVcjs.da.call(void 0, `all(abs(${e.value} - ${t.value}) <= (${e.value} - ${e.value}) + ${o.value})`,_chunkBJSN5UVVcjs.ja):_chunkBJSN5UVVcjs.da.call(void 0, "false",_chunkBJSN5UVVcjs.ja),"isCloseTo"),Je= exports.select =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t,o)=>typeof o=="boolean"?o?t:e:_chunkCDUKTYEScjs.a.select[e.kind](e,t,o),(e,t,o)=>_chunkBJSN5UVVcjs.da.call(void 0, `select(${e.value}, ${t.value}, ${o.value})`,e.dataType),"select");var Me=_chunkBJSN5UVVcjs.ga.call(void 0, ()=>console.warn("workgroupBarrier is a no-op outside of GPU mode."),()=>_chunkBJSN5UVVcjs.da.call(void 0, "workgroupBarrier()",_chunkBJSN5UVVcjs.A),"workgroupBarrier"),qe= exports.storageBarrier =_chunkBJSN5UVVcjs.ga.call(void 0, ()=>console.warn("storageBarrier is a no-op outside of GPU mode."),()=>_chunkBJSN5UVVcjs.da.call(void 0, "storageBarrier()",_chunkBJSN5UVVcjs.A),"storageBarrier"),Ce= exports.textureBarrier =_chunkBJSN5UVVcjs.ga.call(void 0, ()=>console.warn("textureBarrier is a no-op outside of GPU mode."),()=>_chunkBJSN5UVVcjs.da.call(void 0, "textureBarrier()",_chunkBJSN5UVVcjs.A),"textureBarrier"),Ze= exports.atomicLoad =_chunkBJSN5UVVcjs.ga.call(void 0, e=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},e=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicLoad(&${e.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicLoad"),Ye= exports.atomicStore =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(!_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)||e.dataType.type!=="atomic")throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`);return _chunkBJSN5UVVcjs.da.call(void 0, `atomicStore(&${e.value}, ${t.value})`,_chunkBJSN5UVVcjs.A)},"atomicStore"),f=(e,t)=>e.dataType.type==="atomic"&&e.dataType.inner.type==="i32"?[e.dataType,_chunkBJSN5UVVcjs.la]:[e.dataType,_chunkBJSN5UVVcjs.ka],je= exports.atomicAdd =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicAdd(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicAdd",f),Re= exports.atomicSub =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicSub(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicSub",f),ze= exports.atomicMax =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicMax(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicMax",f),He= exports.atomicMin =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicMin(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicMin",f),Ke= exports.atomicAnd =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicAnd(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicAnd",f),Qe= exports.atomicOr =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicOr(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicOr",f),et= exports.atomicXor =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Atomic operations are not supported outside of GPU mode.")},(e,t)=>{if(_chunkBJSN5UVVcjs.K.call(void 0, e.dataType)&&e.dataType.type==="atomic")return _chunkBJSN5UVVcjs.da.call(void 0, `atomicXor(&${e.value}, ${t.value})`,e.dataType.inner);throw new Error(`Invalid atomic type: ${JSON.stringify(e.dataType,null,2)}`)},"atomicXor",f);var tt=_chunkBJSN5UVVcjs.ga.call(void 0, e=>e.length,e=>_chunkBJSN5UVVcjs.N.call(void 0, e.dataType)&&_chunkBJSN5UVVcjs.L.call(void 0, e.dataType.inner)&&e.dataType.inner.elementCount>0?_chunkBJSN5UVVcjs.da.call(void 0, String(e.dataType.inner.elementCount),_chunkBJSN5UVVcjs.ha):_chunkBJSN5UVVcjs.da.call(void 0, `arrayLength(${e.value})`,_chunkBJSN5UVVcjs.ka),"arrayLength",e=>[_chunkBJSN5UVVcjs.Qa.call(void 0, e.dataType)]);var _typedbinary = require('typed-binary'); var d = _interopRequireWildcard(_typedbinary);var rt=_chunkBJSN5UVVcjs.ga.call(void 0, e=>{let t=new ArrayBuffer(4);new d.BufferWriter(t).writeUint32(e);let n=new d.BufferReader(t);return _chunkBJSN5UVVcjs.oa.call(void 0, n.readFloat16(),n.readFloat16())},e=>_chunkBJSN5UVVcjs.da.call(void 0, `unpack2x16float(${e.value})`,_chunkBJSN5UVVcjs.oa),"unpack2x16float"),at= exports.pack2x16float =_chunkBJSN5UVVcjs.ga.call(void 0, e=>{let t=new ArrayBuffer(4),o=new d.BufferWriter(t);o.writeFloat16(e.x),o.writeFloat16(e.y);let n=new d.BufferReader(t);return _chunkBJSN5UVVcjs.ka.call(void 0, n.readUint32())},e=>_chunkBJSN5UVVcjs.da.call(void 0, `pack2x16float(${e.value})`,_chunkBJSN5UVVcjs.ka),"pack2x16float"),ot= exports.unpack4x8unorm =_chunkBJSN5UVVcjs.ga.call(void 0, e=>{let t=new ArrayBuffer(4);new d.BufferWriter(t).writeUint32(e);let n=new d.BufferReader(t);return _chunkBJSN5UVVcjs.ya.call(void 0, n.readUint8()/255,n.readUint8()/255,n.readUint8()/255,n.readUint8()/255)},e=>_chunkBJSN5UVVcjs.da.call(void 0, `unpack4x8unorm(${e.value})`,_chunkBJSN5UVVcjs.ya),"unpack4x8unorm"),nt= exports.pack4x8unorm =_chunkBJSN5UVVcjs.ga.call(void 0, e=>{let t=new ArrayBuffer(4),o=new d.BufferWriter(t);o.writeUint8(e.x*255),o.writeUint8(e.y*255),o.writeUint8(e.z*255),o.writeUint8(e.w*255);let n=new d.BufferReader(t);return _chunkBJSN5UVVcjs.ka.call(void 0, n.readUint32())},e=>_chunkBJSN5UVVcjs.da.call(void 0, `pack4x8unorm(${e.value})`,_chunkBJSN5UVVcjs.ka),"pack4x8unorm");var ut=_chunkBJSN5UVVcjs.ga.call(void 0, (e,t,o,n,u)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,o,n,u)=>{let l=[e,t,o];return n!==void 0&&l.push(n),u!==void 0&&l.push(u),_chunkBJSN5UVVcjs.da.call(void 0, `textureSample(${l.map($=>$.value).join(", ")})`,_chunkBJSN5UVVcjs.ya)},"textureSample"),pt= exports.textureSampleLevel =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t,o,n,u)=>{throw new Error("Texture sampling is not supported outside of GPU mode.")},(e,t,o,n,u)=>{let l=[e,t,o,n];return u!==void 0&&l.push(u),_chunkBJSN5UVVcjs.da.call(void 0, `textureSampleLevel(${l.map($=>$.value).join(", ")})`,_chunkBJSN5UVVcjs.ya)},"textureSampleLevel"),it={u32:_chunkBJSN5UVVcjs.Ba,i32:_chunkBJSN5UVVcjs.Aa,f32:_chunkBJSN5UVVcjs.ya},Tt= exports.textureLoad =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t,o)=>{throw new Error("Texture loading is not supported outside of GPU mode.")},(e,t,o)=>{let n=[e,t];o!==void 0&&n.push(o);let u=e.dataType;return _chunkBJSN5UVVcjs.da.call(void 0, `textureLoad(${n.map(l=>l.value).join(", ")})`,"texelDataType"in u?u.texelDataType:it[u.channelDataType.type])},"textureLoad"),dt= exports.textureStore =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t,o,n)=>{throw new Error("Texture storing is not supported outside of GPU mode.")},(e,t,o,n)=>_chunkBJSN5UVVcjs.da.call(void 0, `textureStore(${[e,t,o,n].filter(u=>u!==void 0).map(u=>u.value).join(", ")})`,_chunkBJSN5UVVcjs.A),"textureStore"),st= exports.textureDimensions =_chunkBJSN5UVVcjs.ga.call(void 0, (e,t)=>{throw new Error("Texture dimensions are not supported outside of GPU mode.")},(e,t)=>{let o=e.dataType.dimension;return _chunkBJSN5UVVcjs.da.call(void 0, `textureDimensions(${e.value}${t!==void 0?`, ${t.value}`:""})`,o==="1d"?_chunkBJSN5UVVcjs.ka:o==="3d"?_chunkBJSN5UVVcjs.wa:_chunkBJSN5UVVcjs.ra)},"textureDimensions");exports.abs = _chunkCDUKTYEScjs.h; exports.acos = _chunkCDUKTYEScjs.j; exports.acosh = _chunkCDUKTYEScjs.k; exports.add = _chunkCDUKTYEScjs.d; exports.all = k; exports.allEq = Pe; exports.and = J; exports.any = We; exports.arrayLength = tt; exports.asin = _chunkCDUKTYEScjs.l; exports.atan2 = _chunkCDUKTYEScjs.i; exports.atomicAdd = je; exports.atomicAnd = Ke; exports.atomicLoad = Ze; exports.atomicMax = ze; exports.atomicMin = He; exports.atomicOr = Qe; exports.atomicStore = Ye; exports.atomicSub = Re; exports.atomicXor = et; exports.ceil = _chunkCDUKTYEScjs.m; exports.clamp = _chunkCDUKTYEScjs.n; exports.cos = _chunkCDUKTYEScjs.o; exports.cosh = _chunkCDUKTYEScjs.p; exports.cross = _chunkCDUKTYEScjs.q; exports.discard = Ve; exports.distance = _chunkCDUKTYEScjs.H; exports.div = _chunkCDUKTYEScjs.g; exports.dot = _chunkCDUKTYEScjs.r; exports.eq = b; exports.exp = _chunkCDUKTYEScjs.C; exports.exp2 = _chunkCDUKTYEScjs.D; exports.floor = _chunkCDUKTYEScjs.t; exports.fract = _chunkCDUKTYEScjs.u; exports.ge = Fe; exports.gt = Ne; exports.identity2 = _chunkBJSN5UVVcjs.Ea; exports.identity3 = _chunkBJSN5UVVcjs.Fa; exports.identity4 = _chunkBJSN5UVVcjs.Ga; exports.isCloseTo = Xe; exports.le = Ge; exports.length = _chunkCDUKTYEScjs.v; exports.log = _chunkCDUKTYEScjs.w; exports.log2 = _chunkCDUKTYEScjs.x; exports.lt = w; exports.max = _chunkCDUKTYEScjs.y; exports.min = _chunkCDUKTYEScjs.z; exports.mix = _chunkCDUKTYEScjs.F; exports.mul = _chunkCDUKTYEScjs.f; exports.ne = he; exports.neg = _chunkCDUKTYEScjs.I; exports.normalize = _chunkCDUKTYEScjs.s; exports.not = m; exports.or = B; exports.pack2x16float = at; exports.pack4x8unorm = nt; exports.pow = _chunkCDUKTYEScjs.E; exports.reflect = _chunkCDUKTYEScjs.G; exports.rotateX4 = Oe; exports.rotateY4 = Le; exports.rotateZ4 = _e; exports.rotationX4 = _chunkBJSN5UVVcjs.Ja; exports.rotationY4 = _chunkBJSN5UVVcjs.Ka; exports.rotationZ4 = _chunkBJSN5UVVcjs.La; exports.scale4 = Ee; exports.scaling4 = _chunkBJSN5UVVcjs.Ia; exports.select = Je; exports.sign = _chunkCDUKTYEScjs.A; exports.sin = _chunkCDUKTYEScjs.B; exports.sqrt = _chunkCDUKTYEScjs.J; exports.storageBarrier = qe; exports.sub = _chunkCDUKTYEScjs.e; exports.tanh = _chunkCDUKTYEScjs.K; exports.textureBarrier = Ce; exports.textureDimensions = st; exports.textureLoad = Tt; exports.textureSample = ut; exports.textureSampleLevel = pt; exports.textureStore = dt; exports.translate4 = Ue; exports.translation4 = _chunkBJSN5UVVcjs.Ha; exports.unpack2x16float = rt; exports.unpack4x8unorm = ot; exports.workgroupBarrier = Me;
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/std/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","../../src/std/discard.ts","../../src/std/boolean.ts","../../src/std/atomic.ts"],"names":["discard","createDualImpl","snip","Void","correspondingBooleanVectorSchema","value","vec2b","vec3b","vec4b","allEq","lhs","rhs","all","eq","bool","VectorOps","ne","not","lt","le","or","gt","and","any","isCloseTo","precision","isVecInstance","sub","f32","isSnippetNumeric","select","f","cond","workgroupBarrier","storageBarrier","textureBarrier","atomicLoad","a","isWgslData"],"mappings":"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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","sourcesContent":[null,"import { snip } from '../data/dataTypes.ts';\nimport { Void } from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\n\nexport const discard = createDualImpl(\n // CPU\n (): never => {\n throw new Error('discard() can only be used on the GPU.');\n },\n // GPU\n () => snip('discard;', Void),\n);\n","import { snip, type Snippet } from '../data/dataTypes.ts';\nimport { bool, f32 } from '../data/numeric.ts';\nimport { vec2b, vec3b, vec4b } from '../data/vector.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport {\n type AnyBooleanVecInstance,\n type AnyFloatVecInstance,\n type AnyNumericVecInstance,\n type AnyVec2Instance,\n type AnyVec3Instance,\n type AnyVecInstance,\n isVecInstance,\n type v2b,\n type v3b,\n type v4b,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport { isSnippetNumeric, sub } from './numeric.ts';\n\nfunction correspondingBooleanVectorSchema(value: Snippet) {\n if (value.dataType.type.includes('2')) {\n return vec2b;\n }\n if (value.dataType.type.includes('3')) {\n return vec3b;\n }\n return vec4b;\n}\n\n// comparison\n\n/**\n * Checks whether `lhs == rhs` on all components.\n * Equivalent to `all(eq(lhs, rhs))`.\n * @example\n * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false\n * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true\n */\nexport const allEq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => all(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => snip(`all(${lhs.value} == ${rhs.value})`, bool),\n);\n\n/**\n * Checks **component-wise** whether `lhs == rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.\n * @example\n * eq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(true, false)\n * eq(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, false)\n * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true\n * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true\n */\nexport const eq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n VectorOps.eq[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} == ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs != rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `any`.\n * @example\n * ne(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(false, true)\n * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)\n * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true\n */\nexport const ne = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => not(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} != ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs < rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * lt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, true)\n * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)\n * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true\n */\nexport const lt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n VectorOps.lt[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} < ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs <= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * le(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, true)\n * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)\n * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true\n */\nexport const le = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n or(lt(lhs, rhs), eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} <= ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs > rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * gt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, false)\n * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)\n * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const gt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n and(not(lt(lhs, rhs)), not(eq(lhs, rhs))),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} > ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n/**\n * Checks **component-wise** whether `lhs >= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * ge(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, false)\n * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)\n * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const ge = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => not(lt(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} >= ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n);\n\n// logical ops\n\n/**\n * Returns **component-wise** `!value`.\n * @example\n * not(vec2b(false, true)) // returns vec2b(true, false)\n * not(vec3b(true, true, false)) // returns vec3b(false, false, true)\n */\nexport const not = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(value: T): T =>\n VectorOps.neg[value.kind](value),\n // GPU implementation\n (value) => snip(`!(${value.value})`, value.dataType),\n);\n\n/**\n * Returns **component-wise** logical `or` result.\n * @example\n * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)\n * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)\n */\nexport const or = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n VectorOps.or[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => snip(`(${lhs.value} | ${rhs.value})`, lhs.dataType),\n);\n\n/**\n * Returns **component-wise** logical `and` result.\n * @example\n * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)\n * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)\n */\nexport const and = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n not(or(not(lhs), not(rhs))),\n // GPU implementation\n (lhs, rhs) => snip(`(${lhs.value} & ${rhs.value})`, lhs.dataType),\n);\n\n// logical aggregation\n\n/**\n * Returns `true` if each component of `value` is true.\n * @example\n * all(vec2b(false, true)) // returns false\n * all(vec3b(true, true, true)) // returns true\n */\nexport const all = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => VectorOps.all[value.kind](value),\n // GPU implementation\n (value) => snip(`all(${value.value})`, bool),\n);\n\n/**\n * Returns `true` if any component of `value` is true.\n * @example\n * any(vec2b(false, true)) // returns true\n * any(vec3b(false, false, false)) // returns false\n */\nexport const any = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => !all(not(value)),\n // GPU implementation\n (value) => snip(`any(${value.value})`, bool),\n);\n\n// other\n\n/**\n * Checks whether the given elements differ by at most the `precision` value.\n * Checks all elements of `lhs` and `rhs` if arguments are vectors.\n * @example\n * isCloseTo(0, 0.1) // returns false\n * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true\n *\n * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.\n */\nexport const isCloseTo = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(\n lhs: T,\n rhs: T,\n precision = 0.01,\n ) => {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return Math.abs(lhs - rhs) < precision;\n }\n if (isVecInstance(lhs) && isVecInstance(rhs)) {\n return VectorOps.isCloseToZero[lhs.kind](\n sub(lhs, rhs),\n precision,\n );\n }\n return false;\n },\n // GPU implementation\n (lhs, rhs, precision = snip(0.01, f32)) => {\n if (isSnippetNumeric(lhs) && isSnippetNumeric(rhs)) {\n return snip(\n `(abs(f32(${lhs.value}) - f32(${rhs.value})) <= ${precision.value})`,\n bool,\n );\n }\n if (!isSnippetNumeric(lhs) && !isSnippetNumeric(rhs)) {\n return snip(\n // https://www.w3.org/TR/WGSL/#vector-multi-component:~:text=Binary%20arithmetic%20expressions%20with%20mixed%20scalar%20and%20vector%20operands\n // (a-a)+prec creates a vector of a.length elements, all equal to prec\n `all(abs(${lhs.value} - ${rhs.value}) <= (${lhs.value} - ${lhs.value}) + ${precision.value})`,\n bool,\n );\n }\n return snip('false', bool);\n },\n);\n\nexport type SelectOverload = {\n <T extends number | boolean | AnyVecInstance>(f: T, t: T, cond: boolean): T;\n <T extends AnyVecInstance>(\n f: T,\n t: T,\n cond: T extends AnyVec2Instance ? v2b\n : T extends AnyVec3Instance ? v3b\n : v4b,\n ): T;\n};\n\n/**\n * Returns `t` if `cond` is `true`, and `f` otherwise.\n * Component-wise if `cond` is a vector.\n * @example\n * select(1, 2, false) // returns 1\n * select(1, 2, true) // returns 2\n * select(vec2i(1, 2), vec2i(3, 4), true) // returns vec2i(3, 4)\n * select(vec2i(1, 2), vec2i(3, 4), vec2b(false, true)) // returns vec2i(1, 4)\n */\nexport const select: SelectOverload = createDualImpl(\n // CPU implementation\n <T extends number | boolean | AnyVecInstance>(\n f: T,\n t: T,\n cond: AnyBooleanVecInstance | boolean,\n ) => {\n if (typeof cond === 'boolean') {\n return cond ? t : f;\n }\n return VectorOps.select[(f as AnyVecInstance).kind](\n f as AnyVecInstance,\n t as AnyVecInstance,\n cond,\n );\n },\n // GPU implementation\n (f, t, cond) =>\n snip(`select(${f.value}, ${t.value}, ${cond.value})`, f.dataType),\n);\n","import { snip, type Snippet } from '../data/dataTypes.ts';\nimport { i32, u32 } from '../data/numeric.ts';\nimport {\n type AnyWgslData,\n type atomicI32,\n type atomicU32,\n isWgslData,\n Void,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\ntype AnyAtomic = atomicI32 | atomicU32;\n\nexport const workgroupBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('workgroupBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('workgroupBarrier()', Void),\n);\n\nexport const storageBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('storageBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('storageBarrier()', Void),\n);\n\nexport const textureBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('textureBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('textureBarrier()', Void),\n);\n\nexport const atomicLoad = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicLoad(&${a.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n);\n\nexport const atomicStore = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): void => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (!isWgslData(a.dataType) || a.dataType.type !== 'atomic') {\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n }\n return snip(`atomicStore(&${a.value}, ${value.value})`, Void);\n },\n);\n\nconst atomicTypeFn = (a: Snippet, _value: Snippet): AnyWgslData[] => {\n if (a.dataType.type === 'atomic' && a.dataType.inner.type === 'i32') {\n return [a.dataType, i32];\n }\n return [a.dataType as AnyWgslData, u32];\n};\n\nexport const atomicAdd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicAdd(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicSub = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicSub(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicMax = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicMax(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicMin = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicMin(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicAnd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicAnd(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicOr = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicOr(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n\nexport const atomicXor = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicXor(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n atomicTypeFn,\n);\n"]}
|
1
|
+
{"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","../../src/std/discard.ts","../../src/std/matrix.ts","../../src/std/boolean.ts","../../src/std/atomic.ts"],"names":["discard","createDualImpl","snip","Void","translate4","matrix","vector","mul","mat4x4f","scale4","rotateX4","angle","rotateY4","rotateZ4","correspondingBooleanVectorSchema","value","vec2b","vec3b","vec4b","allEq","lhs","rhs","all","eq","bool","VectorOps","ne","not","lt","le","or","gt","and","ge","any","isCloseTo","precision","isVecInstance","sub","f32","isSnippetNumeric","select","f","cond","workgroupBarrier","storageBarrier","textureBarrier","atomicLoad","a","isWgslData"],"mappings":"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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/std/index.cjs","sourcesContent":[null,"import { snip } from '../data/dataTypes.ts';\nimport { Void } from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\n\nexport const discard = createDualImpl(\n // CPU\n (): never => {\n throw new Error('discard() can only be used on the GPU.');\n },\n // GPU\n () => snip('discard;', Void),\n 'discard',\n);\n","import type { Snippet } from '../data/dataTypes.ts';\nimport { mat4x4f } from '../data/matrix.ts';\nimport type { m4x4f, v3f } from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport { mul } from './numeric.ts';\n\n/**\n * Translates the given 4-by-4 matrix by the given vector.\n * @param {m4x4f} matrix - The matrix to be modified.\n * @param {v3f} vector - The vector by which to translate the matrix.\n * @returns {m4x4f} The translated matrix.\n */\nexport const translate4 = createDualImpl(\n // CPU implementation\n (matrix: m4x4f, vector: v3f) => {\n return mul(mat4x4f.translation(vector), matrix);\n },\n // GPU implementation\n (matrix, vector) => ({\n value: `(${\n (mat4x4f.translation(vector as unknown as v3f) as unknown as Snippet)\n .value\n } * ${matrix.value})`,\n dataType: matrix.dataType,\n }),\n 'translate4',\n);\n\n/**\n * Scales the given 4-by-4 matrix in each dimension by an amount given by the corresponding entry in the given vector.\n * @param {m4x4f} matrix - The matrix to be modified.\n * @param {v3f} vector - A vector of three entries specifying the factor by which to scale in each dimension.\n * @returns {m4x4f} The scaled matrix.\n */\nexport const scale4 = createDualImpl(\n // CPU implementation\n (matrix: m4x4f, vector: v3f) => {\n return mul(mat4x4f.scaling(vector), matrix);\n },\n // GPU implementation\n (matrix, vector) => ({\n value: `(${\n (mat4x4f.scaling(vector as unknown as v3f) as unknown as Snippet)\n .value\n } * ${matrix.value})`,\n dataType: matrix.dataType,\n }),\n 'scale4',\n);\n\n/**\n * Rotates the given 4-by-4 matrix around the x-axis by the given angle.\n * @param {m4x4f} matrix - The matrix to be modified.\n * @param {number} angle - The angle by which to rotate (in radians).\n * @returns {m4x4f} The rotated matrix.\n */\nexport const rotateX4 = createDualImpl(\n // CPU implementation\n (matrix: m4x4f, angle: number) => {\n return mul(mat4x4f.rotationX(angle), matrix);\n },\n // GPU implementation\n (matrix, angle) => ({\n value: `(${\n (mat4x4f.rotationX(angle as unknown as number) as unknown as Snippet)\n .value\n } * ${matrix.value})`,\n dataType: matrix.dataType,\n }),\n 'rotateX4',\n);\n\n/**\n * Rotates the given 4-by-4 matrix around the y-axis by the given angle.\n * @param {m4x4f} matrix - The matrix to be modified.\n * @param {number} angle - The angle by which to rotate (in radians).\n * @returns {m4x4f} The rotated matrix.\n */\nexport const rotateY4 = createDualImpl(\n // CPU implementation\n (matrix: m4x4f, angle: number) => {\n return mul(mat4x4f.rotationY(angle), matrix);\n },\n // GPU implementation\n (matrix, angle) => ({\n value: `(${\n (mat4x4f.rotationY(angle as unknown as number) as unknown as Snippet)\n .value\n } * ${matrix.value})`,\n dataType: matrix.dataType,\n }),\n 'rotateY4',\n);\n\n/**\n * Rotates the given 4-by-4 matrix around the z-axis by the given angle.\n * @param {m4x4f} matrix - The matrix to be modified.\n * @param {number} angle - The angle by which to rotate (in radians).\n * @returns {m4x4f} The rotated matrix.\n */\nexport const rotateZ4 = createDualImpl(\n // CPU implementation\n (matrix: m4x4f, angle: number) => {\n return mul(mat4x4f.rotationZ(angle), matrix);\n },\n // GPU implementation\n (matrix, angle) => ({\n value: `(${\n (mat4x4f.rotationZ(angle as unknown as number) as unknown as Snippet)\n .value\n } * ${matrix.value})`,\n dataType: matrix.dataType,\n }),\n 'rotateZ4',\n);\n","import { snip, type Snippet } from '../data/dataTypes.ts';\nimport { bool, f32 } from '../data/numeric.ts';\nimport { vec2b, vec3b, vec4b } from '../data/vector.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport {\n type AnyBooleanVecInstance,\n type AnyFloatVecInstance,\n type AnyNumericVecInstance,\n type AnyVec2Instance,\n type AnyVec3Instance,\n type AnyVecInstance,\n isVecInstance,\n type v2b,\n type v3b,\n type v4b,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport { isSnippetNumeric, sub } from './numeric.ts';\n\nfunction correspondingBooleanVectorSchema(value: Snippet) {\n if (value.dataType.type.includes('2')) {\n return vec2b;\n }\n if (value.dataType.type.includes('3')) {\n return vec3b;\n }\n return vec4b;\n}\n\n// comparison\n\n/**\n * Checks whether `lhs == rhs` on all components.\n * Equivalent to `all(eq(lhs, rhs))`.\n * @example\n * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false\n * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true\n */\nexport const allEq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => all(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) => snip(`all(${lhs.value} == ${rhs.value})`, bool),\n 'allEq',\n);\n\n/**\n * Checks **component-wise** whether `lhs == rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.\n * @example\n * eq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(true, false)\n * eq(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, false)\n * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true\n * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true\n */\nexport const eq = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n VectorOps.eq[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} == ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n 'eq',\n);\n\n/**\n * Checks **component-wise** whether `lhs != rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `any`.\n * @example\n * ne(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(false, true)\n * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)\n * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true\n */\nexport const ne = createDualImpl(\n // CPU implementation\n <T extends AnyVecInstance>(lhs: T, rhs: T) => not(eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} != ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n 'ne',\n);\n\n/**\n * Checks **component-wise** whether `lhs < rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * lt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, true)\n * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)\n * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true\n */\nexport const lt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n VectorOps.lt[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} < ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n 'lt',\n);\n\n/**\n * Checks **component-wise** whether `lhs <= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * le(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, true)\n * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)\n * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true\n */\nexport const le = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n or(lt(lhs, rhs), eq(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} <= ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n 'le',\n);\n\n/**\n * Checks **component-wise** whether `lhs > rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * gt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, false)\n * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)\n * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const gt = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n and(not(lt(lhs, rhs)), not(eq(lhs, rhs))),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} > ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n 'gt',\n);\n\n/**\n * Checks **component-wise** whether `lhs >= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * ge(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, false)\n * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)\n * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const ge = createDualImpl(\n // CPU implementation\n <T extends AnyNumericVecInstance>(lhs: T, rhs: T) => not(lt(lhs, rhs)),\n // GPU implementation\n (lhs, rhs) =>\n snip(\n `(${lhs.value} >= ${rhs.value})`,\n correspondingBooleanVectorSchema(lhs),\n ),\n 'ge',\n);\n\n// logical ops\n\n/**\n * Returns **component-wise** `!value`.\n * @example\n * not(vec2b(false, true)) // returns vec2b(true, false)\n * not(vec3b(true, true, false)) // returns vec3b(false, false, true)\n */\nexport const not = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(value: T): T =>\n VectorOps.neg[value.kind](value),\n // GPU implementation\n (value) => snip(`!(${value.value})`, value.dataType),\n 'not',\n);\n\n/**\n * Returns **component-wise** logical `or` result.\n * @example\n * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)\n * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)\n */\nexport const or = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n VectorOps.or[lhs.kind](lhs, rhs),\n // GPU implementation\n (lhs, rhs) => snip(`(${lhs.value} | ${rhs.value})`, lhs.dataType),\n 'or',\n);\n\n/**\n * Returns **component-wise** logical `and` result.\n * @example\n * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)\n * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)\n */\nexport const and = createDualImpl(\n // CPU implementation\n <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n not(or(not(lhs), not(rhs))),\n // GPU implementation\n (lhs, rhs) => snip(`(${lhs.value} & ${rhs.value})`, lhs.dataType),\n 'and',\n);\n\n// logical aggregation\n\n/**\n * Returns `true` if each component of `value` is true.\n * @example\n * all(vec2b(false, true)) // returns false\n * all(vec3b(true, true, true)) // returns true\n */\nexport const all = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => VectorOps.all[value.kind](value),\n // GPU implementation\n (value) => snip(`all(${value.value})`, bool),\n 'all',\n);\n\n/**\n * Returns `true` if any component of `value` is true.\n * @example\n * any(vec2b(false, true)) // returns true\n * any(vec3b(false, false, false)) // returns false\n */\nexport const any = createDualImpl(\n // CPU implementation\n (value: AnyBooleanVecInstance) => !all(not(value)),\n // GPU implementation\n (value) => snip(`any(${value.value})`, bool),\n 'any',\n);\n\n// other\n\n/**\n * Checks whether the given elements differ by at most the `precision` value.\n * Checks all elements of `lhs` and `rhs` if arguments are vectors.\n * @example\n * isCloseTo(0, 0.1) // returns false\n * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true\n *\n * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.\n */\nexport const isCloseTo = createDualImpl(\n // CPU implementation\n <T extends AnyFloatVecInstance | number>(\n lhs: T,\n rhs: T,\n precision = 0.01,\n ) => {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return Math.abs(lhs - rhs) < precision;\n }\n if (isVecInstance(lhs) && isVecInstance(rhs)) {\n return VectorOps.isCloseToZero[lhs.kind](\n sub(lhs, rhs),\n precision,\n );\n }\n return false;\n },\n // GPU implementation\n (lhs, rhs, precision = snip(0.01, f32)) => {\n if (isSnippetNumeric(lhs) && isSnippetNumeric(rhs)) {\n return snip(\n `(abs(f32(${lhs.value}) - f32(${rhs.value})) <= ${precision.value})`,\n bool,\n );\n }\n if (!isSnippetNumeric(lhs) && !isSnippetNumeric(rhs)) {\n return snip(\n // https://www.w3.org/TR/WGSL/#vector-multi-component:~:text=Binary%20arithmetic%20expressions%20with%20mixed%20scalar%20and%20vector%20operands\n // (a-a)+prec creates a vector of a.length elements, all equal to prec\n `all(abs(${lhs.value} - ${rhs.value}) <= (${lhs.value} - ${lhs.value}) + ${precision.value})`,\n bool,\n );\n }\n return snip('false', bool);\n },\n 'isCloseTo',\n);\n\nexport type SelectOverload = {\n <T extends number | boolean | AnyVecInstance>(f: T, t: T, cond: boolean): T;\n <T extends AnyVecInstance>(\n f: T,\n t: T,\n cond: T extends AnyVec2Instance ? v2b\n : T extends AnyVec3Instance ? v3b\n : v4b,\n ): T;\n};\n\n/**\n * Returns `t` if `cond` is `true`, and `f` otherwise.\n * Component-wise if `cond` is a vector.\n * @example\n * select(1, 2, false) // returns 1\n * select(1, 2, true) // returns 2\n * select(vec2i(1, 2), vec2i(3, 4), true) // returns vec2i(3, 4)\n * select(vec2i(1, 2), vec2i(3, 4), vec2b(false, true)) // returns vec2i(1, 4)\n */\nexport const select: SelectOverload = createDualImpl(\n // CPU implementation\n <T extends number | boolean | AnyVecInstance>(\n f: T,\n t: T,\n cond: AnyBooleanVecInstance | boolean,\n ) => {\n if (typeof cond === 'boolean') {\n return cond ? t : f;\n }\n return VectorOps.select[(f as AnyVecInstance).kind](\n f as AnyVecInstance,\n t as AnyVecInstance,\n cond,\n );\n },\n // GPU implementation\n (f, t, cond) =>\n snip(`select(${f.value}, ${t.value}, ${cond.value})`, f.dataType),\n 'select',\n);\n","import { snip, type Snippet } from '../data/dataTypes.ts';\nimport { i32, u32 } from '../data/numeric.ts';\nimport {\n type AnyWgslData,\n type atomicI32,\n type atomicU32,\n isWgslData,\n Void,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\ntype AnyAtomic = atomicI32 | atomicU32;\n\nexport const workgroupBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('workgroupBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('workgroupBarrier()', Void),\n 'workgroupBarrier',\n);\n\nexport const storageBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('storageBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('storageBarrier()', Void),\n 'storageBarrier',\n);\n\nexport const textureBarrier = createDualImpl(\n // CPU implementation\n () => console.warn('textureBarrier is a no-op outside of GPU mode.'),\n // GPU implementation\n () => snip('textureBarrier()', Void),\n 'textureBarrier',\n);\n\nexport const atomicLoad = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicLoad(&${a.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicLoad',\n);\n\nexport const atomicStore = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): void => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (!isWgslData(a.dataType) || a.dataType.type !== 'atomic') {\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n }\n return snip(`atomicStore(&${a.value}, ${value.value})`, Void);\n },\n 'atomicStore',\n);\n\nconst atomicTypeFn = (a: Snippet, _value: Snippet): AnyWgslData[] => {\n if (a.dataType.type === 'atomic' && a.dataType.inner.type === 'i32') {\n return [a.dataType, i32];\n }\n return [a.dataType as AnyWgslData, u32];\n};\n\nexport const atomicAdd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicAdd(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicAdd',\n atomicTypeFn,\n);\n\nexport const atomicSub = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicSub(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicSub',\n atomicTypeFn,\n);\n\nexport const atomicMax = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicMax(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicMax',\n atomicTypeFn,\n);\n\nexport const atomicMin = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicMin(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicMin',\n atomicTypeFn,\n);\n\nexport const atomicAnd = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicAnd(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicAnd',\n atomicTypeFn,\n);\n\nexport const atomicOr = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicOr(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicOr',\n atomicTypeFn,\n);\n\nexport const atomicXor = createDualImpl(\n // CPU implementation\n <T extends AnyAtomic>(a: T, value: number): number => {\n throw new Error('Atomic operations are not supported outside of GPU mode.');\n },\n // GPU implementation\n (a, value) => {\n if (isWgslData(a.dataType) && a.dataType.type === 'atomic') {\n return snip(`atomicXor(&${a.value}, ${value.value})`, a.dataType.inner);\n }\n throw new Error(\n `Invalid atomic type: ${JSON.stringify(a.dataType, null, 2)}`,\n );\n },\n 'atomicXor',\n atomicTypeFn,\n);\n"]}
|
package/std/index.d.cts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
import { cT as TgpuDualFn, cU as AnyNumericVecInstance, cV as AnyMatInstance, cW as vBaseForMat, cX as mBaseForVec, cY as AnyFloatVecInstance, by as v3f, cZ as v3h, bu as v2f, c_ as v2h, bv as v2i, bz as v3i, bC as v4f, c$ as v4h, bD as v4i,
|
1
|
+
import { cT as TgpuDualFn, cU as AnyNumericVecInstance, cV as AnyMatInstance, cW as vBaseForMat, cX as mBaseForVec, cY as AnyFloatVecInstance, by as v3f, cZ as v3h, bu as v2f, c_ as v2h, bv as v2i, bz as v3i, bC as v4f, c$ as v4h, bD as v4i, bo as m4x4f, bg as AnyVecInstance, d0 as AnyVec2Instance, bt as v2b, d1 as AnyVec3Instance, bx as v3b, bB as v4b, d2 as AnyBooleanVecInstance, d3 as atomicI32, d4 as atomicU32, ac as TgpuSampledTexture, d5 as TgpuStorageTexture, bw as v2u, bA as v3u, d6 as TexelData, bE as v4u, d7 as ChannelData, al as TgpuSampler } from '../tgpuComputeFn-BxPDI5hQ.cjs';
|
2
|
+
export { i as identity2, d as identity3, e as identity4, r as rotationX4, f as rotationY4, g as rotationZ4, s as scaling4, t as translation4 } from '../matrix-BnXitNJ7.cjs';
|
2
3
|
import 'tinyest';
|
3
4
|
|
4
5
|
declare const discard: TgpuDualFn<() => never>;
|
@@ -35,6 +36,15 @@ declare const div: TgpuDualFn<typeof cpuDiv>;
|
|
35
36
|
declare const abs: TgpuDualFn<(<T extends NumVec | number>(value: T) => T)>;
|
36
37
|
declare const atan2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(y: T, x: T) => T)>;
|
37
38
|
declare const acos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
39
|
+
/**
|
40
|
+
* @privateRemarks
|
41
|
+
* https://www.w3.org/TR/WGSL/#acosh-builtin
|
42
|
+
*/
|
43
|
+
declare const acosh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
44
|
+
/**
|
45
|
+
* @privateRemarks
|
46
|
+
* https://www.w3.org/TR/WGSL/#asin-builtin
|
47
|
+
*/
|
38
48
|
declare const asin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
39
49
|
/**
|
40
50
|
* @privateRemarks
|
@@ -51,6 +61,11 @@ declare const clamp: TgpuDualFn<(<T extends NumVec | number>(value: T, low: T, h
|
|
51
61
|
* https://www.w3.org/TR/WGSL/#cos-builtin
|
52
62
|
*/
|
53
63
|
declare const cos: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
64
|
+
/**
|
65
|
+
* @privateRemarks
|
66
|
+
* https://www.w3.org/TR/WGSL/#cosh-builtin
|
67
|
+
*/
|
68
|
+
declare const cosh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
54
69
|
/**
|
55
70
|
* @privateRemarks
|
56
71
|
* https://www.w3.org/TR/WGSL/#cross-builtin
|
@@ -73,6 +88,16 @@ declare const fract: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T)
|
|
73
88
|
* https://www.w3.org/TR/WGSL/#length-builtin
|
74
89
|
*/
|
75
90
|
declare const length: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => number)>;
|
91
|
+
/**
|
92
|
+
* @privateRemarks
|
93
|
+
* https://www.w3.org/TR/WGSL/#log-builtin
|
94
|
+
*/
|
95
|
+
declare const log: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
96
|
+
/**
|
97
|
+
* @privateRemarks
|
98
|
+
* https://www.w3.org/TR/WGSL/#log2-builtin
|
99
|
+
*/
|
100
|
+
declare const log2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
76
101
|
/**
|
77
102
|
* @privateRemarks
|
78
103
|
* https://www.w3.org/TR/WGSL/#max-float-builtin
|
@@ -94,6 +119,11 @@ declare const sin: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T
|
|
94
119
|
* https://www.w3.org/TR/WGSL/#exp-builtin
|
95
120
|
*/
|
96
121
|
declare const exp: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
122
|
+
/**
|
123
|
+
* @privateRemarks
|
124
|
+
* https://www.w3.org/TR/WGSL/#exp2-builtin
|
125
|
+
*/
|
126
|
+
declare const exp2: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
97
127
|
type PowOverload = {
|
98
128
|
(base: number, exponent: number): number;
|
99
129
|
<T extends AnyFloatVecInstance>(base: T, exponent: T): T;
|
@@ -109,6 +139,43 @@ declare const reflect: TgpuDualFn<(<T extends AnyFloatVecInstance>(e1: T, e2: T)
|
|
109
139
|
declare const distance: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(a: T, b: T) => number)>;
|
110
140
|
declare const neg: TgpuDualFn<(<T extends NumVec | number>(value: T) => T)>;
|
111
141
|
declare const sqrt: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
142
|
+
declare const tanh: TgpuDualFn<(<T extends AnyFloatVecInstance | number>(value: T) => T)>;
|
143
|
+
|
144
|
+
/**
|
145
|
+
* Translates the given 4-by-4 matrix by the given vector.
|
146
|
+
* @param {m4x4f} matrix - The matrix to be modified.
|
147
|
+
* @param {v3f} vector - The vector by which to translate the matrix.
|
148
|
+
* @returns {m4x4f} The translated matrix.
|
149
|
+
*/
|
150
|
+
declare const translate4: TgpuDualFn<(matrix: m4x4f, vector: v3f) => m4x4f>;
|
151
|
+
/**
|
152
|
+
* Scales the given 4-by-4 matrix in each dimension by an amount given by the corresponding entry in the given vector.
|
153
|
+
* @param {m4x4f} matrix - The matrix to be modified.
|
154
|
+
* @param {v3f} vector - A vector of three entries specifying the factor by which to scale in each dimension.
|
155
|
+
* @returns {m4x4f} The scaled matrix.
|
156
|
+
*/
|
157
|
+
declare const scale4: TgpuDualFn<(matrix: m4x4f, vector: v3f) => m4x4f>;
|
158
|
+
/**
|
159
|
+
* Rotates the given 4-by-4 matrix around the x-axis by the given angle.
|
160
|
+
* @param {m4x4f} matrix - The matrix to be modified.
|
161
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
162
|
+
* @returns {m4x4f} The rotated matrix.
|
163
|
+
*/
|
164
|
+
declare const rotateX4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
|
165
|
+
/**
|
166
|
+
* Rotates the given 4-by-4 matrix around the y-axis by the given angle.
|
167
|
+
* @param {m4x4f} matrix - The matrix to be modified.
|
168
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
169
|
+
* @returns {m4x4f} The rotated matrix.
|
170
|
+
*/
|
171
|
+
declare const rotateY4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
|
172
|
+
/**
|
173
|
+
* Rotates the given 4-by-4 matrix around the z-axis by the given angle.
|
174
|
+
* @param {m4x4f} matrix - The matrix to be modified.
|
175
|
+
* @param {number} angle - The angle by which to rotate (in radians).
|
176
|
+
* @returns {m4x4f} The rotated matrix.
|
177
|
+
*/
|
178
|
+
declare const rotateZ4: TgpuDualFn<(matrix: m4x4f, angle: number) => m4x4f>;
|
112
179
|
|
113
180
|
/**
|
114
181
|
* Checks whether `lhs == rhs` on all components.
|
@@ -326,4 +393,4 @@ type TextureDimensionsOverload = {
|
|
326
393
|
};
|
327
394
|
declare const textureDimensions: TextureDimensionsOverload;
|
328
395
|
|
329
|
-
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, div, 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, sign, sin, sqrt, storageBarrier, sub, textureBarrier, textureDimensions, textureLoad, textureSample, textureSampleLevel, textureStore, unpack2x16float, unpack4x8unorm, workgroupBarrier };
|
396
|
+
export { abs, acos, acosh, add, all, allEq, and, any, arrayLength, asin, atan2, atomicAdd, atomicAnd, atomicLoad, atomicMax, atomicMin, atomicOr, atomicStore, atomicSub, atomicXor, ceil, clamp, cos, cosh, cross, discard, distance, div, dot, eq, exp, exp2, floor, fract, ge, gt, isCloseTo, le, length, log, log2, lt, max, min, mix, mul, ne, neg, normalize, not, or, pack2x16float, pack4x8unorm, pow, reflect, rotateX4, rotateY4, rotateZ4, scale4, select, sign, sin, sqrt, storageBarrier, sub, tanh, textureBarrier, textureDimensions, textureLoad, textureSample, textureSampleLevel, textureStore, translate4, unpack2x16float, unpack4x8unorm, workgroupBarrier };
|