You need to declare UnpackValuesbefore you call it. GLSL is similar to C and C ++; names must have a declaration before they can be used.
BTW: , , . - ; GLSL 4.00 (, "", , ), . , ; .
GLSL C ++ ( ).
, OpenGL, . vec4, :
glVertexAttribPointer(X, 4, GL_UNSIGNED_BYTE, GL_TRUE, 8, *);
glVertexAttribPointer(Y, 4, GL_UNSIGNED_BYTE, GL_TRUE, 8, * + 4);
vec4 . glVertexAttrib I, OpenGL , , float.