#version 330 core

layout(location=0) out vec4 vFragColor;			//wyjście shadera fragmentów

//uniformy
uniform samplerCube cubeMap;	//sampler tekstury sześciennej
uniform vec3 eyePosition;		//położenie oka w przestrzeni obiektu
//input from the vertex shader
smooth in vec3 position;		//położenie w przestrzeni obiektu
smooth in vec3 normal;			//wektor normalny w przestrzeni obiektu


void main() { 
	//normalizacja wektora normalnego
	vec3 N = normalize(normal);

	//wyznaczanie znormalizowanego wektora patrzenia na podstawie
	//położeń wierzchołka i kamery w przestrzeni obiektu
	vec3 V = normalize(position-eyePosition);

	//odbijanie wektora patrzenia względem wektora normalnego i na podstawie tego odbicia 
	//wybieranie próbki z tekstury sześciennej  
	vFragColor = texture(cubeMap, reflect(V,N));	 
}