#include "Macros.fxh"

DECLARE_CUBEMAP(skybox, 0);

BEGIN_CONSTANTS

    float4x4 ViewProjection _vs(c0)    _cb(c0);

END_CONSTANTS

struct VertexShaderInput
{
    float3 Position : POSITION;
};

struct VertexShaderOutput
{
    float4 Position : SV_POSITION;
    float3 TexCoord : TEXCOORD;
};

VertexShaderOutput main_vs(VertexShaderInput input)
{
    VertexShaderOutput output;

    output.Position = mul(float4(input.Position, 1.0), ViewProjection);
    output.Position = output.Position.xyww;
    output.TexCoord = input.Position;

    return output;
}

float4 main_ps(VertexShaderOutput input) : SV_TARGET0
{
    return SAMPLE_CUBEMAP(skybox, input.TexCoord);
}

Technique Skybox
{
    Pass
    {
        VertexShader = compile vs_3_0 main_vs();
        PixelShader  = compile ps_3_0 main_ps();
    }
}