UNPKG

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
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 {};