let fx = params.center_x + nx * params.zoom * aspect;
let fy = params.center_y + ny * params.zoom;
let max_iter = min(270.0, 32.0 + sqrt(16.0 / params.zoom));
let o = params.zoom * 0.2 / f32(W);
let iter = pow((mandelbrot(fx + o, fy + o, max_iter) + mandelbrot(fx + o, fy - o, max_iter) + mandelbrot(fx - o, fy + o, max_iter) + mandelbrot(fx - o, fy - o, max_iter)) * 0.25, 1.0);
// https://flatuicolors.com/palette/defo
var amethyst = vec3<f32>(155.0/255.0, 89.0/255.0, 182.0/255.0);
var wet_asphalt = vec3<f32>(52.0/255.0, 73.0/255.0, 94.0/255.0);
var emerald = vec3<f32>(46.0/255.0, 204.0/255.0, 113.0/255.0);
var sunflower = vec3<f32>(241.0/255.0, 196.0/255.0, 15.0/255.0);
var alizarin = vec3<f32>(231.0/255.0, 76.0/255.0, 60.0/255.0);
var pomegranate = vec3<f32>(192.0/255.0, 57.0/255.0, 43.0/255.0);
var peter_river = vec3<f32>(52.0/255.0, 152.0/255.0, 219.0/255.0);
var midnight_blue = vec3<f32>(44.0/255.0, 62.0/255.0, 80.0/255.0);
let count: i32 = 8;
var stops = array<vec3<f32>, 8>(
midnight_blue,
alizarin,
wet_asphalt,
amethyst,
peter_river,
pomegranate,
sunflower,
vec3<f32>(0.1, 0.1, 0.1)
);
let i = i32(iter * f32(count - 1));
let color = mix(stops[i], stops[i + 1], smoothStep(f32(i) / f32(count - 1), f32(i + 1) / f32(count - 1), iter));