why did you switch to vec4 here when you're just passing vec3 to the fragment shader?