#version 450

layout (location = 0) in vec3 vertexWorldSpacePosition;
layout (location = 1) in vec3 vertexViewSpacePosition;
layout (location = 2) in vec2 vertexTexCoords;
layout (location = 3) in vec3 vertexViewSpaceNormal;

layout (location = 0) out vec4 fragAlbedo;
layout (location = 1) out vec4 fragWorldSpacePosition;
layout (location = 2) out vec4 fragViewSpacePosition;
layout (location = 3) out vec4 fragViewSpaceNormal;

layout (binding = 0) uniform sampler2D albedoTextureID;

uniform vec3 albedoColor;

void main()
{    
  	// Texturing
	vec2 flipped_texcoord = vec2(vertexTexCoords.x, 1.0 - vertexTexCoords.y);
	vec4 texelColor = texture(albedoTextureID, flipped_texcoord);
	
	// Discard fragment if transparent
	if (texelColor.a < 0.5f)
	{
	    discard;
	}
	
	// Final color
	fragAlbedo = vec4(texelColor.rgb*albedoColor, texelColor.a);
	fragWorldSpacePosition = vec4(vertexWorldSpacePosition, 1);
	fragViewSpacePosition = vec4(vertexViewSpacePosition, 1);
	fragViewSpaceNormal = vec4(vertexViewSpaceNormal, 1);
}
