UNPKG

@thi.ng/shader-ast-stdlib

Version:

Function collection for modular GPGPU / shader programming with @thi.ng/shader-ast

27 lines (26 loc) 732 B
import { F, V2, V3 } from "@thi.ng/shader-ast/api/types"; import { defn, ret } from "@thi.ng/shader-ast/ast/function"; import { FLOAT2, vec3 } from "@thi.ng/shader-ast/ast/lit"; import { div, neg, sub } from "@thi.ng/shader-ast/ast/ops"; import { $y } from "@thi.ng/shader-ast/ast/swizzle"; import { sym } from "@thi.ng/shader-ast/ast/sym"; import { normalize, radians, tan } from "@thi.ng/shader-ast/builtin/math"; const raymarchDir = defn( V3, "raymarchDir", [V2, V2, F], (frag, res, fov) => { let uv; return [ uv = sym(sub(frag, div(res, FLOAT2))), ret( normalize( vec3(uv, neg(div($y(res), tan(div(radians(fov), FLOAT2))))) ) ) ]; } ); export { raymarchDir };