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

//--------------------------------
//}XNpeNX`
//ʕ(}XNeNX`TCY)
const float SCREEN_WIDTH = 1024;
const float SCREEN_HEIGHT = 512;
texture textureMask_;
float REVERSE;
sampler samplerMask_ = sampler_state
{ 
	Texture = <textureMask_>;
};

//================================================================
//--------------------------------
//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 PsMask( PS_INPUT In ) : COLOR0
{
	PS_OUTPUT Out;

	//eNX`̐F
	float4 colorTexture = tex2D(sampler0_, In.texCoord);

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

	//
	float4 color = colorTexture * colorDiffuse;
	Out.color = color;

	//--------------------------------
	float2 maskUV;

	//`悩}XNpeNX`̈ʒuvZ
	maskUV.x = In.vPos.x / SCREEN_WIDTH;
	maskUV.y = In.vPos.y / SCREEN_HEIGHT;
	float4 colorMask = tex2D(samplerMask_, maskUV);

	//}XNRGBlo͌ʂ̃lƂč
	if (REVERSE)
	{
		// ]
		Out.color.a =  ( 1.0f - ( colorMask.r + colorMask.g + colorMask.b ) * 0.3333f) * color.a;
	}
	else
	{
		Out.color.a = ( colorMask.r + colorMask.g + colorMask.b ) * 0.3333f * color.a;
	}

	return Out;
}


//================================================================
//--------------------------------
//technique
technique TecMask
{
	pass P0
	{
		PixelShader = compile ps_3_0 PsMask();
	}
}

