29 lines
943 B
Plaintext
29 lines
943 B
Plaintext
varying vec2 uv, uv1, uv2;
|
|
uniform sampler2D textures[3];
|
|
uniform vec4 sprite1;
|
|
uniform vec4 sprite2;
|
|
uniform float fade;
|
|
|
|
vec4 alphaBlend(vec4 dest, vec4 src) {
|
|
float alpha = src.a + (dest.a * (1.0 - src.a));
|
|
return vec4( ((src.rgb * src.a) + (dest.rgb * dest.a * (1.0 - src.a))) / alpha, alpha);
|
|
}
|
|
|
|
void main() {
|
|
vec4 result = texture2D(textures[0],uv);
|
|
result.rgb *= gl_Color.rgb;
|
|
|
|
vec4 icon1 = texture2D(textures[1], mix(sprite1.xy, sprite1.zw, uv1));
|
|
icon1.rgb = (fade * icon1.rgb) + ((1.0 - fade) * gl_Color.rgb);
|
|
if(all(bvec4( greaterThanEqual(uv1, vec2(0.0)), lessThanEqual(uv1, vec2(1.0)))))
|
|
result = alphaBlend( result, icon1 );
|
|
|
|
vec4 icon2 = texture2D(textures[2], mix(sprite2.xy, sprite2.zw, uv2));
|
|
icon2.a *= fade;
|
|
if(all(bvec4( greaterThanEqual(uv2, vec2(0.0)), lessThanEqual(uv2, vec2(1.0)))))
|
|
result = alphaBlend( result, icon2 );
|
|
|
|
result.a *= gl_Color.a;
|
|
gl_FragColor = result;
|
|
}
|