UNPKG

typegpu

Version:

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

34 lines (33 loc) 1.65 kB
import { UnknownData } from '../data/dataTypes.ts'; import { type Snippet } from '../data/snippet.ts'; import { type BaseData, type F16, type F32, type I32, type U32, type WgslStruct } from '../data/wgslTypes.ts'; import type { ResolutionCtx } from '../types.ts'; type ConversionAction = 'ref' | 'deref' | 'cast' | 'none'; export type ConversionResultAction = { sourceIndex: number; action: ConversionAction; targetType?: U32 | F32 | I32 | F16; }; export type ConversionResult = { targetType: BaseData; actions: ConversionResultAction[]; hasImplicitConversions?: boolean; }; export declare function getBestConversion(types: BaseData[], targetTypes?: BaseData[]): ConversionResult | undefined; /** * Unifies input types to a common type. */ export declare function unify<T extends (BaseData | UnknownData)[] | []>(inTypes: T, restrictTo?: BaseData[]): { [K in keyof T]: BaseData; } | undefined; /** * Unifies input types to a common type. * Unlike `unify`, it does not allow implicit conversions. */ export declare function unifyStrict<T extends (BaseData | UnknownData)[] | []>(inTypes: T, restrictTo?: BaseData[]): { [K in keyof T]: BaseData; } | undefined; export declare function convertToCommonType<T extends Snippet[]>(ctx: ResolutionCtx, values: T, restrictTo?: BaseData[], verbose?: boolean): T | undefined; export declare function tryConvertSnippet(ctx: ResolutionCtx, snippet: Snippet, targetDataTypes: BaseData | BaseData[], verbose?: boolean): Snippet; export declare function convertStructValues(ctx: ResolutionCtx, structType: WgslStruct, values: Record<string, Snippet>): Snippet[]; export {};