float4x4 gWorldXf;
float4x4 gViewXf;
float4x4 gProjectionXf;

struct VS_IN
{
    float4 Position : POSITION;
};

struct VS_OUT
{
    float4 Position : POSITION0;
};

// ---------------------------------------------------------
VS_OUT VertexShaderFunction( 
	VS_IN IN,
	uniform float4x4 WorldXf,
	uniform float4x4 ViewXf,
	uniform float4x4 ProjectionXf )
{
    VS_OUT OUT = ( VS_OUT ) 0;

    float4 worldPosition = mul( IN.Position, WorldXf );
    float4 viewPosition = mul( worldPosition, ViewXf );
    OUT.Position = mul( viewPosition, ProjectionXf );

    return OUT;
}
// ---------------------------------------------------------
float4 PixelShaderFunction( VS_OUT IN ) : COLOR0
{
	return float4( 0, 0, 0, 1 );
}
// ---------------------------------------------------------
technique Technique1
{
    pass p0
    {
        VertexShader = compile vs_2_0 VertexShaderFunction(
			gWorldXf,
			gViewXf,
			gProjectionXf );
        PixelShader = compile ps_2_0 PixelShaderFunction( );
    }
}
