"https://coolors.co/9b5de5-f15bb5-fee440-00bbf9-00f5d4",
colorMode(HSB, 360, 100, 100, 100);
noiseGra = createGraphics(width, height);
noiseGra.fill(255, 15 / 100 * 255);
for (let i = 0; i < width * height * 0.05; i++) {
let dia = noise(x * 0.01, y * 0.01) * 1 + 1;
noiseGra.ellipse(x, y, dia, dia);
palette = createPalette(random(url), 100);
let cells = int(random(1, 6));
sw = map(cells, 1, 5, 5,1);
let margin = offset / 1.5;
let d = (width - offset * 2 - margin * (cells - 1)) / cells;
for (let j = 0; j < cells; j++) {
for (let i = 0; i < cells; i++) {
let xMin = offset + i * (d + margin);
let yMin = offset + j * (d + margin);
drawSepRect(xMin, yMin, xMax, yMax);
function drawSepRect(xMin, yMin, xMax, yMax) {
translate(xMin + w / 2, yMin + h / 2);
scale(random() > 0.5 ? -1 : 1,
translate(-w / 2, -h / 2);
yStep = int(random(h / 3));
if (y + yStep > h) yStep = h - y;
xStep = int(random(w / 2));
if (x + xStep > w / 2) xStep = w / 2 - x;
let shape_num = int(random(6));
let sep = int(random(1, 5));
drawingContext.shadowBlur = max(w, h) / 30;
drawingContext.shadowColor = color(random(palette));
if (min(xStep, yStep) > w / 40) {
let angle = random(90, 270);
let counter_angle = angle > 180 ? angle + abs(270 - angle) * 2 : angle - abs(angle - 90) * 2;
let shear_x = random(15/2) * (random() > 0.5 ? -1:1);
let shear_y = random(15/2) * (random() > 0.5 ? -1:1);
let colors = shuffle(palette.concat());
translate(x + xStep / 2, y + yStep / 2);
for (let i = 1.3; i > 0; i -= 1 / sep) {
strokeWeight(1 / i * sw);
translate(-xStep / 2, -yStep / 2);
stroke(colors[(t + v) % colors.length]);
drawRandomShape(0, 0, xStep, yStep, shape_num, m);
translate(w - x - xStep + xStep / 2, y + yStep / 2);
for (let i = 1.3; i > 0; i -= 1 / sep) {
strokeWeight(1 / i * sw);
translate(-xStep / 2, -yStep / 2);
stroke(colors[[t + v] % colors.length]);
drawRandomShape(0, 0, xStep, yStep, shape_num, m);
function drawRandomShape(x, y, w, h, shape_num = int(random(6)), m) {
ellipse(x + w / 2, y + h / 2, w, h);
arc(x, y, w * 2, h * 2, 0, 90, PIE);
quad(x, y, x + w / 2, y, x + w, y + h, x + w / 2, y + h);
circle(x + w / 2, y + h / 2, min(w, h));
rect(x, y, w, h, max(w, h));
triangle(x, y, x + w, y + h, x + w, y);
drawSuperEllipes(x + w / 2, y + h / 2, w, h, m);
function createPalette(_url, percent = 100) {
let slash_index = _url.lastIndexOf('/');
let pallate_str = _url.slice(slash_index + 1);
let arr = pallate_str.split('-');
for (let i = 0; i < arr.length; i++) {
arr[i] = color('#' + arr[i] + hex(int(percent / 100 * 255), 2));
function drawSuperEllipes(x, y, w, h, n) {
for (let angle = 0; angle < 360; angle += 2) {
let x = pow(abs(cos(angle)), na) * w / 2 * sgn(cos(angle));
let y = pow(abs(sin(angle)), na) * h / 2 * sgn(sin(angle));