#version 140

uniform vec2 p;

in vec4 position;
in vec4 icol;

out vec4 col;
flat out ivec4 colint;

void main (void)
{
    gl_Position = vec4(p, 0.0, 0.0) + position;

    // integers & vertex ID & instance ID
    colint.x = gl_VertexID;
    colint.y = gl_InstanceID ^ gl_InstanceID;
    colint.z = gl_InstanceID << 2;
    colint.w = colint.x + colint.y;

    // new built-ins
    col.x = trunc(position.x);
    col.y = round(position.y);
    col.z = roundEven(position.y);
    col.w = cosh(position.w);
}
