UNPKG

@thi.ng/shader-ast-stdlib

Version:

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

19 lines (18 loc) 718 B
import { F, V3 } from "@thi.ng/shader-ast/api/types"; import { defn, ret } from "@thi.ng/shader-ast/ast/function"; import { FLOAT0, VEC2_0, vec2 } from "@thi.ng/shader-ast/ast/lit"; import { add, 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 { abs, length, max, min } from "@thi.ng/shader-ast/builtin/math"; import { maxComp2 } from "../math/maxcomp.js"; const sdfCylinder = defn(F, "sdCylinder", [V3, F, F], (p, h, r) => { let d; return [ d = sym(sub(abs(vec2(length($(p, "xz")), $y(p))), vec2(h, r))), ret(add(min(maxComp2(d), FLOAT0), length(max(d, VEC2_0)))) ]; }); export { sdfCylinder };