@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
28 lines (27 loc) • 818 B
JavaScript
;
import { Vector3 } from "three";
import { NamedFunction7 } from "./_Base";
import { ImprovedNoise } from "three/examples/jsm/math/ImprovedNoise";
const _v3 = new Vector3();
const noise = new ImprovedNoise();
function _fbm3d(x, y, z, octaves, ampMult, freqMult) {
let value = 0;
let amplitude = 1;
for (let i = 0; i < octaves; i++) {
value += amplitude * noise.noise(x, y, z);
x *= freqMult;
y *= freqMult;
z *= freqMult;
amplitude *= ampMult;
}
return value;
}
export class noiseImprovedVector3 extends NamedFunction7 {
static type() {
return "noiseImprovedVector3";
}
func(position, amp, freq, offset, octaves, ampMult, freqMult) {
_v3.copy(position).add(offset).multiply(freq);
return amp * _fbm3d(_v3.x, _v3.y, _v3.z, octaves, ampMult, freqMult);
}
}