uniform float2x2 testMatrix2x2; uniform float3x3 testMatrix3x3; uniform float4 testInputs; uniform half4 colorRed, colorGreen; uniform half unknownInput; bool test_mat2_mat2() { float2x2 m, mm; const float2x2 i = float2x2(1.0); const float2x2 z = float2x2(0.0); const float2x2 s = float2x2(float4(1.0)); m = testMatrix2x2 * i; m = i * testMatrix2x2; m = m * i; m = i * m; m *= i; m = m / s; m /= s; m = m + z; m = z + m; m += z; m = m - z; m = z - m; // negates m -= z; mm = m * z; mm = z * m; return m == -testMatrix2x2 && mm == z; } bool test_mat3_mat3() { float3x3 m, mm; const float3x3 i = float3x3(1.0); const float3x3 z = float3x3(0.0); const float3x3 s = float3x3(float3(1.0), float3(1.0), float3(1.0)); m = testMatrix3x3 * i; m = i * testMatrix3x3; m = m * i; m = i * m; m *= i; m = m / s; m /= s; m = m + z; m = z + m; m += z; m = m - z; m = z - m; // negates m -= z; mm = m * z; mm = z * m; return m == -testMatrix3x3 && mm == z; } bool test_mat4_mat4() { float4x4 testMatrix4x4 = float4x4(testInputs, testInputs, testInputs, testInputs); float4x4 m, mm; const float4x4 i = float4x4(1.0); const float4x4 z = float4x4(0.0); const float4x4 s = float4x4(float4(1.0), float4(1.0), float4(1.0), float4(1.0)); m = testMatrix4x4 * i; m = i * testMatrix4x4; m = m * i; m = i * m; m *= i; m = m / s; m /= s; m = m + z; m = z + m; m += z; m = m - z; m = z - m; // negates m -= z; mm = m * z; mm = z * m; return m == -testMatrix4x4 && mm == z; } half4 main(float2 coords) { return test_mat2_mat2() && test_mat3_mat3() && test_mat4_mat4() ? colorGreen : colorRed; }