The fragment shader wanted a vec4 position, so I gave it a vec4 position.  Compare to the (unchanged, and working) pass2 to see what I meant.