#version 330 core
   
layout(location=0) in vec3 vVertex; //położenie wierzchołka w przestrzeni obiektu

//uniform
uniform mat4 MVP;	//połączona macierz modelu, widoku i rzutowania
 
//wyjście shadera wierzchołków
smooth out vec4 color;	

const vec4 colors[8]=vec4[8](vec4(1,0,0,1), vec4(0,1,0,1), vec4(0,0,1,1),
							 vec4(1,1,0,1), vec4(0,1,1,1), vec4(1,0,1,1),
							 vec4(0.5,0.5,0.5,1),  vec4(1,1,1,1)) ;
 
void main()
{ 	 	 
	//nożenie położenia wierzchołka przez połączoną macierz modelu, widoku i rzutowania 
    //w celu uzyskania położenia w przestrzeni przycięcia
	gl_Position = MVP*vec4(vVertex,1);
	//pobieranie koloru cząstki z tablicy stałych kolorów z użyciem gl_VertexID jako indeksem
	color = colors[gl_VertexID/4]; 
}