From 404ecdd8d7b0a91876c9ae11d1f0a80634b557d3 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Mon, 13 Apr 2015 21:49:45 +0900 Subject: [PATCH] Evas GL common: Fix RGB+A textures Since the shaders system rewrite, RGB+A (used for ETC1+Alpha encoding) did not work anymore. --- .../engines/gl_common/shader/evas_gl_enum.x | 6 ++++ .../gl_common/shader/evas_gl_shaders.x | 28 ++++++++++++++++--- .../evas/engines/gl_common/shader/shaders.txt | 12 ++++---- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/modules/evas/engines/gl_common/shader/evas_gl_enum.x b/src/modules/evas/engines/gl_common/shader/evas_gl_enum.x index 5c523fc9cd..4f3cb12aa6 100644 --- a/src/modules/evas/engines/gl_common/shader/evas_gl_enum.x +++ b/src/modules/evas/engines/gl_common/shader/evas_gl_enum.x @@ -119,8 +119,14 @@ static struct { { SHADER_IMG_21_BGRA_MASK_NOMUL, "texm" }, { SHADER_IMG_22_BGRA_MASK_NOMUL, "tex" }, { SHADER_IMG_22_BGRA_MASK_NOMUL, "texm" }, + { SHADER_RGB_A_PAIR, "tex" }, + { SHADER_RGB_A_PAIR, "texa" }, + { SHADER_RGB_A_PAIR_MASK, "tex" }, { SHADER_RGB_A_PAIR_MASK, "texa" }, { SHADER_RGB_A_PAIR_MASK, "texm" }, + { SHADER_RGB_A_PAIR_NOMUL, "tex" }, + { SHADER_RGB_A_PAIR_NOMUL, "texa" }, + { SHADER_RGB_A_PAIR_MASK_NOMUL, "tex" }, { SHADER_RGB_A_PAIR_MASK_NOMUL, "texa" }, { SHADER_RGB_A_PAIR_MASK_NOMUL, "texm" }, { SHADER_YUV, "tex" }, diff --git a/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x b/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x index f5dd596358..38cdc25546 100644 --- a/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x +++ b/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x @@ -2928,12 +2928,14 @@ static const char const rgb_a_pair_frag_glsl[] = "#endif\n" "#endif\n" "varying vec4 col;\n" + "uniform sampler2D tex;\n" + "varying vec2 tex_c;\n" "uniform sampler2D texa;\n" "varying vec2 tex_a;\n" "void main()\n" "{\n" " vec4 c;\n" - " c = vec4(1, 1, 1, 1);\n" + " c = texture2D(tex, tex_c).bgra;\n" " gl_FragColor =\n" " c\n" " * col\n" @@ -2954,12 +2956,15 @@ static const char const rgb_a_pair_vert_glsl[] = "uniform mat4 mvp;\n" "attribute vec4 color;\n" "varying vec4 col;\n" + "attribute vec2 tex_coord;\n" + "varying vec2 tex_c;\n" "attribute vec2 tex_coorda;\n" "varying vec2 tex_a;\n" "void main()\n" "{\n" " gl_Position = mvp * vertex;\n" " col = color;\n" + " tex_c = tex_coord;\n" " tex_a = tex_coorda;\n" "}\n"; Evas_GL_Program_Source shader_rgb_a_pair_vert_src = @@ -2977,6 +2982,8 @@ static const char const rgb_a_pair_mask_frag_glsl[] = "#endif\n" "#endif\n" "varying vec4 col;\n" + "uniform sampler2D tex;\n" + "varying vec2 tex_c;\n" "uniform sampler2D texa;\n" "varying vec2 tex_a;\n" "uniform sampler2D texm;\n" @@ -2984,7 +2991,7 @@ static const char const rgb_a_pair_mask_frag_glsl[] = "void main()\n" "{\n" " vec4 c;\n" - " c = vec4(1, 1, 1, 1);\n" + " c = texture2D(tex, tex_c).bgra;\n" " gl_FragColor =\n" " c\n" " * col\n" @@ -3006,6 +3013,8 @@ static const char const rgb_a_pair_mask_vert_glsl[] = "uniform mat4 mvp;\n" "attribute vec4 color;\n" "varying vec4 col;\n" + "attribute vec2 tex_coord;\n" + "varying vec2 tex_c;\n" "attribute vec2 tex_coorda;\n" "varying vec2 tex_a;\n" "attribute vec4 mask_coord;\n" @@ -3014,6 +3023,7 @@ static const char const rgb_a_pair_mask_vert_glsl[] = "{\n" " gl_Position = mvp * vertex;\n" " col = color;\n" + " tex_c = tex_coord;\n" " tex_a = tex_coorda;\n" " vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n" " tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n" @@ -3032,12 +3042,14 @@ static const char const rgb_a_pair_nomul_frag_glsl[] = "precision mediump float;\n" "#endif\n" "#endif\n" + "uniform sampler2D tex;\n" + "varying vec2 tex_c;\n" "uniform sampler2D texa;\n" "varying vec2 tex_a;\n" "void main()\n" "{\n" " vec4 c;\n" - " c = vec4(1, 1, 1, 1);\n" + " c = texture2D(tex, tex_c).bgra;\n" " gl_FragColor =\n" " c\n" " * texture2D(texa, tex_a).r\n" @@ -3055,11 +3067,14 @@ static const char const rgb_a_pair_nomul_vert_glsl[] = "#endif\n" "attribute vec4 vertex;\n" "uniform mat4 mvp;\n" + "attribute vec2 tex_coord;\n" + "varying vec2 tex_c;\n" "attribute vec2 tex_coorda;\n" "varying vec2 tex_a;\n" "void main()\n" "{\n" " gl_Position = mvp * vertex;\n" + " tex_c = tex_coord;\n" " tex_a = tex_coorda;\n" "}\n"; Evas_GL_Program_Source shader_rgb_a_pair_nomul_vert_src = @@ -3076,6 +3091,8 @@ static const char const rgb_a_pair_mask_nomul_frag_glsl[] = "precision mediump float;\n" "#endif\n" "#endif\n" + "uniform sampler2D tex;\n" + "varying vec2 tex_c;\n" "uniform sampler2D texa;\n" "varying vec2 tex_a;\n" "uniform sampler2D texm;\n" @@ -3083,7 +3100,7 @@ static const char const rgb_a_pair_mask_nomul_frag_glsl[] = "void main()\n" "{\n" " vec4 c;\n" - " c = vec4(1, 1, 1, 1);\n" + " c = texture2D(tex, tex_c).bgra;\n" " gl_FragColor =\n" " c\n" " * texture2D(texm, tex_m).a\n" @@ -3102,6 +3119,8 @@ static const char const rgb_a_pair_mask_nomul_vert_glsl[] = "#endif\n" "attribute vec4 vertex;\n" "uniform mat4 mvp;\n" + "attribute vec2 tex_coord;\n" + "varying vec2 tex_c;\n" "attribute vec2 tex_coorda;\n" "varying vec2 tex_a;\n" "attribute vec4 mask_coord;\n" @@ -3109,6 +3128,7 @@ static const char const rgb_a_pair_mask_nomul_vert_glsl[] = "void main()\n" "{\n" " gl_Position = mvp * vertex;\n" + " tex_c = tex_coord;\n" " tex_a = tex_coorda;\n" " vec4 mask_Position = mvp * vertex * vec4(0.5, sign(mask_coord.w) * 0.5, 0.5, 0.5) + vec4(0.5, 0.5, 0, 0);\n" " tex_m = mask_Position.xy * abs(mask_coord.zw) + mask_coord.xy;\n" diff --git a/src/modules/evas/engines/gl_common/shader/shaders.txt b/src/modules/evas/engines/gl_common/shader/shaders.txt index 6dd7f128c9..e5a3e7a721 100644 --- a/src/modules/evas/engines/gl_common/shader/shaders.txt +++ b/src/modules/evas/engines/gl_common/shader/shaders.txt @@ -77,12 +77,12 @@ img_22_bgra_nomul_afill:tex,sam22,bgra,nomul,afill # RGB+A. We can add more! -rgb_a_pair:texa -rgb_a_pair_mask:texa,mask -rgb_a_pair_nomul:texa,nomul -rgb_a_pair_mask_nomul:texa,mask,nomul -#rgb_a_pair_afill:texa,afill -#rgb_a_pair_nomul_afill:texa,nomul,afill +rgb_a_pair:tex,texa +rgb_a_pair_mask:tex,texa,mask +rgb_a_pair_nomul:tex,texa,nomul +rgb_a_pair_mask_nomul:tex,texa,mask,nomul +#rgb_a_pair_afill:tex,texa,afill +#rgb_a_pair_nomul_afill:tex,texa,nomul,afill