#version 450

// 3-tap gaussian blur 
// exploiting linear filtering with -1.2 0 +1.2 texture offsets and 5 6 5 weighting
// to emulate 5-tap blur

layout(set = 0, binding = 0) uniform sampler2D texture0;

layout(location = 0) in vec2 tex_coord0;

layout(location = 0) out vec4 out_color;

layout(constant_id = 0) const float texoffset_x = 0.0;
layout(constant_id = 1) const float texoffset_y = 0.0;

void main()
{
	vec2 tex_coord1 = tex_coord0;
	vec2 tex_coord2 = tex_coord0;

	tex_coord1.x += texoffset_x;
	tex_coord1.y += texoffset_y;

	tex_coord2.x -= texoffset_x;
	tex_coord2.y -= texoffset_y;

	vec3 base = texture(texture0, tex_coord0).rgb * (6.0 / 16.0)
		+ texture(texture0, tex_coord1).rgb * (5.0 / 16.0)
		+ texture(texture0, tex_coord2).rgb * (5.0 / 16.0);

	out_color = vec4( base, 1.0 );
}
