const WGSLLinker: {
loadModule:
(
code: string,
name?: string,
entry?: string,
compressed?: boolean,
) => ParsedModule<any>,
loadModuleWithCache:
(
code: string,
name?: string,
entry?: string,
cache?: ParsedModuleCache<any> | null,
) => ParsedModule<any>,
loadStaticModule:
(
code: string,
name: string,
entry?: string,
) => { name: string, code: string, hash: number, table: any },
transpileWGSL:
(
source: string,
resourcePath: string,
esModule?: boolean,
minify?: boolean,
) => string,
bindEntryPoint:
<T extends ParsedModule<any> | ParsedBundle<any>>(
bundle: T,
entry?: string,
) => T,
bundleToAttribute:
(
bundle: ShaderModule<any>,
name?: string,
) => UniformAttribute,
bundleToAttributes:
(
bundle: ShaderModule<any>,
) => UniformAttribute[],
wgsl:
(
literals: TemplateStringsArray,
...tokens: string[],
) => ParsedModule<any>,
f32: (x: number) => string,
i32: (x: number) => string,
u32: (x: number) => string,
defineConstants: (
defs: Record<string, ShaderDefine>,
) => string,
linkBundle:
(
source: ShaderModule<any>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null>,
defines?: Record<string, ShaderDefine>,
) => string,
linkModule:
(
source: ParsedModule<any>,
libraries?: Record<string, ShaderModule<any>>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null>,
defines?: Record<string, ShaderDefine>,
) => string,
linkCode:
(
code: string,
libraries?: Record<string, string>,
links?: Record<string, string | null>,
defines?: Record<string, ShaderDefine>,
cache?: ParsedModuleCache<any> | null,
) => string,
bindBundle:
(
subject: ShaderModule<any>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null> | null,
defines?: Record<string, ShaderDefine> | null,
) => ParsedBundle<any>,
bindModule:
(
subject: ShaderModule<any>,
links?: Record<string, ParsedModule<any> | ParsedBundle<any> | null> | null,
defines?: Record<string, ShaderDefine> | null,
) => ParsedBundle<any>,
bindingsToLinks:
(
bindings: ({
uniform: UniformAttribute,
storage?: StorageSource,
texture?: TextureSource,
lambda?: LambdaSource<ShaderModule<SymbolTable>>,
constant?: any,
})[],
) => Record<string, ParsedBundle<SymbolTable> | ParsedModule<SymbolTable>>,
bindingToModule:
(
binding: {
uniform: UniformAttribute,
storage?: StorageSource,
texture?: TextureSource,
lambda?: LambdaSource<ShaderModule<SymbolTable>>,
constant?: any,
},
) => ParsedBundle<SymbolTable> | ParsedModule<SymbolTable>,
sourceToModule:
<T>(
source: any,
) => ParsedBundle<SymbolTable> | ParsedModule<SymbolTable> | null,
resolveBindings: any,
extractBindings:
(
stages: ((
| false
| ParsedBundle<SymbolTable>
| ParsedModule<SymbolTable>
| null
| undefined)[])[],
pass: string,
) => GPUBindGroupLayoutEntry[],
castTo:
(
source: ShaderModule<any>,
type: string,
swizzle: string | { basis: string, signs?: string, gain?: number },
) => ParsedBundle<any>,
chainTo:
(
from: ShaderModule<any>,
to: ShaderModule<any>,
) => ParsedBundle<any>,
diffBy:
(
source: ShaderModule<any>,
offset: number | string | (string | number | null)[] | null,
size:
| ShaderModule<any>
| (ParsedModule<any> | ParsedBundle<any> | null)[]
| null,
) => ParsedBundle<any>,
swizzleTo:
(
from: string,
to: string,
swizzle: string | { basis: string, signs?: string, gain?: number },
) => ParsedBundle<any>,
makeASTParser:
(
code: string,
tree: Tree,
name?: string,
) => {
getImports:
() => ({
at: number,
symbols: string[],
name: string,
imports: ImportRef[],
})[],
getDeclarations: () => DeclarationRef[],
getSymbolTable: () => SymbolTable,
getShakeTable: (
table?: SymbolTable,
) => ShakeTable | undefined,
},
compressAST:
(
code: string,
tree: Tree,
symbols?: string[],
) => CompressedNode[],
decompressAST:
(
nodes: CompressedNode[],
symbols?: string[],
) => Tree,
rewriteUsingAST:
(
code: string,
tree: Tree,
rename: Map<string, string>,
shake?: number[],
optionals?: Set<string>,
) => string,
makeModuleCache:
(
options?: Record<string, any>,
) => LRUCache<number,
{ name: string, code: string, hash: number, table: SymbolTable, tree?: Tree, shake?: ShakeTable, virtual?: VirtualTable<SymbolTable>, entry?: string, key?: number }>,
getBundleEntry: (
bundle: ShaderModule<any>,
) => string | undefined,
getBundleHash: (
bundle: ShaderModule<any>,
) => number,
getBundleKey: (
bundle: ShaderModule<any>,
) => number,
parser: LRParser,
}
packages / shader / src / index.ts