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).
This commit is contained in:
Carsten Haitzler 2013-02-26 22:05:19 +09:00
parent b726563a9e
commit 683e5d7d08
83 changed files with 2300 additions and 241 deletions

View File

@ -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.

1
NEWS
View File

@ -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

View File

@ -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@

View File

@ -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;

View File

@ -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;

0
src/modules/evas/engines/gl_common/evas_gl_core.c Executable file → Normal file
View File

0
src/modules/evas/engines/gl_common/evas_gl_core.h Executable file → Normal file
View File

View File

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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;
}

View File

@ -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"

View File

@ -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);
}

View File

@ -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"

View File

@ -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);
}