UNPKG

@thi.ng/shader-ast-stdlib

Version:

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

30 lines (29 loc) 895 B
import { F, V2 } from "@thi.ng/shader-ast/api/types"; import { ternary } from "@thi.ng/shader-ast/ast/controlflow"; import { defn, ret } from "@thi.ng/shader-ast/ast/function"; import { vec2 } from "@thi.ng/shader-ast/ast/lit"; import { gt, madd, mul, neg, sub } from "@thi.ng/shader-ast/ast/ops"; import { $x, $y } from "@thi.ng/shader-ast/ast/swizzle"; import { sym } from "@thi.ng/shader-ast/ast/sym"; import { abs, cos, length, sin } from "@thi.ng/shader-ast/builtin/math"; const sdfArc2 = defn(F, "sdfArc", [V2, F, F, F], (p, apert, ra, rb) => { let q; let sc; return [ q = sym(vec2(abs($x(p)), $y(p))), sc = sym(vec2(sin(apert), cos(apert))), ret( sub( ternary( gt(mul($y(sc), $x(q)), mul($x(sc), $y(q))), length(madd(sc, neg(ra), q)), abs(sub(length(q), ra)) ), rb ) ) ]; }); export { sdfArc2 };