
    x: r(-1, 1),
    y: r(-1, 1),
   color: [0, r(0, 1), r(0, 1), 1],
   size: r(15, 55),
  });
}

function r(min, max) {
  return Math.random() * (max - min) + min;
}

let px = -10;
let py = -10;
function render() {
  gl.useProgram(prg);
  
  // convert mouse to clipspace
  const cx = px / gl.canvas.width  *  2 - 1;
  const cy = py / gl.canvas.height * -2 + 1;

  for (const point of points) {
    const {x, y, color, size} = point;
    // size to clip size
    const halfClipWidth = size / gl.canvas.width;
