float layer;

Texture3D txDiffuse;
SamplerState samPoint {
  Filter = MIN_MAG_MIP_LINEAR;
  AddressU = Wrap;
  AddressV = Wrap;
};

struct VS_INPUT
{
  float4 Pos : POSITION;
};

struct PS_INPUT
{
  float4 Pos : SV_POSITION;
  float2 Tex : TEXCOORD0;
};

PS_INPUT VS(VS_INPUT input)
{
  PS_INPUT output;

  output.Pos = float4(input.Pos.xy, 0, 1);
  output.Tex = input.Pos.xy * float2(0.5, -0.5) + float2(0.5, 0.5);

  return output;
}

float4 PS(PS_INPUT input) : SV_Target
{
  float4 texColor = txDiffuse.Sample(samPoint, float3(input.Tex.xy, layer));
  return float4(texColor.xxx, 1);
}

BlendState DisableBlending
{
  BlendEnable[0] = False;
};

DepthStencilState DisableDepth
{
  DepthEnable = FALSE;
  DepthWriteMask = ZERO;
};

technique10 Volume
{
  pass P0
  {
    SetVertexShader(CompileShader(vs_4_0, VS()));
    SetGeometryShader(NULL);
    SetPixelShader(CompileShader(ps_4_0, PS()));
    SetBlendState(DisableBlending, float4(0.0, 0.0, 0.0, 0.0), 0xffffffff);
    SetDepthStencilState(DisableDepth, 0);
  }
}
