UNPKG

typegpu

Version:

A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.

188 lines (187 loc) 7.86 kB
import type { Infer } from '../shared/repr.ts'; import type { $invalidSchemaReason, $repr, $validVertexSchema } from '../shared/symbols.ts'; import type { VertexFormat } from '../shared/vertexFormat.ts'; import type { WithCast } from '../types.ts'; import type { BaseData, F16, F32, I32, U32, Vec2f, Vec2h, Vec2i, Vec2u, Vec3f, Vec3h, Vec3i, Vec3u, Vec4f, Vec4h, Vec4i, Vec4u } from './wgslTypes.ts'; export type FormatToWGSLType<T extends VertexFormat> = (typeof formatToWGSLType)[T]; export interface TgpuVertexFormatData<T extends VertexFormat> extends BaseData, WithCast<FormatToWGSLType<T>> { readonly type: T; readonly [$repr]: Infer<FormatToWGSLType<T>>; readonly [$validVertexSchema]: true; readonly [$invalidSchemaReason]: 'Vertex formats are not host-shareable, use concrete types instead'; } export declare const formatToWGSLType: { readonly uint8: U32; readonly uint8x2: Vec2u; readonly uint8x4: Vec4u; readonly sint8: I32; readonly sint8x2: Vec2i; readonly sint8x4: Vec4i; readonly unorm8: F32; readonly unorm8x2: Vec2f; readonly unorm8x4: Vec4f; readonly snorm8: F32; readonly snorm8x2: Vec2f; readonly snorm8x4: Vec4f; readonly uint16: U32; readonly uint16x2: Vec2u; readonly uint16x4: Vec4u; readonly sint16: I32; readonly sint16x2: Vec2i; readonly sint16x4: Vec4i; readonly unorm16: F32; readonly unorm16x2: Vec2f; readonly unorm16x4: Vec4f; readonly snorm16: F32; readonly snorm16x2: Vec2f; readonly snorm16x4: Vec4f; readonly float16: F32; readonly float16x2: Vec2f; readonly float16x4: Vec4f; readonly float32: F32; readonly float32x2: Vec2f; readonly float32x3: Vec3f; readonly float32x4: Vec4f; readonly uint32: U32; readonly uint32x2: Vec2u; readonly uint32x3: Vec3u; readonly uint32x4: Vec4u; readonly sint32: I32; readonly sint32x2: Vec2i; readonly sint32x3: Vec3i; readonly sint32x4: Vec4i; readonly 'unorm10-10-10-2': Vec4f; readonly 'unorm8x4-bgra': Vec4f; }; export declare const packedFormats: Set<string>; export type uint8 = TgpuVertexFormatData<'uint8'>; export declare const uint8: uint8; export type uint8x2 = TgpuVertexFormatData<'uint8x2'>; export declare const uint8x2: uint8x2; export type uint8x4 = TgpuVertexFormatData<'uint8x4'>; export declare const uint8x4: uint8x4; export type sint8 = TgpuVertexFormatData<'sint8'>; export declare const sint8: sint8; export type sint8x2 = TgpuVertexFormatData<'sint8x2'>; export declare const sint8x2: sint8x2; export type sint8x4 = TgpuVertexFormatData<'sint8x4'>; export declare const sint8x4: sint8x4; export type unorm8 = TgpuVertexFormatData<'unorm8'>; export declare const unorm8: unorm8; export type unorm8x2 = TgpuVertexFormatData<'unorm8x2'>; export declare const unorm8x2: unorm8x2; export type unorm8x4 = TgpuVertexFormatData<'unorm8x4'>; export declare const unorm8x4: unorm8x4; export type snorm8 = TgpuVertexFormatData<'snorm8'>; export declare const snorm8: snorm8; export type snorm8x2 = TgpuVertexFormatData<'snorm8x2'>; export declare const snorm8x2: snorm8x2; export type snorm8x4 = TgpuVertexFormatData<'snorm8x4'>; export declare const snorm8x4: snorm8x4; export type uint16 = TgpuVertexFormatData<'uint16'>; export declare const uint16: uint16; export type uint16x2 = TgpuVertexFormatData<'uint16x2'>; export declare const uint16x2: uint16x2; export type uint16x4 = TgpuVertexFormatData<'uint16x4'>; export declare const uint16x4: uint16x4; export type sint16 = TgpuVertexFormatData<'sint16'>; export declare const sint16: sint16; export type sint16x2 = TgpuVertexFormatData<'sint16x2'>; export declare const sint16x2: sint16x2; export type sint16x4 = TgpuVertexFormatData<'sint16x4'>; export declare const sint16x4: sint16x4; export type unorm16 = TgpuVertexFormatData<'unorm16'>; export declare const unorm16: unorm16; export type unorm16x2 = TgpuVertexFormatData<'unorm16x2'>; export declare const unorm16x2: unorm16x2; export type unorm16x4 = TgpuVertexFormatData<'unorm16x4'>; export declare const unorm16x4: unorm16x4; export type snorm16 = TgpuVertexFormatData<'snorm16'>; export declare const snorm16: snorm16; export type snorm16x2 = TgpuVertexFormatData<'snorm16x2'>; export declare const snorm16x2: snorm16x2; export type snorm16x4 = TgpuVertexFormatData<'snorm16x4'>; export declare const snorm16x4: snorm16x4; export type float16 = TgpuVertexFormatData<'float16'>; export declare const float16: float16; export type float16x2 = TgpuVertexFormatData<'float16x2'>; export declare const float16x2: float16x2; export type float16x4 = TgpuVertexFormatData<'float16x4'>; export declare const float16x4: float16x4; export type float32 = TgpuVertexFormatData<'float32'>; export declare const float32: float32; export type float32x2 = TgpuVertexFormatData<'float32x2'>; export declare const float32x2: float32x2; export type float32x3 = TgpuVertexFormatData<'float32x3'>; export declare const float32x3: float32x3; export type float32x4 = TgpuVertexFormatData<'float32x4'>; export declare const float32x4: float32x4; export type uint32 = TgpuVertexFormatData<'uint32'>; export declare const uint32: uint32; export type uint32x2 = TgpuVertexFormatData<'uint32x2'>; export declare const uint32x2: uint32x2; export type uint32x3 = TgpuVertexFormatData<'uint32x3'>; export declare const uint32x3: uint32x3; export type uint32x4 = TgpuVertexFormatData<'uint32x4'>; export declare const uint32x4: uint32x4; export type sint32 = TgpuVertexFormatData<'sint32'>; export declare const sint32: sint32; export type sint32x2 = TgpuVertexFormatData<'sint32x2'>; export declare const sint32x2: sint32x2; export type sint32x3 = TgpuVertexFormatData<'sint32x3'>; export declare const sint32x3: sint32x3; export type sint32x4 = TgpuVertexFormatData<'sint32x4'>; export declare const sint32x4: sint32x4; export type unorm10_10_10_2 = TgpuVertexFormatData<'unorm10-10-10-2'>; export declare const unorm10_10_10_2: unorm10_10_10_2; export type unorm8x4_bgra = TgpuVertexFormatData<'unorm8x4-bgra'>; export declare const unorm8x4_bgra: unorm8x4_bgra; export type PackedData = uint8 | uint8x2 | uint8x4 | sint8 | sint8x2 | sint8x4 | unorm8 | unorm8x2 | unorm8x4 | snorm8 | snorm8x2 | snorm8x4 | uint16 | uint16x2 | uint16x4 | sint16 | sint16x2 | sint16x4 | unorm16 | unorm16x2 | unorm16x4 | snorm16 | snorm16x2 | snorm16x4 | float16 | float16x2 | float16x4 | float32 | float32x2 | float32x3 | float32x4 | uint32 | uint32x2 | uint32x3 | uint32x4 | sint32 | sint32x2 | sint32x3 | sint32x4 | unorm10_10_10_2 | unorm8x4_bgra; export declare function isPackedData(value: unknown): value is PackedData; type U32Data = U32 | Vec2u | Vec3u | Vec4u; type I32Data = I32 | Vec2i | Vec3i | Vec4i; type FloatData = F32 | Vec2f | Vec3f | Vec4f | F16 | Vec2h | Vec3h | Vec4h; export type FormatToAcceptedData = { uint8: U32Data; uint8x2: U32Data; uint8x4: U32Data; sint8: I32Data; sint8x2: I32Data; sint8x4: I32Data; unorm8: FloatData; unorm8x2: FloatData; unorm8x4: FloatData; snorm8: FloatData; snorm8x2: FloatData; snorm8x4: FloatData; uint16: U32Data; uint16x2: U32Data; uint16x4: U32Data; sint16: I32Data; sint16x2: I32Data; sint16x4: I32Data; unorm16: FloatData; unorm16x2: FloatData; unorm16x4: FloatData; snorm16: FloatData; snorm16x2: FloatData; snorm16x4: FloatData; float16: FloatData; float16x2: FloatData; float16x4: FloatData; float32: FloatData; float32x2: FloatData; float32x3: FloatData; float32x4: FloatData; uint32: U32Data; uint32x2: U32Data; uint32x3: U32Data; uint32x4: U32Data; sint32: I32Data; sint32x2: I32Data; sint32x3: I32Data; sint32x4: I32Data; 'unorm10-10-10-2': FloatData; 'unorm8x4-bgra': FloatData; }; export {};