result =vec4(1.0)-((vec4(1.0)- blend)*(vec4(1.0)- base));
darken:
result =min( blend, base );
lighten:
result =max( blend, base );
difference:
result =abs( base - blend );
negation:
result =vec4(1.0)-abs(vec4(1.0)- base - blend );
exclusion:
result = base + blend -(2.0*base*blend);
overlay:
# per channel:if(base <0.5){
result =2.0* base * blend;}else{
result =vec4(1.0)-2.0*(vec4(1.0)- blend)*(vec4(1.0)- base);}
hard light:
# per channel:if(blend <0.5){
result =2.0* base * blend;}else{
result =vec4(1.0)-2.0*(vec4(1.0)- blend)*(vec4(1.0)- base);}
soft light:
# per channel:if(blend <0.5){
result =2.0* base * blend + base*base -2.0* base*base*blend;}else{
result =2.0*sqrt(base)* blend -sqrt(base)+2.0* base -2.0* base*blend;}