UNPKG

@thi.ng/shader-ast

Version:

DSL to define shader code in TypeScript and cross-compile to GLSL, JS and other targets

97 lines 5.6 kB
import type { FnCall, Sym, Term } from "../api/nodes.js"; import type { BVec2Term, BVec3Term, BVec4Term, BoolTerm, FloatTerm, IVec2Term, IVec3Term, IVec4Term, IntTerm, UVec2Term, UVec3Term, UVec4Term, UintTerm, Vec2Term, Vec3Term, Vec4Term } from "../api/terms.js"; import { type Mat, type Prim, type Vec } from "../api/types.js"; /** * Returns normalized version of given vector. * * @param v - */ export declare const normalize: <T extends Vec>(v: Term<T>) => FnCall<T>; export declare const normalizeSelf: <T extends Vec>(v: Sym<T>) => import("../index.js").Assign<T>; /** * Returns length / magnitude of given vector. * * @param v - */ export declare const length: <T extends Vec>(v: Term<T>) => FnCall<"float">; export declare const distance: <A extends Vec, B extends A>(a: Term<A>, b: Term<B>) => FnCall<"float">; /** * Returns dot product of given vectors. * * @param a - * @param b - */ export declare const dot: <A extends Vec, B extends A>(a: Term<A>, b: Term<B>) => FnCall<"float">; /** * Returns cross product of given 3D vectors. * * @param a - * @param b - */ export declare const cross: (a: Vec3Term, b: Vec3Term) => FnCall<"vec3">; export declare const reflect: <I extends Vec, N extends I>(i: Term<I>, n: Term<N>) => FnCall<I>; export declare const refract: <I extends Vec, N extends I>(i: Term<I>, n: Term<N>, ior: FloatTerm) => FnCall<I>; export declare const faceForward: <I extends Vec, N extends I, R extends I>(i: Term<I>, n: Term<N>, nref: Term<R>) => FnCall<I>; export declare const min: <A extends Prim, B extends A>(a: Term<A>, b: Term<B>) => FnCall<A>; export declare const max: <A extends Prim, B extends A>(a: Term<A>, b: Term<B>) => FnCall<A>; export declare const clamp: <A extends Prim, B extends A, C extends B>(a: Term<A>, b: Term<B>, c: Term<C>) => FnCall<A>; export declare const minSelf: <A extends Prim, B extends A>(a: Sym<A>, b: Term<B>) => import("../index.js").Assign<A>; export declare const maxSelf: <A extends Prim, B extends A>(a: Sym<A>, b: Term<B>) => import("../index.js").Assign<A>; export declare const clampSelf: <A extends Prim, B extends A, C extends B>(a: Sym<A>, b: Term<B>, c: Term<C>) => import("../index.js").Assign<A>; export declare const step: <A extends Prim, B extends A>(a: Term<A>, b: Term<B>) => FnCall<A>; export declare const smoothstep: <A extends Prim, B extends A, C extends B>(a: Term<A>, b: Term<B>, c: Term<C>) => FnCall<A>; export declare const radians: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const degrees: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const cos: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const sin: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const tan: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const acos: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const asin: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare function atan<T extends Prim>(a: Term<T>): FnCall<T>; export declare function atan<A extends Prim, B extends A>(a: Term<A>, b: Term<B>): FnCall<A>; export declare const pow: <A extends Prim, B extends A>(a: Term<A>, b: Term<B>) => FnCall<A>; export declare const exp: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const log: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const exp2: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const log2: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const sqrt: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const inversesqrt: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const abs: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const sign: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const floor: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const ceil: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const fract: <T extends Prim>(a: Term<T>) => FnCall<T>; export declare const powf: <T extends Prim>(x: Term<T>, y: FloatTerm) => FnCall<T>; export declare function mod<A extends Prim, B extends A>(a: Term<A>, b: Term<B>): FnCall<A>; export declare function mod<A extends Prim>(a: Term<A>, b: FloatTerm): FnCall<A>; /** * Important: Currently unsupported by JS target. * * TODO add additional metadata for JS (`b` is an output var), issue #96 * * @param a - * @param b - */ export declare const modf: <A extends Prim, B extends A>(a: Term<A>, b: Sym<B>) => FnCall<A>; export declare function mix<A extends Prim, B extends A, C extends B>(a: Term<A>, b: Term<B>, c: Term<C>): FnCall<A>; export declare function mix<A extends Prim, B extends A>(a: Term<A>, b: Term<B>, c: FloatTerm): FnCall<A>; export declare const matrixCompMult: <A extends Mat, B extends A>(a: Term<A>, b: Term<B>) => FnCall<A>; /** * Important: Not available in JS / GLSL ES 100 * * @param a - */ export declare function isnan(a: FloatTerm | IntTerm | UintTerm): BoolTerm; export declare function isnan(a: Vec2Term | IVec2Term | UVec2Term): BVec2Term; export declare function isnan(a: Vec3Term | IVec3Term | UVec3Term): BVec3Term; export declare function isnan(a: Vec4Term | IVec4Term | UVec4Term): BVec4Term; /** * Important: Not available in JS / GLSL ES 100 * * @param a - */ export declare function isinf(a: FloatTerm | IntTerm | UintTerm): BoolTerm; export declare function isinf(a: Vec2Term | IVec2Term | UVec2Term): BVec2Term; export declare function isinf(a: Vec3Term | IVec3Term | UVec3Term): BVec3Term; export declare function isinf(a: Vec4Term | IVec4Term | UVec4Term): BVec4Term; //# sourceMappingURL=math.d.ts.map