1*35238bceSAndroid Build Coastguard Workergroup trivial "Trivial expressions" 2*35238bceSAndroid Build Coastguard Worker 3*35238bceSAndroid Build Coastguard Worker case float 4*35238bceSAndroid Build Coastguard Worker version 300 es 5*35238bceSAndroid Build Coastguard Worker values { output float out0 = 5.0; } 6*35238bceSAndroid Build Coastguard Worker both "" 7*35238bceSAndroid Build Coastguard Worker #version 300 es 8*35238bceSAndroid Build Coastguard Worker precision highp float; 9*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 10*35238bceSAndroid Build Coastguard Worker 11*35238bceSAndroid Build Coastguard Worker void main() 12*35238bceSAndroid Build Coastguard Worker { 13*35238bceSAndroid Build Coastguard Worker const float a = 5.0; 14*35238bceSAndroid Build Coastguard Worker out0 = a; 15*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 16*35238bceSAndroid Build Coastguard Worker } 17*35238bceSAndroid Build Coastguard Worker "" 18*35238bceSAndroid Build Coastguard Worker end 19*35238bceSAndroid Build Coastguard Worker 20*35238bceSAndroid Build Coastguard Worker case int 21*35238bceSAndroid Build Coastguard Worker version 300 es 22*35238bceSAndroid Build Coastguard Worker values { output int out0 = 5; } 23*35238bceSAndroid Build Coastguard Worker both "" 24*35238bceSAndroid Build Coastguard Worker #version 300 es 25*35238bceSAndroid Build Coastguard Worker precision highp float; 26*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 27*35238bceSAndroid Build Coastguard Worker 28*35238bceSAndroid Build Coastguard Worker void main() 29*35238bceSAndroid Build Coastguard Worker { 30*35238bceSAndroid Build Coastguard Worker const int a = 5; 31*35238bceSAndroid Build Coastguard Worker out0 = a; 32*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 33*35238bceSAndroid Build Coastguard Worker } 34*35238bceSAndroid Build Coastguard Worker "" 35*35238bceSAndroid Build Coastguard Worker end 36*35238bceSAndroid Build Coastguard Worker 37*35238bceSAndroid Build Coastguard Worker case bool 38*35238bceSAndroid Build Coastguard Worker version 300 es 39*35238bceSAndroid Build Coastguard Worker values { output bool out0 = true; } 40*35238bceSAndroid Build Coastguard Worker both "" 41*35238bceSAndroid Build Coastguard Worker #version 300 es 42*35238bceSAndroid Build Coastguard Worker precision highp float; 43*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 44*35238bceSAndroid Build Coastguard Worker 45*35238bceSAndroid Build Coastguard Worker void main() 46*35238bceSAndroid Build Coastguard Worker { 47*35238bceSAndroid Build Coastguard Worker const bool a = true; 48*35238bceSAndroid Build Coastguard Worker out0 = a; 49*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 50*35238bceSAndroid Build Coastguard Worker } 51*35238bceSAndroid Build Coastguard Worker "" 52*35238bceSAndroid Build Coastguard Worker end 53*35238bceSAndroid Build Coastguard Worker 54*35238bceSAndroid Build Coastguard Worker case cast 55*35238bceSAndroid Build Coastguard Worker version 300 es 56*35238bceSAndroid Build Coastguard Worker values { output float out0 = 1.0; } 57*35238bceSAndroid Build Coastguard Worker both "" 58*35238bceSAndroid Build Coastguard Worker #version 300 es 59*35238bceSAndroid Build Coastguard Worker precision highp float; 60*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 61*35238bceSAndroid Build Coastguard Worker 62*35238bceSAndroid Build Coastguard Worker void main() 63*35238bceSAndroid Build Coastguard Worker { 64*35238bceSAndroid Build Coastguard Worker const float a = float(int(bool(true))); 65*35238bceSAndroid Build Coastguard Worker out0 = a; 66*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 67*35238bceSAndroid Build Coastguard Worker } 68*35238bceSAndroid Build Coastguard Worker "" 69*35238bceSAndroid Build Coastguard Worker end 70*35238bceSAndroid Build Coastguard Worker 71*35238bceSAndroid Build Coastguard Workerend # trivial 72*35238bceSAndroid Build Coastguard Worker 73*35238bceSAndroid Build Coastguard Workergroup operators "Operators" 74*35238bceSAndroid Build Coastguard Worker 75*35238bceSAndroid Build Coastguard Worker case math_float 76*35238bceSAndroid Build Coastguard Worker version 300 es 77*35238bceSAndroid Build Coastguard Worker values { output float out0 = 2.19; } 78*35238bceSAndroid Build Coastguard Worker both "" 79*35238bceSAndroid Build Coastguard Worker #version 300 es 80*35238bceSAndroid Build Coastguard Worker precision highp float; 81*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 82*35238bceSAndroid Build Coastguard Worker 83*35238bceSAndroid Build Coastguard Worker void main() 84*35238bceSAndroid Build Coastguard Worker { 85*35238bceSAndroid Build Coastguard Worker const float a = 6.0/3.5 + 1.8*2.6 - 4.2; 86*35238bceSAndroid Build Coastguard Worker out0 = a; 87*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 88*35238bceSAndroid Build Coastguard Worker } 89*35238bceSAndroid Build Coastguard Worker "" 90*35238bceSAndroid Build Coastguard Worker end 91*35238bceSAndroid Build Coastguard Worker 92*35238bceSAndroid Build Coastguard Worker case math_vec 93*35238bceSAndroid Build Coastguard Worker version 300 es 94*35238bceSAndroid Build Coastguard Worker values { output float out0 = 15.0; } 95*35238bceSAndroid Build Coastguard Worker both "" 96*35238bceSAndroid Build Coastguard Worker #version 300 es 97*35238bceSAndroid Build Coastguard Worker precision highp float; 98*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 99*35238bceSAndroid Build Coastguard Worker 100*35238bceSAndroid Build Coastguard Worker void main() 101*35238bceSAndroid Build Coastguard Worker { 102*35238bceSAndroid Build Coastguard Worker const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy; 103*35238bceSAndroid Build Coastguard Worker out0 = a.x + a.y + a.z; 104*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 105*35238bceSAndroid Build Coastguard Worker } 106*35238bceSAndroid Build Coastguard Worker "" 107*35238bceSAndroid Build Coastguard Worker end 108*35238bceSAndroid Build Coastguard Worker 109*35238bceSAndroid Build Coastguard Worker case math_int 110*35238bceSAndroid Build Coastguard Worker version 300 es 111*35238bceSAndroid Build Coastguard Worker values { output int out0 = 7; } 112*35238bceSAndroid Build Coastguard Worker both "" 113*35238bceSAndroid Build Coastguard Worker #version 300 es 114*35238bceSAndroid Build Coastguard Worker precision highp int; 115*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 116*35238bceSAndroid Build Coastguard Worker 117*35238bceSAndroid Build Coastguard Worker void main() 118*35238bceSAndroid Build Coastguard Worker { 119*35238bceSAndroid Build Coastguard Worker const int a = 25%7 + 2*3 - 9/3; 120*35238bceSAndroid Build Coastguard Worker out0 = a; 121*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 122*35238bceSAndroid Build Coastguard Worker } 123*35238bceSAndroid Build Coastguard Worker "" 124*35238bceSAndroid Build Coastguard Worker end 125*35238bceSAndroid Build Coastguard Worker 126*35238bceSAndroid Build Coastguard Worker case math_ivec 127*35238bceSAndroid Build Coastguard Worker version 300 es 128*35238bceSAndroid Build Coastguard Worker values { output int out0 = 21; } 129*35238bceSAndroid Build Coastguard Worker both "" 130*35238bceSAndroid Build Coastguard Worker #version 300 es 131*35238bceSAndroid Build Coastguard Worker precision highp int; 132*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 133*35238bceSAndroid Build Coastguard Worker 134*35238bceSAndroid Build Coastguard Worker void main() 135*35238bceSAndroid Build Coastguard Worker { 136*35238bceSAndroid Build Coastguard Worker const ivec3 a = ivec2(25%7, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz; 137*35238bceSAndroid Build Coastguard Worker out0 = a.x + a.y + a.z; 138*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 139*35238bceSAndroid Build Coastguard Worker } 140*35238bceSAndroid Build Coastguard Worker "" 141*35238bceSAndroid Build Coastguard Worker end 142*35238bceSAndroid Build Coastguard Worker 143*35238bceSAndroid Build Coastguard Worker case math_mat 144*35238bceSAndroid Build Coastguard Worker version 300 es 145*35238bceSAndroid Build Coastguard Worker values { output float out0 = 8.0; } 146*35238bceSAndroid Build Coastguard Worker both "" 147*35238bceSAndroid Build Coastguard Worker #version 300 es 148*35238bceSAndroid Build Coastguard Worker precision highp float; 149*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 150*35238bceSAndroid Build Coastguard Worker 151*35238bceSAndroid Build Coastguard Worker void main() 152*35238bceSAndroid Build Coastguard Worker { 153*35238bceSAndroid Build Coastguard Worker const mat3 a = mat3(3.0) * mat3(4.0); 154*35238bceSAndroid Build Coastguard Worker const mat4 b = mat4(a[1][1])*2.0; 155*35238bceSAndroid Build Coastguard Worker const mat2 c = mat2(b[0][0]) / 3.0; 156*35238bceSAndroid Build Coastguard Worker out0 = c[0][0]+c[1][0]; 157*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 158*35238bceSAndroid Build Coastguard Worker } 159*35238bceSAndroid Build Coastguard Worker "" 160*35238bceSAndroid Build Coastguard Worker end 161*35238bceSAndroid Build Coastguard Worker 162*35238bceSAndroid Build Coastguard Worker case bitwise 163*35238bceSAndroid Build Coastguard Worker version 300 es 164*35238bceSAndroid Build Coastguard Worker values { output int out0 = 678332; } 165*35238bceSAndroid Build Coastguard Worker both "" 166*35238bceSAndroid Build Coastguard Worker #version 300 es 167*35238bceSAndroid Build Coastguard Worker precision highp int; 168*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 169*35238bceSAndroid Build Coastguard Worker 170*35238bceSAndroid Build Coastguard Worker void main() 171*35238bceSAndroid Build Coastguard Worker { 172*35238bceSAndroid Build Coastguard Worker const int a = (((0xABBA<<4) ^ 0xCAFE) | (0xDCBA & (0xABCD>>2))) ^ (~0xDEAD & 0xBEEF); 173*35238bceSAndroid Build Coastguard Worker out0 = a; 174*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 175*35238bceSAndroid Build Coastguard Worker } 176*35238bceSAndroid Build Coastguard Worker "" 177*35238bceSAndroid Build Coastguard Worker end 178*35238bceSAndroid Build Coastguard Worker 179*35238bceSAndroid Build Coastguard Worker case logical 180*35238bceSAndroid Build Coastguard Worker version 300 es 181*35238bceSAndroid Build Coastguard Worker values { output bool out0 = true; } 182*35238bceSAndroid Build Coastguard Worker both "" 183*35238bceSAndroid Build Coastguard Worker #version 300 es 184*35238bceSAndroid Build Coastguard Worker precision highp int; 185*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 186*35238bceSAndroid Build Coastguard Worker 187*35238bceSAndroid Build Coastguard Worker void main() 188*35238bceSAndroid Build Coastguard Worker { 189*35238bceSAndroid Build Coastguard Worker const bool a = (!false || false) && (true ^^ false); 190*35238bceSAndroid Build Coastguard Worker out0 = a; 191*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 192*35238bceSAndroid Build Coastguard Worker } 193*35238bceSAndroid Build Coastguard Worker "" 194*35238bceSAndroid Build Coastguard Worker end 195*35238bceSAndroid Build Coastguard Worker 196*35238bceSAndroid Build Coastguard Worker case compare 197*35238bceSAndroid Build Coastguard Worker version 300 es 198*35238bceSAndroid Build Coastguard Worker values { output bool out0 = true; } 199*35238bceSAndroid Build Coastguard Worker both "" 200*35238bceSAndroid Build Coastguard Worker #version 300 es 201*35238bceSAndroid Build Coastguard Worker precision highp int; 202*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 203*35238bceSAndroid Build Coastguard Worker 204*35238bceSAndroid Build Coastguard Worker void main() 205*35238bceSAndroid Build Coastguard Worker { 206*35238bceSAndroid Build Coastguard Worker const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1)); 207*35238bceSAndroid Build Coastguard Worker out0 = a; 208*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 209*35238bceSAndroid Build Coastguard Worker } 210*35238bceSAndroid Build Coastguard Worker "" 211*35238bceSAndroid Build Coastguard Worker end 212*35238bceSAndroid Build Coastguard Worker 213*35238bceSAndroid Build Coastguard Worker case selection 214*35238bceSAndroid Build Coastguard Worker version 300 es 215*35238bceSAndroid Build Coastguard Worker values { output float out0 = 5.3; } 216*35238bceSAndroid Build Coastguard Worker both "" 217*35238bceSAndroid Build Coastguard Worker #version 300 es 218*35238bceSAndroid Build Coastguard Worker precision highp float; 219*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 220*35238bceSAndroid Build Coastguard Worker 221*35238bceSAndroid Build Coastguard Worker void main() 222*35238bceSAndroid Build Coastguard Worker { 223*35238bceSAndroid Build Coastguard Worker const float a = false ? 0.0 : (true ? 5.3 : 1.0); 224*35238bceSAndroid Build Coastguard Worker out0 = a; 225*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 226*35238bceSAndroid Build Coastguard Worker } 227*35238bceSAndroid Build Coastguard Worker "" 228*35238bceSAndroid Build Coastguard Worker end 229*35238bceSAndroid Build Coastguard Worker 230*35238bceSAndroid Build Coastguard Workerend # operators 231*35238bceSAndroid Build Coastguard Worker 232*35238bceSAndroid Build Coastguard Workergroup complex_types "Arrays & Structs" 233*35238bceSAndroid Build Coastguard Worker 234*35238bceSAndroid Build Coastguard Worker case struct 235*35238bceSAndroid Build Coastguard Worker version 300 es 236*35238bceSAndroid Build Coastguard Worker values { output float out0 = 260.922; } 237*35238bceSAndroid Build Coastguard Worker both "" 238*35238bceSAndroid Build Coastguard Worker #version 300 es 239*35238bceSAndroid Build Coastguard Worker precision highp float; 240*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 241*35238bceSAndroid Build Coastguard Worker 242*35238bceSAndroid Build Coastguard Worker struct S 243*35238bceSAndroid Build Coastguard Worker { 244*35238bceSAndroid Build Coastguard Worker vec4 a; 245*35238bceSAndroid Build Coastguard Worker int b; 246*35238bceSAndroid Build Coastguard Worker }; 247*35238bceSAndroid Build Coastguard Worker 248*35238bceSAndroid Build Coastguard Worker void main() 249*35238bceSAndroid Build Coastguard Worker { 250*35238bceSAndroid Build Coastguard Worker const S s = S(vec4(1.5), 123); 251*35238bceSAndroid Build Coastguard Worker out0 = length(s.a.xy)*float(s.b); 252*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 253*35238bceSAndroid Build Coastguard Worker } 254*35238bceSAndroid Build Coastguard Worker "" 255*35238bceSAndroid Build Coastguard Worker end 256*35238bceSAndroid Build Coastguard Worker 257*35238bceSAndroid Build Coastguard Worker case nested_struct 258*35238bceSAndroid Build Coastguard Worker version 300 es 259*35238bceSAndroid Build Coastguard Worker values { output float out0 = 965.9; } 260*35238bceSAndroid Build Coastguard Worker both "" 261*35238bceSAndroid Build Coastguard Worker #version 300 es 262*35238bceSAndroid Build Coastguard Worker precision highp float; 263*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 264*35238bceSAndroid Build Coastguard Worker 265*35238bceSAndroid Build Coastguard Worker struct S 266*35238bceSAndroid Build Coastguard Worker { 267*35238bceSAndroid Build Coastguard Worker vec4 v; 268*35238bceSAndroid Build Coastguard Worker int i; 269*35238bceSAndroid Build Coastguard Worker }; 270*35238bceSAndroid Build Coastguard Worker 271*35238bceSAndroid Build Coastguard Worker struct T 272*35238bceSAndroid Build Coastguard Worker { 273*35238bceSAndroid Build Coastguard Worker S s; 274*35238bceSAndroid Build Coastguard Worker bool b; 275*35238bceSAndroid Build Coastguard Worker int i; 276*35238bceSAndroid Build Coastguard Worker }; 277*35238bceSAndroid Build Coastguard Worker 278*35238bceSAndroid Build Coastguard Worker struct U 279*35238bceSAndroid Build Coastguard Worker { 280*35238bceSAndroid Build Coastguard Worker S s; 281*35238bceSAndroid Build Coastguard Worker T t; 282*35238bceSAndroid Build Coastguard Worker }; 283*35238bceSAndroid Build Coastguard Worker 284*35238bceSAndroid Build Coastguard Worker void main() 285*35238bceSAndroid Build Coastguard Worker { 286*35238bceSAndroid Build Coastguard Worker const S s = S(vec4(1.5), 123); 287*35238bceSAndroid Build Coastguard Worker const T t = T(s, false, 3); 288*35238bceSAndroid Build Coastguard Worker const U u = U(s, t); 289*35238bceSAndroid Build Coastguard Worker const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6)); 290*35238bceSAndroid Build Coastguard Worker out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3 291*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 292*35238bceSAndroid Build Coastguard Worker } 293*35238bceSAndroid Build Coastguard Worker "" 294*35238bceSAndroid Build Coastguard Worker end 295*35238bceSAndroid Build Coastguard Worker 296*35238bceSAndroid Build Coastguard Worker case array_size 297*35238bceSAndroid Build Coastguard Worker version 300 es 298*35238bceSAndroid Build Coastguard Worker values { output int out0 = 1; } 299*35238bceSAndroid Build Coastguard Worker both "" 300*35238bceSAndroid Build Coastguard Worker #version 300 es 301*35238bceSAndroid Build Coastguard Worker precision highp float; 302*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 303*35238bceSAndroid Build Coastguard Worker 304*35238bceSAndroid Build Coastguard Worker void main() 305*35238bceSAndroid Build Coastguard Worker { 306*35238bceSAndroid Build Coastguard Worker const int a[max(-1, 1)] = int[1](1); 307*35238bceSAndroid Build Coastguard Worker out0 = a[0]; 308*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 309*35238bceSAndroid Build Coastguard Worker } 310*35238bceSAndroid Build Coastguard Worker "" 311*35238bceSAndroid Build Coastguard Worker end 312*35238bceSAndroid Build Coastguard Worker 313*35238bceSAndroid Build Coastguard Worker case array_length 314*35238bceSAndroid Build Coastguard Worker version 300 es 315*35238bceSAndroid Build Coastguard Worker values { output int out0 = 2; } 316*35238bceSAndroid Build Coastguard Worker both "" 317*35238bceSAndroid Build Coastguard Worker #version 300 es 318*35238bceSAndroid Build Coastguard Worker precision highp float; 319*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 320*35238bceSAndroid Build Coastguard Worker 321*35238bceSAndroid Build Coastguard Worker void main() 322*35238bceSAndroid Build Coastguard Worker { 323*35238bceSAndroid Build Coastguard Worker const int a[1] = int[1](1); 324*35238bceSAndroid Build Coastguard Worker out0 = a.length() + a[0]; 325*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 326*35238bceSAndroid Build Coastguard Worker } 327*35238bceSAndroid Build Coastguard Worker "" 328*35238bceSAndroid Build Coastguard Worker end 329*35238bceSAndroid Build Coastguard Worker 330*35238bceSAndroid Build Coastguard Worker case array 331*35238bceSAndroid Build Coastguard Worker version 300 es 332*35238bceSAndroid Build Coastguard Worker values { output float out0 = 4.0; } 333*35238bceSAndroid Build Coastguard Worker both "" 334*35238bceSAndroid Build Coastguard Worker #version 300 es 335*35238bceSAndroid Build Coastguard Worker precision highp float; 336*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 337*35238bceSAndroid Build Coastguard Worker 338*35238bceSAndroid Build Coastguard Worker void main() 339*35238bceSAndroid Build Coastguard Worker { 340*35238bceSAndroid Build Coastguard Worker const float a[1+2+5] = float[8](0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0); 341*35238bceSAndroid Build Coastguard Worker const float f = a[1+2+4]; 342*35238bceSAndroid Build Coastguard Worker out0 = f + float(a.length()-8); 343*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 344*35238bceSAndroid Build Coastguard Worker } 345*35238bceSAndroid Build Coastguard Worker "" 346*35238bceSAndroid Build Coastguard Worker end 347*35238bceSAndroid Build Coastguard Worker 348*35238bceSAndroid Build Coastguard Workerend # complex_types 349*35238bceSAndroid Build Coastguard Worker 350*35238bceSAndroid Build Coastguard Workergroup other "Other operations" 351*35238bceSAndroid Build Coastguard Worker 352*35238bceSAndroid Build Coastguard Worker case switch_case 353*35238bceSAndroid Build Coastguard Worker version 300 es 354*35238bceSAndroid Build Coastguard Worker values 355*35238bceSAndroid Build Coastguard Worker { 356*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; 357*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; 358*35238bceSAndroid Build Coastguard Worker } 359*35238bceSAndroid Build Coastguard Worker 360*35238bceSAndroid Build Coastguard Worker both "" 361*35238bceSAndroid Build Coastguard Worker #version 300 es 362*35238bceSAndroid Build Coastguard Worker precision highp float; 363*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 364*35238bceSAndroid Build Coastguard Worker 365*35238bceSAndroid Build Coastguard Worker void main() 366*35238bceSAndroid Build Coastguard Worker { 367*35238bceSAndroid Build Coastguard Worker const int _0 = 0; 368*35238bceSAndroid Build Coastguard Worker const int _1 = 1; 369*35238bceSAndroid Build Coastguard Worker const int _2 = 2; 370*35238bceSAndroid Build Coastguard Worker const int _3 = 3; 371*35238bceSAndroid Build Coastguard Worker const int _4 = 4; 372*35238bceSAndroid Build Coastguard Worker 373*35238bceSAndroid Build Coastguard Worker switch(int(in0)) 374*35238bceSAndroid Build Coastguard Worker { 375*35238bceSAndroid Build Coastguard Worker case _0: 376*35238bceSAndroid Build Coastguard Worker out0 = 0; 377*35238bceSAndroid Build Coastguard Worker break; 378*35238bceSAndroid Build Coastguard Worker case _1: 379*35238bceSAndroid Build Coastguard Worker out0 = 1; 380*35238bceSAndroid Build Coastguard Worker break; 381*35238bceSAndroid Build Coastguard Worker case _2: 382*35238bceSAndroid Build Coastguard Worker out0 = 2; 383*35238bceSAndroid Build Coastguard Worker break; 384*35238bceSAndroid Build Coastguard Worker case _3: 385*35238bceSAndroid Build Coastguard Worker out0 = 3; 386*35238bceSAndroid Build Coastguard Worker break; 387*35238bceSAndroid Build Coastguard Worker case _4: 388*35238bceSAndroid Build Coastguard Worker out0 = 4; 389*35238bceSAndroid Build Coastguard Worker break; 390*35238bceSAndroid Build Coastguard Worker case 5: 391*35238bceSAndroid Build Coastguard Worker out0 = 10; 392*35238bceSAndroid Build Coastguard Worker break; 393*35238bceSAndroid Build Coastguard Worker default: 394*35238bceSAndroid Build Coastguard Worker out0 = 100; 395*35238bceSAndroid Build Coastguard Worker 396*35238bceSAndroid Build Coastguard Worker } 397*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 398*35238bceSAndroid Build Coastguard Worker } 399*35238bceSAndroid Build Coastguard Worker "" 400*35238bceSAndroid Build Coastguard Worker end 401*35238bceSAndroid Build Coastguard Worker 402*35238bceSAndroid Build Coastguard Worker case nested_builtin_funcs 403*35238bceSAndroid Build Coastguard Worker version 300 es 404*35238bceSAndroid Build Coastguard Worker values { output float out0 = 3.05; } 405*35238bceSAndroid Build Coastguard Worker both "" 406*35238bceSAndroid Build Coastguard Worker #version 300 es 407*35238bceSAndroid Build Coastguard Worker precision highp float; 408*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 409*35238bceSAndroid Build Coastguard Worker 410*35238bceSAndroid Build Coastguard Worker void main() 411*35238bceSAndroid Build Coastguard Worker { 412*35238bceSAndroid Build Coastguard Worker const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/); 413*35238bceSAndroid Build Coastguard Worker out0 = a; 414*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 415*35238bceSAndroid Build Coastguard Worker } 416*35238bceSAndroid Build Coastguard Worker "" 417*35238bceSAndroid Build Coastguard Worker end 418*35238bceSAndroid Build Coastguard Worker 419*35238bceSAndroid Build Coastguard Worker case complex 420*35238bceSAndroid Build Coastguard Worker version 300 es 421*35238bceSAndroid Build Coastguard Worker values 422*35238bceSAndroid Build Coastguard Worker { 423*35238bceSAndroid Build Coastguard Worker input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ]; 424*35238bceSAndroid Build Coastguard Worker output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10]; 425*35238bceSAndroid Build Coastguard Worker } 426*35238bceSAndroid Build Coastguard Worker 427*35238bceSAndroid Build Coastguard Worker both "" 428*35238bceSAndroid Build Coastguard Worker #version 300 es 429*35238bceSAndroid Build Coastguard Worker precision highp float; 430*35238bceSAndroid Build Coastguard Worker ${DECLARATIONS} 431*35238bceSAndroid Build Coastguard Worker 432*35238bceSAndroid Build Coastguard Worker struct T 433*35238bceSAndroid Build Coastguard Worker { 434*35238bceSAndroid Build Coastguard Worker vec4 v; 435*35238bceSAndroid Build Coastguard Worker }; 436*35238bceSAndroid Build Coastguard Worker 437*35238bceSAndroid Build Coastguard Worker struct S 438*35238bceSAndroid Build Coastguard Worker { 439*35238bceSAndroid Build Coastguard Worker T t; 440*35238bceSAndroid Build Coastguard Worker int i; 441*35238bceSAndroid Build Coastguard Worker bool b; 442*35238bceSAndroid Build Coastguard Worker }; 443*35238bceSAndroid Build Coastguard Worker 444*35238bceSAndroid Build Coastguard Worker void main() 445*35238bceSAndroid Build Coastguard Worker { 446*35238bceSAndroid Build Coastguard Worker const T t = T(vec4(1.0)); 447*35238bceSAndroid Build Coastguard Worker const S s = S(t, 42, true); 448*35238bceSAndroid Build Coastguard Worker const int _0 = int(sin(0.0)); 449*35238bceSAndroid Build Coastguard Worker const int _1 = int(1.0); 450*35238bceSAndroid Build Coastguard Worker const int _2 = 2 + int(float(_0>_1)); 451*35238bceSAndroid Build Coastguard Worker const int _3 = min(gl_MaxVertexAttribs, 16)/4 - 1; 452*35238bceSAndroid Build Coastguard Worker const int _4 = min(gl_MaxDrawBuffers, 4); 453*35238bceSAndroid Build Coastguard Worker const ivec4 nums = ivec4(0, 1, 2, 3); 454*35238bceSAndroid Build Coastguard Worker 455*35238bceSAndroid Build Coastguard Worker switch(int(in0)) 456*35238bceSAndroid Build Coastguard Worker { 457*35238bceSAndroid Build Coastguard Worker case int(float(_0)): 458*35238bceSAndroid Build Coastguard Worker out0 = ((true!=false) && (!false)) ? 0 : 25; 459*35238bceSAndroid Build Coastguard Worker break; 460*35238bceSAndroid Build Coastguard Worker case ivec3(_1).x: 461*35238bceSAndroid Build Coastguard Worker out0 = 3*18/9-5; 462*35238bceSAndroid Build Coastguard Worker break; 463*35238bceSAndroid Build Coastguard Worker case nums[_2]: 464*35238bceSAndroid Build Coastguard Worker out0 = int(length(vec4(1.0))+0.001); 465*35238bceSAndroid Build Coastguard Worker break; 466*35238bceSAndroid Build Coastguard Worker case _3: 467*35238bceSAndroid Build Coastguard Worker out0 = 3; 468*35238bceSAndroid Build Coastguard Worker break; 469*35238bceSAndroid Build Coastguard Worker case clamp(_4, 1, 6): 470*35238bceSAndroid Build Coastguard Worker out0 = (s.i-2)/10; 471*35238bceSAndroid Build Coastguard Worker break; 472*35238bceSAndroid Build Coastguard Worker case max(3, 5): 473*35238bceSAndroid Build Coastguard Worker out0 = 10; 474*35238bceSAndroid Build Coastguard Worker break; 475*35238bceSAndroid Build Coastguard Worker default: 476*35238bceSAndroid Build Coastguard Worker out0 = 100; 477*35238bceSAndroid Build Coastguard Worker 478*35238bceSAndroid Build Coastguard Worker } 479*35238bceSAndroid Build Coastguard Worker ${OUTPUT} 480*35238bceSAndroid Build Coastguard Worker } 481*35238bceSAndroid Build Coastguard Worker "" 482*35238bceSAndroid Build Coastguard Worker end 483*35238bceSAndroid Build Coastguard Workerend 484