wgsl_reflect
Version:
WGSL Parser and Reflection library
186 lines (185 loc) • 13 kB
TypeScript
import { CallExpr, Call } from "../wgsl_ast.js";
import { Data, TextureData, SamplerData } from "../wgsl_ast.js";
import { ExecContext } from "./exec_context.js";
import { ExecInterface } from "./exec_interface.js";
import { TypeInfo } from "../reflect/info.js";
export declare class BuiltinFunctions {
exec: ExecInterface;
constructor(exec: ExecInterface);
getTypeInfo(type: string): TypeInfo | null;
All(node: CallExpr | Call, context: ExecContext): Data | null;
Any(node: CallExpr | Call, context: ExecContext): Data | null;
Select(node: CallExpr | Call, context: ExecContext): Data | null;
ArrayLength(node: CallExpr | Call, context: ExecContext): Data | null;
Abs(node: CallExpr | Call, context: ExecContext): Data | null;
Acos(node: CallExpr | Call, context: ExecContext): Data | null;
Acosh(node: CallExpr | Call, context: ExecContext): Data | null;
Asin(node: CallExpr | Call, context: ExecContext): Data | null;
Asinh(node: CallExpr | Call, context: ExecContext): Data | null;
Atan(node: CallExpr | Call, context: ExecContext): Data | null;
Atanh(node: CallExpr | Call, context: ExecContext): Data | null;
Atan2(node: CallExpr | Call, context: ExecContext): Data | null;
Ceil(node: CallExpr | Call, context: ExecContext): Data | null;
_clamp(value: number, min: number, max: number): number;
Clamp(node: CallExpr | Call, context: ExecContext): Data | null;
Cos(node: CallExpr | Call, context: ExecContext): Data | null;
Cosh(node: CallExpr | Call, context: ExecContext): Data | null;
CountLeadingZeros(node: CallExpr | Call, context: ExecContext): Data | null;
_countOneBits(value: number): number;
CountOneBits(node: CallExpr | Call, context: ExecContext): Data | null;
_countTrailingZeros(value: number): number;
CountTrailingZeros(node: CallExpr | Call, context: ExecContext): Data | null;
Cross(node: CallExpr | Call, context: ExecContext): Data | null;
Degrees(node: CallExpr | Call, context: ExecContext): Data | null;
Determinant(node: CallExpr | Call, context: ExecContext): Data | null;
Distance(node: CallExpr | Call, context: ExecContext): Data | null;
_dot(e1: Int32Array | Uint32Array | Float32Array, e2: Int32Array | Uint32Array | Float32Array): number;
Dot(node: CallExpr | Call, context: ExecContext): Data | null;
Dot4U8Packed(node: CallExpr | Call, context: ExecContext): Data | null;
Dot4I8Packed(node: CallExpr | Call, context: ExecContext): Data | null;
Exp(node: CallExpr | Call, context: ExecContext): Data | null;
Exp2(node: CallExpr | Call, context: ExecContext): Data | null;
ExtractBits(node: CallExpr | Call, context: ExecContext): Data | null;
FaceForward(node: CallExpr | Call, context: ExecContext): Data | null;
_firstLeadingBit(s: number): number;
FirstLeadingBit(node: CallExpr | Call, context: ExecContext): Data | null;
_firstTrailingBit(s: number): number;
FirstTrailingBit(node: CallExpr | Call, context: ExecContext): Data | null;
Floor(node: CallExpr | Call, context: ExecContext): Data | null;
Fma(node: CallExpr | Call, context: ExecContext): Data | null;
Fract(node: CallExpr | Call, context: ExecContext): Data | null;
Frexp(node: CallExpr | Call, context: ExecContext): Data | null;
InsertBits(node: CallExpr | Call, context: ExecContext): Data | null;
InverseSqrt(node: CallExpr | Call, context: ExecContext): Data | null;
Ldexp(node: CallExpr | Call, context: ExecContext): Data | null;
Length(node: CallExpr | Call, context: ExecContext): Data | null;
Log(node: CallExpr | Call, context: ExecContext): Data | null;
Log2(node: CallExpr | Call, context: ExecContext): Data | null;
Max(node: CallExpr | Call, context: ExecContext): Data | null;
Min(node: CallExpr | Call, context: ExecContext): Data | null;
Mix(node: CallExpr | Call, context: ExecContext): Data | null;
Modf(node: CallExpr | Call, context: ExecContext): Data | null;
Normalize(node: CallExpr | Call, context: ExecContext): Data | null;
Pow(node: CallExpr | Call, context: ExecContext): Data | null;
QuantizeToF16(node: CallExpr | Call, context: ExecContext): Data | null;
Radians(node: CallExpr | Call, context: ExecContext): Data | null;
Reflect(node: CallExpr | Call, context: ExecContext): Data | null;
Refract(node: CallExpr | Call, context: ExecContext): Data | null;
ReverseBits(node: CallExpr | Call, context: ExecContext): Data | null;
Round(node: CallExpr | Call, context: ExecContext): Data | null;
Saturate(node: CallExpr | Call, context: ExecContext): Data | null;
Sign(node: CallExpr | Call, context: ExecContext): Data | null;
Sin(node: CallExpr | Call, context: ExecContext): Data | null;
Sinh(node: CallExpr | Call, context: ExecContext): Data | null;
_smoothstep(edge0: number, edge1: number, x: number): number;
SmoothStep(node: CallExpr | Call, context: ExecContext): Data | null;
Sqrt(node: CallExpr | Call, context: ExecContext): Data | null;
Step(node: CallExpr | Call, context: ExecContext): Data | null;
Tan(node: CallExpr | Call, context: ExecContext): Data | null;
Tanh(node: CallExpr | Call, context: ExecContext): Data | null;
_getTransposeType(t: TypeInfo): TypeInfo;
Transpose(node: CallExpr | Call, context: ExecContext): Data | null;
Trunc(node: CallExpr | Call, context: ExecContext): Data | null;
_derivative(node: CallExpr | Call, context: ExecContext): Data | null;
Dpdx(node: CallExpr | Call, context: ExecContext): Data | null;
DpdxCoarse(node: CallExpr | Call, context: ExecContext): Data | null;
DpdxFine(node: CallExpr | Call, context: ExecContext): Data | null;
Dpdy(node: CallExpr | Call, context: ExecContext): Data | null;
DpdyCoarse(node: CallExpr | Call, context: ExecContext): Data | null;
DpdyFine(node: CallExpr | Call, context: ExecContext): Data | null;
Fwidth(node: CallExpr | Call, context: ExecContext): Data | null;
FwidthCoarse(node: CallExpr | Call, context: ExecContext): Data | null;
FwidthFine(node: CallExpr | Call, context: ExecContext): Data | null;
TextureDimensions(node: CallExpr | Call, context: ExecContext): Data | null;
TextureGather(node: CallExpr | Call, context: ExecContext): Data | null;
TextureGatherCompare(node: CallExpr | Call, context: ExecContext): Data | null;
TextureLoad(node: CallExpr | Call, context: ExecContext): Data | null;
TextureNumLayers(node: CallExpr | Call, context: ExecContext): Data | null;
TextureNumLevels(node: CallExpr | Call, context: ExecContext): Data | null;
TextureNumSamples(node: CallExpr | Call, context: ExecContext): Data | null;
_resolveTexture(arg: CallExpr | Call | any, context: ExecContext): TextureData | null;
_resolveSampler(arg: CallExpr | Call | any, context: ExecContext): SamplerData | null;
_wrap(coord: number, size: number, mode: string): number;
_texel(texture: TextureData, x: number, y: number, layer: number, level: number, addrU: string, addrV: string): number[];
_filterMip(texture: TextureData, u: number, v: number, layer: number, level: number, sampler: SamplerData | null): number[];
_sampleTexture(texture: TextureData, u: number, v: number, layer: number, lod: number, sampler: SamplerData | null): number[];
_compareFn(name: string): (ref: number, stored: number) => boolean;
_sampleCompareValue(node: CallExpr | Call, context: ExecContext): Data | null;
_sampleResult(texture: TextureData, rgba: number[]): Data;
_sampleArgs(node: CallExpr | Call, context: ExecContext, coordIndex: number): {
texture: TextureData;
u: number;
v: number;
layer: number;
} | null;
TextureSample(node: CallExpr | Call, context: ExecContext): Data | null;
TextureSampleBias(node: CallExpr | Call, context: ExecContext): Data | null;
TextureSampleLevel(node: CallExpr | Call, context: ExecContext): Data | null;
TextureSampleGrad(node: CallExpr | Call, context: ExecContext): Data | null;
TextureSampleCompare(node: CallExpr | Call, context: ExecContext): Data | null;
TextureSampleCompareLevel(node: CallExpr | Call, context: ExecContext): Data | null;
TextureSampleBaseClampToEdge(node: CallExpr | Call, context: ExecContext): Data | null;
TextureStore(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicLoad(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicStore(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicAdd(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicSub(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicMax(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicMin(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicAnd(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicOr(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicXor(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicExchange(node: CallExpr | Call, context: ExecContext): Data | null;
AtomicCompareExchangeWeak(node: CallExpr | Call, context: ExecContext): Data | null;
_packSnormByte(v: number): number;
_packUnormByte(v: number): number;
Pack4x8snorm(node: CallExpr | Call, context: ExecContext): Data | null;
Pack4x8unorm(node: CallExpr | Call, context: ExecContext): Data | null;
Pack4xI8(node: CallExpr | Call, context: ExecContext): Data | null;
Pack4xU8(node: CallExpr | Call, context: ExecContext): Data | null;
Pack4x8Clamp(node: CallExpr | Call, context: ExecContext): Data | null;
Pack4xU8Clamp(node: CallExpr | Call, context: ExecContext): Data | null;
Pack2x16snorm(node: CallExpr | Call, context: ExecContext): Data | null;
Pack2x16unorm(node: CallExpr | Call, context: ExecContext): Data | null;
Pack2x16float(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack4x8snorm(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack4x8unorm(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack4xI8(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack4xU8(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack2x16snorm(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack2x16unorm(node: CallExpr | Call, context: ExecContext): Data | null;
Unpack2x16float(node: CallExpr | Call, context: ExecContext): Data | null;
static _f32Convert: Float32Array<ArrayBuffer>;
static _u32View: Uint32Array<ArrayBuffer>;
static _f32ToF16Bits(val: number): number;
static _f16BitsToF32(bits: number): number;
StorageBarrier(node: CallExpr | Call, context: ExecContext): Data | null;
TextureBarrier(node: CallExpr | Call, context: ExecContext): Data | null;
WorkgroupBarrier(node: CallExpr | Call, context: ExecContext): Data | null;
WorkgroupUniformLoad(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupAdd(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupExclusiveAdd(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupInclusiveAdd(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupAll(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupAnd(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupAny(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupBallot(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupBroadcast(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupBroadcastFirst(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupElect(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupMax(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupMin(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupMul(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupExclusiveMul(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupInclusiveMul(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupOr(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupShuffle(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupShuffleDown(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupShuffleUp(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupShuffleXor(node: CallExpr | Call, context: ExecContext): Data | null;
SubgroupXor(node: CallExpr | Call, context: ExecContext): Data | null;
QuadBroadcast(node: CallExpr | Call, context: ExecContext): Data | null;
QuadSwapDiagonal(node: CallExpr | Call, context: ExecContext): Data | null;
QuadSwapX(node: CallExpr | Call, context: ExecContext): Data | null;
QuadSwapY(node: CallExpr | Call, context: ExecContext): Data | null;
}