diff --git a/ChangeLog b/ChangeLog index 3504de1cd2..69be09eb60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2013-02-26 Carsten Haitzler (The Rasterman) + + * Fix evas GL common engine to have a shader to do oversampling on + downscaling. This makes quality much better and "at best" + equates to a 16 point sample (2x2 linear interpolation samples, + where a linear interpolation sample equates to a 2x2 sample). This + will have perfomance impact, but the quality is worth it and + makes it closer to software downscaling in quality. It supports + 2x2, 2x1 and 1x2 oversampling. YUV not done, nor image mask + (font shaders not needed). + 2013-02-23 ChunEon Park (Hermet) * Evas cache: remove the freed worker from the pthread worker list when it's failed to create a new thread so as not to access it if a thread is working newly. diff --git a/NEWS b/NEWS index 88792906c5..2bfd3763a5 100644 --- a/NEWS +++ b/NEWS @@ -113,6 +113,7 @@ Improvements: * eina: Eina_Tiler now take tile size into account. * edje: reduce memory consumption of Edje program handler. * eina, evas: improved support for 64bits system. + * Evas GL engine downscale quality in smooth mode much improved with multisampling up to effectively 16x16 via shaders. Fixes: * Fix a memory leak in ecore_con_dns when using ecore_con_server_connect diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index 0a72fef71e..b1bc1b0c5c 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -442,80 +442,143 @@ modules/evas/engines/gl_common/evas_gl_core.h \ modules/evas/engines/gl_common/evas_gl_core_private.h \ modules/evas/engines/gl_common/evas_gl_api.c \ modules/evas/engines/gl_common/evas_gl_api_ext.c \ -modules/evas/engines/gl_common/shader/rect_frag.h \ -modules/evas/engines/gl_common/shader/rect_vert.h \ modules/evas/engines/gl_common/shader/font_frag.h \ modules/evas/engines/gl_common/shader/font_vert.h \ -modules/evas/engines/gl_common/shader/img_frag.h \ -modules/evas/engines/gl_common/shader/img_vert.h \ -modules/evas/engines/gl_common/shader/img_nomul_frag.h \ -modules/evas/engines/gl_common/shader/img_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_12_bgra_frag.h \ +modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_12_bgra_vert.h \ +modules/evas/engines/gl_common/shader/img_12_frag.h \ +modules/evas/engines/gl_common/shader/img_12_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_12_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_12_vert.h \ +modules/evas/engines/gl_common/shader/img_21_bgra_frag.h \ +modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_21_bgra_vert.h \ +modules/evas/engines/gl_common/shader/img_21_frag.h \ +modules/evas/engines/gl_common/shader/img_21_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_21_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_21_vert.h \ +modules/evas/engines/gl_common/shader/img_22_bgra_frag.h \ +modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_22_bgra_vert.h \ +modules/evas/engines/gl_common/shader/img_22_frag.h \ +modules/evas/engines/gl_common/shader/img_22_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_22_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_22_vert.h \ modules/evas/engines/gl_common/shader/img_bgra_frag.h \ -modules/evas/engines/gl_common/shader/img_bgra_vert.h \ modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.h \ modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_bgra_vert.h \ +modules/evas/engines/gl_common/shader/img_frag.h \ modules/evas/engines/gl_common/shader/img_mask_frag.h \ modules/evas/engines/gl_common/shader/img_mask_vert.h \ +modules/evas/engines/gl_common/shader/img_nomul_frag.h \ +modules/evas/engines/gl_common/shader/img_nomul_vert.h \ +modules/evas/engines/gl_common/shader/img_vert.h \ +modules/evas/engines/gl_common/shader/nv12_frag.h \ +modules/evas/engines/gl_common/shader/nv12_nomul_frag.h \ modules/evas/engines/gl_common/shader/nv12_nomul_vert.h \ modules/evas/engines/gl_common/shader/nv12_vert.h \ -modules/evas/engines/gl_common/shader/nv12_nomul_frag.h \ -modules/evas/engines/gl_common/shader/nv12_frag.h \ -modules/evas/engines/gl_common/shader/yuv_frag.h \ -modules/evas/engines/gl_common/shader/yuv_vert.h \ -modules/evas/engines/gl_common/shader/yuv_nomul_frag.h \ -modules/evas/engines/gl_common/shader/yuv_nomul_vert.h \ +modules/evas/engines/gl_common/shader/rect_frag.h \ +modules/evas/engines/gl_common/shader/rect_vert.h \ +modules/evas/engines/gl_common/shader/tex_12_frag.h \ +modules/evas/engines/gl_common/shader/tex_12_nomul_frag.h \ +modules/evas/engines/gl_common/shader/tex_12_nomul_vert.h \ +modules/evas/engines/gl_common/shader/tex_12_vert.h \ +modules/evas/engines/gl_common/shader/tex_21_frag.h \ +modules/evas/engines/gl_common/shader/tex_21_nomul_frag.h \ +modules/evas/engines/gl_common/shader/tex_21_nomul_vert.h \ +modules/evas/engines/gl_common/shader/tex_21_vert.h \ +modules/evas/engines/gl_common/shader/tex_22_frag.h \ +modules/evas/engines/gl_common/shader/tex_22_nomul_frag.h \ +modules/evas/engines/gl_common/shader/tex_22_nomul_vert.h \ +modules/evas/engines/gl_common/shader/tex_22_vert.h \ modules/evas/engines/gl_common/shader/tex_frag.h \ -modules/evas/engines/gl_common/shader/tex_vert.h \ modules/evas/engines/gl_common/shader/tex_nomul_frag.h \ modules/evas/engines/gl_common/shader/tex_nomul_vert.h \ +modules/evas/engines/gl_common/shader/tex_vert.h \ +modules/evas/engines/gl_common/shader/yuv_frag.h \ +modules/evas/engines/gl_common/shader/yuv_nomul_frag.h \ +modules/evas/engines/gl_common/shader/yuv_nomul_vert.h \ +modules/evas/engines/gl_common/shader/yuv_vert.h \ modules/evas/engines/gl_common/shader/yuy2_frag.h \ -modules/evas/engines/gl_common/shader/yuy2_vert.h \ modules/evas/engines/gl_common/shader/yuy2_nomul_frag.h \ -modules/evas/engines/gl_common/shader/yuy2_nomul_vert.h +modules/evas/engines/gl_common/shader/yuy2_nomul_vert.h \ +modules/evas/engines/gl_common/shader/yuy2_vert.h + EXTRA_DIST += \ modules/evas/engines/gl_common/shader/compile.sh \ modules/evas/engines/gl_common/shader/make-c-str.sh \ -modules/evas/engines/gl_common/shader/rect_frag.shd \ -modules/evas/engines/gl_common/shader/rect_vert.shd \ modules/evas/engines/gl_common/shader/font_frag.shd \ modules/evas/engines/gl_common/shader/font_vert.shd \ -modules/evas/engines/gl_common/shader/img_frag.shd \ -modules/evas/engines/gl_common/shader/img_vert.shd \ -modules/evas/engines/gl_common/shader/img_nomul_frag.shd \ -modules/evas/engines/gl_common/shader/img_nomul_vert.shd \ -modules/evas/engines/gl_common/shader/img_bgra_vert.shd \ +modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd \ +modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd \ +modules/evas/engines/gl_common/shader/img_12_frag.shd \ +modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_12_vert.shd \ +modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd \ +modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd \ +modules/evas/engines/gl_common/shader/img_21_frag.shd \ +modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_21_vert.shd \ +modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd \ +modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd \ +modules/evas/engines/gl_common/shader/img_22_frag.shd \ +modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_22_vert.shd \ modules/evas/engines/gl_common/shader/img_bgra_frag.shd \ -modules/evas/engines/gl_common/shader/img_bgra_vert.shd \ modules/evas/engines/gl_common/shader/img_bgra_nomul_frag.shd \ modules/evas/engines/gl_common/shader/img_bgra_nomul_vert.shd \ -modules/evas/engines/gl_common/shader/img_mask_frag.h \ +modules/evas/engines/gl_common/shader/img_bgra_vert.shd \ +modules/evas/engines/gl_common/shader/img_frag.shd \ modules/evas/engines/gl_common/shader/img_mask_frag.shd \ -modules/evas/engines/gl_common/shader/img_mask_vert.h \ modules/evas/engines/gl_common/shader/img_mask_vert.shd \ -modules/evas/engines/gl_common/shader/yuv_frag.shd \ -modules/evas/engines/gl_common/shader/yuv_vert.shd \ -modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd \ -modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/img_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/img_vert.shd \ +modules/evas/engines/gl_common/shader/nv12_frag.shd \ +modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/nv12_vert.shd \ +modules/evas/engines/gl_common/shader/rect_frag.shd \ +modules/evas/engines/gl_common/shader/rect_vert.shd \ +modules/evas/engines/gl_common/shader/tex_12_frag.shd \ +modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/tex_12_vert.shd \ +modules/evas/engines/gl_common/shader/tex_21_frag.shd \ +modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/tex_21_vert.shd \ +modules/evas/engines/gl_common/shader/tex_22_frag.shd \ +modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/tex_22_vert.shd \ modules/evas/engines/gl_common/shader/tex_frag.shd \ -modules/evas/engines/gl_common/shader/tex_vert.shd \ modules/evas/engines/gl_common/shader/tex_nomul_frag.shd \ modules/evas/engines/gl_common/shader/tex_nomul_vert.shd \ -modules/evas/engines/gl_common/shader/nv12_frag.h \ -modules/evas/engines/gl_common/shader/nv12_frag.shd \ -modules/evas/engines/gl_common/shader/nv12_nomul_frag.h \ -modules/evas/engines/gl_common/shader/nv12_nomul_frag.shd \ -modules/evas/engines/gl_common/shader/nv12_nomul_vert.h \ -modules/evas/engines/gl_common/shader/nv12_nomul_vert.shd \ -modules/evas/engines/gl_common/shader/nv12_vert.h \ -modules/evas/engines/gl_common/shader/nv12_vert.shd \ -modules/evas/engines/gl_common/shader/yuy2_frag.h \ +modules/evas/engines/gl_common/shader/tex_vert.shd \ +modules/evas/engines/gl_common/shader/yuv_frag.shd \ +modules/evas/engines/gl_common/shader/yuv_nomul_frag.shd \ +modules/evas/engines/gl_common/shader/yuv_nomul_vert.shd \ +modules/evas/engines/gl_common/shader/yuv_vert.shd \ modules/evas/engines/gl_common/shader/yuy2_frag.shd \ -modules/evas/engines/gl_common/shader/yuy2_nomul_frag.h \ modules/evas/engines/gl_common/shader/yuy2_nomul_frag.shd \ -modules/evas/engines/gl_common/shader/yuy2_nomul_vert.h \ modules/evas/engines/gl_common/shader/yuy2_nomul_vert.shd \ -modules/evas/engines/gl_common/shader/yuy2_vert.h \ modules/evas/engines/gl_common/shader/yuy2_vert.shd + if EVAS_STATIC_BUILD_GL_COMMON lib_evas_libevas_la_SOURCES += $(GL_COMMON_SOURCES) lib_evas_libevas_la_LIBADD += @evas_engine_gl_common_libs@ diff --git a/src/modules/evas/engines/gl_common/evas_gl_common.h b/src/modules/evas/engines/gl_common/evas_gl_common.h index 1910a463da..01f06c2b78 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_common.h +++ b/src/modules/evas/engines/gl_common/evas_gl_common.h @@ -117,6 +117,7 @@ #define SHAD_TEXUV2 3 #define SHAD_TEXUV3 4 #define SHAD_TEXM 5 +#define SHAD_TEXSAM 6 typedef struct _Evas_GL_Program Evas_GL_Program; typedef struct _Evas_GL_Program_Source Evas_GL_Program_Source; @@ -132,19 +133,44 @@ typedef struct _Evas_GL_Polygon_Point Evas_GL_Polygon_Point; typedef enum { SHADER_RECT, SHADER_FONT, + + SHADER_IMG_MASK, + SHADER_IMG, SHADER_IMG_NOMUL, SHADER_IMG_BGRA, SHADER_IMG_BGRA_NOMUL, - SHADER_IMG_MASK, + SHADER_TEX, + SHADER_TEX_NOMUL, + + SHADER_IMG_21, + SHADER_IMG_21_NOMUL, + SHADER_IMG_21_BGRA, + SHADER_IMG_21_BGRA_NOMUL, + SHADER_TEX_21, + SHADER_TEX_21_NOMUL, + + SHADER_IMG_12, + SHADER_IMG_12_NOMUL, + SHADER_IMG_12_BGRA, + SHADER_IMG_12_BGRA_NOMUL, + SHADER_TEX_12, + SHADER_TEX_12_NOMUL, + + SHADER_IMG_22, + SHADER_IMG_22_NOMUL, + SHADER_IMG_22_BGRA, + SHADER_IMG_22_BGRA_NOMUL, + SHADER_TEX_22, + SHADER_TEX_22_NOMUL, + SHADER_YUV, SHADER_YUV_NOMUL, SHADER_YUY2, SHADER_YUY2_NOMUL, SHADER_NV12, SHADER_NV12_NOMUL, - SHADER_TEX, - SHADER_TEX_NOMUL, +/* SHADER_FILTER_INVERT, SHADER_FILTER_INVERT_NOMUL, SHADER_FILTER_INVERT_BGRA, @@ -157,6 +183,7 @@ typedef enum { SHADER_FILTER_SEPIA_NOMUL, SHADER_FILTER_SEPIA_BGRA, SHADER_FILTER_SEPIA_BGRA_NOMUL, + */ /* SHADER_FILTER_BLUR, */ /* SHADER_FILTER_BLUR_NOMUL, */ /* SHADER_FILTER_BLUR_BGRA, */ @@ -328,6 +355,7 @@ struct _Evas_Engine_GL_Context GLfloat *texuv2; GLfloat *texuv3; GLfloat *texm; + GLfloat *texsam; Eina_Bool line: 1; Eina_Bool use_vertex : 1; Eina_Bool use_color : 1; @@ -335,6 +363,7 @@ struct _Evas_Engine_GL_Context Eina_Bool use_texuv2 : 1; Eina_Bool use_texuv3 : 1; Eina_Bool use_texm : 1; + Eina_Bool use_texsam : 1; Evas_GL_Image *im; GLuint buffer; int buffer_alloc; diff --git a/src/modules/evas/engines/gl_common/evas_gl_context.c b/src/modules/evas/engines/gl_common/evas_gl_context.c index ba75a43c06..dc0c4be423 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_context.c +++ b/src/modules/evas/engines/gl_common/evas_gl_context.c @@ -812,6 +812,7 @@ evas_gl_common_context_free(Evas_Engine_GL_Context *gc) if (gc->pipe[i].array.texm) free(gc->pipe[i].array.texm); if (gc->pipe[i].array.texuv2) free(gc->pipe[i].array.texuv2); if (gc->pipe[i].array.texuv3) free(gc->pipe[i].array.texuv3); + if (gc->pipe[i].array.texsam) free(gc->pipe[i].array.texsam); } } @@ -1047,32 +1048,43 @@ evas_gl_common_context_target_surface_set(Evas_Engine_GL_Context *gc, #define PUSH_TEXM(n, u, v) \ gc->pipe[n].array.texm[nm++] = u; \ gc->pipe[n].array.texm[nm++] = v +#define PUSH_TEXSAM(n, x, y) \ + gc->pipe[n].array.texsam[ns++] = x; \ + gc->pipe[n].array.texsam[ns++] = y static inline void array_alloc(Evas_Engine_GL_Context *gc, int n) { gc->havestuff = EINA_TRUE; - if (gc->pipe[n].array.num <= gc->pipe[n].array.alloc) return; + if (gc->pipe[n].array.num <= gc->pipe[n].array.alloc) + { +#define ALOC(field, type, size) \ + if ((gc->pipe[n].array.use_##field) && (!gc->pipe[n].array.field)) \ + gc->pipe[n].array.field = \ + malloc(gc->pipe[n].array.alloc * sizeof(type) * size) + ALOC(vertex, GLshort, 3); + ALOC(color, GLubyte, 4); + ALOC(texuv, GLfloat, 2); + ALOC(texm, GLfloat, 2); + ALOC(texuv2, GLfloat, 2); + ALOC(texuv3, GLfloat, 2); + ALOC(texsam, GLfloat, 2); + return; + } gc->pipe[n].array.alloc += 6 * 1024; - if (gc->pipe[n].array.use_vertex) - gc->pipe[n].array.vertex = realloc(gc->pipe[n].array.vertex, - gc->pipe[n].array.alloc * sizeof(GLshort) * 3); - if (gc->pipe[n].array.use_color) - gc->pipe[n].array.color = realloc(gc->pipe[n].array.color, - gc->pipe[n].array.alloc * sizeof(GLubyte) * 4); - if (gc->pipe[n].array.use_texuv) - gc->pipe[n].array.texuv = realloc(gc->pipe[n].array.texuv, - gc->pipe[n].array.alloc * sizeof(GLfloat) * 2); - if (gc->pipe[n].array.use_texm) - gc->pipe[n].array.texm = realloc(gc->pipe[n].array.texm, - gc->pipe[n].array.alloc * sizeof(GLfloat) * 2); - if (gc->pipe[n].array.use_texuv2) - gc->pipe[n].array.texuv2 = realloc(gc->pipe[n].array.texuv2, - gc->pipe[n].array.alloc * sizeof(GLfloat) * 2); - if (gc->pipe[n].array.use_texuv3) - gc->pipe[n].array.texuv3 = realloc(gc->pipe[n].array.texuv3, - gc->pipe[n].array.alloc * sizeof(GLfloat) * 2); +#define RALOC(field, type, size) \ + if (gc->pipe[n].array.use_##field) \ + gc->pipe[n].array.field = realloc \ + (gc->pipe[n].array.field, \ + gc->pipe[n].array.alloc * sizeof(type) * size) + RALOC(vertex, GLshort, 3); + RALOC(color, GLubyte, 4); + RALOC(texuv, GLfloat, 2); + RALOC(texm, GLfloat, 2); + RALOC(texuv2, GLfloat, 2); + RALOC(texuv3, GLfloat, 2); + RALOC(texsam, GLfloat, 2); } #ifdef GLPIPES @@ -1304,6 +1316,8 @@ evas_gl_common_context_line_push(Evas_Engine_GL_Context *gc, gc->pipe[pn].array.use_texuv = 0; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = 0; pnum = gc->pipe[pn].array.num; nv = pnum * 3; nc = pnum * 4; @@ -1325,6 +1339,8 @@ evas_gl_common_context_line_push(Evas_Engine_GL_Context *gc, gc->pipe[pn].array.use_texuv = 0; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = 0; } void @@ -1362,6 +1378,8 @@ again: gc->pipe[pn].array.use_texuv = 0; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = 0; } else { @@ -1408,6 +1426,8 @@ again: gc->pipe[pn].array.use_texuv = 0; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = 0; } } #else @@ -1438,6 +1458,8 @@ again: gc->pipe[pn].array.use_texuv = 0; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = 0; #endif pipe_region_expand(gc, pn, x, y, w, h); @@ -1469,11 +1491,11 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc, int r, int g, int b, int a, Eina_Bool smooth, Eina_Bool tex_only) { - int pnum, nv, nc, nu, i; + int pnum, nv, nc, nu, ns, i; GLfloat tx1, tx2, ty1, ty2; Eina_Bool blend = 1; GLuint prog = gc->shared->shader[SHADER_IMG].prog; - int pn = 0; + int pn = 0, sam = 0; if (!tex->alpha) blend = 0; if (a < 255) blend = 1; @@ -1486,26 +1508,110 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc, { if (tex->pt->dyn.img) { - prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, - SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA)].prog; + if ((smooth) && ((sw >= (w * 2)) && (sh >= (h * 2)))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_22_BGRA_NOMUL, SHADER_IMG_22_BGRA)].prog; + sam = 1; + } + else if ((smooth) && (sw >= (w * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_21_BGRA_NOMUL, SHADER_IMG_21_BGRA)].prog; + sam = 1; + } + else if ((smooth) && (sh >= (h * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_12_BGRA_NOMUL, SHADER_IMG_12_BGRA)].prog; + sam = 1; + } + else + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA)].prog; + } } else { - prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, - SHADER_TEX_NOMUL, SHADER_TEX)].prog; + if ((smooth) && ((sw >= (w * 2)) && (sh >= (h * 2)))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_TEX_22_NOMUL, SHADER_TEX_22)].prog; + sam = 1; + } + else if ((smooth) && (sw >= (w * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_TEX_21_NOMUL, SHADER_TEX_21)].prog; + sam = 1; + } + else if ((smooth) && (sh >= (h * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_TEX_12_NOMUL, SHADER_TEX_12)].prog; + sam = 1; + } + else + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_TEX_NOMUL, SHADER_TEX)].prog; + } } } else { if (tex->gc->shared->info.bgra) { - prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, - SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA)].prog; + if ((smooth) && ((sw >= (w * 2)) && (sh >= (h * 2)))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_22_BGRA_NOMUL, SHADER_IMG_22_BGRA)].prog; + sam = 1; + } + else if ((smooth) && (sw >= (w * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_21_BGRA_NOMUL, SHADER_IMG_21_BGRA)].prog; + sam = 1; + } + else if ((smooth) && (sh >= (h * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_12_BGRA_NOMUL, SHADER_IMG_12_BGRA)].prog; + sam = 1; + } + else + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_BGRA_NOMUL, SHADER_IMG_BGRA)].prog; + } } else { - prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, - SHADER_IMG_NOMUL, SHADER_IMG)].prog; + if ((smooth) && ((sw >= (w * 2)) && (sh >= (h * 2)))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_22_NOMUL, SHADER_IMG_22)].prog; + sam = 1; + } + else if ((smooth) && (sw >= (w * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_21_NOMUL, SHADER_IMG_21)].prog; + sam = 1; + } + else if ((smooth) && (sh >= (h * 2))) + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_12_NOMUL, SHADER_IMG_12)].prog; + sam = 1; + } + else + { + prog = gc->shared->shader[evas_gl_common_shader_choice(0, NULL, r, g, b, a, + SHADER_IMG_NOMUL, SHADER_IMG)].prog; + } } } @@ -1535,11 +1641,13 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc, gc->pipe[pn].array.use_texuv = 1; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = sam; 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; ns = pnum * 2; gc->pipe[pn].array.num += 6; array_alloc(gc, pn); @@ -1574,6 +1682,20 @@ evas_gl_common_context_image_push(Evas_Engine_GL_Context *gc, PUSH_TEXUV(pn, tx2, ty2); PUSH_TEXUV(pn, tx1, ty2); + if (sam) + { + double samx = (double)(sw) / (double)(tex->pt->w * w * 4); + double samy = (double)(sh) / (double)(tex->pt->h * h * 4); + + PUSH_TEXSAM(pn, samx, samy); + PUSH_TEXSAM(pn, samx, samy); + PUSH_TEXSAM(pn, samx, samy); + + PUSH_TEXSAM(pn, samx, samy); + PUSH_TEXSAM(pn, samx, samy); + PUSH_TEXSAM(pn, samx, samy); + } + // if nomul... dont need this for (i = 0; i < 6; i++) { @@ -1639,6 +1761,7 @@ evas_gl_common_context_image_mask_push(Evas_Engine_GL_Context *gc, gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; gc->pipe[pn].array.use_texm = 1; + gc->pipe[pn].array.use_texsam = 0; pipe_region_expand(gc, pn, x, y, w, h); @@ -1745,6 +1868,8 @@ evas_gl_common_context_font_push(Evas_Engine_GL_Context *gc, gc->pipe[pn].array.use_texuv = 1; gc->pipe[pn].array.use_texuv2 = 0; gc->pipe[pn].array.use_texuv3 = 0; + gc->pipe[pn].array.use_texm = 0; + gc->pipe[pn].array.use_texsam = 0; pipe_region_expand(gc, pn, x, y, w, h); @@ -1836,6 +1961,8 @@ evas_gl_common_context_yuv_push(Evas_Engine_GL_Context *gc, 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_texm = 0; + gc->pipe[pn].array.use_texsam = 0; pipe_region_expand(gc, pn, x, y, w, h); @@ -1938,6 +2065,8 @@ evas_gl_common_context_yuy2_push(Evas_Engine_GL_Context *gc, 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_texm = 0; + gc->pipe[pn].array.use_texsam = 0; pipe_region_expand(gc, pn, x, y, w, h); @@ -2034,6 +2163,8 @@ evas_gl_common_context_nv12_push(Evas_Engine_GL_Context *gc, 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_texm = 0; + gc->pipe[pn].array.use_texsam = 0; pipe_region_expand(gc, pn, x, y, w, h); @@ -2276,6 +2407,8 @@ evas_gl_common_context_image_map_push(Evas_Engine_GL_Context *gc, 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_texm = 0; + gc->pipe[pn].array.use_texsam = 0; pipe_region_expand(gc, pn, x, y, w, h); @@ -2582,6 +2715,7 @@ shader_array_flush(Evas_Engine_GL_Context *gc) unsigned char *texuv2_ptr = NULL; unsigned char *texuv3_ptr = NULL; unsigned char *texm_ptr = NULL; + unsigned char *texsam_ptr = NULL; if (glsym_glMapBuffer && glsym_glUnmapBuffer) { @@ -2596,11 +2730,11 @@ shader_array_flush(Evas_Engine_GL_Context *gc) texuv2_ptr = texuv_ptr + TEX_SIZE; texuv3_ptr = texuv2_ptr + TEX_SIZE; texm_ptr = texuv3_ptr + TEX_SIZE; -# define END_POINTER (texm_ptr + TEX_SIZE) + texsam_ptr = texm_ptr + TEX_SIZE; +# define END_POINTER (texsam_ptr + TEX_SIZE) glBindBuffer(GL_ARRAY_BUFFER, gc->pipe[i].array.buffer); if ((gc->pipe[i].array.buffer_alloc < (long)END_POINTER) || - (gc->pipe[i].array.buffer_use >= (ARRAY_BUFFER_USE + ARRAY_BUFFER_USE_SHIFT * i))) { glBufferData(GL_ARRAY_BUFFER, (long)END_POINTER, NULL, GL_STATIC_DRAW); @@ -2624,6 +2758,8 @@ shader_array_flush(Evas_Engine_GL_Context *gc) memcpy(x + (unsigned long)texuv3_ptr, gc->pipe[i].array.texuv3, TEX_SIZE); if (gc->pipe[i].array.use_texm) memcpy(x + (unsigned long)texm_ptr, gc->pipe[i].array.texm, TEX_SIZE); + if (gc->pipe[i].array.use_texsam) + memcpy(x + (unsigned long)texsam_ptr, gc->pipe[i].array.texsam, TEX_SIZE); glsym_glUnmapBuffer(GL_ARRAY_BUFFER); } } @@ -2635,6 +2771,7 @@ shader_array_flush(Evas_Engine_GL_Context *gc) texuv2_ptr = (unsigned char *)gc->pipe[i].array.texuv2; texuv3_ptr = (unsigned char *)gc->pipe[i].array.texuv3; texm_ptr = (unsigned char *)gc->pipe[i].array.texm; + texsam_ptr = (unsigned char *)gc->pipe[i].array.texsam; } glVertexAttribPointer(SHAD_VERTEX, 3, GL_SHORT, GL_FALSE, 0, (void *)vertex_ptr); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); @@ -2685,6 +2822,17 @@ shader_array_flush(Evas_Engine_GL_Context *gc) { glDisableVertexAttribArray(SHAD_TEXM); } + if (gc->pipe[i].array.use_texsam) + { + glEnableVertexAttribArray(SHAD_TEXSAM); + GLERR(__FUNCTION__, __FILE__, __LINE__, ""); + glVertexAttribPointer(SHAD_TEXSAM, 2, GL_FLOAT, GL_FALSE, 0, (void *)texsam_ptr); + GLERR(__FUNCTION__, __FILE__, __LINE__, ""); + } + else + { + glDisableVertexAttribArray(SHAD_TEXSAM); + } if ((gc->pipe[i].array.use_texuv2) && (gc->pipe[i].array.use_texuv3)) { glEnableVertexAttribArray(SHAD_TEXUV2); @@ -2788,13 +2936,24 @@ shader_array_flush(Evas_Engine_GL_Context *gc) if (gc->pipe[i].array.texm) free(gc->pipe[i].array.texm); if (gc->pipe[i].array.texuv2) free(gc->pipe[i].array.texuv2); if (gc->pipe[i].array.texuv3) free(gc->pipe[i].array.texuv3); + if (gc->pipe[i].array.texsam) free(gc->pipe[i].array.texsam); + gc->pipe[i].array.line = 0; + gc->pipe[i].array.use_vertex = 0; + gc->pipe[i].array.use_color = 0; + gc->pipe[i].array.use_texuv = 0; + gc->pipe[i].array.use_texuv2 = 0; + gc->pipe[i].array.use_texuv3 = 0; + gc->pipe[i].array.use_texm = 0; + gc->pipe[i].array.use_texsam = 0; + gc->pipe[i].array.vertex = NULL; gc->pipe[i].array.color = NULL; gc->pipe[i].array.texuv = NULL; gc->pipe[i].array.texm = NULL; gc->pipe[i].array.texuv2 = NULL; gc->pipe[i].array.texuv3 = NULL; + gc->pipe[i].array.texsam = NULL; gc->pipe[i].array.num = 0; gc->pipe[i].array.alloc = 0; diff --git a/src/modules/evas/engines/gl_common/evas_gl_core.c b/src/modules/evas/engines/gl_common/evas_gl_core.c old mode 100755 new mode 100644 diff --git a/src/modules/evas/engines/gl_common/evas_gl_core.h b/src/modules/evas/engines/gl_common/evas_gl_core.h old mode 100755 new mode 100644 diff --git a/src/modules/evas/engines/gl_common/evas_gl_core_private.h b/src/modules/evas/engines/gl_common/evas_gl_core_private.h old mode 100755 new mode 100644 diff --git a/src/modules/evas/engines/gl_common/evas_gl_shader.c b/src/modules/evas/engines/gl_common/evas_gl_shader.c index af258d28e4..76402fc538 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_shader.c +++ b/src/modules/evas/engines/gl_common/evas_gl_shader.c @@ -38,6 +38,499 @@ Evas_GL_Program_Source shader_font_vert_src = NULL, 0 }; + + + +///////////////////////////////////////////// +const char img_mask_frag_glsl[] = +#include "shader/img_mask_frag.h" + ; +Evas_GL_Program_Source shader_img_mask_frag_src = +{ + img_mask_frag_glsl, + NULL, 0 +}; + +const char img_mask_vert_glsl[] = +#include "shader/img_mask_vert.h" + ; +Evas_GL_Program_Source shader_img_mask_vert_src = +{ + img_mask_vert_glsl, + NULL, 0 +}; + + + + +///////////////////////////////////////////// +const char img_frag_glsl[] = +#include "shader/img_frag.h" + ; +Evas_GL_Program_Source shader_img_frag_src = +{ + img_frag_glsl, + NULL, 0 +}; + +const char img_vert_glsl[] = +#include "shader/img_vert.h" + ; +Evas_GL_Program_Source shader_img_vert_src = +{ + img_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_nomul_frag_glsl[] = +#include "shader/img_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_nomul_frag_src = +{ + img_nomul_frag_glsl, + NULL, 0 +}; + +const char img_nomul_vert_glsl[] = +#include "shader/img_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_nomul_vert_src = +{ + img_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_bgra_frag_glsl[] = +#include "shader/img_bgra_frag.h" + ; +Evas_GL_Program_Source shader_img_bgra_frag_src = +{ + img_bgra_frag_glsl, + NULL, 0 +}; + +const char img_bgra_vert_glsl[] = +#include "shader/img_bgra_vert.h" + ; +Evas_GL_Program_Source shader_img_bgra_vert_src = +{ + img_bgra_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_bgra_nomul_frag_glsl[] = +#include "shader/img_bgra_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_bgra_nomul_frag_src = +{ + img_bgra_nomul_frag_glsl, + NULL, 0 +}; + +const char img_bgra_nomul_vert_glsl[] = +#include "shader/img_bgra_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_bgra_nomul_vert_src = +{ + img_bgra_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_frag_glsl[] = +#include "shader/tex_frag.h" + ; +Evas_GL_Program_Source shader_tex_frag_src = +{ + tex_frag_glsl, + NULL, 0 +}; + +const char tex_vert_glsl[] = +#include "shader/tex_vert.h" + ; +Evas_GL_Program_Source shader_tex_vert_src = +{ + tex_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_nomul_frag_glsl[] = +#include "shader/tex_nomul_frag.h" + ; +Evas_GL_Program_Source shader_tex_nomul_frag_src = +{ + tex_nomul_frag_glsl, + NULL, 0 +}; + +const char tex_nomul_vert_glsl[] = +#include "shader/tex_nomul_vert.h" + ; +Evas_GL_Program_Source shader_tex_nomul_vert_src = +{ + tex_nomul_vert_glsl, + NULL, 0 +}; + + + + +///////////////////////////////////////////// +const char img_21_frag_glsl[] = +#include "shader/img_21_frag.h" + ; +Evas_GL_Program_Source shader_img_21_frag_src = +{ + img_21_frag_glsl, + NULL, 0 +}; + +const char img_21_vert_glsl[] = +#include "shader/img_21_vert.h" + ; +Evas_GL_Program_Source shader_img_21_vert_src = +{ + img_21_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_21_nomul_frag_glsl[] = +#include "shader/img_21_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_21_nomul_frag_src = +{ + img_21_nomul_frag_glsl, + NULL, 0 +}; + +const char img_21_nomul_vert_glsl[] = +#include "shader/img_21_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_21_nomul_vert_src = +{ + img_21_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_21_bgra_frag_glsl[] = +#include "shader/img_21_bgra_frag.h" + ; +Evas_GL_Program_Source shader_img_21_bgra_frag_src = +{ + img_21_bgra_frag_glsl, + NULL, 0 +}; + +const char img_21_bgra_vert_glsl[] = +#include "shader/img_21_bgra_vert.h" + ; +Evas_GL_Program_Source shader_img_21_bgra_vert_src = +{ + img_21_bgra_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_21_bgra_nomul_frag_glsl[] = +#include "shader/img_21_bgra_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_21_bgra_nomul_frag_src = +{ + img_21_bgra_nomul_frag_glsl, + NULL, 0 +}; + +const char img_21_bgra_nomul_vert_glsl[] = +#include "shader/img_21_bgra_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_21_bgra_nomul_vert_src = +{ + img_21_bgra_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_21_frag_glsl[] = +#include "shader/tex_21_frag.h" + ; +Evas_GL_Program_Source shader_tex_21_frag_src = +{ + tex_21_frag_glsl, + NULL, 0 +}; + +const char tex_21_vert_glsl[] = +#include "shader/tex_21_vert.h" + ; +Evas_GL_Program_Source shader_tex_21_vert_src = +{ + tex_21_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_21_nomul_frag_glsl[] = +#include "shader/tex_21_nomul_frag.h" + ; +Evas_GL_Program_Source shader_tex_21_nomul_frag_src = +{ + tex_21_nomul_frag_glsl, + NULL, 0 +}; + +const char tex_21_nomul_vert_glsl[] = +#include "shader/tex_21_nomul_vert.h" + ; +Evas_GL_Program_Source shader_tex_21_nomul_vert_src = +{ + tex_21_nomul_vert_glsl, + NULL, 0 +}; + + + + +///////////////////////////////////////////// +const char img_12_frag_glsl[] = +#include "shader/img_12_frag.h" + ; +Evas_GL_Program_Source shader_img_12_frag_src = +{ + img_12_frag_glsl, + NULL, 0 +}; + +const char img_12_vert_glsl[] = +#include "shader/img_12_vert.h" + ; +Evas_GL_Program_Source shader_img_12_vert_src = +{ + img_12_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_12_nomul_frag_glsl[] = +#include "shader/img_12_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_12_nomul_frag_src = +{ + img_12_nomul_frag_glsl, + NULL, 0 +}; + +const char img_12_nomul_vert_glsl[] = +#include "shader/img_12_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_12_nomul_vert_src = +{ + img_12_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_12_bgra_frag_glsl[] = +#include "shader/img_12_bgra_frag.h" + ; +Evas_GL_Program_Source shader_img_12_bgra_frag_src = +{ + img_12_bgra_frag_glsl, + NULL, 0 +}; + +const char img_12_bgra_vert_glsl[] = +#include "shader/img_12_bgra_vert.h" + ; +Evas_GL_Program_Source shader_img_12_bgra_vert_src = +{ + img_12_bgra_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_12_bgra_nomul_frag_glsl[] = +#include "shader/img_12_bgra_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_12_bgra_nomul_frag_src = +{ + img_12_bgra_nomul_frag_glsl, + NULL, 0 +}; + +const char img_12_bgra_nomul_vert_glsl[] = +#include "shader/img_12_bgra_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_12_bgra_nomul_vert_src = +{ + img_12_bgra_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_12_frag_glsl[] = +#include "shader/tex_12_frag.h" + ; +Evas_GL_Program_Source shader_tex_12_frag_src = +{ + tex_12_frag_glsl, + NULL, 0 +}; + +const char tex_12_vert_glsl[] = +#include "shader/tex_12_vert.h" + ; +Evas_GL_Program_Source shader_tex_12_vert_src = +{ + tex_12_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_12_nomul_frag_glsl[] = +#include "shader/tex_12_nomul_frag.h" + ; +Evas_GL_Program_Source shader_tex_12_nomul_frag_src = +{ + tex_12_nomul_frag_glsl, + NULL, 0 +}; + +const char tex_12_nomul_vert_glsl[] = +#include "shader/tex_12_nomul_vert.h" + ; +Evas_GL_Program_Source shader_tex_12_nomul_vert_src = +{ + tex_12_nomul_vert_glsl, + NULL, 0 +}; + + + + +///////////////////////////////////////////// +const char img_22_frag_glsl[] = +#include "shader/img_22_frag.h" + ; +Evas_GL_Program_Source shader_img_22_frag_src = +{ + img_22_frag_glsl, + NULL, 0 +}; + +const char img_22_vert_glsl[] = +#include "shader/img_22_vert.h" + ; +Evas_GL_Program_Source shader_img_22_vert_src = +{ + img_22_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_22_nomul_frag_glsl[] = +#include "shader/img_22_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_22_nomul_frag_src = +{ + img_22_nomul_frag_glsl, + NULL, 0 +}; + +const char img_22_nomul_vert_glsl[] = +#include "shader/img_22_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_22_nomul_vert_src = +{ + img_22_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_22_bgra_frag_glsl[] = +#include "shader/img_22_bgra_frag.h" + ; +Evas_GL_Program_Source shader_img_22_bgra_frag_src = +{ + img_22_bgra_frag_glsl, + NULL, 0 +}; + +const char img_22_bgra_vert_glsl[] = +#include "shader/img_22_bgra_vert.h" + ; +Evas_GL_Program_Source shader_img_22_bgra_vert_src = +{ + img_22_bgra_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char img_22_bgra_nomul_frag_glsl[] = +#include "shader/img_22_bgra_nomul_frag.h" + ; +Evas_GL_Program_Source shader_img_22_bgra_nomul_frag_src = +{ + img_22_bgra_nomul_frag_glsl, + NULL, 0 +}; + +const char img_22_bgra_nomul_vert_glsl[] = +#include "shader/img_22_bgra_nomul_vert.h" + ; +Evas_GL_Program_Source shader_img_22_bgra_nomul_vert_src = +{ + img_22_bgra_nomul_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_22_frag_glsl[] = +#include "shader/tex_22_frag.h" + ; +Evas_GL_Program_Source shader_tex_22_frag_src = +{ + tex_22_frag_glsl, + NULL, 0 +}; + +const char tex_22_vert_glsl[] = +#include "shader/tex_22_vert.h" + ; +Evas_GL_Program_Source shader_tex_22_vert_src = +{ + tex_22_vert_glsl, + NULL, 0 +}; + +///////////////////////////////////////////// +const char tex_22_nomul_frag_glsl[] = +#include "shader/tex_22_nomul_frag.h" + ; +Evas_GL_Program_Source shader_tex_22_nomul_frag_src = +{ + tex_22_nomul_frag_glsl, + NULL, 0 +}; + +const char tex_22_nomul_vert_glsl[] = +#include "shader/tex_22_nomul_vert.h" + ; +Evas_GL_Program_Source shader_tex_22_nomul_vert_src = +{ + tex_22_nomul_vert_glsl, + NULL, 0 +}; + + + + ///////////////////////////////////////////// const char yuv_frag_glsl[] = #include "shader/yuv_frag.h" @@ -151,141 +644,6 @@ Evas_GL_Program_Source shader_yuv_nomul_vert_src = NULL, 0 }; -///////////////////////////////////////////// -const char tex_frag_glsl[] = -#include "shader/tex_frag.h" - ; -Evas_GL_Program_Source shader_tex_frag_src = -{ - tex_frag_glsl, - NULL, 0 -}; - -const char tex_vert_glsl[] = -#include "shader/tex_vert.h" - ; -Evas_GL_Program_Source shader_tex_vert_src = -{ - tex_vert_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -const char tex_nomul_frag_glsl[] = -#include "shader/tex_nomul_frag.h" - ; -Evas_GL_Program_Source shader_tex_nomul_frag_src = -{ - tex_nomul_frag_glsl, - NULL, 0 -}; - -const char tex_nomul_vert_glsl[] = -#include "shader/tex_nomul_vert.h" - ; -Evas_GL_Program_Source shader_tex_nomul_vert_src = -{ - tex_nomul_vert_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -const char img_frag_glsl[] = -#include "shader/img_frag.h" - ; -Evas_GL_Program_Source shader_img_frag_src = -{ - img_frag_glsl, - NULL, 0 -}; - -const char img_vert_glsl[] = -#include "shader/img_vert.h" - ; -Evas_GL_Program_Source shader_img_vert_src = -{ - img_vert_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -const char img_nomul_frag_glsl[] = -#include "shader/img_nomul_frag.h" - ; -Evas_GL_Program_Source shader_img_nomul_frag_src = -{ - img_nomul_frag_glsl, - NULL, 0 -}; - -const char img_nomul_vert_glsl[] = -#include "shader/img_nomul_vert.h" - ; -Evas_GL_Program_Source shader_img_nomul_vert_src = -{ - img_nomul_vert_glsl, - NULL, 0 -}; - -///////////////////////////////////////////// -const char img_bgra_frag_glsl[] = -#include "shader/img_bgra_frag.h" - ; -Evas_GL_Program_Source shader_img_bgra_frag_src = -{ - img_bgra_frag_glsl, - NULL, 0 -}; - -const char img_bgra_vert_glsl[] = -#include "shader/img_bgra_vert.h" - ; -Evas_GL_Program_Source shader_img_bgra_vert_src = -{ - img_bgra_vert_glsl, - NULL, 0 -}; - - -///////////////////////////////////////////// -const char img_mask_frag_glsl[] = -#include "shader/img_mask_frag.h" - ; -Evas_GL_Program_Source shader_img_mask_frag_src = -{ - img_mask_frag_glsl, - NULL, 0 -}; - -const char img_mask_vert_glsl[] = -#include "shader/img_mask_vert.h" - ; -Evas_GL_Program_Source shader_img_mask_vert_src = -{ - img_mask_vert_glsl, - NULL, 0 -}; - - -///////////////////////////////////////////// -const char img_bgra_nomul_frag_glsl[] = -#include "shader/img_bgra_nomul_frag.h" - ; -Evas_GL_Program_Source shader_img_bgra_nomul_frag_src = -{ - img_bgra_nomul_frag_glsl, - NULL, 0 -}; - -const char img_bgra_nomul_vert_glsl[] = -#include "shader/img_bgra_nomul_vert.h" - ; -Evas_GL_Program_Source shader_img_bgra_nomul_vert_src = -{ - img_bgra_nomul_vert_glsl, - NULL, 0 -}; - ///////////////////////////////////////////// static void @@ -364,6 +722,7 @@ _evas_gl_common_shader_program_binary_init(Evas_GL_Program *p, glBindAttribLocation(p->prog, SHAD_TEXUV2, "tex_coord2"); glBindAttribLocation(p->prog, SHAD_TEXUV3, "tex_coord3"); glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); + glBindAttribLocation(p->prog, SHAD_TEXSAM, "tex_sample"); glGetProgramiv(p->prog, GL_LINK_STATUS, &ok); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); @@ -487,6 +846,8 @@ _evas_gl_common_shader_program_source_init(Evas_GL_Program *p, GLERR(__FUNCTION__, __FILE__, __LINE__, ""); glBindAttribLocation(p->prog, SHAD_TEXM, "tex_coordm"); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); + glBindAttribLocation(p->prog, SHAD_TEXSAM, "tex_sample"); + GLERR(__FUNCTION__, __FILE__, __LINE__, ""); glLinkProgram(p->prog); GLERR(__FUNCTION__, __FILE__, __LINE__, ""); @@ -517,19 +878,43 @@ static const struct { } _shaders_source[] = { SHADER_SOURCE_LINE(RECT, rect), SHADER_SOURCE_LINE(FONT, font), + + SHADER_SOURCE_LINE(IMG_MASK, img_mask), + SHADER_SOURCE_LINE(IMG, img), SHADER_SOURCE_LINE(IMG_NOMUL, img_nomul), SHADER_SOURCE_LINE(IMG_BGRA, img_bgra), SHADER_SOURCE_LINE(IMG_BGRA_NOMUL, img_bgra_nomul), - SHADER_SOURCE_LINE(IMG_MASK, img_mask), + SHADER_SOURCE_LINE(TEX, tex), + SHADER_SOURCE_LINE(TEX_NOMUL, tex_nomul), + + SHADER_SOURCE_LINE(IMG_21, img_21), + SHADER_SOURCE_LINE(IMG_21_NOMUL, img_21_nomul), + SHADER_SOURCE_LINE(IMG_21_BGRA, img_21_bgra), + SHADER_SOURCE_LINE(IMG_21_BGRA_NOMUL, img_21_bgra_nomul), + SHADER_SOURCE_LINE(TEX_21, tex_21), + SHADER_SOURCE_LINE(TEX_21_NOMUL, tex_21_nomul), + + SHADER_SOURCE_LINE(IMG_12, img_12), + SHADER_SOURCE_LINE(IMG_12_NOMUL, img_12_nomul), + SHADER_SOURCE_LINE(IMG_12_BGRA, img_12_bgra), + SHADER_SOURCE_LINE(IMG_12_BGRA_NOMUL, img_12_bgra_nomul), + SHADER_SOURCE_LINE(TEX_12, tex_12), + SHADER_SOURCE_LINE(TEX_12_NOMUL, tex_12_nomul), + + SHADER_SOURCE_LINE(IMG_22, img_22), + SHADER_SOURCE_LINE(IMG_22_NOMUL, img_22_nomul), + SHADER_SOURCE_LINE(IMG_22_BGRA, img_22_bgra), + SHADER_SOURCE_LINE(IMG_22_BGRA_NOMUL, img_22_bgra_nomul), + SHADER_SOURCE_LINE(TEX_22, tex_22), + SHADER_SOURCE_LINE(TEX_22_NOMUL, tex_22_nomul), + SHADER_SOURCE_LINE(YUV, yuv), SHADER_SOURCE_LINE(YUV_NOMUL, yuv_nomul), SHADER_SOURCE_LINE(YUY2, yuy2), SHADER_SOURCE_LINE(YUY2_NOMUL, yuy2_nomul), SHADER_SOURCE_LINE(NV12, nv12), SHADER_SOURCE_LINE(NV12_NOMUL, nv12_nomul), - SHADER_SOURCE_LINE(TEX, tex), - SHADER_SOURCE_LINE(TEX_NOMUL, tex_nomul), }; static int @@ -537,13 +922,15 @@ _evas_gl_common_shader_source_init(Evas_GL_Shared *shared) { unsigned int i; - for (i = 0; i < sizeof (_shaders_source) / sizeof (_shaders_source[0]); ++i) - if (!_evas_gl_common_shader_program_source_init(&(shared->shader[_shaders_source[i].id]), - _shaders_source[i].vert, - _shaders_source[i].frag, - _shaders_source[i].name)) - return 0; - + for (i = 0; i < sizeof (_shaders_source) / sizeof (_shaders_source[0]); i++) + { + if (!_evas_gl_common_shader_program_source_init + (&(shared->shader[_shaders_source[i].id]), + _shaders_source[i].vert, + _shaders_source[i].frag, + _shaders_source[i].name)) + return 0; + } return 1; } diff --git a/src/modules/evas/engines/gl_common/evas_gl_texture.c b/src/modules/evas/engines/gl_common/evas_gl_texture.c index 11dc274ee8..633c8b643a 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_texture.c +++ b/src/modules/evas/engines/gl_common/evas_gl_texture.c @@ -302,16 +302,19 @@ evas_gl_common_texture_new(Evas_Engine_GL_Context *gc, RGBA_Image *im) tex->gc = gc; tex->references = 1; +#define TEX_HREP 1 +#define TEX_VREP 1 + if (im->cache_entry.flags.alpha) { if (gc->shared->info.bgra) - tex->pt = _pool_tex_find(gc, im->cache_entry.w + 2, - im->cache_entry.h + 1, bgra_ifmt, bgra_fmt, + tex->pt = _pool_tex_find(gc, im->cache_entry.w + TEX_HREP + 2, + im->cache_entry.h + TEX_VREP, bgra_ifmt, bgra_fmt, &u, &v, &l_after, gc->shared->info.tune.atlas.max_alloc_size); else - tex->pt = _pool_tex_find(gc, im->cache_entry.w + 2, - im->cache_entry.h + 1, rgba_ifmt, rgba_fmt, + tex->pt = _pool_tex_find(gc, im->cache_entry.w + TEX_HREP + 2, + im->cache_entry.h + TEX_VREP, rgba_ifmt, rgba_fmt, &u, &v, &l_after, gc->shared->info.tune.atlas.max_alloc_size); tex->alpha = 1; @@ -319,19 +322,19 @@ evas_gl_common_texture_new(Evas_Engine_GL_Context *gc, RGBA_Image *im) else { if (gc->shared->info.bgra) - tex->pt = _pool_tex_find(gc, im->cache_entry.w + 3, - im->cache_entry.h + 1, bgr_ifmt, bgr_fmt, + tex->pt = _pool_tex_find(gc, im->cache_entry.w + TEX_HREP + 2, + im->cache_entry.h + TEX_VREP, bgr_ifmt, bgr_fmt, &u, &v, &l_after, gc->shared->info.tune.atlas.max_alloc_size); else #ifdef GL_GLES - tex->pt = _pool_tex_find(gc, im->cache_entry.w + 3, - im->cache_entry.h + 1, rgba_ifmt, rgba_fmt, + tex->pt = _pool_tex_find(gc, im->cache_entry.w + TEX_HREP + 2, + im->cache_entry.h + TEX_VREP, rgba_ifmt, rgba_fmt, &u, &v, &l_after, gc->shared->info.tune.atlas.max_alloc_size); #else - tex->pt = _pool_tex_find(gc, im->cache_entry.w + 3, - im->cache_entry.h + 1, rgb_ifmt, rgb_fmt, + tex->pt = _pool_tex_find(gc, im->cache_entry.w + TEX_HREP + 2, + im->cache_entry.h + TEX_VREP, rgb_ifmt, rgb_fmt, &u, &v, &l_after, gc->shared->info.tune.atlas.max_alloc_size); #endif diff --git a/src/modules/evas/engines/gl_common/shader/compile.sh b/src/modules/evas/engines/gl_common/shader/compile.sh index a96b58c9e7..beb424d621 100755 --- a/src/modules/evas/engines/gl_common/shader/compile.sh +++ b/src/modules/evas/engines/gl_common/shader/compile.sh @@ -16,15 +16,46 @@ function compile() compile rect compile font + +compile img_mask + compile img compile img_nomul compile img_bgra compile img_bgra_nomul -compile img_mask -compile yuv -compile yuv_nomul compile tex compile tex_nomul + +compile img_21 +compile img_21_nomul +compile img_21_bgra +compile img_21_bgra_nomul +compile tex_21 +compile tex_21_nomul + +compile img_12 +compile img_12_nomul +compile img_12_bgra +compile img_12_bgra_nomul +compile tex_12 +compile tex_12_nomul + +compile img_22 +compile img_22_nomul +compile img_22_bgra +compile img_22_bgra_nomul +compile tex_22 +compile tex_22_nomul + +## above section must have 21, 22 and 12 versions + +compile yuv +compile yuv_nomul +compile nv12 +compile nv12_nomul +compile yuy2 +compile yuy2_nomul + compile filter_blur_bgra compile filter_blur_bgra_nomul compile filter_blur @@ -41,8 +72,3 @@ compile filter_sepia_bgra compile filter_sepia_bgra_nomul compile filter_sepia compile filter_sepia_nomul -compile nv12 -compile nv12_nomul -compile yuy2 -compile yuy2_nomul - diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.h b/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.h new file mode 100644 index 0000000000..a076fb58fb --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.h @@ -0,0 +1,18 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = ((col00 + col01) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd new file mode 100644 index 0000000000..d23e17b352 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = ((col00 + col01) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.h new file mode 100644 index 0000000000..0be15b3300 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.h @@ -0,0 +1,17 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = (col00 + col01) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd new file mode 100644 index 0000000000..4d29510d4a --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd @@ -0,0 +1,17 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = (col00 + col01) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.h new file mode 100644 index 0000000000..cee10eaf6c --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.h @@ -0,0 +1,18 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(0, -tex_sample.y);\n" +" tex_s[1] = vec2(0, tex_sample.y);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd new file mode 100644 index 0000000000..40144aae07 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(0, -tex_sample.y); + tex_s[1] = vec2(0, tex_sample.y); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.h b/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.h new file mode 100644 index 0000000000..56cd0643aa --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.h @@ -0,0 +1,21 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(0, -tex_sample.y);\n" +" tex_s[1] = vec2(0, tex_sample.y);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd new file mode 100644 index 0000000000..810d73aaaa --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd @@ -0,0 +1,21 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(0, -tex_sample.y); + tex_s[1] = vec2(0, tex_sample.y); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_frag.h b/src/modules/evas/engines/gl_common/shader/img_12_frag.h new file mode 100644 index 0000000000..2cc4493088 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_frag.h @@ -0,0 +1,18 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n" +" gl_FragColor = ((col00 + col01) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_frag.shd new file mode 100644 index 0000000000..2647ab2b81 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_frag.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra; + vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra; + gl_FragColor = ((col00 + col01) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.h new file mode 100644 index 0000000000..9ff8813aa2 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.h @@ -0,0 +1,17 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n" +" gl_FragColor = (col00 + col01) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd new file mode 100644 index 0000000000..49872cfb48 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd @@ -0,0 +1,17 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra; + vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra; + gl_FragColor = (col00 + col01) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.h new file mode 100644 index 0000000000..cee10eaf6c --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.h @@ -0,0 +1,18 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(0, -tex_sample.y);\n" +" tex_s[1] = vec2(0, tex_sample.y);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd new file mode 100644 index 0000000000..40144aae07 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(0, -tex_sample.y); + tex_s[1] = vec2(0, tex_sample.y); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_12_vert.h b/src/modules/evas/engines/gl_common/shader/img_12_vert.h new file mode 100644 index 0000000000..56cd0643aa --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_vert.h @@ -0,0 +1,21 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(0, -tex_sample.y);\n" +" tex_s[1] = vec2(0, tex_sample.y);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_12_vert.shd b/src/modules/evas/engines/gl_common/shader/img_12_vert.shd new file mode 100644 index 0000000000..810d73aaaa --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_12_vert.shd @@ -0,0 +1,21 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(0, -tex_sample.y); + tex_s[1] = vec2(0, tex_sample.y); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.h b/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.h new file mode 100644 index 0000000000..a076fb58fb --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.h @@ -0,0 +1,18 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = ((col00 + col01) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd new file mode 100644 index 0000000000..d23e17b352 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = ((col00 + col01) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.h new file mode 100644 index 0000000000..0be15b3300 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.h @@ -0,0 +1,17 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = (col00 + col01) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd new file mode 100644 index 0000000000..4d29510d4a --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd @@ -0,0 +1,17 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = (col00 + col01) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.h new file mode 100644 index 0000000000..7c7d7db63b --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.h @@ -0,0 +1,18 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, 0);\n" +" tex_s[1] = vec2( tex_sample.x, 0);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd new file mode 100644 index 0000000000..a6b149f5c5 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, 0); + tex_s[1] = vec2( tex_sample.x, 0); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.h b/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.h new file mode 100644 index 0000000000..88d1470f26 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.h @@ -0,0 +1,21 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, 0);\n" +" tex_s[1] = vec2( tex_sample.x, 0);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd new file mode 100644 index 0000000000..98d9154a73 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd @@ -0,0 +1,21 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, 0); + tex_s[1] = vec2( tex_sample.x, 0); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_frag.h b/src/modules/evas/engines/gl_common/shader/img_21_frag.h new file mode 100644 index 0000000000..2cc4493088 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_frag.h @@ -0,0 +1,18 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n" +" gl_FragColor = ((col00 + col01) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_frag.shd new file mode 100644 index 0000000000..2647ab2b81 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_frag.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra; + vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra; + gl_FragColor = ((col00 + col01) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.h new file mode 100644 index 0000000000..9ff8813aa2 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.h @@ -0,0 +1,17 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n" +" gl_FragColor = (col00 + col01) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd new file mode 100644 index 0000000000..49872cfb48 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd @@ -0,0 +1,17 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra; + vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra; + gl_FragColor = (col00 + col01) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.h new file mode 100644 index 0000000000..7c7d7db63b --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.h @@ -0,0 +1,18 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, 0);\n" +" tex_s[1] = vec2( tex_sample.x, 0);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd new file mode 100644 index 0000000000..a6b149f5c5 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, 0); + tex_s[1] = vec2( tex_sample.x, 0); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_21_vert.h b/src/modules/evas/engines/gl_common/shader/img_21_vert.h new file mode 100644 index 0000000000..88d1470f26 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_vert.h @@ -0,0 +1,21 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, 0);\n" +" tex_s[1] = vec2( tex_sample.x, 0);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_21_vert.shd b/src/modules/evas/engines/gl_common/shader/img_21_vert.shd new file mode 100644 index 0000000000..98d9154a73 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_21_vert.shd @@ -0,0 +1,21 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, 0); + tex_s[1] = vec2( tex_sample.x, 0); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.h b/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.h new file mode 100644 index 0000000000..748a33a250 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.h @@ -0,0 +1,20 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n" +" vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n" +" gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd new file mode 100644 index 0000000000..ab1b12147d --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd @@ -0,0 +1,20 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + vec4 col10 = texture2D(tex, tex_c + tex_s[2]); + vec4 col11 = texture2D(tex, tex_c + tex_s[3]); + gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.h new file mode 100644 index 0000000000..4af85f9fab --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.h @@ -0,0 +1,19 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n" +" vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n" +" gl_FragColor = (col00 + col01 + col10 + col11) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd new file mode 100644 index 0000000000..3f380ea551 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd @@ -0,0 +1,19 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + vec4 col10 = texture2D(tex, tex_c + tex_s[2]); + vec4 col11 = texture2D(tex, tex_c + tex_s[3]); + gl_FragColor = (col00 + col01 + col10 + col11) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.h new file mode 100644 index 0000000000..c6fb270bf7 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.h @@ -0,0 +1,20 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n" +" tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n" +" tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n" +" tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n" +" div_s = vec4(4, 4, 4, 4);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd new file mode 100644 index 0000000000..e6303d782d --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd @@ -0,0 +1,20 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, -tex_sample.y); + tex_s[1] = vec2( tex_sample.x, -tex_sample.y); + tex_s[2] = vec2( tex_sample.x, tex_sample.y); + tex_s[3] = vec2(-tex_sample.x, tex_sample.y); + div_s = vec4(4, 4, 4, 4); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.h b/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.h new file mode 100644 index 0000000000..e1fc7f4558 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.h @@ -0,0 +1,23 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n" +" tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n" +" tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n" +" tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n" +" div_s = vec4(4, 4, 4, 4);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd new file mode 100644 index 0000000000..e964ea1e81 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd @@ -0,0 +1,23 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, -tex_sample.y); + tex_s[1] = vec2( tex_sample.x, -tex_sample.y); + tex_s[2] = vec2( tex_sample.x, tex_sample.y); + tex_s[3] = vec2(-tex_sample.x, tex_sample.y); + div_s = vec4(4, 4, 4, 4); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_frag.h b/src/modules/evas/engines/gl_common/shader/img_22_frag.h new file mode 100644 index 0000000000..3d64e07542 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_frag.h @@ -0,0 +1,20 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n" +" vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n" +" vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n" +" gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_frag.shd new file mode 100644 index 0000000000..1ff5ccc7a5 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_frag.shd @@ -0,0 +1,20 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra; + vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra; + vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra; + vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra; + gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.h new file mode 100644 index 0000000000..2a7f073b00 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.h @@ -0,0 +1,19 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra;\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra;\n" +" vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra;\n" +" vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra;\n" +" gl_FragColor = (col00 + col01 + col10 + col11) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd new file mode 100644 index 0000000000..3b87c099e3 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd @@ -0,0 +1,19 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]).bgra; + vec4 col01 = texture2D(tex, tex_c + tex_s[1]).bgra; + vec4 col10 = texture2D(tex, tex_c + tex_s[2]).bgra; + vec4 col11 = texture2D(tex, tex_c + tex_s[3]).bgra; + gl_FragColor = (col00 + col01 + col10 + col11) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.h new file mode 100644 index 0000000000..c6fb270bf7 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.h @@ -0,0 +1,20 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n" +" tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n" +" tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n" +" tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n" +" div_s = vec4(4, 4, 4, 4);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd new file mode 100644 index 0000000000..e6303d782d --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd @@ -0,0 +1,20 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, -tex_sample.y); + tex_s[1] = vec2( tex_sample.x, -tex_sample.y); + tex_s[2] = vec2( tex_sample.x, tex_sample.y); + tex_s[3] = vec2(-tex_sample.x, tex_sample.y); + div_s = vec4(4, 4, 4, 4); +} diff --git a/src/modules/evas/engines/gl_common/shader/img_22_vert.h b/src/modules/evas/engines/gl_common/shader/img_22_vert.h new file mode 100644 index 0000000000..e1fc7f4558 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_vert.h @@ -0,0 +1,23 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n" +" tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n" +" tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n" +" tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n" +" div_s = vec4(4, 4, 4, 4);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/img_22_vert.shd b/src/modules/evas/engines/gl_common/shader/img_22_vert.shd new file mode 100644 index 0000000000..e964ea1e81 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/img_22_vert.shd @@ -0,0 +1,23 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, -tex_sample.y); + tex_s[1] = vec2( tex_sample.x, -tex_sample.y); + tex_s[2] = vec2( tex_sample.x, tex_sample.y); + tex_s[3] = vec2(-tex_sample.x, tex_sample.y); + div_s = vec4(4, 4, 4, 4); +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_frag.h b/src/modules/evas/engines/gl_common/shader/tex_12_frag.h new file mode 100644 index 0000000000..a076fb58fb --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_frag.h @@ -0,0 +1,18 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = ((col00 + col01) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_12_frag.shd new file mode 100644 index 0000000000..d23e17b352 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_frag.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = ((col00 + col01) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.h new file mode 100644 index 0000000000..0be15b3300 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.h @@ -0,0 +1,17 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = (col00 + col01) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd new file mode 100644 index 0000000000..4d29510d4a --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd @@ -0,0 +1,17 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = (col00 + col01) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.h new file mode 100644 index 0000000000..cee10eaf6c --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.h @@ -0,0 +1,18 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(0, -tex_sample.y);\n" +" tex_s[1] = vec2(0, tex_sample.y);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd new file mode 100644 index 0000000000..40144aae07 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(0, -tex_sample.y); + tex_s[1] = vec2(0, tex_sample.y); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_vert.h b/src/modules/evas/engines/gl_common/shader/tex_12_vert.h new file mode 100644 index 0000000000..56cd0643aa --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_vert.h @@ -0,0 +1,21 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(0, -tex_sample.y);\n" +" tex_s[1] = vec2(0, tex_sample.y);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_12_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_12_vert.shd new file mode 100644 index 0000000000..810d73aaaa --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_12_vert.shd @@ -0,0 +1,21 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(0, -tex_sample.y); + tex_s[1] = vec2(0, tex_sample.y); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_frag.h b/src/modules/evas/engines/gl_common/shader/tex_21_frag.h new file mode 100644 index 0000000000..a076fb58fb --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_frag.h @@ -0,0 +1,18 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = ((col00 + col01) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_21_frag.shd new file mode 100644 index 0000000000..d23e17b352 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_frag.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = ((col00 + col01) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.h new file mode 100644 index 0000000000..0be15b3300 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.h @@ -0,0 +1,17 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" gl_FragColor = (col00 + col01) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd new file mode 100644 index 0000000000..4d29510d4a --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd @@ -0,0 +1,17 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + gl_FragColor = (col00 + col01) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.h new file mode 100644 index 0000000000..7c7d7db63b --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.h @@ -0,0 +1,18 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, 0);\n" +" tex_s[1] = vec2( tex_sample.x, 0);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd new file mode 100644 index 0000000000..a6b149f5c5 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd @@ -0,0 +1,18 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, 0); + tex_s[1] = vec2( tex_sample.x, 0); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_vert.h b/src/modules/evas/engines/gl_common/shader/tex_21_vert.h new file mode 100644 index 0000000000..88d1470f26 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_vert.h @@ -0,0 +1,21 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[2];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, 0);\n" +" tex_s[1] = vec2( tex_sample.x, 0);\n" +" div_s = vec4(2, 2, 2, 2);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_21_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_21_vert.shd new file mode 100644 index 0000000000..98d9154a73 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_21_vert.shd @@ -0,0 +1,21 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[2]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, 0); + tex_s[1] = vec2( tex_sample.x, 0); + div_s = vec4(2, 2, 2, 2); +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_frag.h b/src/modules/evas/engines/gl_common/shader/tex_22_frag.h new file mode 100644 index 0000000000..748a33a250 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_frag.h @@ -0,0 +1,20 @@ +"#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" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n" +" vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n" +" gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_22_frag.shd new file mode 100644 index 0000000000..ab1b12147d --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_frag.shd @@ -0,0 +1,20 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + vec4 col10 = texture2D(tex, tex_c + tex_s[2]); + vec4 col11 = texture2D(tex, tex_c + tex_s[3]); + gl_FragColor = ((col00 + col01 + col10 + col11) / div_s) * col; +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.h b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.h new file mode 100644 index 0000000000..4af85f9fab --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.h @@ -0,0 +1,19 @@ +"#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" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" vec4 col00 = texture2D(tex, tex_c + tex_s[0]);\n" +" vec4 col01 = texture2D(tex, tex_c + tex_s[1]);\n" +" vec4 col10 = texture2D(tex, tex_c + tex_s[2]);\n" +" vec4 col11 = texture2D(tex, tex_c + tex_s[3]);\n" +" gl_FragColor = (col00 + col01 + col10 + col11) / div_s;\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd new file mode 100644 index 0000000000..3f380ea551 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd @@ -0,0 +1,19 @@ +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#endif +uniform sampler2D tex; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + vec4 col00 = texture2D(tex, tex_c + tex_s[0]); + vec4 col01 = texture2D(tex, tex_c + tex_s[1]); + vec4 col10 = texture2D(tex, tex_c + tex_s[2]); + vec4 col11 = texture2D(tex, tex_c + tex_s[3]); + gl_FragColor = (col00 + col01 + col10 + col11) / div_s; +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.h b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.h new file mode 100644 index 0000000000..c6fb270bf7 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.h @@ -0,0 +1,20 @@ +"#ifdef GL_ES\n" +"precision highp float;\n" +"#endif\n" +"attribute vec4 vertex;\n" +"attribute vec2 tex_coord;\n" +"attribute vec2 tex_sample;\n" +"uniform mat4 mvp;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n" +" tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n" +" tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n" +" tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n" +" div_s = vec4(4, 4, 4, 4);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd new file mode 100644 index 0000000000..e6303d782d --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd @@ -0,0 +1,20 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, -tex_sample.y); + tex_s[1] = vec2( tex_sample.x, -tex_sample.y); + tex_s[2] = vec2( tex_sample.x, tex_sample.y); + tex_s[3] = vec2(-tex_sample.x, tex_sample.y); + div_s = vec4(4, 4, 4, 4); +} diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_vert.h b/src/modules/evas/engines/gl_common/shader/tex_22_vert.h new file mode 100644 index 0000000000..e1fc7f4558 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_vert.h @@ -0,0 +1,23 @@ +"#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_sample;\n" +"uniform mat4 mvp;\n" +"varying vec4 col;\n" +"varying vec2 tex_c;\n" +"varying vec2 tex_s[4];\n" +"varying vec4 div_s;\n" +"void main()\n" +"{\n" +" gl_Position = mvp * vertex;\n" +" col = color;\n" +" tex_c = tex_coord;\n" +" tex_s[0] = vec2(-tex_sample.x, -tex_sample.y);\n" +" tex_s[1] = vec2( tex_sample.x, -tex_sample.y);\n" +" tex_s[2] = vec2( tex_sample.x, tex_sample.y);\n" +" tex_s[3] = vec2(-tex_sample.x, tex_sample.y);\n" +" div_s = vec4(4, 4, 4, 4);\n" +"}\n" diff --git a/src/modules/evas/engines/gl_common/shader/tex_22_vert.shd b/src/modules/evas/engines/gl_common/shader/tex_22_vert.shd new file mode 100644 index 0000000000..e964ea1e81 --- /dev/null +++ b/src/modules/evas/engines/gl_common/shader/tex_22_vert.shd @@ -0,0 +1,23 @@ +#ifdef GL_ES +precision highp float; +#endif +attribute vec4 vertex; +attribute vec4 color; +attribute vec2 tex_coord; +attribute vec2 tex_sample; +uniform mat4 mvp; +varying vec4 col; +varying vec2 tex_c; +varying vec2 tex_s[4]; +varying vec4 div_s; +void main() +{ + gl_Position = mvp * vertex; + col = color; + tex_c = tex_coord; + tex_s[0] = vec2(-tex_sample.x, -tex_sample.y); + tex_s[1] = vec2( tex_sample.x, -tex_sample.y); + tex_s[2] = vec2( tex_sample.x, tex_sample.y); + tex_s[3] = vec2(-tex_sample.x, tex_sample.y); + div_s = vec4(4, 4, 4, 4); +}