Turbulence
Turbulence is created by summing absolute values of noise at multiple frequencies. Unlike standard fBm (which sums signed noise), the absolute value creates sharp creases that produce billowing, cloud-like patterns.
function turbulence(x: number, y: number, octaves = 6) {
let sum = 0, freq = 1, amp = 1;
for (let i = 0; i < octaves; i++) {
sum += Math.abs(noise(x * freq, y * freq)) * amp;
freq *= 2;
amp *= 0.5;
}
return sum;
}