// Copyright 2016 Intel Corporation All Rights Reserved
// 
// Intel makes no representations about the suitability of this software for any purpose.
// THIS SOFTWARE IS PROVIDED ""AS IS."" INTEL SPECIFICALLY DISCLAIMS ALL WARRANTIES,
// EXPRESS OR IMPLIED, AND ALL LIABILITY, INCLUDING CONSEQUENTIAL AND OTHER INDIRECT DAMAGES,
// FOR THE USE OF THIS SOFTWARE, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PROPRIETARY
// RIGHTS, AND INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// Intel does not assume any responsibility for any errors which may appear in this software
// nor any responsibility to update it.

#version 450
/*
layout(push_constant) uniform u_UniformBuffer 
{
	mat4 u_ProjMat;
	mat4 u_WorldMat;
	vec4 u_PureColor;
};
*/
layout(push_constant) uniform u_UniformBufferVS 
{
	mat4 u_ProjMat;
	vec4 u_WorldXYZ;
	vec4 u_PureColor;
}UniformBufferVS;


layout(location = 0) in vec2 i_Position;
layout(location = 1) in vec2 i_Texcoord;

out gl_PerVertex
{
	vec4 gl_Position;
};

layout(location = 0) out vec2 v_Texcoord;
layout(location = 1) out vec4 v_Color;

void main() 
{
	/*
	gl_Position = u_WorldMat * vec4(i_Position.xy, 0.0, 1.0);
	gl_Position = u_ProjMat * vec4(gl_Position.xyz, 1.0);

	v_Texcoord = (gl_Position.xy + vec2(1.0, 1.0)) * 0.5; // Debug
	v_Color = u_PureColor;
	*/
	
	gl_Position = vec4(i_Position.xy, 0.0, 1.0) + UniformBufferVS.u_WorldXYZ;
	gl_Position = UniformBufferVS.u_ProjMat * vec4(gl_Position.xyz, 1.0);

	v_Texcoord = (gl_Position.xy + vec2(1.0, 1.0)) * 0.5; // Debug
	v_Color = UniformBufferVS.u_PureColor;
}
