My work thus far. Contains shaders for motion compensation with 1 reference picture...
[xbmc:xbmc-antiquated.git] / sources / dvdplayer / ffmpeg / gpu / shaders / halfpel1.frag
1 #extension GL_ARB_texture_rectangle : enable
2
3 uniform sampler3D dpb;
4
5 //Coefficients of the 6 tap filter
6 vec2 coeffs_l = vec2(1.0, -5.0);
7 vec4 coeffs_r = vec4(20.0, 20.0,-5.0, 1.0);
8
9 void main(void)
10 {
11   vec2 l;
12   vec4 r;
13
14   l = vec2(float(texture2DRect(dpb, gl_TexCoord[0].st+gl_TexCoord[1].st*2.0).r),
15            float(texture2DRect(dpb, gl_TexCoord[0].st+gl_TexCoord[1].st).r));
16   
17   r = vec4(float(texture2DRect(dpb, gl_TexCoord[0].st).r),
18            float(texture2DRect(dpb, gl_TexCoord[0].st-gl_TexCoord[1].st).r),
19            float(texture2DRect(dpb, gl_TexCoord[0].st-gl_TexCoord[1].st*2.0).r),
20            float(texture2DRect(dpb, gl_TexCoord[0].st-gl_TexCoord[1].st*3.0).r));
21
22   //Texturein contains the previous frame
23   gl_FragColor = floor(( dot(l*coeffs_l, vec2(1.0, 1.0)) + dot(r*coeffs_r, vec4(1.0, 1.0, 1.0, 1.0)) + 16.0)/32.0)/255.0;
24   //gl_FragColor =  dot(l*coeffs_l, vec2(1.0, 1.0));
25   //gl_FragColor =  l.x;
26   //gl_FragColor = vec4(0.0, 0.5, 0.0, 0.0);
27 }