// SpacialSoften=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 dx one_over_width
#define dy one_over_height

#define val0 0.3
#define val1 0.6

float4 main(float2 tex : TEXCOORD0) : COLOR
{
   float4 current = tex2D(s0, tex);

   float4 Total = current ;
   float n = 1;

   float4 c0 =  tex2D( s0, tex + float2( -dx , -dy ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }


   c0 =  tex2D( s0, tex + float2( 0 , -dy ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   c0 =  tex2D( s0, tex + float2( dx , -dy ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   c0 =  tex2D( s0, tex + float2( -dx , 0 ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   c0 =  tex2D( s0, tex + float2( dx , 0 ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   c0 =  tex2D( s0, tex + float2( -dx , dy ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   c0 =  tex2D( s0, tex + float2( 0 , dy ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   c0 =  tex2D( s0, tex + float2( dx , dy ) );
   if( length( current - c0 ) < val0  )
   {
      Total += c0*val1;
      n += val1 ;
   }

   return( Total / n );
}