glre 0.37.0 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/addons.cjs +2 -0
  2. package/dist/addons.cjs.map +1 -0
  3. package/dist/addons.d.ts +457 -0
  4. package/dist/addons.js +2 -0
  5. package/dist/addons.js.map +1 -0
  6. package/dist/index.cjs +31 -40
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +170 -1791
  9. package/dist/index.js +31 -40
  10. package/dist/index.js.map +1 -1
  11. package/dist/native.cjs +1 -45
  12. package/dist/native.cjs.map +1 -1
  13. package/dist/native.d.ts +511 -11
  14. package/dist/native.js +1 -45
  15. package/dist/native.js.map +1 -1
  16. package/dist/node.cjs +40 -0
  17. package/dist/node.cjs.map +1 -0
  18. package/dist/node.d.ts +614 -0
  19. package/dist/node.js +40 -0
  20. package/dist/node.js.map +1 -0
  21. package/dist/react.cjs +1 -45
  22. package/dist/react.cjs.map +1 -1
  23. package/dist/react.d.ts +506 -4
  24. package/dist/react.js +1 -45
  25. package/dist/react.js.map +1 -1
  26. package/dist/solid.cjs +1 -45
  27. package/dist/solid.cjs.map +1 -1
  28. package/dist/solid.d.ts +506 -4
  29. package/dist/solid.js +1 -45
  30. package/dist/solid.js.map +1 -1
  31. package/package.json +56 -3
  32. package/src/addons/index.ts +6 -0
  33. package/src/index.ts +6 -22
  34. package/src/node/{core.ts → build.ts} +3 -7
  35. package/src/node/create.ts +73 -0
  36. package/src/node/index.ts +63 -47
  37. package/src/node/scope.ts +65 -50
  38. package/src/node/types.ts +222 -164
  39. package/src/node/utils/const.ts +64 -3
  40. package/src/node/utils/index.ts +8 -5
  41. package/src/node/utils/infer.ts +23 -35
  42. package/src/node/utils/parse.ts +15 -18
  43. package/src/node/utils/utils.ts +13 -12
  44. package/src/types.ts +5 -7
  45. package/src/utils/pipeline.ts +3 -3
  46. package/src/utils/program.ts +7 -2
  47. package/src/{webgl.ts → utils/webgl.ts} +24 -14
  48. package/src/{webgpu.ts → utils/webgpu.ts} +28 -7
  49. package/src/node/node.ts +0 -64
package/dist/native.d.ts CHANGED
@@ -1,8 +1,509 @@
1
1
  import * as reev from 'reev';
2
- import * as refr_dist_types_687121c7 from 'refr/dist/types-687121c7';
3
- import { GL, Vec4, WebGPUState, WebGLState, NodeProxy } from './index.js';
4
- export { AttribData, BVec2, BVec3, BVec4, BaseNodeProxy, Bool, Color, Constants, ConstantsToType, Conversions, Float, Fn, FnLayout, Functions, IVec2, IVec3, IVec4, If, Int, Loop, Mat2, Mat3, Mat4, NodeContext, NodeProps, NodeTypes, Operators, Return, Sampler2D, StorageData, Struct, Switch, Swizzles, Texture, TextureData, UInt, UVec2, UVec3, UVec4, UniformData, Vec2, Vec3, X, abs, acos, acosh, all, any, asin, asinh, assign, atan, atan2, atanh, attribute, bool, builtin, bvec2, bvec3, bvec4, ceil, clamp, color, compute, constant, conversion, cos, cosh, default as createGL, cross, cubeTexture, dFdx, dFdy, degrees, distance, dot, element, exp, exp2, float, floor, fract, fragDepth, fragment, frontFacing, function_, fwidth, gather, iMouse, iResolution, iTime, id, instanceIndex, int, inverseSqrt, isGL, isServer, isWebGPUSupported, ivec2, ivec3, ivec4, length, lengthSq, log, log2, mat2, mat3, mat4, max, member, min, mix, mod, negate, node, normalLocal, normalView, normalWorld, normalize, oneMinus, operator, pointCoord, position, positionLocal, positionView, positionWorld, pow, radians, reciprocal, reflect, refract, round, sampleIndex, sampleMask, sampler2D, saturate, scatter, screenCoordinate, screenUV, select, sign, sin, sinh, smoothstep, sqrt, step, storage, struct, tan, tanh, texelFetch, texture, texture2D, textureLod, toVar, trunc, uint, uniform, uv, uvec2, uvec3, uvec4, variable, vec2, vec3, vec4, vertex, vertexIndex, vertexStage, webgl, webgpu } from './index.js';
5
- export { Frame, Fun, Queue } from 'refr';
2
+ import { EventState, Nested } from 'reev';
3
+ import * as refr from 'refr';
4
+ import { Queue, Frame } from 'refr';
5
+
6
+ declare const CONVERSIONS: readonly ["toBool", "toUint", "toInt", "toFloat", "toBvec2", "toIvec2", "toUvec2", "toVec2", "toBvec3", "toIvec3", "toUvec3", "toVec3", "toBvec4", "toIvec4", "toUvec4", "toVec4", "toColor", "toMat2", "toMat3", "toMat4"];
7
+ declare const TYPE_MAPPING: {
8
+ readonly bool: "bool";
9
+ readonly uint: "u32";
10
+ readonly int: "i32";
11
+ readonly float: "f32";
12
+ readonly bvec2: "vec2<bool>";
13
+ readonly ivec2: "vec2i";
14
+ readonly uvec2: "vec2u";
15
+ readonly vec2: "vec2f";
16
+ readonly bvec3: "vec3<bool>";
17
+ readonly ivec3: "vec3i";
18
+ readonly uvec3: "vec3u";
19
+ readonly vec3: "vec3f";
20
+ readonly bvec4: "vec4<bool>";
21
+ readonly ivec4: "vec4i";
22
+ readonly uvec4: "vec4u";
23
+ readonly vec4: "vec4f";
24
+ readonly color: "color";
25
+ readonly mat2: "mat2x2f";
26
+ readonly mat3: "mat3x3f";
27
+ readonly mat4: "mat4x4f";
28
+ readonly texture: "texture_2d<f32>";
29
+ readonly sampler2D: "sampler";
30
+ readonly struct: "struct";
31
+ };
32
+ declare const CONSTANTS: (keyof typeof TYPE_MAPPING)[];
33
+ declare const OPERATORS: {
34
+ readonly not: "";
35
+ readonly add: "+";
36
+ readonly sub: "-";
37
+ readonly mul: "*";
38
+ readonly div: "/";
39
+ readonly mod: "%";
40
+ readonly equal: "==";
41
+ readonly notEqual: "!=";
42
+ readonly lessThan: "<";
43
+ readonly lessThanEqual: "<=";
44
+ readonly greaterThan: ">";
45
+ readonly greaterThanEqual: ">=";
46
+ readonly and: "&&";
47
+ readonly or: "||";
48
+ readonly bitAnd: "&";
49
+ readonly bitOr: "|";
50
+ readonly bitXor: "^";
51
+ readonly shiftLeft: "<<";
52
+ readonly shiftRight: ">>";
53
+ readonly addAssign: "+=";
54
+ readonly subAssign: "-=";
55
+ readonly mulAssign: "*=";
56
+ readonly divAssign: "/=";
57
+ readonly modAssign: "%=";
58
+ readonly bitAndAssign: "&=";
59
+ readonly bitOrAssign: "|=";
60
+ readonly bitXorAssign: "^=";
61
+ readonly shiftLeftAssign: "<<=";
62
+ readonly shiftRightAssign: ">>=";
63
+ };
64
+ declare const OPERATOR_KEYS: (keyof typeof OPERATORS)[];
65
+ declare const OPERATOR_TYPE_RULES: readonly [readonly ["float", "vec2", "vec2"], readonly ["float", "vec3", "vec3"], readonly ["float", "vec4", "vec4"], readonly ["int", "ivec2", "ivec2"], readonly ["int", "ivec3", "ivec3"], readonly ["int", "ivec4", "ivec4"], readonly ["uint", "uvec2", "uvec2"], readonly ["uint", "uvec3", "uvec3"], readonly ["uint", "uvec4", "uvec4"], readonly ["mat2", "vec2", "vec2"], readonly ["mat3", "vec3", "vec3"], readonly ["mat4", "vec4", "vec4"], readonly ["vec2", "mat2", "vec2"], readonly ["vec3", "mat3", "vec3"], readonly ["vec4", "mat4", "vec4"]];
66
+ /**
67
+ * 2.2. unified with:
68
+ * 1.2. index.ts functions and
69
+ * 3.2. types.ts _N
70
+ */
71
+ declare const FUNCTIONS: readonly [...("texture" | "all" | "any" | "determinant" | "distance" | "dot" | "length" | "lengthSq" | "luminance" | "cross" | "cubeTexture" | "texelFetch" | "textureLod")[], "abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "ceil", "cos", "cosh", "dFdx", "dFdy", "degrees", "exp", "exp2", "floor", "fract", "fwidth", "inverseSqrt", "log", "log2", "negate", "normalize", "oneMinus", "radians", "reciprocal", "round", "saturate", "sign", "sin", "sinh", "sqrt", "tan", "tanh", "trunc", "atan2", "clamp", "max", "min", "mix", "pow", "reflect", "refract", "smoothstep", "step"];
72
+
73
+ type Constants = (typeof CONSTANTS)[number] | 'void';
74
+ type Conversions = (typeof CONVERSIONS)[number];
75
+ type Functions = (typeof FUNCTIONS)[number];
76
+ type Operators = (typeof OPERATOR_KEYS)[number];
77
+ /**
78
+ * scope
79
+ */
80
+ interface FnLayout {
81
+ name: string;
82
+ type: C | 'auto';
83
+ inputs?: Array<{
84
+ name: string;
85
+ type: C;
86
+ }>;
87
+ }
88
+ type StructFields = Record<string, X>;
89
+ /**
90
+ * node
91
+ */
92
+ type NodeTypes = 'attribute' | 'storage' | 'uniform' | 'constant' | 'variable' | 'varying' | 'ternary' | 'builtin' | 'conversion' | 'operator' | 'function' | 'struct' | 'member' | 'element' | 'gather' | 'scatter' | 'scope' | 'assign' | 'loop' | 'define' | 'if' | 'switch' | 'declare' | 'return' | 'break' | 'continue';
93
+ interface NodeProps {
94
+ id?: string;
95
+ args?: any[];
96
+ type?: string;
97
+ children?: any[];
98
+ inferFrom?: any[];
99
+ layout?: FnLayout;
100
+ fields?: StructFields;
101
+ initialValues?: StructFields;
102
+ }
103
+ interface NodeContext {
104
+ gl?: Partial<GL>;
105
+ label?: 'vert' | 'frag' | 'compute';
106
+ isWebGL?: boolean;
107
+ units?: any;
108
+ infers?: WeakMap<X, C>;
109
+ onMount?: (name: string) => void;
110
+ code?: {
111
+ headers: Map<string, string>;
112
+ fragInputs: Map<string, string>;
113
+ vertInputs: Map<string, string>;
114
+ vertOutputs: Map<string, string>;
115
+ vertVaryings: Map<string, string>;
116
+ computeInputs: Map<string, string>;
117
+ dependencies: Map<string, Set<string>>;
118
+ structStructFields: Map<string, StructFields>;
119
+ };
120
+ }
121
+ /**
122
+ * infer
123
+ */
124
+ type _StringLength<A extends string> = A extends `${infer _}${infer A}` ? A extends '' ? 1 : A extends `${infer _}${infer B}` ? B extends '' ? 2 : B extends `${infer _}${infer C}` ? C extends '' ? 3 : 4 : never : never : never;
125
+ type InferOperator<L extends C, R extends C> = L extends R ? L : L extends 'float' | 'int' ? R : R extends 'float' | 'int' ? L : L extends 'mat4' ? R extends 'vec4' ? R : L : L extends 'mat3' ? R extends 'vec3' ? R : L : L extends 'mat2' ? R extends 'vec2' ? R : L : L extends 'vec4' ? R extends 'mat4' ? L : L : L extends 'vec3' ? R extends 'mat3' ? L : L : L extends 'vec2' ? R extends 'mat2' ? L : L : L;
126
+ type InferArrayElement<T extends C> = T extends 'mat4' ? 'vec4' : T extends 'mat3' ? 'vec3' : T extends 'mat2' ? 'vec2' : 'float';
127
+ type ExtractPairs<T> = T extends readonly [infer L, infer R, string] ? [L, R] | [R, L] : never;
128
+ type OperatorTypeRules = ExtractPairs<(typeof OPERATOR_TYPE_RULES)[number]>;
129
+ type IsInRules<L extends C, R extends C> = [L, R] extends OperatorTypeRules ? 1 : 0;
130
+ type ValidateOperator<L extends C, R extends C> = L extends R ? 1 : IsInRules<L, R>;
131
+ type InferSwizzleType<S extends string> = _StringLength<S> extends 4 ? 'vec4' : _StringLength<S> extends 3 ? 'vec3' : _StringLength<S> extends 2 ? 'vec2' : 'float';
132
+ /**
133
+ * Swizzles
134
+ */
135
+ type _Swizzles<T extends string> = T | `${T}${T}` | `${T}${T}${T}` | `${T}${T}${T}${T}`;
136
+ type Swizzles = _Swizzles<'x' | 'y' | 'z' | 'w'> | _Swizzles<'r' | 'g' | 'b' | 'a'> | _Swizzles<'p' | 'q'> | _Swizzles<'s' | 't'>;
137
+ type Void = XImpl<'void'>;
138
+ type Bool = XImpl<'bool'>;
139
+ type UInt = XImpl<'uint'>;
140
+ type Int = XImpl<'int'>;
141
+ type Float = XImpl<'float'>;
142
+ type BVec2 = XImpl<'bvec2'>;
143
+ type IVec2 = XImpl<'ivec2'>;
144
+ type UVec2 = XImpl<'uvec2'>;
145
+ type Vec2 = XImpl<'vec2'>;
146
+ type BVec3 = XImpl<'bvec3'>;
147
+ type IVec3 = XImpl<'ivec3'>;
148
+ type UVec3 = XImpl<'uvec3'>;
149
+ type Vec3 = XImpl<'vec3'>;
150
+ type BVec4 = XImpl<'bvec4'>;
151
+ type IVec4 = XImpl<'ivec4'>;
152
+ type UVec4 = XImpl<'uvec4'>;
153
+ type Vec4 = XImpl<'vec4'>;
154
+ type Color = XImpl<'color'>;
155
+ type Mat2 = XImpl<'mat2'>;
156
+ type Mat3 = XImpl<'mat3'>;
157
+ type Mat4 = XImpl<'mat4'>;
158
+ type Texture = XImpl<'texture'>;
159
+ type Sampler2D = XImpl<'sampler2D'>;
160
+ type StructBase = XImpl<'struct'>;
161
+ interface ConstantsToType {
162
+ void: Void;
163
+ bool: Bool;
164
+ uint: UInt;
165
+ int: Int;
166
+ float: Float;
167
+ bvec2: BVec2;
168
+ ivec2: IVec2;
169
+ uvec2: UVec2;
170
+ vec2: Vec2;
171
+ bvec3: BVec3;
172
+ ivec3: IVec3;
173
+ uvec3: UVec3;
174
+ vec3: Vec3;
175
+ bvec4: BVec4;
176
+ ivec4: IVec4;
177
+ uvec4: UVec4;
178
+ vec4: Vec4;
179
+ color: Color;
180
+ mat2: Mat2;
181
+ mat3: Mat3;
182
+ mat4: Mat4;
183
+ texture: Texture;
184
+ sampler2D: Sampler2D;
185
+ struct: StructBase;
186
+ }
187
+ /**
188
+ * X and Y
189
+ */
190
+ type XImpl<T extends C> = _X<T> & {
191
+ [K in string as K extends Methods ? never : K]: any;
192
+ } & {
193
+ [K in Swizzles]: X<InferSwizzleType<K>>;
194
+ };
195
+ type C = Constants;
196
+ type X<T extends C = C> = T extends keyof ConstantsToType ? ConstantsToType[T] : _X<T>;
197
+ type Methods = Functions | Operators | Conversions | Swizzles | '__nodeType' | 'type' | 'props' | 'isProxy' | 'assign' | 'toVar' | 'toString' | 'element';
198
+ interface _X<T extends C> {
199
+ readonly __nodeType?: T;
200
+ assign(x: any): X<T>;
201
+ fragment(c: NodeContext): string;
202
+ toVar(name?: string): X<T>;
203
+ toString(c?: NodeContext): string;
204
+ fragment(c?: NodeContext): string;
205
+ compute(c?: NodeContext): string;
206
+ vertex(c?: NodeContext): string;
207
+ type: NodeTypes;
208
+ props: NodeProps;
209
+ isProxy: true;
210
+ listeners: Set<(value: any) => void>;
211
+ element<Index extends X>(index: Index): X<InferArrayElement<T>>;
212
+ member<K extends string>(key: K): K extends keyof T ? (T[K] extends X<infer U> ? X<U> : never) : never;
213
+ add<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<InferOperator<T, U>>;
214
+ sub<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<InferOperator<T, U>>;
215
+ mul<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<InferOperator<T, U>>;
216
+ div<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<InferOperator<T, U>>;
217
+ mod<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<InferOperator<T, U>>;
218
+ equal<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): Bool;
219
+ notEqual<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): Bool;
220
+ lessThan<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): Bool;
221
+ lessThanEqual<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): Bool;
222
+ greaterThan<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): Bool;
223
+ greaterThanEqual<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): Bool;
224
+ and(x: Bool): Bool;
225
+ or(x: Bool): Bool;
226
+ not(): Bool;
227
+ bitAnd(x: X<T>): X<T>;
228
+ bitOr(x: X<T>): X<T>;
229
+ bitXor(x: X<T>): X<T>;
230
+ bitNot(): X<T>;
231
+ shiftLeft<U extends C>(x: X<U>): X<InferOperator<T, U>>;
232
+ shiftRight<U extends C>(x: X<U>): X<InferOperator<T, U>>;
233
+ addAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
234
+ subAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
235
+ mulAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
236
+ divAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
237
+ modAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
238
+ bitAndAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
239
+ bitOrAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
240
+ bitXorAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
241
+ shiftLeftAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
242
+ shiftRightAssign<U extends C>(x: ValidateOperator<T, U> extends 0 ? never : number | X<U>): X<T>;
243
+ toBool(): Bool;
244
+ toUint(): UInt;
245
+ toInt(): Int;
246
+ toFloat(): Float;
247
+ toBvec2(): BVec2;
248
+ toIvec2(): IVec2;
249
+ toUvec2(): UVec2;
250
+ toVec2(): Vec2;
251
+ toBvec3(): BVec3;
252
+ toIvec3(): IVec3;
253
+ toUvec3(): UVec3;
254
+ toVec3(): Vec3;
255
+ toBvec4(): BVec4;
256
+ toIvec4(): IVec4;
257
+ toUvec4(): UVec4;
258
+ toVec4(): Vec4;
259
+ toColor(): Color;
260
+ toMat2(): Mat2;
261
+ toMat3(): Mat3;
262
+ toMat4(): Mat4;
263
+ /**
264
+ * 3.1. unified logic with:
265
+ * 1.1. index.ts functions and
266
+ * 2.1. const.ts FUNCTION_RETURN_TYPES
267
+ */
268
+ all(): Bool;
269
+ any(): Bool;
270
+ determinant(): T extends 'mat2' | 'mat3' | 'mat4' ? Float : never;
271
+ distance<U extends C>(y: T extends 'vec2' | 'vec3' | 'vec4' ? (U extends T ? number | X<U> : never) : never): Float;
272
+ dot<U extends C>(y: T extends 'vec2' | 'vec3' | 'vec4' | 'ivec2' | 'ivec3' | 'ivec4' ? U extends T ? number | X<U> : never : never): T extends `ivec${string}` ? Int : Float;
273
+ length(): T extends 'vec2' | 'vec3' | 'vec4' ? Float : never;
274
+ lengthSq(): Float;
275
+ luminance(): Float;
276
+ cross<U extends C = 'vec3'>(y: T extends 'vec3' ? (U extends 'vec3' ? number | X<U> : never) : never): Vec3;
277
+ cubeTexture(...args: X[]): Vec4;
278
+ texture(...args: X[]): Vec4;
279
+ texelFetch(...args: X[]): Vec4;
280
+ textureLod(...args: X[]): Vec4;
281
+ /**
282
+ * 3.2. unified with:
283
+ * 1.2. index.ts functions and
284
+ * 2.2. const.ts FUNCTIONS
285
+ */
286
+ abs(): X<T>;
287
+ acos(): X<T>;
288
+ acosh(): X<T>;
289
+ asin(): X<T>;
290
+ asinh(): X<T>;
291
+ atan(): X<T>;
292
+ atanh(): X<T>;
293
+ ceil(): X<T>;
294
+ cos(): X<T>;
295
+ cosh(): X<T>;
296
+ degrees(): X<T>;
297
+ dFdx(): X<T>;
298
+ dFdy(): X<T>;
299
+ exp(): X<T>;
300
+ exp2(): X<T>;
301
+ floor(): X<T>;
302
+ fract(): X<T>;
303
+ fwidth(): X<T>;
304
+ inverseSqrt(): X<T>;
305
+ log(): X<T>;
306
+ log2(): X<T>;
307
+ negate(): X<T>;
308
+ normalize(): T extends 'vec2' | 'vec3' | 'vec4' ? X<T> : never;
309
+ oneMinus(): X<T>;
310
+ radians(): X<T>;
311
+ reciprocal(): X<T>;
312
+ round(): X<T>;
313
+ saturate(): X<T>;
314
+ sign(): X<T>;
315
+ sin(): X<T>;
316
+ sinh(): X<T>;
317
+ sqrt(): X<T>;
318
+ tan(): X<T>;
319
+ tanh(): X<T>;
320
+ trunc(): X<T>;
321
+ atan2<U extends C>(x: number | X<U>): X<T>;
322
+ clamp<U extends C>(min: number | X<U>, max: number | X<U>): X<InferOperator<T, U>>;
323
+ max<U extends C>(y: number | X<U>): X<InferOperator<T, U>>;
324
+ min<U extends C>(y: number | X<U>): X<InferOperator<T, U>>;
325
+ mix<U extends C>(y: number | X<U>, a: number | Float | X<U>): X<InferOperator<T, U>>;
326
+ pow<U extends C>(y: number | X<U>): X<T>;
327
+ reflect<U extends C>(N: T extends 'vec2' | 'vec3' | 'vec4' ? (U extends T ? number | X<U> : never) : never): X<T>;
328
+ refract<U extends C>(N: T extends 'vec2' | 'vec3' | 'vec4' ? (U extends T ? number | X<U> : never) : never, eta: number | Float): T extends 'vec2' | 'vec3' | 'vec4' ? X<T> : never;
329
+ smoothstep<U extends C>(edge0: number | X<U>, edge1: number | X<U>): X<InferOperator<T, U>>;
330
+ step<U extends C>(edge: number | X<U>): X<InferOperator<T, U>>;
331
+ }
332
+
333
+ type GL = EventState<{
334
+ /**
335
+ * initial value
336
+ */
337
+ isNative: boolean;
338
+ isWebGL: boolean;
339
+ isError: boolean;
340
+ isLoop: boolean;
341
+ isGL: true;
342
+ width?: number;
343
+ height?: number;
344
+ size: [number, number];
345
+ mouse: [number, number];
346
+ count: number;
347
+ loading: number;
348
+ particles: 64 | 256 | 576 | 1024 | 1600 | 2304 | 3136 | 4096 | 4096 | 5184 | 6400;
349
+ el: HTMLCanvasElement;
350
+ vs?: string | Vec4;
351
+ cs?: string | Void;
352
+ fs?: string | Vec4;
353
+ vert?: string | Vec4;
354
+ comp?: string | Void;
355
+ frag?: string | Vec4;
356
+ vertex?: string | Vec4;
357
+ compute?: string | Void;
358
+ fragment?: string | Vec4;
359
+ /**
360
+ * core state
361
+ */
362
+ webgpu: WebGPUState;
363
+ webgl: WebGLState;
364
+ queue: Queue;
365
+ frame: Frame;
366
+ /**
367
+ * events
368
+ */
369
+ ref?: any;
370
+ mount(): void;
371
+ clean(): void;
372
+ error(e?: string): void;
373
+ render(): void;
374
+ resize(e?: Event): void;
375
+ mousemove(e: Event): void;
376
+ loop(): void;
377
+ /**
378
+ * setter
379
+ */
380
+ _uniform?(key: string, value: Uniform, isMatrix?: boolean): GL;
381
+ uniform(key: string, value: Uniform, isMatrix?: boolean): GL;
382
+ uniform(target: {
383
+ [key: string]: Uniform;
384
+ }): GL;
385
+ _texture?(key: string, value: string): GL;
386
+ texture(key: string, value: string): GL;
387
+ texture(target: {
388
+ [key: string]: string;
389
+ }): GL;
390
+ _attribute?(key: string, value: Attribute, iboValue?: Attribute): GL;
391
+ attribute(key: string, value: Attribute, iboValue?: Attribute): GL;
392
+ attribute(target: {
393
+ [key: string]: Attribute;
394
+ }): GL;
395
+ _storage?(key: string, value: Storage): GL;
396
+ storage(key: string, value: Storage): GL;
397
+ storage(target: {
398
+ [key: string]: Storage;
399
+ }): GL;
400
+ }>;
401
+ type Uniform = number | number[] | Float32Array;
402
+ type Attribute = number[] | Float32Array;
403
+ type Storage = number[] | Float32Array;
404
+ /**
405
+ * for webgpu
406
+ */
407
+ interface UniformData {
408
+ array: Float32Array;
409
+ buffer: GPUBuffer;
410
+ binding: number;
411
+ group: number;
412
+ }
413
+ interface TextureData {
414
+ binding: number;
415
+ group: number;
416
+ texture: GPUTexture;
417
+ sampler: GPUSampler;
418
+ view: GPUTextureView;
419
+ }
420
+ interface AttribData {
421
+ array: Float32Array;
422
+ buffer: GPUBuffer;
423
+ location: number;
424
+ stride: number;
425
+ }
426
+ interface StorageData {
427
+ array: Float32Array;
428
+ buffer: GPUBuffer;
429
+ binding: number;
430
+ group: number;
431
+ }
432
+ interface WebGPUState {
433
+ device: GPUDevice;
434
+ uniforms: Nested<UniformData>;
435
+ textures: Nested<TextureData>;
436
+ attribs: Nested<AttribData>;
437
+ storages: Nested<StorageData>;
438
+ }
439
+ /**
440
+ * for webgl
441
+ */
442
+ interface WebGLState {
443
+ context: WebGLRenderingContext;
444
+ program: WebGLProgram;
445
+ storages: any;
446
+ }
447
+
448
+ declare const isGL: (a: unknown) => a is EventState<GL>;
449
+ declare const isServer: () => boolean;
450
+ declare const isWebGPUSupported: () => boolean;
451
+ declare const createGL: (props?: Partial<GL>) => EventState<{
452
+ isNative: boolean;
453
+ isWebGL: boolean;
454
+ isError: boolean;
455
+ isLoop: boolean;
456
+ isGL: true;
457
+ width?: number;
458
+ height?: number;
459
+ size: [number, number];
460
+ mouse: [number, number];
461
+ count: number;
462
+ loading: number;
463
+ particles: 64 | 256 | 576 | 1024 | 1600 | 2304 | 3136 | 4096 | 4096 | 5184 | 6400;
464
+ el: HTMLCanvasElement;
465
+ vs?: string | Vec4;
466
+ cs?: string | Void;
467
+ fs?: string | Vec4;
468
+ vert?: string | Vec4;
469
+ comp?: string | Void;
470
+ frag?: string | Vec4;
471
+ vertex?: string | Vec4;
472
+ compute?: string | Void;
473
+ fragment?: string | Vec4;
474
+ webgpu: WebGPUState;
475
+ webgl: WebGLState;
476
+ queue: refr.Queue;
477
+ frame: refr.Frame;
478
+ ref?: any;
479
+ mount(): void;
480
+ clean(): void;
481
+ error(e?: string): void;
482
+ render(): void;
483
+ resize(e?: Event): void;
484
+ mousemove(e: Event): void;
485
+ loop(): void;
486
+ _uniform?(key: string, value: number | number[] | Float32Array<ArrayBufferLike>, isMatrix?: boolean): GL;
487
+ uniform(key: string, value: number | number[] | Float32Array<ArrayBufferLike>, isMatrix?: boolean): GL;
488
+ uniform(target: {
489
+ [key: string]: number | number[] | Float32Array<ArrayBufferLike>;
490
+ }): GL;
491
+ _texture?(key: string, value: string): GL;
492
+ texture(key: string, value: string): GL;
493
+ texture(target: {
494
+ [key: string]: string;
495
+ }): GL;
496
+ _attribute?(key: string, value: number[] | Float32Array<ArrayBufferLike>, iboValue?: number[] | Float32Array<ArrayBufferLike>): GL;
497
+ attribute(key: string, value: number[] | Float32Array<ArrayBufferLike>, iboValue?: number[] | Float32Array<ArrayBufferLike>): GL;
498
+ attribute(target: {
499
+ [key: string]: number[] | Float32Array<ArrayBufferLike>;
500
+ }): GL;
501
+ _storage?(key: string, value: number[] | Float32Array<ArrayBufferLike>): GL;
502
+ storage(key: string, value: number[] | Float32Array<ArrayBufferLike>): GL;
503
+ storage(target: {
504
+ [key: string]: number[] | Float32Array<ArrayBufferLike>;
505
+ }): GL;
506
+ }, any[] | unknown[]>;
6
507
 
7
508
  declare const useGL: (props?: Partial<GL>) => reev.EventState<{
8
509
  isNative: boolean;
@@ -19,18 +520,18 @@ declare const useGL: (props?: Partial<GL>) => reev.EventState<{
19
520
  particles: 64 | 256 | 576 | 1024 | 1600 | 2304 | 3136 | 4096 | 4096 | 5184 | 6400;
20
521
  el: HTMLCanvasElement;
21
522
  vs?: string | Vec4;
22
- cs?: string | Vec4;
523
+ cs?: string | Void;
23
524
  fs?: string | Vec4;
24
525
  vert?: string | Vec4;
25
- comp?: string | Vec4;
526
+ comp?: string | Void;
26
527
  frag?: string | Vec4;
27
528
  vertex?: string | Vec4;
28
- compute?: string | Vec4;
529
+ compute?: string | Void;
29
530
  fragment?: string | Vec4;
30
531
  webgpu: WebGPUState;
31
532
  webgl: WebGLState;
32
- queue: refr_dist_types_687121c7.Q;
33
- frame: refr_dist_types_687121c7.a;
533
+ queue: refr.Queue;
534
+ frame: refr.Frame;
34
535
  ref?: any;
35
536
  mount(): void;
36
537
  clean(): void;
@@ -41,7 +542,6 @@ declare const useGL: (props?: Partial<GL>) => reev.EventState<{
41
542
  loop(): void;
42
543
  _uniform?(key: string, value: number | number[] | Float32Array<ArrayBufferLike>, isMatrix?: boolean): GL;
43
544
  uniform(key: string, value: number | number[] | Float32Array<ArrayBufferLike>, isMatrix?: boolean): GL;
44
- uniform(node: NodeProxy): GL;
45
545
  uniform(target: {
46
546
  [key: string]: number | number[] | Float32Array<ArrayBufferLike>;
47
547
  }): GL;
@@ -62,4 +562,4 @@ declare const useGL: (props?: Partial<GL>) => reev.EventState<{
62
562
  }): GL;
63
563
  }, any[] | unknown[]>;
64
564
 
65
- export { GL, NodeProxy, Vec4, WebGLState, WebGPUState, useGL };
565
+ export { AttribData, GL, StorageData, TextureData, UniformData, WebGLState, WebGPUState, createGL, isGL, isServer, isWebGPUSupported, useGL };