30 lines
641 B
GLSL
30 lines
641 B
GLSL
#version 450
|
|
|
|
// Set 1: shape
|
|
layout(set = 1, binding = 1) uniform Colors {
|
|
vec4 mult_color;
|
|
vec4 add_color;
|
|
};
|
|
|
|
// Set 2: bitmap
|
|
layout(set = 2, binding = 1) uniform texture2D t_color;
|
|
|
|
// Set 3: sampler
|
|
layout(set = 3, binding = 0) uniform sampler s_color;
|
|
|
|
layout(location=0) in vec2 frag_uv;
|
|
|
|
layout(location=0) out vec4 out_color;
|
|
|
|
void main() {
|
|
|
|
vec4 color = texture(sampler2D(t_color, s_color), frag_uv);
|
|
// Unmultiply alpha before apply color transform.
|
|
if( color.a > 0 ) {
|
|
color.rgb /= color.a;
|
|
color = mult_color * color + add_color;
|
|
color.rgb *= color.a;
|
|
}
|
|
|
|
out_color = color;
|
|
} |