n = matrix * position;
}
`;
const fs = `
precision highp float;
void main() {
  gl_FragColor = vec4(0, 1, 0, 1);
}
`;

const program = twgl.createProgram(gl, [vs, fs]);
const positionLoc = gl.getAttribLocation(program, 'position');
const matrixLoc = gl.getUniformLocation(program, 'matrix');

const gridWidth = 40;
const gridDepth = 40;
const gridPoints = [];
for (let z = 0; z <= gridDepth; ++z) {
  for (let x = 0; x <= gridWidth; ++x) {
    gridPoints.push(x, 0, z);
  }
}

const gridIndices = [];
const rowSt