1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed; 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard Workerbool test_float() { 4*c8dee2aaSAndroid Build Coastguard Worker bool ok = true; 5*c8dee2aaSAndroid Build Coastguard Worker 6*c8dee2aaSAndroid Build Coastguard Worker float2x3 m23 = float2x3(2); 7*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m23 == float2x3(2, 0, 0, 8*c8dee2aaSAndroid Build Coastguard Worker 0, 2, 0)); 9*c8dee2aaSAndroid Build Coastguard Worker float2x4 m24 = float2x4(3); 10*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m24 == float2x4(3, 0, 0, 0, 11*c8dee2aaSAndroid Build Coastguard Worker 0, 3, 0, 0)); 12*c8dee2aaSAndroid Build Coastguard Worker float3x2 m32 = float3x2(4); 13*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m32 == float3x2(4, 0, 14*c8dee2aaSAndroid Build Coastguard Worker 0, 4, 15*c8dee2aaSAndroid Build Coastguard Worker 0, 0)); 16*c8dee2aaSAndroid Build Coastguard Worker float3x4 m34 = float3x4(5); 17*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m34 == float3x4(5, 0, 0, 0, 18*c8dee2aaSAndroid Build Coastguard Worker 0, 5, 0, 0, 19*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 5, 0)); 20*c8dee2aaSAndroid Build Coastguard Worker float4x2 m42 = float4x2(6); 21*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m42 == float4x2(6, 0, 22*c8dee2aaSAndroid Build Coastguard Worker 0, 6, 23*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 24*c8dee2aaSAndroid Build Coastguard Worker 0, 0)); 25*c8dee2aaSAndroid Build Coastguard Worker float4x3 m43 = float4x3(7); 26*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m43 == float4x3(7, 0, 0, 27*c8dee2aaSAndroid Build Coastguard Worker 0, 7, 0, 28*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 7, 29*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 0)); 30*c8dee2aaSAndroid Build Coastguard Worker float2x2 m22 = m32 * m23; 31*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m22 == float2x2(2 * 4)); 32*c8dee2aaSAndroid Build Coastguard Worker float3x3 m33 = m43 * m34; 33*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m33 == float3x3(7 * 5)); 34*c8dee2aaSAndroid Build Coastguard Worker float4x4 m44 = m24 * m42; 35*c8dee2aaSAndroid Build Coastguard Worker 36*c8dee2aaSAndroid Build Coastguard Worker m23 += 1; 37*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m23 == float2x3(3, 1, 1, 38*c8dee2aaSAndroid Build Coastguard Worker 1, 3, 1)); 39*c8dee2aaSAndroid Build Coastguard Worker m32 -= 2; 40*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m32 == float3x2(2, -2, 41*c8dee2aaSAndroid Build Coastguard Worker -2, 2, 42*c8dee2aaSAndroid Build Coastguard Worker -2, -2)); 43*c8dee2aaSAndroid Build Coastguard Worker m24 /= 4; 44*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m24 == float2x4(0.75, 0, 0, 0, 45*c8dee2aaSAndroid Build Coastguard Worker 0, 0.75, 0, 0)); 46*c8dee2aaSAndroid Build Coastguard Worker return ok; 47*c8dee2aaSAndroid Build Coastguard Worker} 48*c8dee2aaSAndroid Build Coastguard Worker 49*c8dee2aaSAndroid Build Coastguard Workerbool test_half() { 50*c8dee2aaSAndroid Build Coastguard Worker bool ok = true; 51*c8dee2aaSAndroid Build Coastguard Worker 52*c8dee2aaSAndroid Build Coastguard Worker half2x3 m23 = half2x3(2); 53*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m23 == half2x3(2, 0, 0, 54*c8dee2aaSAndroid Build Coastguard Worker 0, 2, 0)); 55*c8dee2aaSAndroid Build Coastguard Worker half2x4 m24 = half2x4(3); 56*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m24 == half2x4(3, 0, 0, 0, 57*c8dee2aaSAndroid Build Coastguard Worker 0, 3, 0, 0)); 58*c8dee2aaSAndroid Build Coastguard Worker half3x2 m32 = half3x2(4); 59*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m32 == half3x2(4, 0, 60*c8dee2aaSAndroid Build Coastguard Worker 0, 4, 61*c8dee2aaSAndroid Build Coastguard Worker 0, 0)); 62*c8dee2aaSAndroid Build Coastguard Worker half3x4 m34 = half3x4(5); 63*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m34 == half3x4(5, 0, 0, 0, 64*c8dee2aaSAndroid Build Coastguard Worker 0, 5, 0, 0, 65*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 5, 0)); 66*c8dee2aaSAndroid Build Coastguard Worker half4x2 m42 = half4x2(6); 67*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m42 == half4x2(6, 0, 68*c8dee2aaSAndroid Build Coastguard Worker 0, 6, 69*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 70*c8dee2aaSAndroid Build Coastguard Worker 0, 0)); 71*c8dee2aaSAndroid Build Coastguard Worker half4x3 m43 = half4x3(7); 72*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m43 == half4x3(7, 0, 0, 73*c8dee2aaSAndroid Build Coastguard Worker 0, 7, 0, 74*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 7, 75*c8dee2aaSAndroid Build Coastguard Worker 0, 0, 0)); 76*c8dee2aaSAndroid Build Coastguard Worker half2x2 m22 = m32 * m23; 77*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m22 == half2x2(2 * 4)); 78*c8dee2aaSAndroid Build Coastguard Worker half3x3 m33 = m43 * m34; 79*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m33 == half3x3(7 * 5)); 80*c8dee2aaSAndroid Build Coastguard Worker half4x4 m44 = m24 * m42; 81*c8dee2aaSAndroid Build Coastguard Worker 82*c8dee2aaSAndroid Build Coastguard Worker m23 += 1; 83*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m23 == half2x3(3, 1, 1, 84*c8dee2aaSAndroid Build Coastguard Worker 1, 3, 1)); 85*c8dee2aaSAndroid Build Coastguard Worker m32 -= 2; 86*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m32 == half3x2(2, -2, 87*c8dee2aaSAndroid Build Coastguard Worker -2, 2, 88*c8dee2aaSAndroid Build Coastguard Worker -2, -2)); 89*c8dee2aaSAndroid Build Coastguard Worker m24 /= 4; 90*c8dee2aaSAndroid Build Coastguard Worker ok = ok && (m24 == half2x4(0.75, 0, 0, 0, 91*c8dee2aaSAndroid Build Coastguard Worker 0, 0.75, 0, 0)); 92*c8dee2aaSAndroid Build Coastguard Worker return ok; 93*c8dee2aaSAndroid Build Coastguard Worker} 94*c8dee2aaSAndroid Build Coastguard Worker 95*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) { 96*c8dee2aaSAndroid Build Coastguard Worker return test_float() && test_half() ? colorGreen : colorRed; 97*c8dee2aaSAndroid Build Coastguard Worker} 98