blob: 029d5fcd2dab8dd789802afc8caa4d016b7ffb89 [file] [log] [blame]
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;
}