#version 330 core

layout(location=0) out vec4 vFragColor;	//wyjście shadera fragmentów
uniform mat4 MV;				//macierz modelu i widoku
uniform vec3 light_direction;	//kierunek światła w przestrzeni obiektu
uniform vec3 diffuse_color;		//kolor światła rozpraszanego

//dane wejściowe z shadera wierzchołków
smooth in vec3 vEyeSpaceNormal;	//interpolowany wektor normalny w przestrzeni oka      

void main() { 
	//mnożenie kierunku światła z przestrzeni obiektu przez macierz modelu i widoku 
	//w celu wyznaczenia kierunku swiatła w przestrzeni oka
	vec4 vEyeSpaceLightDirection = MV*vec4(light_direction,0);
	//normalizacja kierunku światła w celu uzyskania wektora światła 
	vec3 L = normalize(vEyeSpaceLightDirection.xyz); 
	//obliczanie składowej rozproszenia
	float diffuse = max(0, dot(vEyeSpaceNormal, L));	 
	//wyprowadzenie iloczynu składowej rozproszenia i koloru rozproszenia 
	//jako koloru fragmentu
	vFragColor =  diffuse*vec4(diffuse_color,1);	 
}