glre 0.43.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
@@ -87,6 +87,7 @@ type GL = EventState<{
87
87
  count: number;
88
88
  instanceCount: number;
89
89
  particleCount: number | [number, number] | [number, number, number];
90
+ precision: 'lowp' | 'mediump' | 'highp';
90
91
  loading: number;
91
92
  el: HTMLCanvasElement;
92
93
  vs?: string | Vec4;
@@ -189,9 +190,9 @@ interface WebGPUState {
189
190
  * for webgl
190
191
  */
191
192
  interface WebGLState {
192
- context: WebGLRenderingContext;
193
+ context: WebGL2RenderingContext;
193
194
  program: WebGLProgram;
194
- storages: any;
195
+ uniforms: Nested<WebGLUniformLocation | null>;
195
196
  }
196
197
 
197
198
  type Constants = (typeof CONSTANTS)[number] | 'void';
@@ -253,14 +254,64 @@ interface NodeContext {
253
254
  /**
254
255
  * infer
255
256
  */
256
- 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;
257
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;
258
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;
259
260
  type ExtractPairs<T> = T extends readonly [infer L, infer R, string] ? [L, R] | [R, L] : never;
260
- type OperatorTypeRules = ExtractPairs<(typeof OPERATOR_TYPE_RULES)[number]>;
261
+ type OperatorTypeRules = ExtractPairs<_OperatorTypeRulesMap[number]>;
261
262
  type IsInRules<L extends C, R extends C> = [L, R] extends OperatorTypeRules ? 1 : 0;
262
263
  type ValidateOperator<L extends C, R extends C> = L extends R ? 1 : IsInRules<L, R>;
263
- 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;
264
315
  /**
265
316
  * Swizzles
266
317
  */
@@ -327,7 +378,7 @@ interface ConstantsToType {
327
378
  type XImpl<T extends C> = _X<T> & {
328
379
  [K in string as K extends Methods ? never : K]: any;
329
380
  } & {
330
- [K in Swizzles]: X<InferSwizzleType<K>>;
381
+ [K in Swizzles]: X<InferSwizzleType<T, K>>;
331
382
  };
332
383
  type C = Constants;
333
384
  type X<T extends C = C> = T extends keyof ConstantsToType ? ConstantsToType[T] : _X<T>;
@@ -407,7 +458,7 @@ interface _X<T extends C> {
407
458
  any(): Bool;
408
459
  determinant(): T extends 'mat2' | 'mat3' | 'mat4' ? Float : never;
409
460
  distance<U extends C>(y: T extends 'vec2' | 'vec3' | 'vec4' ? (U extends T ? number | X<U> : never) : never): Float;
410
- 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;
411
462
  length(): T extends 'vec2' | 'vec3' | 'vec4' ? Float : never;
412
463
  lengthSq(): Float;
413
464
  luminance(): Float;
@@ -1279,7 +1330,7 @@ declare const mod289Vec2: FnType<Vec2, [Vec2]>;
1279
1330
  declare const mod289Vec3: FnType<Vec3, [Vec3]>;
1280
1331
  declare const mod289Vec4: FnType<Vec4, [Vec4]>;
1281
1332
 
1282
- declare const mod2: FnType<X, [Vec2, X]>;
1333
+ declare const mod2: FnType<Vec4, any[]>;
1283
1334
  declare const mod2Cell: FnType<Vec2, [Vec2, X]>;
1284
1335
  declare const mod2Wrap: FnType<Vec2, [Vec2, X]>;
1285
1336
 
@@ -1374,7 +1425,7 @@ declare const scale4dVec4: FnType<Mat4, [Vec4]>;
1374
1425
 
1375
1426
  declare const smootherstep: FnType<X, [X, X, X]>;
1376
1427
 
1377
- declare const taylorInvSqrt: FnType<X, [X]>;
1428
+ declare const taylorInvSqrt: FnType<any, any[]>;
1378
1429
 
1379
1430
  declare const toMat3: FnType<Mat3, [Mat4]>;
1380
1431