10 lines
501 B
GLSL
10 lines
501 B
GLSL
mediump float blend_stroke(mediump float base, mediump float stroke, int mode)
|
|
{
|
|
if (mode == 0) /* normal */ return (base + stroke) * 0.5;
|
|
else if (mode == 1) /* multiply */ return base * stroke;
|
|
else if (mode == 2) /* screen */ return 1.0-(1.0-base)*(1.0-stroke);
|
|
else if (mode == 3) /* color-dodge */ return base/(1.0-stroke);
|
|
else if (mode == 4) /* overlay */ return mix(2.0*base*stroke, 1.0-2.0*(1.0-base)*(1.0-stroke), floor(base*2.0));
|
|
else return 1.0;
|
|
}
|