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