#version 450

layout(location = 0) in vec4 color;
layout(location = 1) in vec4 bgColor;
layout(location = 2) in vec2 texCoord;

layout(location = 0) out vec4 outColor;

layout(set = 2, binding = 0) uniform sampler2D texSampler;

const float threshold = 0.4f;
const float smoothing = 1.f/32.f;

void main()
{
    float distance = texture(texSampler, texCoord).r;
    float alpha = smoothstep(threshold - smoothing, threshold + smoothing, distance);
    outColor = vec4(color) * alpha;

    if (bgColor.a != 0)
    {
        outColor = mix(bgColor, outColor, alpha);
    }
}
