
//================================================================
//ݒl
//Texture
sampler sampler0_ : register(s0);

//--------------------------------
//䂪ݐpp[^
static const float RENDER_WIDTH = 1024; //_OeNX`̕
static const float RENDER_HEIGHT = 1024; //_OeNX`̍
static const float RENDER_PIX_X = 2.0f/1024.0f;
static const float RENDER_PIX_Y = 2.0f/1024.0f;
static const float WIGHT[3] =
	{  4.0f/16.0f, 2.0f/16.0f, 1.0f/16.0f };


//================================================================
//--------------------------------
//sNZVF[_͒l
struct PS_INPUT
{
	float4 diffuse : COLOR0;  //fBt[YF
	float2 texCoord : TEXCOORD0; //eNX`W
	float2 vPos : VPOS; //`W
};

//--------------------------------
//sNZVF[_o͒l
struct PS_OUTPUT
{
    float4 color : COLOR0; //o͐F
};


//================================================================
// VF[_
//--------------------------------
//sNZVF[_
PS_OUTPUT PsGaussian( PS_INPUT In ) : COLOR0
{
	PS_OUTPUT Out;

	//eNX`̐F
	float4 colorTexture = WIGHT[0] * tex2D(sampler0_, In.texCoord);
	//
	colorTexture += WIGHT[1] * 
		(tex2D(sampler0_, In.texCoord + float2(0,  RENDER_PIX_Y) ) +
		 tex2D(sampler0_, In.texCoord + float2(0, -RENDER_PIX_Y) ) +
		 tex2D(sampler0_, In.texCoord + float2( RENDER_PIX_X, 0) ) +
		 tex2D(sampler0_, In.texCoord + float2(-RENDER_PIX_X, 0) ));
	colorTexture += WIGHT[2] * 
		(tex2D(sampler0_, In.texCoord + float2( RENDER_PIX_X, RENDER_PIX_Y) ) +
		 tex2D(sampler0_, In.texCoord + float2(-RENDER_PIX_X, RENDER_PIX_Y) ) +
		 tex2D(sampler0_, In.texCoord + float2( RENDER_PIX_X,-RENDER_PIX_Y) ) +
		 tex2D(sampler0_, In.texCoord + float2(-RENDER_PIX_X,-RENDER_PIX_Y) ));

	//_fBt[YF
	float4 colorDiffuse = In.diffuse;

	//
	Out.color = colorTexture * colorDiffuse;

	return Out;
}


//================================================================
//--------------------------------
//technique
technique TecGaussian
{
	pass P0
	{
		PixelShader = compile ps_3_0 PsGaussian();
	}
}

