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