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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
float PixelShaderFunction(float inF0, float inF1, float inF2, int inI0)
{
// AllMemoryBarrier(); // TODO: expected error: invalid in fragment stage
// AllMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(3.0); // expected error: only valid on integers
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expected error: only valid on mats
// DeviceMemoryBarrierWithGroupSync(); // TODO: expected error: only valid in compute stage
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
// InterlockedAdd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedAnd(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out i // InterlockedMax(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedMin(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedOor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// InterlockedXor(inI0, inI0, 3); // expected error: last parameter is out TODO: accepted even though marked as out in proto generator
// GroupMemoryBarrier(); // TODO: expected error: invalid in fragment stage
// GroupMemoryBarrierWithGroupSync(); // TODO: expected error: invalid in fragment stage
length(inF0); // expected error: invalid on scalars
msad4(inF0, float2(0), float4(0)); // expected error: only integer inputs
normalize(inF0); // expected error: invalid on scalars
reflect(inF0, inF1); // expected error: invalid on scalars
refract(inF0, inF1, inF2); // expected error: invalid on scalars
refract(float2(0), float2(0), float2(0)); // expected error: last parameter only scalar
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return 0.0;
}
float1 PixelShaderFunction(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
{
// TODO: ... add when float1 prototypes are generated
GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
return 0.0;
}
float2 PixelShaderFunction(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
{
asdouble(inF0, inF1); // expected error: only integer inputs
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expected error: only valid on mats
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float2(1,2);
}
float3 PixelShaderFunction(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
{
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
D3DCOLORtoUBYTE4(inF0); // expected error: only on float4 inputs
determinant(inF0); // expected error: only valid on mats
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float3(1,2,3);
}
float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
{
CheckAccessFullyMapped(inF0); // expected error: only valid on scalars
countbits(inF0); // expected error: only integer inputs
cross(inF0, inF1); // expected error: only on float3 inputs
determinant(inF0); // expected error: only valid on mats
f16tof32(inF0); // expected error: only integer inputs
firstbithigh(inF0); // expected error: only integer inputs
firstbitlow(inF0); // expected error: only integer inputs
fma(inF0, inF1, inF2); // expected error: only double inputs
reversebits(inF0); // expected error: only integer inputs
transpose(inF0); // expected error: only valid on mats
return float4(1,2,3,4);
}
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
#define MATFNS() \
countbits(inF0); \
D3DCOLORtoUBYTE4(inF0); \
cross(inF0, inF1); \
f16tof32(inF0); \
firstbithigh(inF0); \
firstbitlow(inF0); \
fma(inF0, inF1, inF2); \
reversebits(inF0); \
length(inF0); \
noise(inF0); \
normalize(inF0); \
reflect(inF0, inF1); \
refract(inF0, inF1, 1.0); \
reversebits(inF0); \
// TODO: turn on non-square matrix tests when protos are available.
float2x2 PixelShaderFunction(float2x2 inF0, float2x2 inF1, float2x2 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float2x2(2,2,2,2);
}
float3x3 PixelShaderFunction(float3x3 inF0, float3x3 inF1, float3x3 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float3x3(3,3,3,3,3,3,3,3,3);
}
float4x4 PixelShaderFunction(float4x4 inF0, float4x4 inF1, float4x4 inF2)
{
// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without.
MATFNS()
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}
|