UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

28 lines (27 loc) 818 B
"use strict"; 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); } }