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