Variable data types

Will be shared between attributes and uniforms.