UNPKG

@thi.ng/shader-ast-stdlib

Version:

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

36 lines (35 loc) 881 B
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 };