User-defined inputs for vertex shaders are called vertex attributes.
They are passed via vertex arrays to the vertex shader from data stored in Buffer Objects.
Vertex shader inputs have attribute location indices
that are used in vertex specification to identify a particular input.
Most input variables take up only one attribute location index, but certain types (matrices, array inputs, and some double-precision types) can take up more than one index.