@thi.ng/shader-ast-stdlib
Version:
Function collection for modular GPGPU / shader programming with @thi.ng/shader-ast
19 lines (18 loc) • 718 B
JavaScript
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
};