blob: c23c9032ec275229468d611de0b3edf8de9c05f2 [file] [log] [blame]
Geoff Langb0c75cc2013-06-04 17:13:27 -04001Texture3D<float4> TextureF : register(t0);
2Texture3D<uint4> TextureUI : register(t0);
3Texture3D<int4> TextureI : register(t0);
4
5SamplerState Sampler : register(s0);
shannonwoods@chromium.org281ef3a2013-05-30 00:04:01 +00006
7struct VS_INPUT
8{
9 float2 Position : POSITION;
10 uint Layer : LAYER;
11 float3 TexCoord : TEXCOORD;
12};
13
14struct VS_OUTPUT
15{
16 float4 Position : SV_POSITION;
17 uint Layer : LAYER;
18 float3 TexCoord : TEXCOORD;
19};
20
21struct GS_OUTPUT
22{
23 float4 Position : SV_POSITION;
24 uint Layer : SV_RENDERTARGETARRAYINDEX;
25 float3 TexCoord : TEXCOORD;
26};
27
28VS_OUTPUT VS_Passthrough3D(VS_INPUT input)
29{
30 VS_OUTPUT output;
31
32 output.Position = float4(input.Position, 0.0f, 1.0f);
33 output.Layer = input.Layer;
34 output.TexCoord = input.TexCoord;
35
36 return output;
37}
38
39[maxvertexcount(3)]
40void GS_Passthrough3D(triangle VS_OUTPUT input[3], inout TriangleStream<GS_OUTPUT> outputStream)
41{
42 GS_OUTPUT output;
43
44 for (int i = 0; i < 3; i++)
45 {
46 output.Position = input[i].Position;
47 output.Layer = input[i].Layer;
48 output.TexCoord = input[i].TexCoord;
49
50 outputStream.Append(output);
51 }
52}
53
54float4 PS_PassthroughRGBA3D(GS_OUTPUT input) : SV_TARGET0
55{
Geoff Langb0c75cc2013-06-04 17:13:27 -040056 return TextureF.Sample(Sampler, input.TexCoord).rgba;
57}
58
59uint4 PS_PassthroughRGBA3DUI(GS_OUTPUT input) : SV_TARGET0
60{
61 uint3 size;
62 TextureUI.GetDimensions(size.x, size.y, size.z);
63
64 return TextureUI.Load(int4(size * input.TexCoord, 0)).rgba;
65}
66
67int4 PS_PassthroughRGBA3DI(GS_OUTPUT input) : SV_TARGET0
68{
69 uint3 size;
70 TextureI.GetDimensions(size.x, size.y, size.z);
71
72 return TextureI.Load(int4(size * input.TexCoord, 0)).rgba;
shannonwoods@chromium.org281ef3a2013-05-30 00:04:01 +000073}
74
75float4 PS_PassthroughRGB3D(GS_OUTPUT input) : SV_TARGET0
76{
Geoff Langb0c75cc2013-06-04 17:13:27 -040077 return float4(TextureF.Sample(Sampler, input.TexCoord).rgb, 1.0f);
78}
79
80uint4 PS_PassthroughRGB3DUI(GS_OUTPUT input) : SV_TARGET0
81{
82 uint3 size;
83 TextureUI.GetDimensions(size.x, size.y, size.z);
84
85 return uint4(TextureUI.Load(int4(size * input.TexCoord, 0)).rgb, 0);
86}
87
88int4 PS_PassthroughRGB3DI(GS_OUTPUT input) : SV_TARGET0
89{
90 uint3 size;
91 TextureI.GetDimensions(size.x, size.y, size.z);
92
93 return int4(TextureI.Load(int4(size * input.TexCoord, 0)).rgb, 0);
94}
95
96float4 PS_PassthroughRG3D(GS_OUTPUT input) : SV_TARGET0
97{
98 return float4(TextureF.Sample(Sampler, input.TexCoord).rg, 0.0f, 1.0f);
99}
100
101uint4 PS_PassthroughRG3DUI(GS_OUTPUT input) : SV_TARGET0
102{
103 uint3 size;
104 TextureUI.GetDimensions(size.x, size.y, size.z);
105
106 return uint4(TextureUI.Load(int4(size * input.TexCoord, 0)).rg, 0, 0);
107}
108
109int4 PS_PassthroughRG3DI(GS_OUTPUT input) : SV_TARGET0
110{
111 uint3 size;
112 TextureI.GetDimensions(size.x, size.y, size.z);
113
114 return int4(TextureI.Load(int4(size * input.TexCoord, 0)).rg, 0, 0);
115}
116
117float4 PS_PassthroughR3D(GS_OUTPUT input) : SV_TARGET0
118{
119 return float4(TextureF.Sample(Sampler, input.TexCoord).r, 0.0f, 0.0f, 1.0f);
120}
121
122uint4 PS_PassthroughR3DUI(GS_OUTPUT input) : SV_TARGET0
123{
124 uint3 size;
125 TextureUI.GetDimensions(size.x, size.y, size.z);
126
127 return uint4(TextureUI.Load(int4(size * input.TexCoord, 0)).r, 0, 0, 0);
128}
129
130int4 PS_PassthroughR3DI(GS_OUTPUT input) : SV_TARGET0
131{
132 uint3 size;
133 TextureI.GetDimensions(size.x, size.y, size.z);
134
135 return int4(TextureI.Load(int4(size * input.TexCoord, 0)).r, 0, 0, 0);
shannonwoods@chromium.org281ef3a2013-05-30 00:04:01 +0000136}
137
138float4 PS_PassthroughLum3D(GS_OUTPUT input) : SV_TARGET0
139{
Geoff Langb0c75cc2013-06-04 17:13:27 -0400140 return float4(TextureF.Sample(Sampler, input.TexCoord).rrr, 1.0f);
shannonwoods@chromium.org281ef3a2013-05-30 00:04:01 +0000141}
142
143float4 PS_PassthroughLumAlpha3D(GS_OUTPUT input) : SV_TARGET0
144{
Geoff Langb0c75cc2013-06-04 17:13:27 -0400145 return TextureF.Sample(Sampler, input.TexCoord).rrra;
shannonwoods@chromium.org281ef3a2013-05-30 00:04:01 +0000146}