@thi.ng/shader-ast-stdlib
Version:
Function collection for modular GPGPU / shader programming with @thi.ng/shader-ast
31 lines (30 loc) • 880 B
JavaScript
import { F, V2 } from "@thi.ng/shader-ast/api/types";
import { defn, ret } from "@thi.ng/shader-ast/ast/function";
import { VEC2_1, bvec4, vec2 } from "@thi.ng/shader-ast/ast/lit";
import { add, div, mul, sub } from "@thi.ng/shader-ast/ast/ops";
import { $xy, $y } from "@thi.ng/shader-ast/ast/swizzle";
import { _any, greaterThan, lessThan } from "@thi.ng/shader-ast/builtin/bvec";
const fragUV = (fragCoord, res) => div($xy(fragCoord), res);
const aspectCorrectedUV = defn(
V2,
"aspectCorrectedUV2",
[V2, V2],
(fragCoord, resolution) => [
ret(div(sub(mul(2, fragCoord), resolution), $y(resolution)))
]
);
const borderMask = defn("bool", "borderMask", [V2, F], (uv, width) => [
ret(
_any(
bvec4(
lessThan(uv, vec2(width)),
greaterThan(add(uv, width), VEC2_1)
)
)
)
]);
export {
aspectCorrectedUV,
borderMask,
fragUV
};