var hSize, vSize, gridResolution;
createCanvas(screenSize, screenSize);
gB = createGraphics(gBRes, gBRes);
gridResolution = ~~(64 * random() * random());
gB.translate(gBRes * 0.5, gBRes * 0.5);
gB.rotate(frameCount * 0.001);
gB.translate(gBRes * -0.5, gBRes * -0.5);
for (var i = 0; i <= 0.9; i += hSize) {
for (var j = 0; j <= 0.9; j += vSize) {
var xPos = map(i, 0, 1, 0, gB.width);
var yPos = map(j, 0, 1, 0, gB.height);
gB.translate(xPos, yPos);
gB.fill(map(noise(i * 10, j * 10, frameCount * 0.001), 0, 1, 360, 180), 360, 360);
gB.rect(gBRes * 0.05, gBRes * 0.05, gBRes * 0.09, gBRes * 0.09);
image(gB, width * 0.5, height * 0.5, width, height);
var sectorSize = width / gridResolution;
for (var i = 0; i < gridResolution; i += 1) {
for (var j = 0; j < gridResolution; j += 1) {
var xPos = map(i, 0, gridResolution, 0, width);
var yPos = map(j, 0, gridResolution, 0, height);
var sectorI = ~~(map(noise(i * 10), 0, 1, 0, gridResolution));
var sectorJ = ~~(map(noise(j * 10), 0, 1, 0, gridResolution));
var sectorPositionX = map(sectorI, 0, gridResolution, 0, gBRes);
var sectorPositionY = map(sectorJ, 0, gridResolution, 0, gBRes);
var sectorPositionSize = gBRes / gridResolution;
image(gB, sectorSize * 0.5, sectorSize * 0.5, sectorSize, sectorSize, sectorPositionX, sectorPositionY, sectorPositionSize, sectorPositionSize);
screenSize = min(windowWidth, windowHeight);
function windowResized() {
resizeCanvas(screenSize, screenSize);
function mouseClicked() {
showOverlay = !showOverlay;