Metal is picky about interface matching. If the types of a vertex output and its corresponding fragment input don't match, down to the number of vector components, it fails pipeline compilation. To support cases where the number of components in the fragment input is less than the corresponding vertex output, we need to fix up the fragment shader to accept the extra components.