glre 0.42.0 → 0.44.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.
package/dist/addons.d.ts CHANGED
@@ -78,6 +78,7 @@ type GL = EventState<{
78
78
  isLoop: boolean;
79
79
  isDebug: boolean;
80
80
  isDepth: boolean;
81
+ wireframe: boolean;
81
82
  isGL: true;
82
83
  width?: number;
83
84
  height?: number;
@@ -86,6 +87,7 @@ type GL = EventState<{
86
87
  count: number;
87
88
  instanceCount: number;
88
89
  particleCount: number | [number, number] | [number, number, number];
90
+ precision: 'lowp' | 'mediump' | 'highp';
89
91
  loading: number;
90
92
  el: HTMLCanvasElement;
91
93
  vs?: string | Vec4;
@@ -188,9 +190,9 @@ interface WebGPUState {
188
190
  * for webgl
189
191
  */
190
192
  interface WebGLState {
191
- context: WebGLRenderingContext;
193
+ context: WebGL2RenderingContext;
192
194
  program: WebGLProgram;
193
- storages: any;
195
+ uniforms: Nested<WebGLUniformLocation | null>;
194
196
  }
195
197
 
196
198
  type Constants = (typeof CONSTANTS)[number] | 'void';
@@ -252,14 +254,64 @@ interface NodeContext {
252
254
  /**
253
255
  * infer
254
256
  */
255
- 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;
256
257
  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;
257
258
  type InferArrayElement<T extends C> = T extends 'mat4' ? 'vec4' : T extends 'mat3' ? 'vec3' : T extends 'mat2' ? 'vec2' : 'float';
259
+ type _OperatorTypeRulesMap = typeof OPERATOR_TYPE_RULES;
258
260
  type ExtractPairs<T> = T extends readonly [infer L, infer R, string] ? [L, R] | [R, L] : never;
259
- type OperatorTypeRules = ExtractPairs<(typeof OPERATOR_TYPE_RULES)[number]>;
261
+ type OperatorTypeRules = ExtractPairs<_OperatorTypeRulesMap[number]>;
260
262
  type IsInRules<L extends C, R extends C> = [L, R] extends OperatorTypeRules ? 1 : 0;
261
263
  type ValidateOperator<L extends C, R extends C> = L extends R ? 1 : IsInRules<L, R>;
262
- type InferSwizzleType<S extends string> = _StringLength<S> extends 4 ? 'vec4' : _StringLength<S> extends 3 ? 'vec3' : _StringLength<S> extends 2 ? 'vec2' : 'float';
264
+ /**
265
+ * swizzle
266
+ */
267
+ type _SwizzleLength<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;
268
+ type _SwizzleBaseMap = {
269
+ float: 'float';
270
+ vec2: 'float';
271
+ vec3: 'float';
272
+ vec4: 'float';
273
+ int: 'int';
274
+ ivec2: 'int';
275
+ ivec3: 'int';
276
+ ivec4: 'int';
277
+ uint: 'uint';
278
+ uvec2: 'uint';
279
+ uvec3: 'uint';
280
+ uvec4: 'uint';
281
+ bool: 'bool';
282
+ bvec2: 'bool';
283
+ bvec3: 'bool';
284
+ bvec4: 'bool';
285
+ };
286
+ type _SwizzleResultMap = {
287
+ float: {
288
+ 1: 'float';
289
+ 2: 'vec2';
290
+ 3: 'vec3';
291
+ 4: 'vec4';
292
+ };
293
+ int: {
294
+ 1: 'int';
295
+ 2: 'ivec2';
296
+ 3: 'ivec3';
297
+ 4: 'ivec4';
298
+ };
299
+ uint: {
300
+ 1: 'uint';
301
+ 2: 'uvec2';
302
+ 3: 'uvec3';
303
+ 4: 'uvec4';
304
+ };
305
+ bool: {
306
+ 1: 'bool';
307
+ 2: 'bvec2';
308
+ 3: 'bvec3';
309
+ 4: 'bvec4';
310
+ };
311
+ };
312
+ type _SwizzleBase<T extends C> = T extends keyof _SwizzleBaseMap ? _SwizzleBaseMap[T] : never;
313
+ type _SwizzleResult<T extends C, L extends 1 | 2 | 3 | 4> = _SwizzleResultMap[_SwizzleBase<T>][L];
314
+ type InferSwizzleType<T extends C, S extends string> = _SwizzleLength<S> extends infer L extends 1 | 2 | 3 | 4 ? _SwizzleResult<_SwizzleBase<T>, L> : never;
263
315
  /**
264
316
  * Swizzles
265
317
  */
@@ -326,7 +378,7 @@ interface ConstantsToType {
326
378
  type XImpl<T extends C> = _X<T> & {
327
379
  [K in string as K extends Methods ? never : K]: any;
328
380
  } & {
329
- [K in Swizzles]: X<InferSwizzleType<K>>;
381
+ [K in Swizzles]: X<InferSwizzleType<T, K>>;
330
382
  };
331
383
  type C = Constants;
332
384
  type X<T extends C = C> = T extends keyof ConstantsToType ? ConstantsToType[T] : _X<T>;
@@ -406,7 +458,7 @@ interface _X<T extends C> {
406
458
  any(): Bool;
407
459
  determinant(): T extends 'mat2' | 'mat3' | 'mat4' ? Float : never;
408
460
  distance<U extends C>(y: T extends 'vec2' | 'vec3' | 'vec4' ? (U extends T ? number | X<U> : never) : never): Float;
409
- 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;
461
+ 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;
410
462
  length(): T extends 'vec2' | 'vec3' | 'vec4' ? Float : never;
411
463
  lengthSq(): Float;
412
464
  luminance(): Float;
@@ -1278,7 +1330,7 @@ declare const mod289Vec2: FnType<Vec2, [Vec2]>;
1278
1330
  declare const mod289Vec3: FnType<Vec3, [Vec3]>;
1279
1331
  declare const mod289Vec4: FnType<Vec4, [Vec4]>;
1280
1332
 
1281
- declare const mod2: FnType<X, [Vec2, X]>;
1333
+ declare const mod2: FnType<Vec4, any[]>;
1282
1334
  declare const mod2Cell: FnType<Vec2, [Vec2, X]>;
1283
1335
  declare const mod2Wrap: FnType<Vec2, [Vec2, X]>;
1284
1336
 
@@ -1373,7 +1425,7 @@ declare const scale4dVec4: FnType<Mat4, [Vec4]>;
1373
1425
 
1374
1426
  declare const smootherstep: FnType<X, [X, X, X]>;
1375
1427
 
1376
- declare const taylorInvSqrt: FnType<X, [X]>;
1428
+ declare const taylorInvSqrt: FnType<any, any[]>;
1377
1429
 
1378
1430
  declare const toMat3: FnType<Mat3, [Mat4]>;
1379
1431