@thi.ng/shader-ast
Version:
DSL to define shader code in TypeScript and cross-compile to GLSL, JS and other targets
123 lines • 7.68 kB
TypeScript
import type { Maybe } from "@thi.ng/api";
import type { Lit, Term } from "../api/nodes.js";
import type { BVec2Term, BVec3Term, BVec4Term, IVec2Term, IVec3Term, IVec4Term, UVec2Term, UVec3Term, UVec4Term, Vec2Term, Vec3Term, Vec4Term } from "../api/terms.js";
import { type NumericB, type NumericF, type Type } from "../api/types.js";
export declare const lit: <T extends Type>(type: T, val: any, info?: string) => Lit<T>;
export declare const bool: (x: NumericB) => Lit<"bool">;
export declare const float: (x: NumericB) => Lit<"float">;
export declare const int: (x: NumericB) => Lit<"int">;
export declare const uint: (x: NumericB) => Lit<"uint">;
/**
* Takes a plain number or numeric term and wraps it as float literal if
* needed.
*
* @param x -
*/
export declare const wrapFloat: (x?: any) => Maybe<Term<"float">>;
/**
* Takes a plain number or numeric term and wraps it as signed integer
* literal if needed.
*
* @param x -
*/
export declare const wrapInt: (x?: any) => Maybe<Term<"int">>;
/**
* Takes a plain number or numeric term and wraps it as unsigned integer
* literal if needed.
*
* @param x -
*/
export declare const wrapUint: (x?: any) => Maybe<Term<"uint">>;
/**
* Takes a plain number or numeric term and wraps it as boolean literal
* if needed.
*
* @param x -
*/
export declare const wrapBool: (x?: any) => Maybe<Term<"bool">>;
export declare const TRUE: Lit<"bool">;
export declare const FALSE: Lit<"bool">;
export declare const FLOAT0: Lit<"float">;
export declare const FLOAT1: Lit<"float">;
export declare const FLOAT2: Lit<"float">;
export declare const FLOAT05: Lit<"float">;
export declare const INT0: Lit<"int">;
export declare const INT1: Lit<"int">;
export declare const UINT0: Lit<"uint">;
export declare const UINT1: Lit<"uint">;
export declare const PI: Lit<"float">;
export declare const TAU: Lit<"float">;
export declare const HALF_PI: Lit<"float">;
export declare const SQRT2: Lit<"float">;
export declare const PHI: Lit<"float">;
export declare function vec2(): Lit<"vec2">;
export declare function vec2(x: NumericB | IVec2Term | UVec2Term | BVec2Term): Lit<"vec2">;
export declare function vec2(x: NumericB, y: NumericB): Lit<"vec2">;
export declare function vec3(): Lit<"vec3">;
export declare function vec3(x: NumericB | IVec3Term | UVec3Term | BVec3Term): Lit<"vec3">;
export declare function vec3(xy: Vec2Term | IVec2Term | UVec2Term | BVec2Term, z: NumericB): Lit<"vec3">;
export declare function vec3(x: NumericB, y: NumericB, z: NumericB): Lit<"vec3">;
export declare function vec4(): Lit<"vec4">;
export declare function vec4(x: NumericB | IVec4Term | UVec4Term | BVec4Term): Lit<"vec4">;
export declare function vec4(xyz: Vec3Term | IVec3Term | UVec3Term | BVec3Term, w: NumericB): Lit<"vec4">;
export declare function vec4(xy: Vec2Term | IVec2Term | UVec2Term | BVec2Term, zw: Vec2Term | IVec2Term | UVec2Term | BVec2Term): Lit<"vec4">;
export declare function vec4(xy: Vec2Term | IVec2Term | UVec2Term | BVec2Term, z: NumericB, w: NumericB): Lit<"vec4">;
export declare function vec4(x: NumericB, y: NumericB, z: NumericB, w: NumericB): Lit<"vec4">;
export declare function ivec2(): Lit<"ivec2">;
export declare function ivec2(x: NumericB | Vec2Term | UVec2Term | BVec2Term): Lit<"ivec2">;
export declare function ivec2(x: NumericB, y: NumericB): Lit<"ivec2">;
export declare function ivec3(): Lit<"ivec3">;
export declare function ivec3(x: NumericB | Vec3Term | UVec3Term | BVec3Term): Lit<"ivec3">;
export declare function ivec3(xy: Vec2Term | BVec2Term, z: NumericB): Lit<"ivec3">;
export declare function ivec3(x: NumericB, y: NumericB, z: NumericB): Lit<"ivec3">;
export declare function ivec4(): Lit<"ivec4">;
export declare function ivec4(x: NumericB | Vec4Term | UVec4Term | BVec4Term): Lit<"ivec4">;
export declare function ivec4(x: Vec3Term | BVec3Term, y: NumericB): Lit<"ivec4">;
export declare function ivec4(x: Vec2Term | BVec2Term, y: Vec2Term | BVec2Term): Lit<"ivec4">;
export declare function ivec4(x: Vec2Term | BVec2Term, y: NumericB, z: NumericB): Lit<"ivec4">;
export declare function ivec4(x: NumericB, y: NumericB, z: NumericB, w: NumericB): Lit<"ivec4">;
export declare function uvec2(): Lit<"uvec2">;
export declare function uvec2(x: NumericB | Vec2Term | IVec2Term | BVec2Term): Lit<"uvec2">;
export declare function uvec2(x: NumericB, y: NumericB): Lit<"uvec2">;
export declare function uvec3(): Lit<"uvec3">;
export declare function uvec3(x: NumericB | Vec3Term | IVec3Term | BVec3Term): Lit<"uvec3">;
export declare function uvec3(xy: Vec2Term | BVec2Term, z: NumericB): Lit<"uvec3">;
export declare function uvec3(x: NumericB, y: NumericB, z: NumericB): Lit<"uvec3">;
export declare function uvec4(): Lit<"uvec4">;
export declare function uvec4(x: NumericB | Vec4Term | IVec4Term | BVec4Term): Lit<"uvec4">;
export declare function uvec4(xyz: Vec3Term | BVec3Term, w: NumericB): Lit<"uvec4">;
export declare function uvec4(xy: Vec2Term | BVec2Term, zw: Vec2Term | BVec2Term): Lit<"uvec4">;
export declare function uvec4(xy: Vec2Term | BVec2Term, z: NumericB, w: NumericB): Lit<"uvec4">;
export declare function uvec4(x: NumericB, y: NumericB, z: NumericB, w: NumericB): Lit<"uvec4">;
export declare function bvec2(): Lit<"bvec2">;
export declare function bvec2(x: NumericB | Vec2Term | IVec2Term | UVec2Term): Lit<"bvec2">;
export declare function bvec2(x: NumericB, y: NumericB): Lit<"bvec2">;
export declare function bvec3(): Lit<"bvec3">;
export declare function bvec3(x: NumericB | Vec3Term | IVec3Term | UVec3Term): Lit<"bvec3">;
export declare function bvec3(xy: Vec2Term | IVec2Term | UVec2Term | BVec2Term, z: NumericB): Lit<"bvec3">;
export declare function bvec3(x: NumericB, y: NumericB, z: NumericB): Lit<"bvec3">;
export declare function bvec4(): Lit<"bvec4">;
export declare function bvec4(x: NumericB | Vec4Term | IVec4Term | UVec4Term): Lit<"bvec4">;
export declare function bvec4(xyz: Vec3Term | IVec3Term | UVec3Term | BVec3Term, w: NumericB): Lit<"bvec4">;
export declare function bvec4(xy: Vec2Term | IVec2Term | UVec2Term | BVec2Term, zw: Vec2Term | IVec2Term | UVec2Term | BVec2Term): Lit<"bvec4">;
export declare function bvec4(xy: Vec2Term | IVec2Term | UVec2Term | BVec2Term, z: NumericB, w: NumericB): Lit<"bvec4">;
export declare function bvec4(x: NumericB, y: NumericB, z: NumericB, w: NumericB): Lit<"bvec4">;
export declare function mat2(): Lit<"mat2">;
export declare function mat2(x: NumericF): Lit<"mat2">;
export declare function mat2(x: Vec2Term, y: Vec2Term): Lit<"mat2">;
export declare function mat2(a: NumericF, b: NumericF, c: NumericF, d: NumericF): Lit<"mat2">;
export declare function mat3(): Lit<"mat3">;
export declare function mat3(x: NumericF): Lit<"mat3">;
export declare function mat3(x: Vec3Term, y: Vec3Term, z: Vec3Term): Lit<"mat3">;
export declare function mat3(a: NumericF, b: NumericF, c: NumericF, d: NumericF, e: NumericF, f: NumericF, g: NumericF, h: NumericF, i: NumericF): Lit<"mat3">;
export declare function mat4(): Lit<"mat4">;
export declare function mat4(x: NumericF): Lit<"mat4">;
export declare function mat4(x: Vec4Term, y: Vec4Term, z: Vec4Term, w: Vec4Term): Lit<"mat4">;
export declare function mat4(a: NumericF, b: NumericF, c: NumericF, d: NumericF, e: NumericF, f: NumericF, g: NumericF, h: NumericF, i: NumericF, j: NumericF, k: NumericF, l: NumericF, m: NumericF, n: NumericF, o: NumericF, p: NumericF): Lit<"mat4">;
export declare const VEC2_0: Lit<"vec2">;
export declare const VEC2_1: Lit<"vec2">;
export declare const VEC2_2: Lit<"vec2">;
export declare const VEC3_0: Lit<"vec3">;
export declare const VEC3_1: Lit<"vec3">;
export declare const VEC3_2: Lit<"vec3">;
//# sourceMappingURL=lit.d.ts.map