1 2out vec4 sk_FragColor; 3uniform vec4 colorRed; 4uniform vec4 colorGreen; 5bool test_matrix_op_matrix_half_b() { 6 bool ok = true; 7 { 8 const mat3 splat_4 = mat3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 9 const mat3 splat_2 = mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 10 mat3 m = mat3(2.0); 11 m += splat_4; 12 ok = ok && m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 13 m = mat3(2.0); 14 m -= splat_4; 15 ok = ok && m == mat3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); 16 m = mat3(2.0); 17 m /= splat_4; 18 ok = ok && m == mat3(0.5); 19 m = splat_4; 20 m += mat3(2.0); 21 ok = ok && m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 22 m = splat_4; 23 m -= mat3(2.0); 24 ok = ok && m == mat3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); 25 m = splat_4; 26 m /= splat_2; 27 ok = ok && m == mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 28 } 29 { 30 mat4 m = mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); 31 m += mat4(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0); 32 ok = ok && m == mat4(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); 33 } 34 { 35 mat2 m = mat2(10.0, 20.0, 30.0, 40.0); 36 m -= mat2(1.0, 2.0, 3.0, 4.0); 37 ok = ok && m == mat2(9.0, 18.0, 27.0, 36.0); 38 } 39 { 40 mat2 m = mat2(2.0, 4.0, 6.0, 8.0); 41 m /= mat2(2.0, 2.0, 2.0, 4.0); 42 ok = ok && m == mat2(1.0, 2.0, 3.0, 2.0); 43 } 44 { 45 mat2 m = mat2(1.0, 2.0, 7.0, 4.0); 46 m *= mat2(3.0, 5.0, 3.0, 2.0); 47 ok = ok && m == mat2(38.0, 26.0, 17.0, 14.0); 48 } 49 { 50 mat3 m = mat3(10.0, 4.0, 2.0, 20.0, 5.0, 3.0, 10.0, 6.0, 5.0); 51 m *= mat3(3.0, 3.0, 4.0, 2.0, 3.0, 4.0, 4.0, 9.0, 2.0); 52 ok = ok && m == mat3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); 53 } 54 return ok; 55} 56vec4 main() { 57 bool _0_ok = true; 58 { 59 const mat3 _1_splat_4 = mat3(4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0); 60 const mat3 _2_splat_2 = mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 61 mat3 _3_m = mat3(2.0); 62 _3_m += _1_splat_4; 63 _0_ok = _0_ok && _3_m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 64 _3_m = mat3(2.0); 65 _3_m -= _1_splat_4; 66 _0_ok = _0_ok && _3_m == mat3(-2.0, -4.0, -4.0, -4.0, -2.0, -4.0, -4.0, -4.0, -2.0); 67 _3_m = mat3(2.0); 68 _3_m /= _1_splat_4; 69 _0_ok = _0_ok && _3_m == mat3(0.5); 70 _3_m = _1_splat_4; 71 _3_m += mat3(2.0); 72 _0_ok = _0_ok && _3_m == mat3(6.0, 4.0, 4.0, 4.0, 6.0, 4.0, 4.0, 4.0, 6.0); 73 _3_m = _1_splat_4; 74 _3_m -= mat3(2.0); 75 _0_ok = _0_ok && _3_m == mat3(2.0, 4.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 2.0); 76 _3_m = _1_splat_4; 77 _3_m /= _2_splat_2; 78 _0_ok = _0_ok && _3_m == mat3(2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0); 79 } 80 { 81 mat4 _4_m = mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0); 82 _4_m += mat4(16.0, 15.0, 14.0, 13.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0); 83 _0_ok = _0_ok && _4_m == mat4(17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0, 17.0); 84 } 85 { 86 mat2 _5_m = mat2(10.0, 20.0, 30.0, 40.0); 87 _5_m -= mat2(1.0, 2.0, 3.0, 4.0); 88 _0_ok = _0_ok && _5_m == mat2(9.0, 18.0, 27.0, 36.0); 89 } 90 { 91 mat2 _6_m = mat2(2.0, 4.0, 6.0, 8.0); 92 _6_m /= mat2(2.0, 2.0, 2.0, 4.0); 93 _0_ok = _0_ok && _6_m == mat2(1.0, 2.0, 3.0, 2.0); 94 } 95 { 96 mat2 _7_m = mat2(1.0, 2.0, 7.0, 4.0); 97 _7_m *= mat2(3.0, 5.0, 3.0, 2.0); 98 _0_ok = _0_ok && _7_m == mat2(38.0, 26.0, 17.0, 14.0); 99 } 100 { 101 mat3 _8_m = mat3(10.0, 4.0, 2.0, 20.0, 5.0, 3.0, 10.0, 6.0, 5.0); 102 _8_m *= mat3(3.0, 3.0, 4.0, 2.0, 3.0, 4.0, 4.0, 9.0, 2.0); 103 _0_ok = _0_ok && _8_m == mat3(130.0, 51.0, 35.0, 120.0, 47.0, 33.0, 240.0, 73.0, 45.0); 104 } 105 return _0_ok && test_matrix_op_matrix_half_b() ? colorGreen : colorRed; 106} 107