typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
194 lines (193 loc) • 9.39 kB
TypeScript
import type { AnyWgslData, v2f, v2i, v2u, v3f, v3i, v3u, v4f, v4i, v4u } from '../data/wgslTypes.ts';
type BitcastU32toF32Overload = <T extends number | v2u | v3u | v4u>(value: T) => T extends v2u ? v2f : T extends v3u ? v3f : T extends v4u ? v4f : number;
/**
* @deprecated Use 'std.bitcast' instead.
*/
export declare const bitcastU32toF32: import("../types.ts").DualFn<BitcastU32toF32Overload>;
type BitcastU32toI32Overload = <T extends number | v2u | v3u | v4u>(value: T) => T extends v2u ? v2i : T extends v3u ? v3i : T extends v4u ? v4i : number;
/**
* @deprecated Use 'std.bitcast' instead.
*/
export declare const bitcastU32toI32: import("../types.ts").DualFn<BitcastU32toI32Overload>;
type BitcastF32toU32Overload = <T extends number | v2f | v3f | v4f>(value: T) => T extends v2f ? v2u : T extends v3f ? v3u : T extends v4f ? v4u : number;
/**
* @deprecated Use 'std.bitcast' instead.
*/
export declare const bitcastF32toU32: import("../types.ts").DualFn<BitcastF32toU32Overload>;
declare const casts: {
readonly f16: {
readonly f16: (value: number) => number;
};
readonly f32: {
readonly f32: (value: number) => number;
readonly i32: (value: number) => number;
readonly u32: (value: number) => number;
readonly vec2h: (value: number) => import("../data/wgslTypes.ts").v2h;
};
readonly i32: {
readonly f32: (value: number) => number;
readonly i32: (value: number) => number;
readonly u32: (value: number) => number;
readonly vec2h: (value: number) => import("../data/wgslTypes.ts").v2h;
};
readonly u32: {
readonly f32: (value: number) => number;
readonly i32: (value: number) => number;
readonly u32: (value: number) => number;
readonly vec2h: (value: number) => import("../data/wgslTypes.ts").v2h;
};
readonly vec2h: {
readonly f32: (value: import("../data/wgslTypes.ts").v2h) => number;
readonly i32: (value: import("../data/wgslTypes.ts").v2h) => number;
readonly u32: (value: import("../data/wgslTypes.ts").v2h) => number;
readonly vec2h: (value: import("../data/wgslTypes.ts").v2h) => import("../data/wgslTypes.ts").v2h;
};
readonly vec3h: {
readonly vec3h: (value: import("../data/wgslTypes.ts").v3h) => import("../data/wgslTypes.ts").v3h;
};
readonly vec2f: {
readonly vec2f: (value: v2f) => v2f;
readonly vec2i: (value: v2f) => v2i;
readonly vec2u: (value: v2f) => v2u;
readonly vec4h: (value: v2f) => import("../data/wgslTypes.ts").v4h;
};
readonly vec2i: {
readonly vec2f: (value: v2i) => v2f;
readonly vec2i: (value: v2i) => v2i;
readonly vec2u: (value: v2i) => v2u;
readonly vec4h: (value: v2i) => import("../data/wgslTypes.ts").v4h;
};
readonly vec2u: {
readonly vec2f: (value: v2u) => v2f;
readonly vec2i: (value: v2u) => v2i;
readonly vec2u: (value: v2u) => v2u;
readonly vec4h: (value: v2u) => import("../data/wgslTypes.ts").v4h;
};
readonly vec4h: {
readonly vec2f: (value: import("../data/wgslTypes.ts").v4h) => v2f;
readonly vec2i: (value: import("../data/wgslTypes.ts").v4h) => v2i;
readonly vec2u: (value: import("../data/wgslTypes.ts").v4h) => v2u;
readonly vec4h: (value: import("../data/wgslTypes.ts").v4h) => import("../data/wgslTypes.ts").v4h;
};
readonly vec3f: {
readonly vec3f: (value: v3f) => v3f;
readonly vec3i: (value: v3f) => v3i;
readonly vec3u: (value: v3f) => v3u;
};
readonly vec3i: {
readonly vec3f: (value: v3i) => v3f;
readonly vec3i: (value: v3i) => v3i;
readonly vec3u: (value: v3i) => v3u;
};
readonly vec3u: {
readonly vec3f: (value: v3u) => v3f;
readonly vec3i: (value: v3u) => v3i;
readonly vec3u: (value: v3u) => v3u;
};
readonly vec4f: {
readonly vec4f: (value: v4f) => v4f;
readonly vec4i: (value: v4f) => v4i;
readonly vec4u: (value: v4f) => v4u;
};
readonly vec4i: {
readonly vec4f: (value: v4i) => v4f;
readonly vec4i: (value: v4i) => v4i;
readonly vec4u: (value: v4i) => v4u;
};
readonly vec4u: {
readonly vec4f: (value: v4u) => v4f;
readonly vec4i: (value: v4u) => v4i;
readonly vec4u: (value: v4u) => v4u;
};
};
type SchemaFor<Type extends string> = Extract<AnyWgslData, {
type: Type;
}>;
declare function getBitcast<FromType extends keyof typeof casts, ToType extends keyof (typeof casts)[FromType] & string>(from: SchemaFor<FromType>, to: SchemaFor<ToType>): {
readonly f16: {
readonly f16: (value: number) => number;
};
readonly f32: {
readonly f32: (value: number) => number;
readonly i32: (value: number) => number;
readonly u32: (value: number) => number;
readonly vec2h: (value: number) => import("../data/wgslTypes.ts").v2h;
};
readonly i32: {
readonly f32: (value: number) => number;
readonly i32: (value: number) => number;
readonly u32: (value: number) => number;
readonly vec2h: (value: number) => import("../data/wgslTypes.ts").v2h;
};
readonly u32: {
readonly f32: (value: number) => number;
readonly i32: (value: number) => number;
readonly u32: (value: number) => number;
readonly vec2h: (value: number) => import("../data/wgslTypes.ts").v2h;
};
readonly vec2h: {
readonly f32: (value: import("../data/wgslTypes.ts").v2h) => number;
readonly i32: (value: import("../data/wgslTypes.ts").v2h) => number;
readonly u32: (value: import("../data/wgslTypes.ts").v2h) => number;
readonly vec2h: (value: import("../data/wgslTypes.ts").v2h) => import("../data/wgslTypes.ts").v2h;
};
readonly vec3h: {
readonly vec3h: (value: import("../data/wgslTypes.ts").v3h) => import("../data/wgslTypes.ts").v3h;
};
readonly vec2f: {
readonly vec2f: (value: v2f) => v2f;
readonly vec2i: (value: v2f) => v2i;
readonly vec2u: (value: v2f) => v2u;
readonly vec4h: (value: v2f) => import("../data/wgslTypes.ts").v4h;
};
readonly vec2i: {
readonly vec2f: (value: v2i) => v2f;
readonly vec2i: (value: v2i) => v2i;
readonly vec2u: (value: v2i) => v2u;
readonly vec4h: (value: v2i) => import("../data/wgslTypes.ts").v4h;
};
readonly vec2u: {
readonly vec2f: (value: v2u) => v2f;
readonly vec2i: (value: v2u) => v2i;
readonly vec2u: (value: v2u) => v2u;
readonly vec4h: (value: v2u) => import("../data/wgslTypes.ts").v4h;
};
readonly vec4h: {
readonly vec2f: (value: import("../data/wgslTypes.ts").v4h) => v2f;
readonly vec2i: (value: import("../data/wgslTypes.ts").v4h) => v2i;
readonly vec2u: (value: import("../data/wgslTypes.ts").v4h) => v2u;
readonly vec4h: (value: import("../data/wgslTypes.ts").v4h) => import("../data/wgslTypes.ts").v4h;
};
readonly vec3f: {
readonly vec3f: (value: v3f) => v3f;
readonly vec3i: (value: v3f) => v3i;
readonly vec3u: (value: v3f) => v3u;
};
readonly vec3i: {
readonly vec3f: (value: v3i) => v3f;
readonly vec3i: (value: v3i) => v3i;
readonly vec3u: (value: v3i) => v3u;
};
readonly vec3u: {
readonly vec3f: (value: v3u) => v3f;
readonly vec3i: (value: v3u) => v3i;
readonly vec3u: (value: v3u) => v3u;
};
readonly vec4f: {
readonly vec4f: (value: v4f) => v4f;
readonly vec4i: (value: v4f) => v4i;
readonly vec4u: (value: v4f) => v4u;
};
readonly vec4i: {
readonly vec4f: (value: v4i) => v4f;
readonly vec4i: (value: v4i) => v4i;
readonly vec4u: (value: v4i) => v4u;
};
readonly vec4u: {
readonly vec4f: (value: v4u) => v4f;
readonly vec4i: (value: v4u) => v4i;
readonly vec4u: (value: v4u) => v4u;
};
}[FromType][(ToType & "bool") | (ToType & "f32") | (ToType & "f16") | (ToType & "i32") | (ToType & "u32") | (ToType & "u16") | (ToType & "vec2f") | (ToType & "vec2h") | (ToType & "vec2i") | (ToType & "vec2u") | (ToType & "vec2<bool>") | (ToType & "vec3f") | (ToType & "vec3h") | (ToType & "vec3i") | (ToType & "vec3u") | (ToType & "vec3<bool>") | (ToType & "vec4f") | (ToType & "vec4h") | (ToType & "vec4i") | (ToType & "vec4u") | (ToType & "vec4<bool>") | (ToType & "mat2x2f") | (ToType & "mat3x3f") | (ToType & "mat4x4f") | (ToType & "struct") | (ToType & "array") | (ToType & "ptr") | (ToType & "atomic") | (ToType & "decorated") | (ToType & "abstractInt") | (ToType & "abstractFloat") | (ToType & "void") | (ToType & ("texture_1d" | "texture_2d" | "texture_multisampled_2d" | "texture_depth_2d" | "texture_depth_multisampled_2d" | "texture_2d_array" | "texture_depth_2d_array" | "texture_cube" | "texture_depth_cube" | "texture_cube_array" | "texture_depth_cube_array" | "texture_3d")) | (ToType & ("texture_storage_1d" | "texture_storage_2d" | "texture_storage_2d_array" | "texture_storage_3d")) | (ToType & "texture_external") | (ToType & "sampler") | (ToType & "sampler_comparison")];
export declare const bitcast: import("../indexNamedExports.ts").TgpuComptime<typeof getBitcast>;
export {};