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); 
}