uniform sampler2D base_in; uniform sampler2D blend_in; uniform bool base_in_enabled; uniform bool blend_in_enabled; varying vec2 ove_texcoord; void main(void) { vec4 base_col = texture2D(base_in, ove_texcoord); vec4 blend_col = texture2D(blend_in, ove_texcoord); if (!base_in_enabled && !blend_in_enabled) { gl_FragColor = vec4(0.0); return; } if (!base_in_enabled) { gl_FragColor = blend_col; return; } if (!blend_in_enabled) { gl_FragColor = base_col; return; } base_col *= 1.0 - blend_col.a; base_col += blend_col; gl_FragColor = base_col; }