int r, int g, int b, int a,
Eina_Bool smooth)
{
- int pnum, nv, nc, nu, nu2, nu3, i;
+ int pnum, nv, nc, nu, nu2, nu3, na, i;
GLfloat tx1, tx2, ty1, ty2, t2x1, t2x2, t2y1, t2y2;
Eina_Bool blend = 0;
GLuint prog;
if (a < 255) blend = 1;
-#warning YUV+mask
prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
SHADER_YUV_NOMUL, SHADER_YUV,
- SHADER_YUV_NOMUL, SHADER_YUV)].prog;
+ SHADER_YUV_MASK, SHADER_YUV_MASK)].prog;
pn = _evas_gl_common_context_push(RTYPE_YUV,
gc, tex,
gc->pipe[pn].shader.cur_tex = tex->pt->texture;
gc->pipe[pn].shader.cur_texu = tex->ptu->texture;
gc->pipe[pn].shader.cur_texv = tex->ptv->texture;
+ gc->pipe[pn].shader.cur_texa = mtex ? mtex->pt->texture : 0;
gc->pipe[pn].shader.cur_prog = prog;
gc->pipe[pn].shader.smooth = smooth;
gc->pipe[pn].shader.blend = blend;
gc->pipe[pn].array.use_texuv = 1;
gc->pipe[pn].array.use_texuv2 = 1;
gc->pipe[pn].array.use_texuv3 = 1;
- gc->pipe[pn].array.use_texa = 0;
+ gc->pipe[pn].array.use_texa = !!mtex;
gc->pipe[pn].array.use_texsam = 0;
pipe_region_expand(gc, pn, x, y, w, h);
pnum = gc->pipe[pn].array.num;
- nv = pnum * 3; nc = pnum * 4; nu = pnum * 2;
+ nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; na = pnum * 2;
nu2 = pnum * 2; nu3 = pnum * 2;
gc->pipe[pn].array.num += 6;
array_alloc(gc, pn);
PUSH_TEXUV3(pn, t2x2, t2y2);
PUSH_TEXUV3(pn, t2x1, t2y2);
+ if (mtex)
+ {
+ t2x1 = (mtex->x + mx) / (double)mtex->pt->w;
+ t2y1 = (mtex->y + my) / (double)mtex->pt->h;
+ t2x2 = (mtex->x + mx + mw) / (double)mtex->pt->w;
+ t2y2 = (mtex->y + my + mh) / (double)mtex->pt->h;
+
+ PUSH_TEXA(pn, t2x1, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x1, t2y2);
+
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y2);
+ PUSH_TEXA(pn, t2x1, t2y2);
+ }
+
for (i = 0; i < 6; i++)
{
PUSH_COLOR(pn, r, g, b, a);
int r, int g, int b, int a,
Eina_Bool smooth)
{
- int pnum, nv, nc, nu, nu2, i;
+ int pnum, nv, nc, nu, nu2, na, i;
GLfloat tx1, tx2, ty1, ty2, t2x1, t2x2, t2y1, t2y2;
Eina_Bool blend = 0;
GLuint prog;
if (a < 255) blend = 1;
-#warning mask
prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
SHADER_YUY2_NOMUL, SHADER_YUY2,
- SHADER_YUY2_NOMUL, SHADER_YUY2)].prog;
+ SHADER_YUY2_MASK, SHADER_YUY2_MASK)].prog;
pn = _evas_gl_common_context_push(RTYPE_YUY2,
gc, tex,
gc->pipe[pn].region.type = RTYPE_YUY2;
gc->pipe[pn].shader.cur_tex = tex->pt->texture;
gc->pipe[pn].shader.cur_texu = tex->ptuv->texture;
+ gc->pipe[pn].shader.cur_texa = mtex ? mtex->pt->texture : 0;
gc->pipe[pn].shader.cur_prog = prog;
gc->pipe[pn].shader.smooth = smooth;
gc->pipe[pn].shader.blend = blend;
gc->pipe[pn].array.use_texuv = 1;
gc->pipe[pn].array.use_texuv2 = 1;
gc->pipe[pn].array.use_texuv3 = 0;
- gc->pipe[pn].array.use_texa = 0;
+ gc->pipe[pn].array.use_texa = !!mtex;
gc->pipe[pn].array.use_texsam = 0;
pipe_region_expand(gc, pn, x, y, w, h);
pnum = gc->pipe[pn].array.num;
- nv = pnum * 3; nc = pnum * 4; nu = pnum * 2;
+ nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; na = pnum * 2;
nu2 = pnum * 2;
gc->pipe[pn].array.num += 6;
array_alloc(gc, pn);
PUSH_TEXUV2(pn, t2x2, t2y2);
PUSH_TEXUV2(pn, t2x1, t2y2);
+ if (mtex)
+ {
+ t2x1 = (mtex->x + mx) / (double)mtex->pt->w;
+ t2y1 = (mtex->y + my) / (double)mtex->pt->h;
+ t2x2 = (mtex->x + mx + mw) / (double)mtex->pt->w;
+ t2y2 = (mtex->y + my + mh) / (double)mtex->pt->h;
+
+ PUSH_TEXA(pn, t2x1, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x1, t2y2);
+
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y2);
+ PUSH_TEXA(pn, t2x1, t2y2);
+ }
+
for (i = 0; i < 6; i++)
{
PUSH_COLOR(pn, r, g, b, a);
int r, int g, int b, int a,
Eina_Bool smooth)
{
- int pnum, nv, nc, nu, nu2, i;
+ int pnum, nv, nc, nu, nu2, na, i;
GLfloat tx1, tx2, ty1, ty2, t2x1, t2x2, t2y1, t2y2;
Eina_Bool blend = 0;
GLuint prog;
if (a < 255) blend = 1;
-#warning mask
prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, !!mtex,
SHADER_NV12_NOMUL, SHADER_NV12,
- SHADER_NV12_NOMUL, SHADER_NV12)].prog;
+ SHADER_NV12_MASK, SHADER_NV12_MASK)].prog;
pn = _evas_gl_common_context_push(RTYPE_NV12,
gc, tex,
gc->pipe[pn].shader.cur_tex_dyn = tex->pt->dyn.img;
gc->pipe[pn].shader.cur_texu = tex->ptuv->texture;
gc->pipe[pn].shader.cur_texu_dyn = tex->ptuv->dyn.img;
+ gc->pipe[pn].shader.cur_texa = mtex ? mtex->pt->texture : 0;
gc->pipe[pn].shader.cur_prog = prog;
gc->pipe[pn].shader.smooth = smooth;
gc->pipe[pn].shader.blend = blend;
gc->pipe[pn].array.use_texuv = 1;
gc->pipe[pn].array.use_texuv2 = 1;
gc->pipe[pn].array.use_texuv3 = 0;
- gc->pipe[pn].array.use_texa = 0;
+ gc->pipe[pn].array.use_texa = !!mtex;
gc->pipe[pn].array.use_texsam = 0;
pipe_region_expand(gc, pn, x, y, w, h);
pnum = gc->pipe[pn].array.num;
- nv = pnum * 3; nc = pnum * 4; nu = pnum * 2;
+ nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; na = pnum * 2;
nu2 = pnum * 2;
gc->pipe[pn].array.num += 6;
array_alloc(gc, pn);
PUSH_TEXUV2(pn, t2x2, t2y2);
PUSH_TEXUV2(pn, t2x1, t2y2);
+ if (mtex)
+ {
+ t2x1 = (mtex->x + mx) / (double)mtex->pt->w;
+ t2y1 = (mtex->y + my) / (double)mtex->pt->h;
+ t2x2 = (mtex->x + mx + mw) / (double)mtex->pt->w;
+ t2y2 = (mtex->y + my + mh) / (double)mtex->pt->h;
+
+ PUSH_TEXA(pn, t2x1, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x1, t2y2);
+
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y2);
+ PUSH_TEXA(pn, t2x1, t2y2);
+ }
+
for (i = 0; i < 6; i++)
{
PUSH_COLOR(pn, r, g, b, a);
GLuint prog;
int pn;
-#warning rgba+a+mask
prog = gc->shared->shader[evas_gl_common_shader_choice
(0, NULL, r, g, b, a, !!mtex,
SHADER_RGB_A_PAIR_NOMUL, SHADER_RGB_A_PAIR,
- SHADER_RGB_A_PAIR_NOMUL, SHADER_RGB_A_PAIR)].prog;
+ SHADER_RGB_A_PAIR_MASK, SHADER_RGB_A_PAIR_MASK)].prog;
pn = _evas_gl_common_context_push(RTYPE_IMAGE,
gc, tex,
gc->pipe[pn].region.type = RTYPE_IMAGE;
gc->pipe[pn].shader.cur_tex = tex->pt->texture;
gc->pipe[pn].shader.cur_texa = tex->pta->texture;
+#warning FIXME: must add texm instead
+ //gc->pipe[pn].shader.cur_texu = mtex ? mtex->pt->texture : 0;
gc->pipe[pn].shader.cur_prog = prog;
gc->pipe[pn].shader.smooth = smooth;
gc->pipe[pn].shader.blend = EINA_TRUE;
PUSH_TEXA(pn, t2x2, t2y2);
PUSH_TEXA(pn, t2x1, t2y2);
+ /*
+ if (mtex)
+ {
+ t2x1 = (mtex->x + mx) / (double)mtex->pt->w;
+ t2y1 = (mtex->y + my) / (double)mtex->pt->h;
+ t2x2 = (mtex->x + mx + mw) / (double)mtex->pt->w;
+ t2y2 = (mtex->y + my + mh) / (double)mtex->pt->h;
+
+ PUSH_TEXM(pn, t2x1, t2y1);
+ PUSH_TEXM(pn, t2x2, t2y1);
+ PUSH_TEXM(pn, t2x1, t2y2);
+
+ PUSH_TEXM(pn, t2x2, t2y1);
+ PUSH_TEXM(pn, t2x2, t2y2);
+ PUSH_TEXM(pn, t2x1, t2y2);
+ }
+ */
+
for (i = 0; i < 6; i++)
{
PUSH_COLOR(pn, r, g, b, a);
Eina_Bool smooth, Eina_Bool tex_only,
Evas_Colorspace cspace)
{
- int pnum, nv, nc, nu, nu2, nu3, i;
+ int pnum, nv, nc, nu, nu2, nu3, na, i;
const int points[6] = { 0, 1, 2, 0, 2, 3 };
int x = 0, y = 0, w = 0, h = 0, px = 0, py = 0;
GLfloat tx[4], ty[4], t2x[4], t2y[4];
case EVAS_COLORSPACE_YCBCR422P709_PL:
prog = gc->shared->shader[evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
SHADER_YUV_NOMUL, SHADER_YUV,
- SHADER_YUV_NOMUL, SHADER_YUV)].prog;
+ SHADER_YUV_MASK, SHADER_YUV_MASK)].prog;
utexture = EINA_TRUE;
break;
case EVAS_COLORSPACE_YCBCR422601_PL:
prog = gc->shared->shader[evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
SHADER_YUY2_NOMUL, SHADER_YUY2,
- SHADER_YUY2_NOMUL, SHADER_YUY2)].prog;
+ SHADER_YUY2_MASK, SHADER_YUY2_MASK)].prog;
uvtexture = EINA_TRUE;
break;
case EVAS_COLORSPACE_YCBCR420NV12601_PL:
case EVAS_COLORSPACE_YCBCR420TM12601_PL:
prog = gc->shared->shader[evas_gl_common_shader_choice(npoints, p, r, g, b, a, !!mtex,
SHADER_NV12_NOMUL, SHADER_NV12,
- SHADER_NV12_NOMUL, SHADER_NV12)].prog;
+ SHADER_NV12_MASK, SHADER_NV12_MASK)].prog;
uvtexture = EINA_TRUE;
break;
+ // FIXME: Add RGB+A support
+
default:
if (tex_only)
{
gc->pipe[pn].shader.cur_texu = tex->ptuv->texture;
gc->pipe[pn].shader.cur_texu_dyn = tex->ptuv->dyn.img;
}
+ gc->pipe[pn].shader.cur_texa = mtex ? mtex->pt->texture : 0;
gc->pipe[pn].shader.cur_prog = prog;
gc->pipe[pn].shader.smooth = smooth;
gc->pipe[pn].shader.blend = blend;
gc->pipe[pn].array.use_texuv = 1;
gc->pipe[pn].array.use_texuv2 = (utexture || uvtexture) ? 1 : 0;
gc->pipe[pn].array.use_texuv3 = (utexture) ? 1 : 0;
- gc->pipe[pn].array.use_texa = 0;
+ gc->pipe[pn].array.use_texa = !!mtex;
gc->pipe[pn].array.use_texsam = 0;
pipe_region_expand(gc, pn, x, y, w, h);
pnum = gc->pipe[pn].array.num;
- nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; nu2 = pnum * 2;
+ nv = pnum * 3; nc = pnum * 4; nu = pnum * 2; nu2 = pnum * 2; na = pnum * 2;
nu2 = pnum * 2; nu3 = pnum * 2;
gc->pipe[pn].array.num += 6;
array_alloc(gc, pn);
B_VAL(&cl),
A_VAL(&cl));
}
+
+ if (mtex)
+ {
+ GLfloat t2x1, t2y1, t2x2, t2y2;
+
+ t2x1 = (mtex->x + mx) / (double)mtex->pt->w;
+ t2y1 = (mtex->y + my) / (double)mtex->pt->h;
+ t2x2 = (mtex->x + mx + mw) / (double)mtex->pt->w;
+ t2y2 = (mtex->y + my + mh) / (double)mtex->pt->h;
+
+ PUSH_TEXA(pn, t2x1, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x1, t2y2);
+
+ PUSH_TEXA(pn, t2x2, t2y1);
+ PUSH_TEXA(pn, t2x2, t2y2);
+ PUSH_TEXA(pn, t2x1, t2y2);
+ }
+
if (!flat)
{
shader_array_flush(gc);
NULL, 0
};
+/* Source: modules/evas/engines/gl_common/shader/yuv_mask_frag.shd */
+static const char const yuv_mask_frag_glsl[] =
+ "#ifdef GL_ES\n"
+ "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+ "precision highp float;\n"
+ "#else\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "#endif\n"
+ "uniform sampler2D tex, texu, texv, texa;\n"
+ "varying vec4 col;\n"
+ "varying vec2 tex_c, tex_c2, tex_c3, tex_a;\n"
+ "void main()\n"
+ "{\n"
+ " float r, g, b, y, u, v;\n"
+ " y = texture2D(tex, tex_c.xy).r;\n"
+ " u = texture2D(texu, tex_c2.xy).r;\n"
+ " v = texture2D(texv, tex_c3.xy).r;\n"
+ " y = (y - 0.0625) * 1.164;\n"
+ " u = u - 0.5;\n"
+ " v = v - 0.5;\n"
+ " r = y + (1.402 * v);\n"
+ " g = y - (0.34414 * u) - (0.71414 * v);\n"
+ " b = y + (1.772 * u);\n"
+ " gl_FragColor = vec4(r, g, b, 1.0) * texture2D(texa, tex_a.xy).a * col;\n"
+ "}\n";
+Evas_GL_Program_Source shader_yuv_mask_frag_src =
+{
+ yuv_mask_frag_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/yuv_mask_vert.shd */
+static const char const yuv_mask_vert_glsl[] =
+ "#ifdef GL_ES\n"
+ "precision highp float;\n"
+ "#endif\n"
+ "attribute vec4 vertex;\n"
+ "attribute vec4 color;\n"
+ "attribute vec2 tex_coord, tex_coord2, tex_coord3, tex_coorda;\n"
+ "uniform mat4 mvp;\n"
+ "varying vec4 col;\n"
+ "varying vec2 tex_c, tex_c2, tex_c3, tex_a;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = mvp * vertex;\n"
+ " col = color;\n"
+ " tex_c = tex_coord;\n"
+ " tex_c2 = tex_coord2;\n"
+ " tex_c3 = tex_coord3;\n"
+ " tex_a = tex_coorda;\n"
+ "}\n";
+Evas_GL_Program_Source shader_yuv_mask_vert_src =
+{
+ yuv_mask_vert_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/nv12_mask_frag.shd */
+static const char const nv12_mask_frag_glsl[] =
+ "#ifdef GL_ES\n"
+ "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+ "precision highp float;\n"
+ "#else\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "#endif\n"
+ "uniform sampler2D tex, texuv, texa;\n"
+ "varying vec4 col;\n"
+ "varying vec2 tex_c, tex_cuv, tex_a;\n"
+ "void main()\n"
+ "{\n"
+ " float y,u,v,vmu,r,g,b;\n"
+ " y=texture2D(tex,tex_c).g;\n"
+ " u=texture2D(texuv,tex_cuv).g;\n"
+ " v=texture2D(texuv,tex_cuv).a;\n"
+ " u=u-0.5;\n"
+ " v=v-0.5;\n"
+ " vmu=v*0.813+u*0.391;\n"
+ " u=u*2.018;\n"
+ " v=v*1.596;\n"
+ " y=(y-0.062)*1.164;\n"
+ " r=y+v;\n"
+ " g=y-vmu;\n"
+ " b=y+u;\n"
+ " gl_FragColor = vec4(r,g,b,1.0) * texture2D(texa, tex_a.xy).a * col;\n"
+ "}\n";
+Evas_GL_Program_Source shader_nv12_mask_frag_src =
+{
+ nv12_mask_frag_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/nv12_mask_vert.shd */
+static const char const nv12_mask_vert_glsl[] =
+ "#ifdef GL_ES\n"
+ "precision highp float;\n"
+ "#endif\n"
+ "attribute vec4 vertex;\n"
+ "attribute vec4 color;\n"
+ "attribute vec2 tex_coord, tex_coord2, tex_coorda;\n"
+ "uniform mat4 mvp;\n"
+ "varying vec4 col;\n"
+ "varying vec2 tex_c, tex_cuv, tex_a;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = mvp * vertex;\n"
+ " col = color;\n"
+ " tex_c = tex_coord;\n"
+ " tex_cuv = tex_coord2 * 0.5;\n"
+ " tex_a = tex_coorda;\n"
+ "}\n";
+Evas_GL_Program_Source shader_nv12_mask_vert_src =
+{
+ nv12_mask_vert_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/yuy2_mask_frag.shd */
+static const char const yuy2_mask_frag_glsl[] =
+ "#ifdef GL_ES\n"
+ "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+ "precision highp float;\n"
+ "#else\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "#endif\n"
+ "uniform sampler2D tex, texuv, texa;\n"
+ "varying vec4 col;\n"
+ "varying vec2 tex_c, tex_cuv, tex_a;\n"
+ "void main()\n"
+ "{\n"
+ " float y,u,v,vmu,r,g,b;\n"
+ " y=texture2D(tex,tex_c).r;\n"
+ " u=texture2D(texuv,tex_cuv).g;\n"
+ " v=texture2D(texuv,tex_cuv).a;\n"
+ " u=u-0.5;\n"
+ " v=v-0.5;\n"
+ " vmu=v*0.813+u*0.391;\n"
+ " u=u*2.018;\n"
+ " v=v*1.596;\n"
+ " r=y+v;\n"
+ " g=y-vmu;\n"
+ " b=y+u;\n"
+ " gl_FragColor = vec4(r,g,b,1.0) * texture2D(texa, tex_a.xy).a * col;\n"
+ "}\n";
+Evas_GL_Program_Source shader_yuy2_mask_frag_src =
+{
+ yuy2_mask_frag_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/yuy2_mask_vert.shd */
+static const char const yuy2_mask_vert_glsl[] =
+ "#ifdef GL_ES\n"
+ "precision highp float;\n"
+ "#endif\n"
+ "attribute vec4 vertex;\n"
+ "attribute vec4 color;\n"
+ "attribute vec2 tex_coord, tex_coord2, tex_coorda;\n"
+ "uniform mat4 mvp;\n"
+ "varying vec4 col;\n"
+ "varying vec2 tex_c, tex_cuv, tex_a;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = mvp * vertex;\n"
+ " col = color;\n"
+ " tex_c = tex_coord;\n"
+ " tex_cuv = vec2(tex_coord2.x * 0.5, tex_coord2.y);\n"
+ " tex_a = tex_coorda;\n"
+ "}\n";
+Evas_GL_Program_Source shader_yuy2_mask_vert_src =
+{
+ yuy2_mask_vert_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_mask_frag.shd */
+static const char const rgb_a_pair_mask_frag_glsl[] =
+ "#ifdef GL_ES\n"
+ "#ifdef GL_FRAGMENT_PRECISION_HIGH\n"
+ "precision highp float;\n"
+ "#else\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "#endif\n"
+ "uniform sampler2D tex;\n"
+ "uniform sampler2D texa;\n"
+ "uniform sampler2D texm;\n"
+ "varying vec4 col;\n"
+ "varying vec2 coord_c;\n"
+ "varying vec2 coord_a;\n"
+ "varying vec2 coord_m;\n"
+ "void main()\n"
+ "{\n"
+ " gl_FragColor.rgb = texture2D(tex, coord_c.xy).rgb * col.rgb * texture2D(texa, coord_a).g * texture2D(texm, coord_m.xy).a;\n"
+ " gl_FragColor.a = col.a * texture2D(texa, coord_a).g * texture2D(texm, coord_m.xy).a;\n"
+ "}\n";
+Evas_GL_Program_Source shader_rgb_a_pair_mask_frag_src =
+{
+ rgb_a_pair_mask_frag_glsl,
+ NULL, 0
+};
+
+/* Source: modules/evas/engines/gl_common/shader/rgb_a_pair_mask_vert.shd */
+static const char const rgb_a_pair_mask_vert_glsl[] =
+ "#ifdef GL_ES\n"
+ "precision highp float;\n"
+ "#endif\n"
+ "attribute vec4 vertex;\n"
+ "attribute vec4 color;\n"
+ "attribute vec2 tex_coord;\n"
+ "attribute vec2 tex_coorda;\n"
+ "attribute vec2 tex_coordm;\n"
+ "uniform mat4 mvp;\n"
+ "varying vec4 col;\n"
+ "varying vec2 coord_c;\n"
+ "varying vec2 coord_a;\n"
+ "varying vec2 coord_m;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = mvp * vertex;\n"
+ " col = color;\n"
+ " coord_c = tex_coord;\n"
+ " coord_a = tex_coorda;\n"
+ " coord_m = tex_coordm;\n"
+ "}\n";
+Evas_GL_Program_Source shader_rgb_a_pair_mask_vert_src =
+{
+ rgb_a_pair_mask_vert_glsl,
+ NULL, 0
+};
+
static const struct {
Evas_GL_Shader id;
Evas_GL_Program_Source *vert;
{ SHADER_IMG_MASK_NOMUL, &(shader_img_mask_nomul_vert_src), &(shader_img_mask_nomul_frag_src), "img_mask_nomul" },
{ SHADER_IMG_MASK_BGRA, &(shader_img_mask_bgra_vert_src), &(shader_img_mask_bgra_frag_src), "img_mask_bgra" },
{ SHADER_IMG_MASK_BGRA_NOMUL, &(shader_img_mask_bgra_nomul_vert_src), &(shader_img_mask_bgra_nomul_frag_src), "img_mask_bgra_nomul" },
+ { SHADER_YUV_MASK, &(shader_yuv_mask_vert_src), &(shader_yuv_mask_frag_src), "yuv_mask" },
+ { SHADER_NV12_MASK, &(shader_nv12_mask_vert_src), &(shader_nv12_mask_frag_src), "nv12_mask" },
+ { SHADER_YUY2_MASK, &(shader_yuy2_mask_vert_src), &(shader_yuy2_mask_frag_src), "yuy2_mask" },
+ { SHADER_RGB_A_PAIR_MASK, &(shader_rgb_a_pair_mask_vert_src), &(shader_rgb_a_pair_mask_frag_src), "rgb_a_pair_mask" },
};