createCanvas(windowWidth, windowHeight);
colorMode(HSB, 360, 100, 100, 100);
simplex = new SimplexNoise();
palette = shuffle(random(colorScheme).colors.concat());
g1 = createGraphics(width, height);
drawTexture(g1, 0.01, true);
drawTexture(g1, 0.01, false);
for (let y = -yStep; y < height + yStep; y += yStep / 2) {
int(map(abs(y - (height * 3) / 5), 0, height / 2 + yStep, 0, 20)) +
let n = map(simplex.noise2D(y / nsy, frameCount / 300), -1, 1, 0, 1);
let colors = shuffle(palette.concat());
? drawingContext.createLinearGradient(0, -yStep * 2, width, yStep * 2)
: drawingContext.createLinearGradient(width, -yStep * 2, 0, yStep * 2);
gradient.addColorStop(0, colors[0]);
gradient.addColorStop(n, colors[2]);
gradient.addColorStop(1, colors[1]);
drawingContext.fillStyle = gradient;
for (let x = -xStep; x < width + xStep; x += xStep) {
y2 = simplex.noise3D(x / nsx, y / nsy, frameCount / 200) * yStep * 4;
vertex(width + xStep, y2);
vertex(0 - xStep, height + yStep);
drawingContext.globalAlpha = 1 / 2;
drawingContext.filter = "blur(" + 0 + "px)";
drawingContext.globalAlpha = 1;
colors: ["#F27EA9", "#366CD9", "#5EADF2", "#636E73", "#F2E6D8"],
colors: ["#D962AF", "#58A6A6", "#8AA66F", "#F29F05", "#F26D6D"],
colors: ["#222940", "#D98E04", "#F2A950", "#BF3E21", "#F2F2F2"],
colors: ["#1B618C", "#55CCD9", "#F2BC57", "#F2DAAC", "#F24949"],
colors: ["#074A59", "#F2C166", "#F28241", "#F26B5E", "#F2F2F2"],
colors: ["#023059", "#459DBF", "#87BF60", "#D9D16A", "#F2F2F2"],
colors: ["#632973", "#02734A", "#F25C05", "#F29188", "#F2E0DF"],
colors: ["#8D95A6", "#0A7360", "#F28705", "#D98825", "#F2F2F2"],
colors: ["#4146A6", "#063573", "#5EC8F2", "#8C4E03", "#D98A29"],
colors: ["#034AA6", "#72B6F2", "#73BFB1", "#F2A30F", "#F26F63"],
colors: ["#303E8C", "#F2AE2E", "#F28705", "#D91414", "#F2F2F2"],
colors: ["#424D8C", "#84A9BF", "#C1D9CE", "#F2B705", "#F25C05"],
colors: ["#D9D7D8", "#3B5159", "#5D848C", "#7CA2A6", "#262321"],
colors: ["#906FA6", "#025951", "#252625", "#D99191", "#F2F2F2"],
function drawTexture(target, prob, bool) {
for (let i = 0; i < width * height * prob; i++) {
(width / map(prob, 0, 1, width / 50, width / 10000)) * random(1, 1.5);
let angle = (int(random(8)) * 360) / 8;
let g = target.drawingContext.createLinearGradient(
g.addColorStop(0, color(0, n));
g.addColorStop(1, color(0, m));
target.drawingContext.fillStyle = g;
target.erase(random(2, 8), 0);
target.rotate(random(360));
target.shearX(random(360 / 4) * (random() > 0.5 ? -1 : 1));
target.shearY(random(360 / 4) * (random() > 0.5 ? -1 : 1));
target.ellipse(0, 0, d, d);