shader_type canvas_item;
uniform sampler2D opref;
uniform int operation;
uniform vec4 premult : hint_color;

void fragment(){
	vec3 self_col = texture(TEXTURE, UV).rgb * premult.rgb;
	vec3 back_col = texture(SCREEN_TEXTURE, SCREEN_UV).rgb;
	vec3 out_col;
	if(operation == 0){
		out_col.r = texture(opref, vec2(self_col.r, back_col.r)).r;
		out_col.g = texture(opref, vec2(self_col.g, back_col.g)).r;
		out_col.b = texture(opref, vec2(self_col.b, back_col.b)).r;
	}else if(operation == 1){
		out_col.r = texture(opref, vec2(self_col.r, back_col.r)).g;
		out_col.g = texture(opref, vec2(self_col.g, back_col.g)).g;
		out_col.b = texture(opref, vec2(self_col.b, back_col.b)).g;
	} else if(operation == 2){
		out_col.r = texture(opref, vec2(self_col.r, back_col.r)).b;
		out_col.g = texture(opref, vec2(self_col.g, back_col.g)).b;
		out_col.b = texture(opref, vec2(self_col.b, back_col.b)).b;
	}
	
	
	COLOR.rgb = out_col;
	COLOR.a = texture(TEXTURE, UV).a;
}