fast-noise-lite-ts
Version:
A fast and lightweight noise generation library for JavaScript
32 lines (31 loc) • 1.09 kB
JavaScript
import { generateNoiseSingleR2, generateNoiseSingleR3 } from "../noise";
import { lerp } from "../utilities";
export function generateFractalFBmR2(options, x, y) {
options.seed++;
let sum = 0;
let amp = options.fractalBounding;
for (let i = 0; i < options.octaves; i++) {
let noise = generateNoiseSingleR2(options, x, y);
sum += noise * amp;
amp *= lerp(1.0, Math.min(noise + 1, 2) * 0.5, (options.weightedStrength ?? 0.0));
x *= options.lacunarity;
y *= options.lacunarity;
amp *= options.gain;
}
return sum;
}
export function generateFractalFBmR3(options, x, y, z) {
options.seed++;
let sum = 0;
let amp = options.fractalBounding;
for (let i = 0; i < options.octaves; i++) {
let noise = generateNoiseSingleR3(options, x, y, z);
sum += noise * amp;
amp *= lerp(1.0, (noise + 1) * 0.5, (options.weightedStrength ?? 0.0));
x *= options.lacunarity;
y *= options.lacunarity;
z *= options.lacunarity;
amp *= options.gain;
}
return sum;
}