| uniform half4 colorRed, colorGreen; |
| |
| bool test() { |
| const float floatOne = 1; |
| const int intOne = 1; |
| const half4 half4One = half4(1); |
| const int4 int4One = int4(1); |
| |
| bool ok = true; |
| |
| // Typecasting a constant scalar variable should fold away. |
| ok = ok && (int(floatOne) == intOne); |
| ok = ok && (float(intOne) == floatOne); |
| |
| // Typecasting a constant vector variable should fold away. |
| ok = ok && (int4(half4One) == int4One); |
| ok = ok && (half4(int4One) == half4One); |
| |
| // More complex cases should also fold. |
| ok = ok && (int4(half4One) == int4(intOne)); // cast(vector) == splat(scalar) |
| ok = ok && (half4(int4One) == half4(half(floatOne))); // cast(vector) == splat(cast(scalar)) |
| ok = ok && (half4(intOne) == half4(float4(floatOne))); // splatcast(sclr) == cast(splat(sclr)) |
| |
| return ok; |
| } |
| |
| half4 main(float2 coords) { |
| return test() ? colorGreen : colorRed; |
| } |