struct VSOut {
	vec4 colour;
	vec2 uv;
};

layout( std140 ) uniform window {
	uvec2 window_size;
};

#if VERTEX_SHADER

in vec3 position;
in vec4 colour;
in vec2 tex_coord0;

out VSOut v2f;

void main() {
	vec3 screen_position = vec3(
		( position.x / window_size.x * 2.0 - 1.0 ),
		-( position.y / window_size.y * 2.0 - 1.0 ),
		position.z
	);
	gl_Position = vec4( screen_position, 1.0 );
	v2f.colour = colour;
	v2f.uv = tex_coord0;
}

#else

in VSOut v2f;

uniform sampler2D atlas;

out vec4 screen_colour;

void main() {
	float alpha = texture( atlas, v2f.uv ).r;
	screen_colour = vec4( v2f.colour.rgb, v2f.colour.a * alpha );
}

#endif
