www.pudn.com > GPUVision_5-13-05-2.zip > ConvolutionFilter2Pack3x3.cg
void main(float2 iCoords : TEX0,
uniform samplerRECT texture,
const uniform float kernel[9],
out float4 oColor : COLOR) {
oColor = 0;
float4 m = f4texRECT(texture, iCoords);
float4 l = f4texRECT(texture, iCoords+float2(-1,0));
float4 r = f4texRECT(texture, iCoords+float2(1 ,0));
float4 u = f4texRECT(texture, iCoords+float2(0 ,-1));
float4 d = f4texRECT(texture, iCoords+float2(0 ,1));
float4 ul = f4texRECT(texture, iCoords+float2(-1,-1));
float4 ur = f4texRECT(texture, iCoords+float2(1, -1));
float4 dl = f4texRECT(texture, iCoords+float2(-1 ,1));
float4 dr = f4texRECT(texture, iCoords+float2(1 ,1));
float2 xy = ul.zw*kernel[0] + u.xy*kernel[1] + u.zw*kernel[2] +
l.zw*kernel[3] + m.xy*kernel[4] + m.zw*kernel[5] +
dl.zw*kernel[6] + d.xy*kernel[7] + r.zw*kernel[8];
float2 zw = u.xy*kernel[0] + u.zw*kernel[1] + ur.xy*kernel[2] +
m.xy*kernel[3] + m.zw*kernel[4] + r.xy*kernel[5] +
d.xy*kernel[6] + r.zw*kernel[7] + dr.xy*kernel[8];
oColor = float4(xy,zw);
}