"vec4 blend(vec4 fore) \n"\r
"{ \n"\r
" vec4 back = texture2D(background, gl_TexCoord[1].st).bgra; \n"\r
- " fore.rgb = get_blend_color(back.rgb, fore.rgb); \n"\r
- " return fore + (1.0-fore.a)*back; \n"\r
+ " if(blend_mode != 0) \n"\r
+ " fore.rgb = get_blend_color(back.rgb/(back.a+0.0000001), fore.rgb/(fore.a+0.0000001))*fore.a;\n"\r
+ " switch(keyer) \n" \r
+ " { \n" \r
+ " case 1: return fore + back; // additive \n"\r
+ " default: return fore + (1.0-fore.a)*back; // linear \n"\r
+ " } \n"\r
"} \n"; \r
}\r
\r
"uniform bool has_local_key; \n"\r
"uniform bool has_layer_key; \n"\r
"uniform int blend_mode; \n"\r
+ "uniform int keyer; \n"\r
"uniform int pixel_format; \n"\r
" \n"\r
"uniform float opacity; \n"\r