ruffle/render/wgpu/shaders/bitmap.frag

30 lines
687 B
GLSL

#version 450
// Push constants: matrix + color
layout(push_constant) uniform FragmentPushConstants {
layout(offset = 64) vec4 mult_color;
vec4 add_color;
};
// Set 2: bitmap
layout(set = 1, binding = 1) uniform texture2D t_color;
// Set 3: sampler
layout(set = 2, 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;
}