diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/modules/engines/gl_common/shader/nv12_frag.shd | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libraries/evas/src/modules/engines/gl_common/shader/nv12_frag.shd b/libraries/evas/src/modules/engines/gl_common/shader/nv12_frag.shd new file mode 100644 index 0000000..34748fc --- /dev/null +++ b/libraries/evas/src/modules/engines/gl_common/shader/nv12_frag.shd | |||
@@ -0,0 +1,31 @@ | |||
1 | #ifdef GL_ES | ||
2 | #ifdef GL_FRAGMENT_PRECISION_HIGH | ||
3 | precision highp float; | ||
4 | #else | ||
5 | precision mediump float; | ||
6 | #endif | ||
7 | #endif | ||
8 | uniform sampler2D tex, texuv; | ||
9 | varying vec4 col; | ||
10 | varying vec2 tex_c, tex_cuv; | ||
11 | void main() | ||
12 | { | ||
13 | float y,u,v,vmu,r,g,b; | ||
14 | y=texture2D(tex,tex_c).g; | ||
15 | u=texture2D(texuv,tex_cuv).g; | ||
16 | v=texture2D(texuv,tex_cuv).a; | ||
17 | |||
18 | u=u-0.5; | ||
19 | v=v-0.5; | ||
20 | vmu=v*0.813+u*0.391; | ||
21 | u=u*2.018; | ||
22 | v=v*1.596; | ||
23 | y=(y-0.062)*1.164; | ||
24 | |||
25 | r=y+v; | ||
26 | g=y-vmu; | ||
27 | b=y+u; | ||
28 | |||
29 | gl_FragColor=vec4(r,g,b,1.0) * col; | ||
30 | } | ||
31 | |||