float textAlpha = 1.0f;
float4 textColor;
//Vertex Input
struct VS_TEXTINPUT
{
     float4 position : POSITION0;
     float2 tex0     : TEXCOORD0;
};

//Vertex Output / Pixel Shader Input
struct VS_TEXTOUTPUT
{
     float4 position : POSITION0;
     float2 tex0     : TEXCOORD0;
     float4 color	 : COLOR0;
};



VS_TEXTOUTPUT vs_text(VS_TEXTINPUT input)
{
	VS_TEXTOUTPUT output = (VS_TEXTOUTPUT)0;
  output.position = mul(input.position, matW);
	output.position = mul(output.position, matVP);	
	output.tex0 = input.tex0;
	return output;
}

//Pixel Shader
float4 ps_text(VS_TEXTOUTPUT input) : COLOR0
{
    float4 col = tex2D(DiffuseSampler, input.tex0);
    col.a = textAlpha;
	return col;
    return col * textColor;
}

technique Text3D_2_0
{
    pass P0
    {
		CullMode = NONE;
		ZWriteEnable = false;
		ZEnable = false;
		AlphaBlendEnable = true;
		SrcBlend = SrcAlpha;
		DestBlend = InvSrcAlpha;
        VertexShader = compile vs_2_0 vs_text();
        PixelShader  = compile ps_2_0 ps_text();        
    }
}

technique Text3D_1_1
{
    pass P0
    {
		CullMode = NONE;
		ZWriteEnable = false;
		ZEnable = false;
		AlphaBlendEnable = true;
        VertexShader = compile vs_1_1 vs_text();
        PixelShader  = compile ps_1_1 ps_text();        
    }
}

technique Text3D_FFP
{
    pass P0
    {
		CullMode = NONE;
		ZEnable = false;
		ZWriteEnable = false;
		WorldTransform[0] = <matW>;
		ViewTransform = <matV>;
		ProjectionTransform = <matP>;
		Texture[0] = <texDiffuse>;
    }
}