typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
31 lines (30 loc) • 976 B
TypeScript
import { $internal } from '../shared/symbols.ts';
import type { Bool, F16, F32, I32, Mat2x2f, Mat3x3f, Mat4x4f, U16, U32, Vec2b, Vec2f, Vec2h, Vec2i, Vec2u, Vec3b, Vec3f, Vec3h, Vec3i, Vec3u, Vec4b, Vec4f, Vec4h, Vec4i, Vec4u, Void } from './wgslTypes.ts';
type KindToSchemaMap = {
vec2f: Vec2f;
vec3f: Vec3f;
vec4f: Vec4f;
vec2h: Vec2h;
vec3h: Vec3h;
vec4h: Vec4h;
vec2i: Vec2i;
vec3i: Vec3i;
vec4i: Vec4i;
vec2u: Vec2u;
vec3u: Vec3u;
vec4u: Vec4u;
'vec2<bool>': Vec2b;
'vec3<bool>': Vec3b;
'vec4<bool>': Vec4b;
mat2x2f: Mat2x2f;
mat3x3f: Mat3x3f;
mat4x4f: Mat4x4f;
};
/**
* Inverse operation to d.Infer<T>
*/
export type InstanceToSchema<T> = T extends number ? U32 | U16 | I32 | F32 | F16 : T extends boolean ? Bool : T extends undefined ? Void : T extends {
readonly [$internal]: unknown;
readonly kind: infer TKind extends keyof KindToSchemaMap;
} ? KindToSchemaMap[TKind] : T;
export {};