uniform half4 colorWhite, colorGreen, colorRed; uniform float2x2 testMatrix2x2; uniform float3x3 testMatrix3x3; uniform float4x4 testMatrix4x4; bool test_fscalar() { float x = colorWhite.r; x = +x; x = -x; return x == -1; } bool test_iscalar() { int x = int(colorWhite.r); x = +x; x = -x; return x == -1; } bool test_fvec() { half2 x = colorWhite.rg; x = +x; x = -x; return x == half2(-1); } bool test_ivec() { int2 x = int2(colorWhite.r); x = +x; x = -x; return x == int2(-1); } bool test_mat2() { const float2x2 negated = float2x2(-1, -2, -3, -4); float2x2 x = testMatrix2x2; x = +x; x = -x; return x == negated; } bool test_mat3() { const float3x3 negated = float3x3(-1, -2, -3, -4, -5, -6, -7, -8, -9); float3x3 x = testMatrix3x3; x = +x; x = -x; return x == negated; } bool test_mat4() { const float4x4 negated = float4x4(-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16); float4x4 x = testMatrix4x4; x = +x; x = -x; return x == negated; } half4 main(float2 coords) { return test_fscalar() && test_iscalar() && test_fvec() && test_ivec() && test_mat2() && test_mat3() && test_mat4() ? colorGreen : colorRed; }