Kao što naslov kaže - postoji li takvo nešto? Googlao sam i ništa nisam našao.
Preciznije pojašnjenje što bi filter trebao raditi: za svaki pixel u videu ostaviti npr. crvenu i plavu komponentu gdje jesu, a zelenu premjestiti jedan pixel udesno.
----
Edit: otkrio sam... pixel shaderi! Napisah ovo, radi goreopisano u MPC-HC-u:
sampler s0 : register(s0);
float4 p0 : register(c0);
float4 p1 : register(c1);
#define width (p0[0])
#define height (p0[1])
#define counter (p0[2])
#define clock (p0[3])
#define one_over_width (p1[0])
#define one_over_height (p1[1])
#define PI acos(-1)
float4 main(float2 tex : TEXCOORD0) : COLOR
{
float4 c0 = tex2D(s0, tex);
float2 texG = float2(tex.x+one_over_width, tex.y);
c0.g = tex2D(s0, texG).g;
return c0;
}
Pojašnjenja ako si netko želi modificirati, a da ne mora prolaziti desetke sajtova da pokupi informacije:
- one_over_width je 1/širina_videa, npr. 1.f/1920.f - shaderi preferiraju floate umjesto integera
- tex je array[2] s koordinatama pixela za koji se trenutno izračunava boja
- s0 je tekstura koja sadrži trenutni video frame
- c0 je boja koja se vraća za trenutni pixel u formatu r,g,b,x
- texG su koordinate mog željenog pomaknutog subpixela
- ... i onda pridružim njegovu zelenu komponentu trenutnom pixelu