Texture2D ColorTexture;

SamplerState TextureSampler;

cbuffer SceneConstants
{
    float4x4 ViewProjection = float4x4(1, 0, 0, 0, 
        0, 1, 0, 0, 
        0, 0, 1, 0, 
        0, 0, 0, 1);
}

cbuffer ObjectConstants
{
    float4x4 Transform;
}

cbuffer Constants
{
    float4 BaseColor;
}

struct VS_IN
{
    float3 Position : POSITION;
    float4 Color    : COLOR;
    float2 TexCoord : TEXCOORD;
};

struct PS_IN
{
    float4 Position : SV_POSITION;
    float4 Color    : COLOR;
    float2 TexCoord : TEXCOORD;
};

PS_IN VS(VS_IN input)
{
    PS_IN output;
	
	float4 worldPosition = mul(Transform, float4(input.Position, 1));
	
    output.Position = mul(ViewProjection, worldPosition);
    output.Color = input.Color;
    output.TexCoord = input.TexCoord;
    
    return output;
}

float4 PS(PS_IN input) : SV_TARGET
{
    return input.Color * BaseColor * ColorTexture.Sample(TextureSampler, input.TexCoord);
}

#effect[VS=VS,PS=PS]
