1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
//TEST:SIMPLE:-profile ps_4_0 -entry mainFS -target hlsl -target reflection-json tests/reflection/multi-file-extra.hlsl -profile vs_4_0 -entry mainVS
// Here we are testing the case where multiple translation units are provided
// at once, so that we want combined reflection information for the resulting
// program. The other part of this program is in `multi-file-extra.hlsl`.
float4 use(float val) { return val; };
float4 use(float2 val) { return float4(val,0.0,0.0); };
float4 use(float3 val) { return float4(val,0.0); };
float4 use(float4 val) { return val; };
float4 use(Texture2D t, SamplerState s)
{
// This is the vertex shader, so we can't do implicit-gradient sampling
return t.SampleGrad(s, 0.0, 0.0, 0.0);
}
// Start with some parameters that will appear in both shaders
Texture2D sharedT;
SamplerState sharedS;
cbuffer sharedC
{
float3 sharedCA;
float sharedCB;
float3 sharedCC;
float2 sharedCD;
}
// Then some parameters specific to this shader
// (these will get placed before the ones in the `extra` file,
// based on how they get named on the command-line)
Texture2D vertexT;
SamplerState vertexS;
cbuffer vertexC
{
float3 vertexCA;
float vertexCB;
float3 vertexCC;
float2 vertexCD;
}
// And end with some shared parameters again
Texture2D sharedTV;
Texture2D sharedTF;
float4 mainFS() : SV_Target
{
// Go ahead and use everything here, just to make sure things got placed correctly
return use(sharedT, sharedS)
+ use(sharedCD)
+ use(vertexT, vertexS)
+ use(vertexCD)
+ use(sharedTV, vertexS)
;
}
|