@thi.ng/shader-ast-stdlib
Version:
Function collection for modular GPGPU / shader programming with @thi.ng/shader-ast
36 lines (35 loc) • 881 B
JavaScript
import { S3D, V3, V4 } from "@thi.ng/shader-ast/api/types";
import { forLoop } from "@thi.ng/shader-ast/ast/controlflow";
import { defn, ret } from "@thi.ng/shader-ast/ast/function";
import { FLOAT05, UINT0, uint, vec4 } from "@thi.ng/shader-ast/ast/lit";
import {
addSelf,
div,
inc,
lt,
mul,
mulSelf
} from "@thi.ng/shader-ast/ast/ops";
import { sym } from "@thi.ng/shader-ast/ast/sym";
import { texture } from "@thi.ng/shader-ast/builtin/texture";
const fbmNoiseVec34 = (octaves, decay = 1 / octaves) => defn(V4, null, [S3D, V3], (tex, p) => {
let res;
let amp;
return [
res = sym(vec4()),
amp = sym(FLOAT05),
forLoop(
sym(UINT0),
(i) => lt(i, uint(octaves)),
inc,
() => [
addSelf(res, mul(texture(tex, div(p, amp)), amp)),
mulSelf(amp, decay)
]
),
ret(res)
];
});
export {
fbmNoiseVec34
};