• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1uniform half4 colorRed, colorGreen;
2uniform half  unknownInput;
3
4bool test_half() {
5    bool ok = true;
6    half4 inputRed   = colorRed;
7    half4 inputGreen = colorGreen;
8
9    // Vector op scalar
10    half4 x = inputRed + 2;
11    ok = ok && (x == half4(3, 2, 2, 3));
12    x = inputGreen.garb - 2;
13    ok = ok && (x == half4(-1, -1, -2, -2));
14    x = inputRed + inputGreen.g;
15    ok = ok && (x == half4(2, 1, 1, 2));
16    x.xyz = inputGreen.aga * 9;
17    ok = ok && (x == half4(9, 9, 9, 2));
18    x.xy = x.zw / 0.5;
19    ok = ok && (x == half4(18, 4, 9, 2));
20
21    // (Vector op scalar).swizzle
22    x = (inputRed * 5).yxwz;
23    ok = ok && (x == half4(0, 5, 5, 0));
24
25    // Scalar op vector
26    x = 2 + inputRed;
27    ok = ok && (x == half4(3, 2, 2, 3));
28    x = 10 - inputGreen.garb;
29    ok = ok && (x == half4(9, 9, 10, 10));
30    x = inputRed.r + inputGreen;
31    ok = ok && (x == half4(1, 2, 1, 2));
32    x.xyz = 9 * inputGreen.aga;
33    ok = ok && (x == half4(9, 9, 9, 2));
34    x.xy = 36 / x.zw;
35    ok = ok && (x == half4(4, 18, 9, 2));
36
37    // (Scalar op vector).swizzle
38    x = (36 / x).yxwz;
39    ok = ok && (x == half4(2, 9, 18, 4));
40
41    // X op= scalar.
42    x += 2;
43    x *= 2;
44    x -= 4;
45    x /= 2;
46    ok = ok && (x == half4(2, 9, 18, 4));
47
48    // X = X op scalar.
49    x  = x + 2;
50    x  = x * 2;
51    x  = x - 4;
52    x  = x / 2;
53    ok = ok && (x == half4(2, 9, 18, 4));
54
55    return ok;
56}
57
58bool test_int() {
59    bool ok = true;
60    int4 inputRed   = int4(colorRed);
61    int4 inputGreen = int4(colorGreen);
62
63    // Vector op scalar
64    int4 x = inputRed + 2;
65    ok = ok && (x == int4(3, 2, 2, 3));
66    x = inputGreen.garb - 2;
67    ok = ok && (x == int4(-1, -1, -2, -2));
68    x = inputRed + inputGreen.g;
69    ok = ok && (x == int4(2, 1, 1, 2));
70    x.xyz = inputGreen.aga * 9;
71    ok = ok && (x == int4(9, 9, 9, 2));
72    x.xy = x.zw / 3;
73    ok = ok && (x == int4(3, 0, 9, 2));
74
75    // (Vector op scalar).swizzle
76    x = (inputRed * 5).yxwz;
77    ok = ok && (x == int4(0, 5, 5, 0));
78
79    // Scalar op vector
80    x = 2 + inputRed;
81    ok = ok && (x == int4(3, 2, 2, 3));
82    x = 10 - inputGreen.garb;
83    ok = ok && (x == int4(9, 9, 10, 10));
84    x = inputRed.r + inputGreen;
85    ok = ok && (x == int4(1, 2, 1, 2));
86    x.xyz = 9 * inputGreen.aga;
87    ok = ok && (x == int4(9, 9, 9, 2));
88    x.xy = 36 / x.zw;
89    ok = ok && (x == int4(4, 18, 9, 2));
90
91    // (Scalar op vector).swizzle
92    x = (36 / x).yxwz;
93    ok = ok && (x == int4(2, 9, 18, 4));
94
95    // X op= scalar.
96    x += 2;
97    x *= 2;
98    x -= 4;
99    x /= 2;
100    ok = ok && (x == int4(2, 9, 18, 4));
101
102    // X = X op scalar.
103    x  = x + 2;
104    x  = x * 2;
105    x  = x - 4;
106    x  = x / 2;
107    ok = ok && (x == int4(2, 9, 18, 4));
108
109    return ok;
110}
111
112half4 main(float2 coords) {
113    return test_half() && test_int() ? colorGreen : colorRed;
114}
115