
layout (location = 0) in vec3 pos;

#ifdef TEXTURE
layout (location = TEXTURE) in vec2 uvIn;
out vec2 uvOut;
#endif

#ifdef COLOR
layout (location = COLOR) in vec4 colorIn;
out vec4 vertexColor;
#endif

#ifdef HUE_SHIFT
layout (location = HUE_SHIFT) in float hueShiftIn;
out float hueShiftOut;
#endif

uniform mat3 viewMatrix; // projection (viewport) + camera
uniform mat3 modelMatrix; // local transformations

void main() {
	vec3 result = viewMatrix * modelMatrix * pos;
	gl_Position = vec4(result.x, result.y, 0.0, result.z);

#ifdef HUE_SHIFT
	hueShiftOut = hueShiftIn;
#endif

#ifdef COLOR
	vertexColor = colorIn;
#endif

#ifdef TEXTURE
	uvOut = uvIn;
#endif
}
