typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
26 lines (25 loc) • 1.7 kB
TypeScript
import type * as wgsl from './wgslTypes.ts';
import type { VecKind } from './wgslTypes.ts';
type vBase = {
kind: VecKind;
};
type MatKind = 'mat2x2f' | 'mat3x3f' | 'mat4x4f';
/**
* Functions that cannot be simply generalized via `generalizeFn`
* have their overloads listed explicitly here.
*/
export declare const VectorOps: {
all: Record<VecKind, (v: wgsl.AnyBooleanVecInstance) => boolean>;
length: Record<VecKind, (v: vBase) => number>;
mulMxM: Record<VecKind | MatKind, <T extends vBase | wgsl.AnyMatInstance>(lhs: T, rhs: T) => T>;
mulMxV: Record<MatKind, <T extends wgsl.AnyMatInstance>(m: T, v: wgsl.vBaseForMat<T>) => wgsl.vBaseForMat<T>>;
mulVxM: Record<MatKind, <T extends wgsl.AnyMatInstance>(v: wgsl.vBaseForMat<T>, m: T) => wgsl.vBaseForMat<T>>;
dot: Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => number>;
cross: Record<"vec3f" | "vec3h", <T extends wgsl.v3f | wgsl.v3h>(a: T, b: T) => T>;
bitShiftLeft: Record<VecKind, <T extends wgsl.AnyIntegerVecInstance, U extends wgsl.AnyUnsignedVecInstance>(a: T, b: U) => T>;
bitShiftRight: Record<VecKind, <T extends wgsl.AnyIntegerVecInstance, U extends wgsl.AnyUnsignedVecInstance>(a: T, b: U) => T>;
bitcastU32toF32: Record<VecKind, <T extends wgsl.AnyUnsignedVecInstance>(v: T) => T extends wgsl.v2u ? wgsl.v2f : T extends wgsl.v3u ? wgsl.v3f : wgsl.v4f>;
bitcastU32toI32: Record<VecKind, <T extends wgsl.AnyUnsignedVecInstance>(v: T) => T extends wgsl.v2u ? wgsl.v2i : T extends wgsl.v3u ? wgsl.v3i : wgsl.v4i>;
bitcastF32toU32: Record<VecKind, <T extends wgsl.AnyFloatVecInstance>(v: T) => T extends wgsl.v2f ? wgsl.v2u : T extends wgsl.v3f ? wgsl.v3u : wgsl.v4u>;
};
export {};