Files
OpenVulkano/openVulkanoCpp/Shader/text.frag
2024-08-06 10:32:55 +03:00

34 lines
976 B
GLSL

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