grain = (intensity) => (pixels) => {
const d = pixels.data;
for (let i = 0; i < d.length; i += 4) {
let v = d[i];
const n = math.randomGaussian(
0,
Math.sin(math.map(v, 0, 255, 0, Math.PI, true)) * intensity
);
v = math.constrain(onlyNoise ? n : v + n, 0, 255);
d[i] = d[i + 1] = d[i + 2] = v;
}
return pixels;
}