const rows = size / scale;
const cols = size / scale;
createCanvas(size, size);
clock = new PeriodicFrameClock(sketch.fpp());
noiseloop = clock.createNoiseLoop("main", 2);
fg = color([115, 20, 70]);
return 3 * pow(p, 2) - 2 * pow(p, 3);
layerOne(color([115,80,100]));
function layerOne(color) {
for (let c = 1; c < cols; c++) {
for (let r = 1; r < rows; r++) {
const px = map(noiseloop.value(t + cp), 0, 1, 0, width);
const py = map(pow(clock.cos(t + r),-7), -1, 1, 0, height)
let cd = dist(px, py, x/5, sqrt(y));
const p = ease(map(cd, 0, size / 2, 0, 1));
strokeWeight(map(p, 0, 1, scale * 0.2, 0.05));
h.setAlpha(map(p, 0, 1, 0.5, 0.1));
s * clock.cos(clock.time() + pow(1, cp)),
s * clock.sin(clock.time(20) - pow(1, rp)));
function layerTwo(color) {
for (let c = 1; c < cols; c++) {
for (let r = 1; r < rows; r++) {
const px = map(clock.cos(t + cp + rp), -1, 1, 0, width);
const py = map(clock.sin(t - r), -1, 1, 0, height)
const cd = dist(width/2, height/2, x, y);
const p = ease(map(cd, 0, size / 2, 0, 1));
strokeWeight(map(p, 0, 1, scale * 0.1, 0.01));
h.setAlpha(map(p, 0, 1, 1, 0));
s * clock.sin(t - pow(r, cp)),
s * clock.cos(t - pow(c, rp)));