1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed; 2*c8dee2aaSAndroid Build Coastguard Workeruniform float2x2 testMatrix2x2; 3*c8dee2aaSAndroid Build Coastguard Workeruniform half3x3 testMatrix3x3; 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) { 6*c8dee2aaSAndroid Build Coastguard Worker // This multiplication does not overflow and can be evaluated at compile time. 7*c8dee2aaSAndroid Build Coastguard Worker const half2x2 smallM22 = half2x2(1000, 1000, 1000, 1000); 8*c8dee2aaSAndroid Build Coastguard Worker half2x2 h22 = matrixCompMult(smallM22, smallM22); 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker // This multiplication would overflow the maximum float value, so we don't evaluate it at 11*c8dee2aaSAndroid Build Coastguard Worker // compile time. We don't care what the result is, since ES2 doesn't guarantee infinities, but 12*c8dee2aaSAndroid Build Coastguard Worker // we should be able to compile it safely. 13*c8dee2aaSAndroid Build Coastguard Worker const half2x2 hugeM22 = half2x2(1e30, 1e30, 1e30, 1e30); 14*c8dee2aaSAndroid Build Coastguard Worker h22 = matrixCompMult(hugeM22, hugeM22); 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker h22 = matrixCompMult(half2x2(5, 5, 5, 5), half2x2(0, 1, 2, 3)); 17*c8dee2aaSAndroid Build Coastguard Worker const half4x4 h44 = matrixCompMult(half4x4(0.5), half4x4(1, 2, 3, 4, 18*c8dee2aaSAndroid Build Coastguard Worker 5, 6, 7, 8, 19*c8dee2aaSAndroid Build Coastguard Worker 9, 10,11,12, 20*c8dee2aaSAndroid Build Coastguard Worker 13,14,15,16)); 21*c8dee2aaSAndroid Build Coastguard Worker float2x2 f22 = matrixCompMult(testMatrix2x2, float2x2(1)); 22*c8dee2aaSAndroid Build Coastguard Worker half3x3 h33 = matrixCompMult(testMatrix3x3, half3x3(2,2,2,2,2,2,2,2,2)); 23*c8dee2aaSAndroid Build Coastguard Worker return (h22 == half2x2(0, 5, 10, 15) && 24*c8dee2aaSAndroid Build Coastguard Worker f22 == float2x2(1, 0, 0, 4) && 25*c8dee2aaSAndroid Build Coastguard Worker h33 == half3x3(2, 4, 6, 8, 10, 12, 14, 16, 18) && 26*c8dee2aaSAndroid Build Coastguard Worker h44 == half4x4(0.5, 0, 0, 0, 0, 3, 0, 0, 0, 0, 5.5, 0, 0, 0, 0, 8)) 27*c8dee2aaSAndroid Build Coastguard Worker ? colorGreen : colorRed; 28*c8dee2aaSAndroid Build Coastguard Worker} 29