diff options
Diffstat (limited to 'src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x')
-rw-r--r-- | src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x | 18 |
1 files changed, 18 insertions, 0 deletions
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 558531a50b..dec8aa93bc 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 @@ -26,9 +26,11 @@ static const char fragment_glsl[] = "#ifdef SHD_EXTERNAL\n" "uniform SAMPLER_EXTERNAL_OES tex;\n" "varying vec2 tex_c;\n" + "#define ADD_NOISE 1\n" "#elif defined(SHD_TEX)\n" "uniform sampler2D tex;\n" "varying vec2 tex_c;\n" + "#define ADD_NOISE 1\n" "#endif\n" "#if defined(SHD_NV12) || defined(SHD_YUY2)\n" "uniform sampler2D texuv;\n" @@ -80,6 +82,14 @@ static const char fragment_glsl[] = "# endif\n" "# endif\n" "#endif\n" + "#ifdef ADD_NOISE\n" + "float rand(vec2 co)\n" + "{\n" + " /* Magic 'random' number in range [0..1]. 'co' should be random coordinate.\n" + " * Distribution is not great. Falls apart with lowp float. */\n" + " return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453) - 0.5;\n" + "}\n" + "#endif\n" "void main()\n" "{\n" " vec4 c;\n" @@ -130,6 +140,11 @@ static const char fragment_glsl[] = "#else\n" " c = vec4(1, 1, 1, 1);\n" "#endif\n" + "#ifdef ADD_NOISE\n" + " vec4 noise = vec4(rand(tex_c) / 256.0, rand(tex_c + vec2(1, 1)) / 256.0, rand(tex_c + vec2(2, 2)) / 256.0, 0);\n" + " noise.a = max(noise.r, noise.g);\n" + " noise.a = max(noise.a, noise.b);\n" + "#endif\n" "#ifdef SHD_MASK\n" " float ma;\n" "# if defined(SHD_MASKSAM12) || defined(SHD_MASKSAM21)\n" @@ -160,6 +175,9 @@ static const char fragment_glsl[] = "#ifdef SHD_TEXA\n" " * texture2D(texa, tex_a).r\n" "#endif\n" + "#ifdef ADD_NOISE\n" + " + noise\n" + "#endif\n" " ;\n" "}\n"; |