#version 450 layout(location = 1) in vec2 texCoord; layout(location = 0) out vec4 outColor; layout(set = 2, binding = 0) uniform sampler2D texSampler; layout(set = 3, binding = 0) uniform TextConfig { vec4 textColor; vec4 backgroundColor; float threshold; float smoothing; } textConfig; void main() { float distance = texture(texSampler, texCoord).r; float alpha = smoothstep(textConfig.threshold - textConfig.smoothing, textConfig.threshold + textConfig.smoothing, distance); outColor = vec4(textConfig.textColor) * alpha; if (textConfig.backgroundColor.a != 0) { outColor = mix(textConfig.backgroundColor, outColor, alpha); } }