#version 330 core

layout(location=0) out vec4 vFragColor;		//Wyjście shadera fragmentów
//input from the vertex shader
smooth in vec4 clipSpacePos;	//położenie wierzchołka w przestrzeni przycięcia

void main()
{
	//wyznaczanie współrzędnych jednorodnych
	vec3 pos = clipSpacePos.xyz/clipSpacePos.w;

	//przesunięcie likwidujące artefakty
	pos.z += 0.001;	

	//przesuwanie głębi do przedziału (0; 1)
	float depth = (pos.z +1)*0.5; 

	//głębia jako moment pierwszego rzędu
	float moment1 = depth;
	
	//kwadrat głębi jako moment drugiego rzędu
	float moment2 = depth * depth; //zaczerpnięte z głównej pracy na temat wariacyjnego mapowania cieni

	//z rozdziału 8.- GPU Gems 3
	//float dx = dFdx(depth);
	//float dy = dFdy(depth); 
	//float moment2 = depth*depth + 0.25*(dx*dx + dy*dy);

	//zapis momentów w kanałach red i green koloru wyjściowego
	vFragColor = vec4(moment1,moment2,0,0);
}