| uniform half4 colorGreen, colorRed; |
| |
| const int plus = 1; |
| const int minus = 2; |
| const int star = 3; |
| const int slash = 4; |
| |
| bool test(int op, float m11, float m12, float m21, float m22, float2x2 expected) { |
| |
| float one = colorRed.r; |
| |
| float2x2 m2 = float2x2(m11 * one, m12 * one, m21 * one, m22 * one); |
| switch (op) { |
| case plus: m2 += 1; break; |
| case minus: m2 -= 1; break; |
| case star: m2 *= 2; break; |
| case slash: m2 /= 2; break; |
| } |
| |
| return m2[0][0] == expected[0][0] && |
| m2[0][1] == expected[0][1] && |
| m2[1][0] == expected[1][0] && |
| m2[1][1] == expected[1][1]; |
| } |
| |
| half4 main(float2 coords) { |
| float f1 = 1 * colorGreen.g; |
| float f2 = 2 * colorGreen.g; |
| float f3 = 3 * colorGreen.g; |
| float f4 = 4 * colorGreen.g; |
| |
| return true |
| && test(plus, f1, f2, f3, f4, float2x2(f1+1, f2+1, f3+1, f4+1)) |
| && test(minus, f1, f2, f3, f4, float2x2(f1-1, f2-1, f3-1, f4-1)) |
| && test(star, f1, f2, f3, f4, float2x2(f1*2, f2*2, f3*2, f4*2)) |
| && test(slash, f1, f2, f3, f4, float2x2(f1/2, f2/2, f3/2, f4/2)) |
| ? colorGreen : colorRed; |
| } |