OSDN Git Service

[GL][SHADER] NTSC_PASS2 SHADER: Make vector calcuration and simple addressing to...
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 19 Nov 2016 20:12:25 +0000 (05:12 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sat, 19 Nov 2016 20:12:25 +0000 (05:12 +0900)
source/src/qt/gui/ntsc_pass2.glsl

index 52c1f57..0fb9795 100644 (file)
@@ -67,15 +67,35 @@ void main() {
 // #include "ntsc-pass2-decode.inc" //
        float one_x = 1.0 / source_size.x;
        vec3 signal = vec3(0.0);
-       int i;
-       int ibegin = TAPS / 2;
+       int i,j;
+       int ibegin = 1;
+#if 0  
        for (i = ibegin; i < TAPS; i++)
        {
                float offset = float(i);
                vec3 sums = fetch_offset(offset - float(TAPS), one_x) +
                                fetch_offset(float(TAPS) - offset, one_x);
                signal += sums * vec3(luma_filter[i], chroma_filter[i], chroma_filter[i]);
-       }               
+       }
+#else
+       float pos_offset = float(TAPS - ibegin) * one_x;
+       vec3 sums_p = vec3(0.0, 0.0, 0.0);
+       //vec3 sums_n[TAPS];
+       vec2 fix_coord = v_texcoord - vec2(0.5 / source_size.x, 0.0);
+       vec2 delta = vec2(one_x, 0);
+       vec3 pix_p, pix_n;
+       vec3 tmpv;
+       vec2 addr_p = fix_coord + vec2(pos_offset, 0);
+       vec2 addr_n = fix_coord - vec2(pos_offset, 0);
+       for (i = ibegin ; i < TAPS; i++) {
+               pix_p = texture2D(a_texture, addr_p).xyz;
+               pix_n = texture2D(a_texture, addr_n).xyz;
+               pix_p = (pix_n + pix_p) * vec3(luma_filter[i], chroma_filter[i], chroma_filter[i]);
+               signal = signal + pix_p;
+               addr_p = addr_p - delta;
+               addr_n = addr_n + delta;
+       }          
+#endif
        signal += texture2D(a_texture, fixCoord).xyz * vec3(luma_filter[TAPS], chroma_filter[TAPS], chroma_filter[TAPS]);
 // END "ntsc-pass2-decode.inc" //