struct RING_VS_INPUT
{
     float4 position : POSITION0;
     float4 color	 : COLOR0;
//     float3 normal   : NORMAL;
     float2 tex0     : TEXCOORD0;
};

struct RING_VS_OUTPUT
{
	float4 position : POSITION0;
	float4 color	: COLOR0;
	float2 tex0		: TEXCOORD0;
};

RING_VS_OUTPUT vs_rings(RING_VS_INPUT input)
{
	RING_VS_OUTPUT output = (RING_VS_OUTPUT )0;
    float4 posWorld = mul(input.position, matW);
	output.position = mul(posWorld, matVP);
	output.tex0 = input.tex0;
	output.color = input.color;
	return output;//mul(posWorld, matVP);
}

//Pixel Shader
float4 ps_rings(RING_VS_OUTPUT input) : COLOR0
{
	float4 texel = tex2D(DiffuseSampler, input.tex0);
//	texel *= input.color;
	return texel;
}

technique Rings_2_0
{
    pass P0
    {
		Lighting = false;		
		AlphaBlendEnable = true;
		SrcBlend = SRCALPHA;
		DestBlend = INVSRCALPHA;
        VertexShader = compile vs_2_0 vs_rings();
        PixelShader  = compile ps_2_0 ps_rings();        
    }
}

technique Rings_1_1
{
    pass P0
    {
		Lighting = false;		
		AlphaBlendEnable = true;
		SrcBlend = SRCALPHA;
		DestBlend = INVSRCALPHA;
        VertexShader = compile vs_1_1 vs_rings();
        PixelShader  = compile ps_1_1 ps_rings();        
    }
}

technique Rings_FFP
{
    pass P0
    {
		Lighting = false;
		WorldTransform[0] = <matW>;
		ViewTransform = <matV>;
		ProjectionTransform = <matP>;			
		AlphaBlendEnable = true;
		SrcBlend = SRCALPHA;
		DestBlend = INVSRCALPHA;
    }
}