wgsl_reflect
Version:
WGSL Parser and Reflection library
134 lines (133 loc) • 4.28 kB
TypeScript
import { Type, Struct, Alias, Node, Function, Argument, Member, Attribute } from "../wgsl_ast.js";
import { FunctionInfo, VariableInfo, AliasInfo, OverrideInfo, StructInfo, TypeInfo, MemberInfo, OutputInfo, InputInfo, EntryFunctions } from "./info.js";
declare class _FunctionResources {
node: Function;
resources: VariableInfo[] | null;
inUse: boolean;
info: FunctionInfo | null;
constructor(node: Function);
}
declare class _TypeSize {
align: number;
size: number;
constructor(align: number, size: number);
}
export declare class Reflect {
uniforms: VariableInfo[];
storage: VariableInfo[];
textures: VariableInfo[];
samplers: VariableInfo[];
aliases: AliasInfo[];
overrides: OverrideInfo[];
structs: StructInfo[];
entry: EntryFunctions;
functions: FunctionInfo[];
_types: Map<Type, TypeInfo>;
_functions: Map<string, _FunctionResources>;
_isStorageTexture(type: TypeInfo): boolean;
updateAST(ast: Node[]): void;
getStructInfo(name: string): StructInfo | null;
getOverrideInfo(name: string): OverrideInfo | null;
_markStructsInUse(type: TypeInfo): void;
_addCalls(fn: Function, calls: Set<FunctionInfo>): void;
findResource(group: number, binding: number, entry?: string): VariableInfo;
_findResource(name: string): VariableInfo | null;
_markStructsFromAST(type: Type): void;
_findResources(fn: Node, isEntry: boolean): VariableInfo[];
getBindGroups(): Array<VariableInfo[]>;
_getOutputs(type: Type, outputs?: OutputInfo[] | undefined): OutputInfo[];
_getStructOutputs(struct: Struct, outputs: OutputInfo[]): void;
_getOutputInfo(type: Type): OutputInfo | null;
_getInputs(args: Argument[], inputs?: InputInfo[] | undefined): InputInfo[];
_getStructInputs(struct: Struct, inputs: InputInfo[]): void;
_getInputInfo(node: Member | Argument): InputInfo | null;
_parseString(s: string | string[]): string;
_parseInt(s: string | string[]): number | string;
_getAlias(name: string): TypeInfo | null;
_getAliasInfo(node: Alias): AliasInfo;
getTypeInfoByName(name: string): TypeInfo | null;
getTypeInfo(type: Type, attributes?: Attribute[] | null): TypeInfo;
_updateTypeInfo(type: TypeInfo): void;
_updateStructInfo(struct: StructInfo): void;
_getTypeSize(type: TypeInfo | MemberInfo | null | undefined): _TypeSize | null;
_isUniformVar(node: Node): boolean;
_isStorageVar(node: Node): boolean;
_isTextureVar(node: Node): boolean;
_isSamplerVar(node: Node): boolean;
_getAttribute(node: Node, name: string): Attribute | null;
_getAttributeNum(attributes: Attribute[] | null, name: string, defaultValue: number): number;
_roundUp(k: number, n: number): number;
static readonly _typeInfo: {
f16: {
align: number;
size: number;
};
i32: {
align: number;
size: number;
};
u32: {
align: number;
size: number;
};
f32: {
align: number;
size: number;
};
atomic: {
align: number;
size: number;
};
vec2: {
align: number;
size: number;
};
vec3: {
align: number;
size: number;
};
vec4: {
align: number;
size: number;
};
mat2x2: {
align: number;
size: number;
};
mat3x2: {
align: number;
size: number;
};
mat4x2: {
align: number;
size: number;
};
mat2x3: {
align: number;
size: number;
};
mat3x3: {
align: number;
size: number;
};
mat4x3: {
align: number;
size: number;
};
mat2x4: {
align: number;
size: number;
};
mat3x4: {
align: number;
size: number;
};
mat4x4: {
align: number;
size: number;
};
};
static readonly _textureTypes: string[];
static readonly _samplerTypes: string[];
}
export {};