// Sharpen_5x5=ps_3_0
// Code by Seb.26
// http://www.homecinema-fr.com/forum/viewtopic.php?t=29814317 

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)

#define x 1.0

float4 main(float2 tex : TEXCOORD0) : COLOR
{
   float dx = (one_over_width*x);
   float dy = (one_over_height*x);

   float dx2 = one_over_width * 2;
   float dy2 = one_over_height * 2;

   float4 coef = float4( 0.025, 0.05, 0.1, 2.0 );

   float4 c0 = tex2D( s0, tex ) * coef[3];

   float4 c1 =  tex2D( s0, tex + float2( -dx2 , -dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( -dx , -dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( 0 , -dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( dx , -dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( dx2 , -dy2 ) ) * coef[0];

   c1 +=  tex2D( s0, tex + float2( -dx2 , -dy ) )  * coef[0];
   c1 +=  tex2D( s0, tex + float2( -dx , -dy ) ) * coef[1] ;
   c1 +=  tex2D( s0, tex + float2( 0 , -dy ) ) * coef[2] ;
   c1 +=  tex2D( s0, tex + float2( dx , -dy ) ) * coef[1] ;
   c1 +=  tex2D( s0, tex + float2( dx2 , -dy ) )  * coef[0];

   c1 +=  tex2D( s0, tex + float2( -dx2 , 0 ) )  * coef[0];
   c1 +=  tex2D( s0, tex + float2( -dx , 0 ) ) * coef[2] ;
   c1 +=  tex2D( s0, tex + float2( dx , 0 ) ) * coef[2] ;
   c1 +=  tex2D( s0, tex + float2( dx2 , 0 ) )  * coef[0];

   c1 +=  tex2D( s0, tex + float2( -dx2 , dy ) )  * coef[0];
   c1 +=  tex2D( s0, tex + float2( -dx , dy ) ) * coef[1] ;
   c1 +=  tex2D( s0, tex + float2( 0 , dy ) ) * coef[2] ;
   c1 +=  tex2D( s0, tex + float2( dx , dy ) ) * coef[1] ;
   c1 +=  tex2D( s0, tex + float2( dx2 , dy ) )  * coef[0];

   c1 +=  tex2D( s0, tex + float2( -dx2 , dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( -dx , dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( 0 , dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( dx , dy2 ) ) * coef[0];
   c1 +=  tex2D( s0, tex + float2( dx2 , dy2 ) ) * coef[0];

   c0 -= c1;

   return c0;
}