#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; void main() { vec4 sampled = texture(texSampler, texCoord); float alpha = max(sampled.r, max(sampled.g, sampled.b)); outColor = vec4(color) * vec4(sampled.rgb, alpha); if (bgColor.a != 0) { outColor = mix(bgColor, outColor, alpha); } }