From 683e5d7d0848b0b044eca151c61ad2254dac2e63 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 26 Feb 2013 22:05:19 +0900 Subject: [PATCH] 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). --- ChangeLog | 11 + NEWS | 1 + src/Makefile_Evas.am | 149 ++-- .../evas/engines/gl_common/evas_gl_common.h | 35 +- .../evas/engines/gl_common/evas_gl_context.c | 223 +++++- .../evas/engines/gl_common/evas_gl_core.c | 0 .../evas/engines/gl_common/evas_gl_core.h | 0 .../engines/gl_common/evas_gl_core_private.h | 0 .../evas/engines/gl_common/evas_gl_shader.c | 677 ++++++++++++++---- .../evas/engines/gl_common/evas_gl_texture.c | 23 +- .../evas/engines/gl_common/shader/compile.sh | 42 +- .../gl_common/shader/img_12_bgra_frag.h | 18 + .../gl_common/shader/img_12_bgra_frag.shd | 18 + .../gl_common/shader/img_12_bgra_nomul_frag.h | 17 + .../shader/img_12_bgra_nomul_frag.shd | 17 + .../gl_common/shader/img_12_bgra_nomul_vert.h | 18 + .../shader/img_12_bgra_nomul_vert.shd | 18 + .../gl_common/shader/img_12_bgra_vert.h | 21 + .../gl_common/shader/img_12_bgra_vert.shd | 21 + .../engines/gl_common/shader/img_12_frag.h | 18 + .../engines/gl_common/shader/img_12_frag.shd | 18 + .../gl_common/shader/img_12_nomul_frag.h | 17 + .../gl_common/shader/img_12_nomul_frag.shd | 17 + .../gl_common/shader/img_12_nomul_vert.h | 18 + .../gl_common/shader/img_12_nomul_vert.shd | 18 + .../engines/gl_common/shader/img_12_vert.h | 21 + .../engines/gl_common/shader/img_12_vert.shd | 21 + .../gl_common/shader/img_21_bgra_frag.h | 18 + .../gl_common/shader/img_21_bgra_frag.shd | 18 + .../gl_common/shader/img_21_bgra_nomul_frag.h | 17 + .../shader/img_21_bgra_nomul_frag.shd | 17 + .../gl_common/shader/img_21_bgra_nomul_vert.h | 18 + .../shader/img_21_bgra_nomul_vert.shd | 18 + .../gl_common/shader/img_21_bgra_vert.h | 21 + .../gl_common/shader/img_21_bgra_vert.shd | 21 + .../engines/gl_common/shader/img_21_frag.h | 18 + .../engines/gl_common/shader/img_21_frag.shd | 18 + .../gl_common/shader/img_21_nomul_frag.h | 17 + .../gl_common/shader/img_21_nomul_frag.shd | 17 + .../gl_common/shader/img_21_nomul_vert.h | 18 + .../gl_common/shader/img_21_nomul_vert.shd | 18 + .../engines/gl_common/shader/img_21_vert.h | 21 + .../engines/gl_common/shader/img_21_vert.shd | 21 + .../gl_common/shader/img_22_bgra_frag.h | 20 + .../gl_common/shader/img_22_bgra_frag.shd | 20 + .../gl_common/shader/img_22_bgra_nomul_frag.h | 19 + .../shader/img_22_bgra_nomul_frag.shd | 19 + .../gl_common/shader/img_22_bgra_nomul_vert.h | 20 + .../shader/img_22_bgra_nomul_vert.shd | 20 + .../gl_common/shader/img_22_bgra_vert.h | 23 + .../gl_common/shader/img_22_bgra_vert.shd | 23 + .../engines/gl_common/shader/img_22_frag.h | 20 + .../engines/gl_common/shader/img_22_frag.shd | 20 + .../gl_common/shader/img_22_nomul_frag.h | 19 + .../gl_common/shader/img_22_nomul_frag.shd | 19 + .../gl_common/shader/img_22_nomul_vert.h | 20 + .../gl_common/shader/img_22_nomul_vert.shd | 20 + .../engines/gl_common/shader/img_22_vert.h | 23 + .../engines/gl_common/shader/img_22_vert.shd | 23 + .../engines/gl_common/shader/tex_12_frag.h | 18 + .../engines/gl_common/shader/tex_12_frag.shd | 18 + .../gl_common/shader/tex_12_nomul_frag.h | 17 + .../gl_common/shader/tex_12_nomul_frag.shd | 17 + .../gl_common/shader/tex_12_nomul_vert.h | 18 + .../gl_common/shader/tex_12_nomul_vert.shd | 18 + .../engines/gl_common/shader/tex_12_vert.h | 21 + .../engines/gl_common/shader/tex_12_vert.shd | 21 + .../engines/gl_common/shader/tex_21_frag.h | 18 + .../engines/gl_common/shader/tex_21_frag.shd | 18 + .../gl_common/shader/tex_21_nomul_frag.h | 17 + .../gl_common/shader/tex_21_nomul_frag.shd | 17 + .../gl_common/shader/tex_21_nomul_vert.h | 18 + .../gl_common/shader/tex_21_nomul_vert.shd | 18 + .../engines/gl_common/shader/tex_21_vert.h | 21 + .../engines/gl_common/shader/tex_21_vert.shd | 21 + .../engines/gl_common/shader/tex_22_frag.h | 20 + .../engines/gl_common/shader/tex_22_frag.shd | 20 + .../gl_common/shader/tex_22_nomul_frag.h | 19 + .../gl_common/shader/tex_22_nomul_frag.shd | 19 + .../gl_common/shader/tex_22_nomul_vert.h | 20 + .../gl_common/shader/tex_22_nomul_vert.shd | 20 + .../engines/gl_common/shader/tex_22_vert.h | 23 + .../engines/gl_common/shader/tex_22_vert.shd | 23 + 83 files changed, 2300 insertions(+), 241 deletions(-) mode change 100755 => 100644 src/modules/evas/engines/gl_common/evas_gl_core.c mode change 100755 => 100644 src/modules/evas/engines/gl_common/evas_gl_core.h mode change 100755 => 100644 src/modules/evas/engines/gl_common/evas_gl_core_private.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_bgra_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_12_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_bgra_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_21_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_bgra_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/img_22_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_12_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_21_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_nomul_frag.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_nomul_vert.shd create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_vert.h create mode 100644 src/modules/evas/engines/gl_common/shader/tex_22_vert.shd 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); +}