local patterns = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, { 0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 }, { 0x88, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00 }, { 0x88, 0x00, 0x20, 0x00, 0x88, 0x00, 0x02, 0x00 }, { 0x88, 0x00, 0x22, 0x00, 0x88, 0x00, 0x22, 0x00 }, { 0xa8, 0x00, 0x22, 0x00, 0x8a, 0x00, 0x22, 0x00 }, { 0xaa, 0x00, 0x22, 0x00, 0xaa, 0x00, 0x22, 0x00 }, { 0xaa, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0x2a, 0x00 }, { 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00, 0xaa, 0x00 }, { 0xaa, 0x40, 0xaa, 0x00, 0xaa, 0x04, 0xaa, 0x00 }, { 0xaa, 0x44, 0xaa, 0x00, 0xaa, 0x44, 0xaa, 0x00 }, { 0xaa, 0x44, 0xaa, 0x10, 0xaa, 0x44, 0xaa, 0x01 }, { 0xaa, 0x44, 0xaa, 0x11, 0xaa, 0x44, 0xaa, 0x11 }, { 0xaa, 0x54, 0xaa, 0x11, 0xaa, 0x45, 0xaa, 0x11 }, { 0xaa, 0x55, 0xaa, 0x11, 0xaa, 0x55, 0xaa, 0x11 }, { 0xaa, 0x55, 0xaa, 0x51, 0xaa, 0x55, 0xaa, 0x15 }, { 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 }, { 0xba, 0x55, 0xaa, 0x55, 0xab, 0x55, 0xaa, 0x55 }, { 0xbb, 0x55, 0xaa, 0x55, 0xbb, 0x55, 0xaa, 0x55 }, { 0xbb, 0x55, 0xea, 0x55, 0xbb, 0x55, 0xae, 0x55 }, { 0xbb, 0x55, 0xee, 0x55, 0xbb, 0x55, 0xee, 0x55 }, { 0xfb, 0x55, 0xee, 0x55, 0xbf, 0x55, 0xee, 0x55 }, { 0xff, 0x55, 0xee, 0x55, 0xff, 0x55, 0xee, 0x55 }, { 0xff, 0x55, 0xfe, 0x55, 0xff, 0x55, 0xef, 0x55 }, { 0xff, 0x55, 0xff, 0x55, 0xff, 0x55, 0xff, 0x55 }, { 0xff, 0x55, 0xff, 0xd5, 0xff, 0x55, 0xff, 0x5d }, { 0xff, 0x55, 0xff, 0xdd, 0xff, 0x55, 0xff, 0xdd }, { 0xff, 0x75, 0xff, 0xdd, 0xff, 0x57, 0xff, 0xdd }, { 0xff, 0x77, 0xff, 0xdd, 0xff, 0x77, 0xff, 0xdd }, { 0xff, 0x77, 0xff, 0xfd, 0xff, 0x77, 0xff, 0xdf }, { 0xff, 0x77, 0xff, 0xff, 0xff, 0x77, 0xff, 0xff }, { 0xff, 0xf7, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff }, { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff } }; gfx = playdate.graphics local s,ms = playdate.getSecondsSinceEpoch() math.randomseed(ms,s) local perlin_x = math.random() * 100 local perlin_y = math.random() * 100 local perlin_z = math.random() * 100 local scale = 6 function lerp(minVal, maxVal, f) -- Linear interpolate. perlin_lerp(0, 255, 0.5) == 127.5 return minVal + f * (maxVal - minVal) end local x,y gfx.setColor(gfx.kColorWhite) gfx.fillRect(0, 0, 400, 240) function playdate.update() gfx.setColor(gfx.kColorWhite) gfx.fillRect(0, 0, 400, 240) gfx.setColor(gfx.kColorBlack) local py = perlin_y for y = 0, 239, 8 do local px = perlin_x py += 0.1 for x = 0, 399, 8 do px += 0.1 local p = gfx.perlin(px / scale, py / scale, perlin_z / scale, 0, 6, 0.4) --print(p, #patterns) gfx.setPattern(patterns[math.floor((p + 1) * #patterns / 2)]) gfx.fillRect(x, y, 8, 8) end end perlin_x += 0.1 perlin_y += 0.1 perlin_z += 0.00001 end