1e5c31af7Sopenharmony_ci 2e5c31af7Sopenharmony_ci# Varying tests 3e5c31af7Sopenharmony_cigroup varying "Varying linkage" 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_ci # Linking rules 6e5c31af7Sopenharmony_ci group rules "Varying linking rules" 7e5c31af7Sopenharmony_ci # declared in vertex shader, no reference in frag shader 8e5c31af7Sopenharmony_ci case vertex_declare 9e5c31af7Sopenharmony_ci version 310 es 10e5c31af7Sopenharmony_ci desc "varying declared in vertex shader, no reference in fragment shader" 11e5c31af7Sopenharmony_ci vertex "" 12e5c31af7Sopenharmony_ci #version 310 es 13e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 14e5c31af7Sopenharmony_ci layout(location = 0) out mediump float var; 15e5c31af7Sopenharmony_ci void main() 16e5c31af7Sopenharmony_ci { 17e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 18e5c31af7Sopenharmony_ci } 19e5c31af7Sopenharmony_ci "" 20e5c31af7Sopenharmony_ci fragment "" 21e5c31af7Sopenharmony_ci #version 310 es 22e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 23e5c31af7Sopenharmony_ci void main() 24e5c31af7Sopenharmony_ci { 25e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 26e5c31af7Sopenharmony_ci } 27e5c31af7Sopenharmony_ci "" 28e5c31af7Sopenharmony_ci end 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_ci # declared in vertex shader, declared in frag shader 31e5c31af7Sopenharmony_ci case both_declare 32e5c31af7Sopenharmony_ci version 310 es 33e5c31af7Sopenharmony_ci desc "varying declared in both vertex and fragment shader, but not used" 34e5c31af7Sopenharmony_ci vertex "" 35e5c31af7Sopenharmony_ci #version 310 es 36e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 37e5c31af7Sopenharmony_ci layout(location = 0) out mediump float var; 38e5c31af7Sopenharmony_ci void main() 39e5c31af7Sopenharmony_ci { 40e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 41e5c31af7Sopenharmony_ci } 42e5c31af7Sopenharmony_ci "" 43e5c31af7Sopenharmony_ci fragment "" 44e5c31af7Sopenharmony_ci #version 310 es 45e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 46e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 47e5c31af7Sopenharmony_ci void main() 48e5c31af7Sopenharmony_ci { 49e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 50e5c31af7Sopenharmony_ci } 51e5c31af7Sopenharmony_ci "" 52e5c31af7Sopenharmony_ci end 53e5c31af7Sopenharmony_ci 54e5c31af7Sopenharmony_ci # vec4 vs vec3 55e5c31af7Sopenharmony_ci case legal_mismatch_vec4_vec3 56e5c31af7Sopenharmony_ci version 310 es 57e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (vec4 to vec3)" 58e5c31af7Sopenharmony_ci vertex "" 59e5c31af7Sopenharmony_ci #version 310 es 60e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 61e5c31af7Sopenharmony_ci layout(location = 0) out mediump vec4 var; 62e5c31af7Sopenharmony_ci void main() 63e5c31af7Sopenharmony_ci { 64e5c31af7Sopenharmony_ci var.x = 0.0; 65e5c31af7Sopenharmony_ci var.y = 0.0; 66e5c31af7Sopenharmony_ci var.z = 0.0; 67e5c31af7Sopenharmony_ci var.w = 0.0; 68e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 69e5c31af7Sopenharmony_ci } 70e5c31af7Sopenharmony_ci "" 71e5c31af7Sopenharmony_ci fragment "" 72e5c31af7Sopenharmony_ci #version 310 es 73e5c31af7Sopenharmony_ci layout(location = 0) in mediump vec3 var; 74e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 75e5c31af7Sopenharmony_ci void main() 76e5c31af7Sopenharmony_ci { 77e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0 + var.x + var.y + var.z); 78e5c31af7Sopenharmony_ci } 79e5c31af7Sopenharmony_ci "" 80e5c31af7Sopenharmony_ci end 81e5c31af7Sopenharmony_ci 82e5c31af7Sopenharmony_ci # vec4 vs vec2 83e5c31af7Sopenharmony_ci case legal_mismatch_vec4_vec2 84e5c31af7Sopenharmony_ci version 310 es 85e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (vec4 to vec2)" 86e5c31af7Sopenharmony_ci vertex "" 87e5c31af7Sopenharmony_ci #version 310 es 88e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 89e5c31af7Sopenharmony_ci layout(location = 0) out mediump vec4 var; 90e5c31af7Sopenharmony_ci void main() 91e5c31af7Sopenharmony_ci { 92e5c31af7Sopenharmony_ci var.x = 0.0; 93e5c31af7Sopenharmony_ci var.y = 0.0; 94e5c31af7Sopenharmony_ci var.z = 0.0; 95e5c31af7Sopenharmony_ci var.w = 0.0; 96e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 97e5c31af7Sopenharmony_ci } 98e5c31af7Sopenharmony_ci "" 99e5c31af7Sopenharmony_ci fragment "" 100e5c31af7Sopenharmony_ci #version 310 es 101e5c31af7Sopenharmony_ci layout(location = 0) in mediump vec2 var; 102e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 103e5c31af7Sopenharmony_ci void main() 104e5c31af7Sopenharmony_ci { 105e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0 + var.x + var.y); 106e5c31af7Sopenharmony_ci } 107e5c31af7Sopenharmony_ci "" 108e5c31af7Sopenharmony_ci end 109e5c31af7Sopenharmony_ci 110e5c31af7Sopenharmony_ci # vec4 vs float 111e5c31af7Sopenharmony_ci case legal_mismatch_vec4_float 112e5c31af7Sopenharmony_ci version 310 es 113e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (vec4 to float)" 114e5c31af7Sopenharmony_ci vertex "" 115e5c31af7Sopenharmony_ci #version 310 es 116e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 117e5c31af7Sopenharmony_ci layout(location = 0) out mediump vec4 var; 118e5c31af7Sopenharmony_ci void main() 119e5c31af7Sopenharmony_ci { 120e5c31af7Sopenharmony_ci var.x = 0.0; 121e5c31af7Sopenharmony_ci var.y = 0.0; 122e5c31af7Sopenharmony_ci var.z = 0.0; 123e5c31af7Sopenharmony_ci var.w = 0.0; 124e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 125e5c31af7Sopenharmony_ci } 126e5c31af7Sopenharmony_ci "" 127e5c31af7Sopenharmony_ci fragment "" 128e5c31af7Sopenharmony_ci #version 310 es 129e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 130e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 131e5c31af7Sopenharmony_ci void main() 132e5c31af7Sopenharmony_ci { 133e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0 + var); 134e5c31af7Sopenharmony_ci } 135e5c31af7Sopenharmony_ci "" 136e5c31af7Sopenharmony_ci end 137e5c31af7Sopenharmony_ci 138e5c31af7Sopenharmony_ci # vec3 vs vec2 139e5c31af7Sopenharmony_ci case legal_mismatch_vec3_vec2 140e5c31af7Sopenharmony_ci version 310 es 141e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (vec3 to vec2)" 142e5c31af7Sopenharmony_ci vertex "" 143e5c31af7Sopenharmony_ci #version 310 es 144e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 145e5c31af7Sopenharmony_ci layout(location = 0) out mediump vec3 var; 146e5c31af7Sopenharmony_ci void main() 147e5c31af7Sopenharmony_ci { 148e5c31af7Sopenharmony_ci var.x = 0.0; 149e5c31af7Sopenharmony_ci var.y = 0.0; 150e5c31af7Sopenharmony_ci var.z = 0.0; 151e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 152e5c31af7Sopenharmony_ci } 153e5c31af7Sopenharmony_ci "" 154e5c31af7Sopenharmony_ci fragment "" 155e5c31af7Sopenharmony_ci #version 310 es 156e5c31af7Sopenharmony_ci layout(location = 0) in mediump vec2 var; 157e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 158e5c31af7Sopenharmony_ci void main() 159e5c31af7Sopenharmony_ci { 160e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0 + var.x + var.y); 161e5c31af7Sopenharmony_ci } 162e5c31af7Sopenharmony_ci "" 163e5c31af7Sopenharmony_ci end 164e5c31af7Sopenharmony_ci 165e5c31af7Sopenharmony_ci # vec3 vs float 166e5c31af7Sopenharmony_ci case legal_mismatch_vec3_float 167e5c31af7Sopenharmony_ci version 310 es 168e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (vec3 to float)" 169e5c31af7Sopenharmony_ci vertex "" 170e5c31af7Sopenharmony_ci #version 310 es 171e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 172e5c31af7Sopenharmony_ci layout(location = 0) out mediump vec3 var; 173e5c31af7Sopenharmony_ci void main() 174e5c31af7Sopenharmony_ci { 175e5c31af7Sopenharmony_ci var.x = 0.0; 176e5c31af7Sopenharmony_ci var.y = 0.0; 177e5c31af7Sopenharmony_ci var.z = 0.0; 178e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 179e5c31af7Sopenharmony_ci } 180e5c31af7Sopenharmony_ci "" 181e5c31af7Sopenharmony_ci fragment "" 182e5c31af7Sopenharmony_ci #version 310 es 183e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 184e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 185e5c31af7Sopenharmony_ci void main() 186e5c31af7Sopenharmony_ci { 187e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0 + var); 188e5c31af7Sopenharmony_ci } 189e5c31af7Sopenharmony_ci "" 190e5c31af7Sopenharmony_ci end 191e5c31af7Sopenharmony_ci 192e5c31af7Sopenharmony_ci # vec2 vs float 193e5c31af7Sopenharmony_ci case legal_mismatch_vec2_float 194e5c31af7Sopenharmony_ci version 310 es 195e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (vec2 to float)" 196e5c31af7Sopenharmony_ci vertex "" 197e5c31af7Sopenharmony_ci #version 310 es 198e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 199e5c31af7Sopenharmony_ci layout(location = 0) out mediump vec2 var; 200e5c31af7Sopenharmony_ci void main() 201e5c31af7Sopenharmony_ci { 202e5c31af7Sopenharmony_ci var.x = 0.0; 203e5c31af7Sopenharmony_ci var.y = 0.0; 204e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 205e5c31af7Sopenharmony_ci } 206e5c31af7Sopenharmony_ci "" 207e5c31af7Sopenharmony_ci fragment "" 208e5c31af7Sopenharmony_ci #version 310 es 209e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 210e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 211e5c31af7Sopenharmony_ci void main() 212e5c31af7Sopenharmony_ci { 213e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0 + var); 214e5c31af7Sopenharmony_ci } 215e5c31af7Sopenharmony_ci "" 216e5c31af7Sopenharmony_ci end 217e5c31af7Sopenharmony_ci 218e5c31af7Sopenharmony_ci # ivec4 vs ivec3 219e5c31af7Sopenharmony_ci case legal_mismatch_ivec4_ivec3 220e5c31af7Sopenharmony_ci version 310 es 221e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (ivec4 to ivec3)" 222e5c31af7Sopenharmony_ci vertex "" 223e5c31af7Sopenharmony_ci #version 310 es 224e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 225e5c31af7Sopenharmony_ci layout(location = 0) out mediump ivec4 var; 226e5c31af7Sopenharmony_ci void main() 227e5c31af7Sopenharmony_ci { 228e5c31af7Sopenharmony_ci var.x = 0; 229e5c31af7Sopenharmony_ci var.y = 0; 230e5c31af7Sopenharmony_ci var.z = 0; 231e5c31af7Sopenharmony_ci var.w = 0; 232e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 233e5c31af7Sopenharmony_ci } 234e5c31af7Sopenharmony_ci "" 235e5c31af7Sopenharmony_ci fragment "" 236e5c31af7Sopenharmony_ci #version 310 es 237e5c31af7Sopenharmony_ci layout(location = 0) in mediump flat ivec3 var; 238e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 239e5c31af7Sopenharmony_ci void main() 240e5c31af7Sopenharmony_ci { 241e5c31af7Sopenharmony_ci if (var.x + var.y + var.z == 0) 242e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 243e5c31af7Sopenharmony_ci else 244e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(0.0); 245e5c31af7Sopenharmony_ci } 246e5c31af7Sopenharmony_ci "" 247e5c31af7Sopenharmony_ci end 248e5c31af7Sopenharmony_ci 249e5c31af7Sopenharmony_ci # ivec4 vs ivec2 250e5c31af7Sopenharmony_ci case legal_mismatch_ivec4_ivec2 251e5c31af7Sopenharmony_ci version 310 es 252e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (ivec4 to ivec2)" 253e5c31af7Sopenharmony_ci vertex "" 254e5c31af7Sopenharmony_ci #version 310 es 255e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 256e5c31af7Sopenharmony_ci layout(location = 0) out mediump ivec4 var; 257e5c31af7Sopenharmony_ci void main() 258e5c31af7Sopenharmony_ci { 259e5c31af7Sopenharmony_ci var.x = 0; 260e5c31af7Sopenharmony_ci var.y = 0; 261e5c31af7Sopenharmony_ci var.z = 0; 262e5c31af7Sopenharmony_ci var.w = 0; 263e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 264e5c31af7Sopenharmony_ci } 265e5c31af7Sopenharmony_ci "" 266e5c31af7Sopenharmony_ci fragment "" 267e5c31af7Sopenharmony_ci #version 310 es 268e5c31af7Sopenharmony_ci layout(location = 0) in mediump flat ivec2 var; 269e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 270e5c31af7Sopenharmony_ci void main() 271e5c31af7Sopenharmony_ci { 272e5c31af7Sopenharmony_ci if (var.x + var.y == 0) 273e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 274e5c31af7Sopenharmony_ci else 275e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(0.0); 276e5c31af7Sopenharmony_ci } 277e5c31af7Sopenharmony_ci "" 278e5c31af7Sopenharmony_ci end 279e5c31af7Sopenharmony_ci 280e5c31af7Sopenharmony_ci # ivec4 vs int 281e5c31af7Sopenharmony_ci case legal_mismatch_ivec4_int 282e5c31af7Sopenharmony_ci version 310 es 283e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (ivec4 to int)" 284e5c31af7Sopenharmony_ci vertex "" 285e5c31af7Sopenharmony_ci #version 310 es 286e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 287e5c31af7Sopenharmony_ci layout(location = 0) out mediump ivec4 var; 288e5c31af7Sopenharmony_ci void main() 289e5c31af7Sopenharmony_ci { 290e5c31af7Sopenharmony_ci var.x = 0; 291e5c31af7Sopenharmony_ci var.y = 0; 292e5c31af7Sopenharmony_ci var.z = 0; 293e5c31af7Sopenharmony_ci var.w = 0; 294e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 295e5c31af7Sopenharmony_ci } 296e5c31af7Sopenharmony_ci "" 297e5c31af7Sopenharmony_ci fragment "" 298e5c31af7Sopenharmony_ci #version 310 es 299e5c31af7Sopenharmony_ci layout(location = 0) in mediump flat int var; 300e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 301e5c31af7Sopenharmony_ci void main() 302e5c31af7Sopenharmony_ci { 303e5c31af7Sopenharmony_ci if (var == 0) 304e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 305e5c31af7Sopenharmony_ci else 306e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(0.0); 307e5c31af7Sopenharmony_ci } 308e5c31af7Sopenharmony_ci "" 309e5c31af7Sopenharmony_ci end 310e5c31af7Sopenharmony_ci 311e5c31af7Sopenharmony_ci # ivec3 vs ivec2 312e5c31af7Sopenharmony_ci case legal_mismatch_ivec3_ivec2 313e5c31af7Sopenharmony_ci version 310 es 314e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (ivec3 to ivec2)" 315e5c31af7Sopenharmony_ci vertex "" 316e5c31af7Sopenharmony_ci #version 310 es 317e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 318e5c31af7Sopenharmony_ci layout(location = 0) out mediump ivec3 var; 319e5c31af7Sopenharmony_ci void main() 320e5c31af7Sopenharmony_ci { 321e5c31af7Sopenharmony_ci var.x = 0; 322e5c31af7Sopenharmony_ci var.y = 0; 323e5c31af7Sopenharmony_ci var.z = 0; 324e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 325e5c31af7Sopenharmony_ci } 326e5c31af7Sopenharmony_ci "" 327e5c31af7Sopenharmony_ci fragment "" 328e5c31af7Sopenharmony_ci #version 310 es 329e5c31af7Sopenharmony_ci layout(location = 0) in mediump flat ivec2 var; 330e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 331e5c31af7Sopenharmony_ci void main() 332e5c31af7Sopenharmony_ci { 333e5c31af7Sopenharmony_ci if (var.x + var.y == 0) 334e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 335e5c31af7Sopenharmony_ci else 336e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(0.0); 337e5c31af7Sopenharmony_ci } 338e5c31af7Sopenharmony_ci "" 339e5c31af7Sopenharmony_ci end 340e5c31af7Sopenharmony_ci 341e5c31af7Sopenharmony_ci # ivec3 vs int 342e5c31af7Sopenharmony_ci case legal_mismatch_ivec3_int 343e5c31af7Sopenharmony_ci version 310 es 344e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (ivec3 to int)" 345e5c31af7Sopenharmony_ci vertex "" 346e5c31af7Sopenharmony_ci #version 310 es 347e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 348e5c31af7Sopenharmony_ci layout(location = 0) out mediump ivec3 var; 349e5c31af7Sopenharmony_ci void main() 350e5c31af7Sopenharmony_ci { 351e5c31af7Sopenharmony_ci var.x = 0; 352e5c31af7Sopenharmony_ci var.y = 0; 353e5c31af7Sopenharmony_ci var.z = 0; 354e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 355e5c31af7Sopenharmony_ci } 356e5c31af7Sopenharmony_ci "" 357e5c31af7Sopenharmony_ci fragment "" 358e5c31af7Sopenharmony_ci #version 310 es 359e5c31af7Sopenharmony_ci layout(location = 0) in mediump flat int var; 360e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 361e5c31af7Sopenharmony_ci void main() 362e5c31af7Sopenharmony_ci { 363e5c31af7Sopenharmony_ci if (var == 0) 364e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 365e5c31af7Sopenharmony_ci else 366e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(0.0); 367e5c31af7Sopenharmony_ci } 368e5c31af7Sopenharmony_ci "" 369e5c31af7Sopenharmony_ci end 370e5c31af7Sopenharmony_ci 371e5c31af7Sopenharmony_ci # ivec2 vs int 372e5c31af7Sopenharmony_ci case legal_mismatch_ivec2_int 373e5c31af7Sopenharmony_ci version 310 es 374e5c31af7Sopenharmony_ci desc "legal vertex to fragment shader varying type mismatches (ivec2 to int)" 375e5c31af7Sopenharmony_ci vertex "" 376e5c31af7Sopenharmony_ci #version 310 es 377e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 378e5c31af7Sopenharmony_ci layout(location = 0) out mediump ivec2 var; 379e5c31af7Sopenharmony_ci void main() 380e5c31af7Sopenharmony_ci { 381e5c31af7Sopenharmony_ci var.x = 0; 382e5c31af7Sopenharmony_ci var.y = 0; 383e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 384e5c31af7Sopenharmony_ci } 385e5c31af7Sopenharmony_ci "" 386e5c31af7Sopenharmony_ci fragment "" 387e5c31af7Sopenharmony_ci #version 310 es 388e5c31af7Sopenharmony_ci layout(location = 0) in mediump flat int var; 389e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 390e5c31af7Sopenharmony_ci void main() 391e5c31af7Sopenharmony_ci { 392e5c31af7Sopenharmony_ci if (var == 0) 393e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 394e5c31af7Sopenharmony_ci else 395e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(0.0); 396e5c31af7Sopenharmony_ci } 397e5c31af7Sopenharmony_ci "" 398e5c31af7Sopenharmony_ci end 399e5c31af7Sopenharmony_ci 400e5c31af7Sopenharmony_ci # declared in vertex shader, static use in frag shader 401e5c31af7Sopenharmony_ci case vertex_declare_fragment_use 402e5c31af7Sopenharmony_ci version 310 es 403e5c31af7Sopenharmony_ci desc "varying declared in both shaders, statically used in fragment shader" 404e5c31af7Sopenharmony_ci values { uniform bool u_false = false; } 405e5c31af7Sopenharmony_ci vertex "" 406e5c31af7Sopenharmony_ci #version 310 es 407e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 408e5c31af7Sopenharmony_ci layout(location = 0) out mediump float var; 409e5c31af7Sopenharmony_ci void main() 410e5c31af7Sopenharmony_ci { 411e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 412e5c31af7Sopenharmony_ci } 413e5c31af7Sopenharmony_ci "" 414e5c31af7Sopenharmony_ci fragment "" 415e5c31af7Sopenharmony_ci #version 310 es 416e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 417e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 418e5c31af7Sopenharmony_ci void main() 419e5c31af7Sopenharmony_ci { 420e5c31af7Sopenharmony_ci if (u_false) 421e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(var); 422e5c31af7Sopenharmony_ci else 423e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 424e5c31af7Sopenharmony_ci } 425e5c31af7Sopenharmony_ci "" 426e5c31af7Sopenharmony_ci end 427e5c31af7Sopenharmony_ci 428e5c31af7Sopenharmony_ci # static use in vertex shader, no reference in fragment shader 429e5c31af7Sopenharmony_ci case vertex_use_fragment_declare 430e5c31af7Sopenharmony_ci version 310 es 431e5c31af7Sopenharmony_ci desc "varying declared and statically used in vertex shader, no reference in fragment shader" 432e5c31af7Sopenharmony_ci values { uniform bool u_false = false; } 433e5c31af7Sopenharmony_ci vertex "" 434e5c31af7Sopenharmony_ci #version 310 es 435e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 436e5c31af7Sopenharmony_ci layout(location = 0) out mediump float var; 437e5c31af7Sopenharmony_ci void main() 438e5c31af7Sopenharmony_ci { 439e5c31af7Sopenharmony_ci if (u_false) 440e5c31af7Sopenharmony_ci var = 1.0; 441e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 442e5c31af7Sopenharmony_ci } 443e5c31af7Sopenharmony_ci "" 444e5c31af7Sopenharmony_ci fragment "" 445e5c31af7Sopenharmony_ci #version 310 es 446e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 447e5c31af7Sopenharmony_ci void main() 448e5c31af7Sopenharmony_ci { 449e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 450e5c31af7Sopenharmony_ci } 451e5c31af7Sopenharmony_ci "" 452e5c31af7Sopenharmony_ci end 453e5c31af7Sopenharmony_ci 454e5c31af7Sopenharmony_ci # static use in vertex shader, declared in fragment shader 455e5c31af7Sopenharmony_ci case vertex_use_declare_fragment 456e5c31af7Sopenharmony_ci version 310 es 457e5c31af7Sopenharmony_ci desc "varying declared and statically used in vertex shader, only declared in fragment shader" 458e5c31af7Sopenharmony_ci values { uniform bool u_false = false; } 459e5c31af7Sopenharmony_ci vertex "" 460e5c31af7Sopenharmony_ci #version 310 es 461e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 462e5c31af7Sopenharmony_ci layout(location = 0) out mediump float var; 463e5c31af7Sopenharmony_ci void main() 464e5c31af7Sopenharmony_ci { 465e5c31af7Sopenharmony_ci if (u_false) 466e5c31af7Sopenharmony_ci var = 1.0; 467e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 468e5c31af7Sopenharmony_ci } 469e5c31af7Sopenharmony_ci "" 470e5c31af7Sopenharmony_ci fragment "" 471e5c31af7Sopenharmony_ci #version 310 es 472e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 473e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 474e5c31af7Sopenharmony_ci void main() 475e5c31af7Sopenharmony_ci { 476e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 477e5c31af7Sopenharmony_ci } 478e5c31af7Sopenharmony_ci "" 479e5c31af7Sopenharmony_ci end 480e5c31af7Sopenharmony_ci 481e5c31af7Sopenharmony_ci # static use in vertex shader, used in fragment shader 482e5c31af7Sopenharmony_ci case vertex_use_fragment_use 483e5c31af7Sopenharmony_ci version 310 es 484e5c31af7Sopenharmony_ci desc "varying statically used in both vertex and fragment shader" 485e5c31af7Sopenharmony_ci values { uniform bool u_false = false; } 486e5c31af7Sopenharmony_ci vertex "" 487e5c31af7Sopenharmony_ci #version 310 es 488e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 489e5c31af7Sopenharmony_ci layout(location = 0) out mediump float var; 490e5c31af7Sopenharmony_ci void main() 491e5c31af7Sopenharmony_ci { 492e5c31af7Sopenharmony_ci if (u_false) 493e5c31af7Sopenharmony_ci var = 1.0; 494e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 495e5c31af7Sopenharmony_ci } 496e5c31af7Sopenharmony_ci "" 497e5c31af7Sopenharmony_ci fragment "" 498e5c31af7Sopenharmony_ci #version 310 es 499e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 500e5c31af7Sopenharmony_ci layout(location = 0) in mediump float var; 501e5c31af7Sopenharmony_ci void main() 502e5c31af7Sopenharmony_ci { 503e5c31af7Sopenharmony_ci if (u_false) 504e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(var); 505e5c31af7Sopenharmony_ci else 506e5c31af7Sopenharmony_ci ${FRAG_COLOR} = vec4(1.0); 507e5c31af7Sopenharmony_ci } 508e5c31af7Sopenharmony_ci "" 509e5c31af7Sopenharmony_ci end 510e5c31af7Sopenharmony_ci 511e5c31af7Sopenharmony_ci # different interpolation 512e5c31af7Sopenharmony_ci case differing_interpolation_2 513e5c31af7Sopenharmony_ci version 310 es 514e5c31af7Sopenharmony_ci desc "varying interpolation different (smooth vs. centroid)" 515e5c31af7Sopenharmony_ci values 516e5c31af7Sopenharmony_ci { 517e5c31af7Sopenharmony_ci input float in0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; 518e5c31af7Sopenharmony_ci output float out0 = [ -1.25 | -25.0 | 1.0 | 2.25 | 3.4 | 16.0 ]; 519e5c31af7Sopenharmony_ci } 520e5c31af7Sopenharmony_ci 521e5c31af7Sopenharmony_ci vertex "" 522e5c31af7Sopenharmony_ci #version 310 es 523e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 524e5c31af7Sopenharmony_ci layout(location = 0) smooth out mediump float var; 525e5c31af7Sopenharmony_ci void main() 526e5c31af7Sopenharmony_ci { 527e5c31af7Sopenharmony_ci var = in0; 528e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 529e5c31af7Sopenharmony_ci } 530e5c31af7Sopenharmony_ci "" 531e5c31af7Sopenharmony_ci fragment "" 532e5c31af7Sopenharmony_ci #version 310 es 533e5c31af7Sopenharmony_ci precision highp float; 534e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 535e5c31af7Sopenharmony_ci layout(location = 0) centroid in mediump float var; 536e5c31af7Sopenharmony_ci void main() 537e5c31af7Sopenharmony_ci { 538e5c31af7Sopenharmony_ci out0 = var; 539e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 540e5c31af7Sopenharmony_ci } 541e5c31af7Sopenharmony_ci "" 542e5c31af7Sopenharmony_ci end 543e5c31af7Sopenharmony_ci 544e5c31af7Sopenharmony_ci # differing name (linking is done by location only in SPIR-V) 545e5c31af7Sopenharmony_ci case differing_name_1 546e5c31af7Sopenharmony_ci version 310 es 547e5c31af7Sopenharmony_ci desc "varying declared with matching location but different name" 548e5c31af7Sopenharmony_ci values 549e5c31af7Sopenharmony_ci { 550e5c31af7Sopenharmony_ci input float in0 = [ 2.0 | 5.0 | -3.0 | 4.0 ]; 551e5c31af7Sopenharmony_ci input float in1 = [ 4.0 | 1.0 | -0.5 | 2.0 ]; 552e5c31af7Sopenharmony_ci output float out0 = [ -2.0 | 4.0 | -2.5 | 2.0 ]; 553e5c31af7Sopenharmony_ci } 554e5c31af7Sopenharmony_ci 555e5c31af7Sopenharmony_ci vertex "" 556e5c31af7Sopenharmony_ci #version 310 es 557e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 558e5c31af7Sopenharmony_ci layout(location = 0) out highp float vtxVarB; 559e5c31af7Sopenharmony_ci layout(location = 2) out highp float vtxVarA; 560e5c31af7Sopenharmony_ci void main() 561e5c31af7Sopenharmony_ci { 562e5c31af7Sopenharmony_ci vtxVarA = in0; 563e5c31af7Sopenharmony_ci vtxVarB = in1; 564e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 565e5c31af7Sopenharmony_ci } 566e5c31af7Sopenharmony_ci "" 567e5c31af7Sopenharmony_ci fragment "" 568e5c31af7Sopenharmony_ci #version 310 es 569e5c31af7Sopenharmony_ci precision highp float; 570e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 571e5c31af7Sopenharmony_ci layout(location = 2) in highp float fragVarA; 572e5c31af7Sopenharmony_ci layout(location = 0) in highp float fragVarB; 573e5c31af7Sopenharmony_ci void main() 574e5c31af7Sopenharmony_ci { 575e5c31af7Sopenharmony_ci out0 = fragVarA - fragVarB; 576e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 577e5c31af7Sopenharmony_ci } 578e5c31af7Sopenharmony_ci "" 579e5c31af7Sopenharmony_ci end 580e5c31af7Sopenharmony_ci 581e5c31af7Sopenharmony_ci # differing name (linking is done by location only in SPIR-V) 582e5c31af7Sopenharmony_ci case differing_name_2 583e5c31af7Sopenharmony_ci version 310 es 584e5c31af7Sopenharmony_ci desc "varying declared with matching location but different name" 585e5c31af7Sopenharmony_ci values 586e5c31af7Sopenharmony_ci { 587e5c31af7Sopenharmony_ci input float in0 = [ 2.0 | 5.0 | -3.0 | 4.0 ]; 588e5c31af7Sopenharmony_ci input float in1 = [ 4.0 | 1.0 | -0.5 | 2.0 ]; 589e5c31af7Sopenharmony_ci output float out0 = [ -2.0 | 4.0 | -2.5 | 2.0 ]; 590e5c31af7Sopenharmony_ci } 591e5c31af7Sopenharmony_ci 592e5c31af7Sopenharmony_ci vertex "" 593e5c31af7Sopenharmony_ci #version 310 es 594e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 595e5c31af7Sopenharmony_ci layout(location = 0) out highp float varA; 596e5c31af7Sopenharmony_ci layout(location = 2) out highp float varB; 597e5c31af7Sopenharmony_ci void main() 598e5c31af7Sopenharmony_ci { 599e5c31af7Sopenharmony_ci varA = in0; 600e5c31af7Sopenharmony_ci varB = in1; 601e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 602e5c31af7Sopenharmony_ci } 603e5c31af7Sopenharmony_ci "" 604e5c31af7Sopenharmony_ci fragment "" 605e5c31af7Sopenharmony_ci #version 310 es 606e5c31af7Sopenharmony_ci precision highp float; 607e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 608e5c31af7Sopenharmony_ci layout(location = 2) in highp float varA; 609e5c31af7Sopenharmony_ci layout(location = 0) in highp float varB; 610e5c31af7Sopenharmony_ci void main() 611e5c31af7Sopenharmony_ci { 612e5c31af7Sopenharmony_ci out0 = varB - varA; 613e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 614e5c31af7Sopenharmony_ci } 615e5c31af7Sopenharmony_ci "" 616e5c31af7Sopenharmony_ci end 617e5c31af7Sopenharmony_ci end 618e5c31af7Sopenharmony_ci 619e5c31af7Sopenharmony_ci group basic_types "Basic varying types" 620e5c31af7Sopenharmony_ci case float 621e5c31af7Sopenharmony_ci version 310 es 622e5c31af7Sopenharmony_ci desc "varying of type float" 623e5c31af7Sopenharmony_ci values 624e5c31af7Sopenharmony_ci { 625e5c31af7Sopenharmony_ci input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 626e5c31af7Sopenharmony_ci output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 627e5c31af7Sopenharmony_ci } 628e5c31af7Sopenharmony_ci vertex "" 629e5c31af7Sopenharmony_ci #version 310 es 630e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 631e5c31af7Sopenharmony_ci layout(location = 0) out float var; 632e5c31af7Sopenharmony_ci void main() 633e5c31af7Sopenharmony_ci { 634e5c31af7Sopenharmony_ci var = in0; 635e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 636e5c31af7Sopenharmony_ci } 637e5c31af7Sopenharmony_ci "" 638e5c31af7Sopenharmony_ci fragment "" 639e5c31af7Sopenharmony_ci #version 310 es 640e5c31af7Sopenharmony_ci precision highp float; 641e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 642e5c31af7Sopenharmony_ci layout(location = 0) in float var; 643e5c31af7Sopenharmony_ci void main() 644e5c31af7Sopenharmony_ci { 645e5c31af7Sopenharmony_ci out0 = var; 646e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 647e5c31af7Sopenharmony_ci } 648e5c31af7Sopenharmony_ci "" 649e5c31af7Sopenharmony_ci end 650e5c31af7Sopenharmony_ci 651e5c31af7Sopenharmony_ci case vec2 652e5c31af7Sopenharmony_ci version 310 es 653e5c31af7Sopenharmony_ci desc "varying of type vec2" 654e5c31af7Sopenharmony_ci values 655e5c31af7Sopenharmony_ci { 656e5c31af7Sopenharmony_ci input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 657e5c31af7Sopenharmony_ci output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 658e5c31af7Sopenharmony_ci } 659e5c31af7Sopenharmony_ci vertex "" 660e5c31af7Sopenharmony_ci #version 310 es 661e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 662e5c31af7Sopenharmony_ci layout(location = 0) out vec2 var; 663e5c31af7Sopenharmony_ci void main() 664e5c31af7Sopenharmony_ci { 665e5c31af7Sopenharmony_ci var = in0; 666e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 667e5c31af7Sopenharmony_ci } 668e5c31af7Sopenharmony_ci "" 669e5c31af7Sopenharmony_ci fragment "" 670e5c31af7Sopenharmony_ci #version 310 es 671e5c31af7Sopenharmony_ci precision highp float; 672e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 673e5c31af7Sopenharmony_ci layout(location = 0) in vec2 var; 674e5c31af7Sopenharmony_ci void main() 675e5c31af7Sopenharmony_ci { 676e5c31af7Sopenharmony_ci out0 = var; 677e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 678e5c31af7Sopenharmony_ci } 679e5c31af7Sopenharmony_ci "" 680e5c31af7Sopenharmony_ci end 681e5c31af7Sopenharmony_ci 682e5c31af7Sopenharmony_ci case vec3 683e5c31af7Sopenharmony_ci version 310 es 684e5c31af7Sopenharmony_ci desc "varying of type vec3" 685e5c31af7Sopenharmony_ci values 686e5c31af7Sopenharmony_ci { 687e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 688e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 689e5c31af7Sopenharmony_ci } 690e5c31af7Sopenharmony_ci vertex "" 691e5c31af7Sopenharmony_ci #version 310 es 692e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 693e5c31af7Sopenharmony_ci layout(location = 0) out vec3 var; 694e5c31af7Sopenharmony_ci void main() 695e5c31af7Sopenharmony_ci { 696e5c31af7Sopenharmony_ci var = in0; 697e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 698e5c31af7Sopenharmony_ci } 699e5c31af7Sopenharmony_ci "" 700e5c31af7Sopenharmony_ci fragment "" 701e5c31af7Sopenharmony_ci #version 310 es 702e5c31af7Sopenharmony_ci precision highp float; 703e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 704e5c31af7Sopenharmony_ci layout(location = 0) in vec3 var; 705e5c31af7Sopenharmony_ci void main() 706e5c31af7Sopenharmony_ci { 707e5c31af7Sopenharmony_ci out0 = var; 708e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 709e5c31af7Sopenharmony_ci } 710e5c31af7Sopenharmony_ci "" 711e5c31af7Sopenharmony_ci end 712e5c31af7Sopenharmony_ci 713e5c31af7Sopenharmony_ci case vec4 714e5c31af7Sopenharmony_ci version 310 es 715e5c31af7Sopenharmony_ci desc "varying of type vec4" 716e5c31af7Sopenharmony_ci values 717e5c31af7Sopenharmony_ci { 718e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 719e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 720e5c31af7Sopenharmony_ci } 721e5c31af7Sopenharmony_ci vertex "" 722e5c31af7Sopenharmony_ci #version 310 es 723e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 724e5c31af7Sopenharmony_ci layout(location = 0) out vec4 var; 725e5c31af7Sopenharmony_ci void main() 726e5c31af7Sopenharmony_ci { 727e5c31af7Sopenharmony_ci var = in0; 728e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 729e5c31af7Sopenharmony_ci } 730e5c31af7Sopenharmony_ci "" 731e5c31af7Sopenharmony_ci fragment "" 732e5c31af7Sopenharmony_ci #version 310 es 733e5c31af7Sopenharmony_ci precision highp float; 734e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 735e5c31af7Sopenharmony_ci layout(location = 0) in vec4 var; 736e5c31af7Sopenharmony_ci void main() 737e5c31af7Sopenharmony_ci { 738e5c31af7Sopenharmony_ci out0 = var; 739e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 740e5c31af7Sopenharmony_ci } 741e5c31af7Sopenharmony_ci "" 742e5c31af7Sopenharmony_ci end 743e5c31af7Sopenharmony_ci 744e5c31af7Sopenharmony_ci case mat2 745e5c31af7Sopenharmony_ci version 310 es 746e5c31af7Sopenharmony_ci desc "varying of type mat2" 747e5c31af7Sopenharmony_ci values 748e5c31af7Sopenharmony_ci { 749e5c31af7Sopenharmony_ci input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 750e5c31af7Sopenharmony_ci output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 751e5c31af7Sopenharmony_ci } 752e5c31af7Sopenharmony_ci vertex "" 753e5c31af7Sopenharmony_ci #version 310 es 754e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 755e5c31af7Sopenharmony_ci layout(location = 0) out mat2 var; 756e5c31af7Sopenharmony_ci void main() 757e5c31af7Sopenharmony_ci { 758e5c31af7Sopenharmony_ci var = in0; 759e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 760e5c31af7Sopenharmony_ci } 761e5c31af7Sopenharmony_ci "" 762e5c31af7Sopenharmony_ci fragment "" 763e5c31af7Sopenharmony_ci #version 310 es 764e5c31af7Sopenharmony_ci precision highp float; 765e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 766e5c31af7Sopenharmony_ci layout(location = 0) in mat2 var; 767e5c31af7Sopenharmony_ci void main() 768e5c31af7Sopenharmony_ci { 769e5c31af7Sopenharmony_ci out0 = var; 770e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 771e5c31af7Sopenharmony_ci } 772e5c31af7Sopenharmony_ci "" 773e5c31af7Sopenharmony_ci end 774e5c31af7Sopenharmony_ci 775e5c31af7Sopenharmony_ci case mat2x3 776e5c31af7Sopenharmony_ci version 310 es 777e5c31af7Sopenharmony_ci desc "varying of type mat2x3" 778e5c31af7Sopenharmony_ci values 779e5c31af7Sopenharmony_ci { 780e5c31af7Sopenharmony_ci input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 781e5c31af7Sopenharmony_ci output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 782e5c31af7Sopenharmony_ci } 783e5c31af7Sopenharmony_ci vertex "" 784e5c31af7Sopenharmony_ci #version 310 es 785e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 786e5c31af7Sopenharmony_ci layout(location = 0) out mat2x3 var; 787e5c31af7Sopenharmony_ci void main() 788e5c31af7Sopenharmony_ci { 789e5c31af7Sopenharmony_ci var = in0; 790e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 791e5c31af7Sopenharmony_ci } 792e5c31af7Sopenharmony_ci "" 793e5c31af7Sopenharmony_ci fragment "" 794e5c31af7Sopenharmony_ci #version 310 es 795e5c31af7Sopenharmony_ci precision highp float; 796e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 797e5c31af7Sopenharmony_ci layout(location = 0) in mat2x3 var; 798e5c31af7Sopenharmony_ci void main() 799e5c31af7Sopenharmony_ci { 800e5c31af7Sopenharmony_ci out0 = var; 801e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 802e5c31af7Sopenharmony_ci } 803e5c31af7Sopenharmony_ci "" 804e5c31af7Sopenharmony_ci end 805e5c31af7Sopenharmony_ci 806e5c31af7Sopenharmony_ci case mat2x4 807e5c31af7Sopenharmony_ci version 310 es 808e5c31af7Sopenharmony_ci desc "varying of type mat2x4" 809e5c31af7Sopenharmony_ci values 810e5c31af7Sopenharmony_ci { 811e5c31af7Sopenharmony_ci input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 812e5c31af7Sopenharmony_ci output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 813e5c31af7Sopenharmony_ci } 814e5c31af7Sopenharmony_ci vertex "" 815e5c31af7Sopenharmony_ci #version 310 es 816e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 817e5c31af7Sopenharmony_ci layout(location = 0) out mat2x4 var; 818e5c31af7Sopenharmony_ci void main() 819e5c31af7Sopenharmony_ci { 820e5c31af7Sopenharmony_ci var = in0; 821e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 822e5c31af7Sopenharmony_ci } 823e5c31af7Sopenharmony_ci "" 824e5c31af7Sopenharmony_ci fragment "" 825e5c31af7Sopenharmony_ci #version 310 es 826e5c31af7Sopenharmony_ci precision highp float; 827e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 828e5c31af7Sopenharmony_ci layout(location = 0) in mat2x4 var; 829e5c31af7Sopenharmony_ci void main() 830e5c31af7Sopenharmony_ci { 831e5c31af7Sopenharmony_ci out0 = var; 832e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 833e5c31af7Sopenharmony_ci } 834e5c31af7Sopenharmony_ci "" 835e5c31af7Sopenharmony_ci end 836e5c31af7Sopenharmony_ci 837e5c31af7Sopenharmony_ci case mat3x2 838e5c31af7Sopenharmony_ci version 310 es 839e5c31af7Sopenharmony_ci desc "varying of type mat3x2" 840e5c31af7Sopenharmony_ci values 841e5c31af7Sopenharmony_ci { 842e5c31af7Sopenharmony_ci input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 843e5c31af7Sopenharmony_ci output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 844e5c31af7Sopenharmony_ci } 845e5c31af7Sopenharmony_ci vertex "" 846e5c31af7Sopenharmony_ci #version 310 es 847e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 848e5c31af7Sopenharmony_ci layout(location = 0) out mat3x2 var; 849e5c31af7Sopenharmony_ci void main() 850e5c31af7Sopenharmony_ci { 851e5c31af7Sopenharmony_ci var = in0; 852e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 853e5c31af7Sopenharmony_ci } 854e5c31af7Sopenharmony_ci "" 855e5c31af7Sopenharmony_ci fragment "" 856e5c31af7Sopenharmony_ci #version 310 es 857e5c31af7Sopenharmony_ci precision highp float; 858e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 859e5c31af7Sopenharmony_ci layout(location = 0) in mat3x2 var; 860e5c31af7Sopenharmony_ci void main() 861e5c31af7Sopenharmony_ci { 862e5c31af7Sopenharmony_ci out0 = var; 863e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 864e5c31af7Sopenharmony_ci } 865e5c31af7Sopenharmony_ci "" 866e5c31af7Sopenharmony_ci end 867e5c31af7Sopenharmony_ci 868e5c31af7Sopenharmony_ci case mat3 869e5c31af7Sopenharmony_ci version 310 es 870e5c31af7Sopenharmony_ci desc "varying of type mat3" 871e5c31af7Sopenharmony_ci values 872e5c31af7Sopenharmony_ci { 873e5c31af7Sopenharmony_ci input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 874e5c31af7Sopenharmony_ci output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 875e5c31af7Sopenharmony_ci } 876e5c31af7Sopenharmony_ci vertex "" 877e5c31af7Sopenharmony_ci #version 310 es 878e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 879e5c31af7Sopenharmony_ci layout(location = 0) out mat3 var; 880e5c31af7Sopenharmony_ci void main() 881e5c31af7Sopenharmony_ci { 882e5c31af7Sopenharmony_ci var = in0; 883e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 884e5c31af7Sopenharmony_ci } 885e5c31af7Sopenharmony_ci "" 886e5c31af7Sopenharmony_ci fragment "" 887e5c31af7Sopenharmony_ci #version 310 es 888e5c31af7Sopenharmony_ci precision highp float; 889e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 890e5c31af7Sopenharmony_ci layout(location = 0) in mat3 var; 891e5c31af7Sopenharmony_ci void main() 892e5c31af7Sopenharmony_ci { 893e5c31af7Sopenharmony_ci out0 = var; 894e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 895e5c31af7Sopenharmony_ci } 896e5c31af7Sopenharmony_ci "" 897e5c31af7Sopenharmony_ci end 898e5c31af7Sopenharmony_ci 899e5c31af7Sopenharmony_ci case mat3x4 900e5c31af7Sopenharmony_ci version 310 es 901e5c31af7Sopenharmony_ci desc "varying of type mat3x4" 902e5c31af7Sopenharmony_ci values 903e5c31af7Sopenharmony_ci { 904e5c31af7Sopenharmony_ci input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 905e5c31af7Sopenharmony_ci output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 906e5c31af7Sopenharmony_ci } 907e5c31af7Sopenharmony_ci vertex "" 908e5c31af7Sopenharmony_ci #version 310 es 909e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 910e5c31af7Sopenharmony_ci layout(location = 0) out mat3x4 var; 911e5c31af7Sopenharmony_ci void main() 912e5c31af7Sopenharmony_ci { 913e5c31af7Sopenharmony_ci var = in0; 914e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 915e5c31af7Sopenharmony_ci } 916e5c31af7Sopenharmony_ci "" 917e5c31af7Sopenharmony_ci fragment "" 918e5c31af7Sopenharmony_ci #version 310 es 919e5c31af7Sopenharmony_ci precision highp float; 920e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 921e5c31af7Sopenharmony_ci layout(location = 0) in mat3x4 var; 922e5c31af7Sopenharmony_ci void main() 923e5c31af7Sopenharmony_ci { 924e5c31af7Sopenharmony_ci out0 = var; 925e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 926e5c31af7Sopenharmony_ci } 927e5c31af7Sopenharmony_ci "" 928e5c31af7Sopenharmony_ci end 929e5c31af7Sopenharmony_ci 930e5c31af7Sopenharmony_ci case mat4x2 931e5c31af7Sopenharmony_ci version 310 es 932e5c31af7Sopenharmony_ci desc "varying of type mat4x2" 933e5c31af7Sopenharmony_ci values 934e5c31af7Sopenharmony_ci { 935e5c31af7Sopenharmony_ci input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 936e5c31af7Sopenharmony_ci output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 937e5c31af7Sopenharmony_ci } 938e5c31af7Sopenharmony_ci vertex "" 939e5c31af7Sopenharmony_ci #version 310 es 940e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 941e5c31af7Sopenharmony_ci layout(location = 0) out mat4x2 var; 942e5c31af7Sopenharmony_ci void main() 943e5c31af7Sopenharmony_ci { 944e5c31af7Sopenharmony_ci var = in0; 945e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 946e5c31af7Sopenharmony_ci } 947e5c31af7Sopenharmony_ci "" 948e5c31af7Sopenharmony_ci fragment "" 949e5c31af7Sopenharmony_ci #version 310 es 950e5c31af7Sopenharmony_ci precision highp float; 951e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 952e5c31af7Sopenharmony_ci layout(location = 0) in mat4x2 var; 953e5c31af7Sopenharmony_ci void main() 954e5c31af7Sopenharmony_ci { 955e5c31af7Sopenharmony_ci out0 = var; 956e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 957e5c31af7Sopenharmony_ci } 958e5c31af7Sopenharmony_ci "" 959e5c31af7Sopenharmony_ci end 960e5c31af7Sopenharmony_ci 961e5c31af7Sopenharmony_ci case mat4x3 962e5c31af7Sopenharmony_ci version 310 es 963e5c31af7Sopenharmony_ci desc "varying of type mat4x3" 964e5c31af7Sopenharmony_ci values 965e5c31af7Sopenharmony_ci { 966e5c31af7Sopenharmony_ci input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 967e5c31af7Sopenharmony_ci output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 968e5c31af7Sopenharmony_ci } 969e5c31af7Sopenharmony_ci vertex "" 970e5c31af7Sopenharmony_ci #version 310 es 971e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 972e5c31af7Sopenharmony_ci layout(location = 0) out mat4x3 var; 973e5c31af7Sopenharmony_ci void main() 974e5c31af7Sopenharmony_ci { 975e5c31af7Sopenharmony_ci var = in0; 976e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 977e5c31af7Sopenharmony_ci } 978e5c31af7Sopenharmony_ci "" 979e5c31af7Sopenharmony_ci fragment "" 980e5c31af7Sopenharmony_ci #version 310 es 981e5c31af7Sopenharmony_ci precision highp float; 982e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 983e5c31af7Sopenharmony_ci layout(location = 0) in mat4x3 var; 984e5c31af7Sopenharmony_ci void main() 985e5c31af7Sopenharmony_ci { 986e5c31af7Sopenharmony_ci out0 = var; 987e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 988e5c31af7Sopenharmony_ci } 989e5c31af7Sopenharmony_ci "" 990e5c31af7Sopenharmony_ci end 991e5c31af7Sopenharmony_ci 992e5c31af7Sopenharmony_ci case mat4 993e5c31af7Sopenharmony_ci version 310 es 994e5c31af7Sopenharmony_ci desc "varying of type mat4" 995e5c31af7Sopenharmony_ci values 996e5c31af7Sopenharmony_ci { 997e5c31af7Sopenharmony_ci input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 998e5c31af7Sopenharmony_ci output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 999e5c31af7Sopenharmony_ci } 1000e5c31af7Sopenharmony_ci vertex "" 1001e5c31af7Sopenharmony_ci #version 310 es 1002e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1003e5c31af7Sopenharmony_ci layout(location = 0) out mat4 var; 1004e5c31af7Sopenharmony_ci void main() 1005e5c31af7Sopenharmony_ci { 1006e5c31af7Sopenharmony_ci var = in0; 1007e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1008e5c31af7Sopenharmony_ci } 1009e5c31af7Sopenharmony_ci "" 1010e5c31af7Sopenharmony_ci fragment "" 1011e5c31af7Sopenharmony_ci #version 310 es 1012e5c31af7Sopenharmony_ci precision highp float; 1013e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1014e5c31af7Sopenharmony_ci layout(location = 0) in mat4 var; 1015e5c31af7Sopenharmony_ci void main() 1016e5c31af7Sopenharmony_ci { 1017e5c31af7Sopenharmony_ci out0 = var; 1018e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1019e5c31af7Sopenharmony_ci } 1020e5c31af7Sopenharmony_ci "" 1021e5c31af7Sopenharmony_ci end 1022e5c31af7Sopenharmony_ci 1023e5c31af7Sopenharmony_ci case int 1024e5c31af7Sopenharmony_ci version 310 es 1025e5c31af7Sopenharmony_ci desc "varying of type int" 1026e5c31af7Sopenharmony_ci values 1027e5c31af7Sopenharmony_ci { 1028e5c31af7Sopenharmony_ci input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1029e5c31af7Sopenharmony_ci output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1030e5c31af7Sopenharmony_ci } 1031e5c31af7Sopenharmony_ci vertex "" 1032e5c31af7Sopenharmony_ci #version 310 es 1033e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1034e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump int var; 1035e5c31af7Sopenharmony_ci void main() 1036e5c31af7Sopenharmony_ci { 1037e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1038e5c31af7Sopenharmony_ci var = in0; 1039e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1040e5c31af7Sopenharmony_ci } 1041e5c31af7Sopenharmony_ci "" 1042e5c31af7Sopenharmony_ci fragment "" 1043e5c31af7Sopenharmony_ci #version 310 es 1044e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1045e5c31af7Sopenharmony_ci layout(location = 0) flat in int var; 1046e5c31af7Sopenharmony_ci void main() 1047e5c31af7Sopenharmony_ci { 1048e5c31af7Sopenharmony_ci out0 = var; 1049e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1050e5c31af7Sopenharmony_ci } 1051e5c31af7Sopenharmony_ci "" 1052e5c31af7Sopenharmony_ci end 1053e5c31af7Sopenharmony_ci 1054e5c31af7Sopenharmony_ci case ivec2 1055e5c31af7Sopenharmony_ci version 310 es 1056e5c31af7Sopenharmony_ci desc "varying of type ivec2" 1057e5c31af7Sopenharmony_ci values 1058e5c31af7Sopenharmony_ci { 1059e5c31af7Sopenharmony_ci input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1060e5c31af7Sopenharmony_ci output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1061e5c31af7Sopenharmony_ci } 1062e5c31af7Sopenharmony_ci vertex "" 1063e5c31af7Sopenharmony_ci #version 310 es 1064e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1065e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump ivec2 var; 1066e5c31af7Sopenharmony_ci void main() 1067e5c31af7Sopenharmony_ci { 1068e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1069e5c31af7Sopenharmony_ci var = in0; 1070e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1071e5c31af7Sopenharmony_ci } 1072e5c31af7Sopenharmony_ci "" 1073e5c31af7Sopenharmony_ci fragment "" 1074e5c31af7Sopenharmony_ci #version 310 es 1075e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1076e5c31af7Sopenharmony_ci layout(location = 0) flat in ivec2 var; 1077e5c31af7Sopenharmony_ci void main() 1078e5c31af7Sopenharmony_ci { 1079e5c31af7Sopenharmony_ci out0 = var; 1080e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1081e5c31af7Sopenharmony_ci } 1082e5c31af7Sopenharmony_ci "" 1083e5c31af7Sopenharmony_ci end 1084e5c31af7Sopenharmony_ci 1085e5c31af7Sopenharmony_ci case ivec3 1086e5c31af7Sopenharmony_ci version 310 es 1087e5c31af7Sopenharmony_ci desc "varying of type ivec3" 1088e5c31af7Sopenharmony_ci values 1089e5c31af7Sopenharmony_ci { 1090e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1091e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1092e5c31af7Sopenharmony_ci } 1093e5c31af7Sopenharmony_ci vertex "" 1094e5c31af7Sopenharmony_ci #version 310 es 1095e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1096e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump ivec3 var; 1097e5c31af7Sopenharmony_ci void main() 1098e5c31af7Sopenharmony_ci { 1099e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1100e5c31af7Sopenharmony_ci var = in0; 1101e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1102e5c31af7Sopenharmony_ci } 1103e5c31af7Sopenharmony_ci "" 1104e5c31af7Sopenharmony_ci fragment "" 1105e5c31af7Sopenharmony_ci #version 310 es 1106e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1107e5c31af7Sopenharmony_ci layout(location = 0) flat in ivec3 var; 1108e5c31af7Sopenharmony_ci void main() 1109e5c31af7Sopenharmony_ci { 1110e5c31af7Sopenharmony_ci out0 = var; 1111e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1112e5c31af7Sopenharmony_ci } 1113e5c31af7Sopenharmony_ci "" 1114e5c31af7Sopenharmony_ci end 1115e5c31af7Sopenharmony_ci 1116e5c31af7Sopenharmony_ci case ivec4 1117e5c31af7Sopenharmony_ci version 310 es 1118e5c31af7Sopenharmony_ci desc "varying of type ivec4" 1119e5c31af7Sopenharmony_ci values 1120e5c31af7Sopenharmony_ci { 1121e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1122e5c31af7Sopenharmony_ci output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1123e5c31af7Sopenharmony_ci } 1124e5c31af7Sopenharmony_ci vertex "" 1125e5c31af7Sopenharmony_ci #version 310 es 1126e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1127e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump ivec4 var; 1128e5c31af7Sopenharmony_ci void main() 1129e5c31af7Sopenharmony_ci { 1130e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1131e5c31af7Sopenharmony_ci var = in0; 1132e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1133e5c31af7Sopenharmony_ci } 1134e5c31af7Sopenharmony_ci "" 1135e5c31af7Sopenharmony_ci fragment "" 1136e5c31af7Sopenharmony_ci #version 310 es 1137e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1138e5c31af7Sopenharmony_ci layout(location = 0) flat in ivec4 var; 1139e5c31af7Sopenharmony_ci void main() 1140e5c31af7Sopenharmony_ci { 1141e5c31af7Sopenharmony_ci out0 = var; 1142e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1143e5c31af7Sopenharmony_ci } 1144e5c31af7Sopenharmony_ci "" 1145e5c31af7Sopenharmony_ci end 1146e5c31af7Sopenharmony_ci 1147e5c31af7Sopenharmony_ci case uint 1148e5c31af7Sopenharmony_ci version 310 es 1149e5c31af7Sopenharmony_ci desc "varying of type int" 1150e5c31af7Sopenharmony_ci values 1151e5c31af7Sopenharmony_ci { 1152e5c31af7Sopenharmony_ci input uint in0 = [ 1 | 2 | 3 | 16 ]; 1153e5c31af7Sopenharmony_ci output uint out0 = [ 1 | 2 | 3 | 16 ]; 1154e5c31af7Sopenharmony_ci } 1155e5c31af7Sopenharmony_ci vertex "" 1156e5c31af7Sopenharmony_ci #version 310 es 1157e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1158e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump uint var; 1159e5c31af7Sopenharmony_ci void main() 1160e5c31af7Sopenharmony_ci { 1161e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1162e5c31af7Sopenharmony_ci var = in0; 1163e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1164e5c31af7Sopenharmony_ci } 1165e5c31af7Sopenharmony_ci "" 1166e5c31af7Sopenharmony_ci fragment "" 1167e5c31af7Sopenharmony_ci #version 310 es 1168e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1169e5c31af7Sopenharmony_ci layout(location = 0) flat in uint var; 1170e5c31af7Sopenharmony_ci void main() 1171e5c31af7Sopenharmony_ci { 1172e5c31af7Sopenharmony_ci out0 = var; 1173e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1174e5c31af7Sopenharmony_ci } 1175e5c31af7Sopenharmony_ci "" 1176e5c31af7Sopenharmony_ci end 1177e5c31af7Sopenharmony_ci 1178e5c31af7Sopenharmony_ci case uvec2 1179e5c31af7Sopenharmony_ci version 310 es 1180e5c31af7Sopenharmony_ci desc "varying of type uvec2" 1181e5c31af7Sopenharmony_ci values 1182e5c31af7Sopenharmony_ci { 1183e5c31af7Sopenharmony_ci input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1184e5c31af7Sopenharmony_ci output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1185e5c31af7Sopenharmony_ci } 1186e5c31af7Sopenharmony_ci vertex "" 1187e5c31af7Sopenharmony_ci #version 310 es 1188e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1189e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump uvec2 var; 1190e5c31af7Sopenharmony_ci void main() 1191e5c31af7Sopenharmony_ci { 1192e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1193e5c31af7Sopenharmony_ci var = in0; 1194e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1195e5c31af7Sopenharmony_ci } 1196e5c31af7Sopenharmony_ci "" 1197e5c31af7Sopenharmony_ci fragment "" 1198e5c31af7Sopenharmony_ci #version 310 es 1199e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1200e5c31af7Sopenharmony_ci layout(location = 0) flat in uvec2 var; 1201e5c31af7Sopenharmony_ci void main() 1202e5c31af7Sopenharmony_ci { 1203e5c31af7Sopenharmony_ci out0 = var; 1204e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1205e5c31af7Sopenharmony_ci } 1206e5c31af7Sopenharmony_ci "" 1207e5c31af7Sopenharmony_ci end 1208e5c31af7Sopenharmony_ci 1209e5c31af7Sopenharmony_ci case uvec3 1210e5c31af7Sopenharmony_ci version 310 es 1211e5c31af7Sopenharmony_ci desc "varying of type uvec3" 1212e5c31af7Sopenharmony_ci values 1213e5c31af7Sopenharmony_ci { 1214e5c31af7Sopenharmony_ci input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 1215e5c31af7Sopenharmony_ci output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 1216e5c31af7Sopenharmony_ci } 1217e5c31af7Sopenharmony_ci vertex "" 1218e5c31af7Sopenharmony_ci #version 310 es 1219e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1220e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump uvec3 var; 1221e5c31af7Sopenharmony_ci void main() 1222e5c31af7Sopenharmony_ci { 1223e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1224e5c31af7Sopenharmony_ci var = in0; 1225e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1226e5c31af7Sopenharmony_ci } 1227e5c31af7Sopenharmony_ci "" 1228e5c31af7Sopenharmony_ci fragment "" 1229e5c31af7Sopenharmony_ci #version 310 es 1230e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1231e5c31af7Sopenharmony_ci layout(location = 0) flat in uvec3 var; 1232e5c31af7Sopenharmony_ci void main() 1233e5c31af7Sopenharmony_ci { 1234e5c31af7Sopenharmony_ci out0 = var; 1235e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1236e5c31af7Sopenharmony_ci } 1237e5c31af7Sopenharmony_ci "" 1238e5c31af7Sopenharmony_ci end 1239e5c31af7Sopenharmony_ci 1240e5c31af7Sopenharmony_ci case uvec4 1241e5c31af7Sopenharmony_ci version 310 es 1242e5c31af7Sopenharmony_ci desc "varying of type uvec4" 1243e5c31af7Sopenharmony_ci values 1244e5c31af7Sopenharmony_ci { 1245e5c31af7Sopenharmony_ci input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 1246e5c31af7Sopenharmony_ci output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 1247e5c31af7Sopenharmony_ci } 1248e5c31af7Sopenharmony_ci vertex "" 1249e5c31af7Sopenharmony_ci #version 310 es 1250e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1251e5c31af7Sopenharmony_ci layout(location = 0) flat out mediump uvec4 var; 1252e5c31af7Sopenharmony_ci void main() 1253e5c31af7Sopenharmony_ci { 1254e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1255e5c31af7Sopenharmony_ci var = in0; 1256e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1257e5c31af7Sopenharmony_ci } 1258e5c31af7Sopenharmony_ci "" 1259e5c31af7Sopenharmony_ci fragment "" 1260e5c31af7Sopenharmony_ci #version 310 es 1261e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1262e5c31af7Sopenharmony_ci layout(location = 0) flat in uvec4 var; 1263e5c31af7Sopenharmony_ci void main() 1264e5c31af7Sopenharmony_ci { 1265e5c31af7Sopenharmony_ci out0 = var; 1266e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1267e5c31af7Sopenharmony_ci } 1268e5c31af7Sopenharmony_ci "" 1269e5c31af7Sopenharmony_ci end 1270e5c31af7Sopenharmony_ci end 1271e5c31af7Sopenharmony_ci 1272e5c31af7Sopenharmony_ci group struct "Structure varyings" 1273e5c31af7Sopenharmony_ci case float 1274e5c31af7Sopenharmony_ci version 310 es 1275e5c31af7Sopenharmony_ci desc "varying of type float inside struct" 1276e5c31af7Sopenharmony_ci values 1277e5c31af7Sopenharmony_ci { 1278e5c31af7Sopenharmony_ci input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 1279e5c31af7Sopenharmony_ci output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 1280e5c31af7Sopenharmony_ci } 1281e5c31af7Sopenharmony_ci vertex "" 1282e5c31af7Sopenharmony_ci #version 310 es 1283e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1284e5c31af7Sopenharmony_ci struct S { mediump float a; }; 1285e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1286e5c31af7Sopenharmony_ci void main() 1287e5c31af7Sopenharmony_ci { 1288e5c31af7Sopenharmony_ci var.a = in0; 1289e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1290e5c31af7Sopenharmony_ci } 1291e5c31af7Sopenharmony_ci "" 1292e5c31af7Sopenharmony_ci fragment "" 1293e5c31af7Sopenharmony_ci #version 310 es 1294e5c31af7Sopenharmony_ci precision highp float; 1295e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1296e5c31af7Sopenharmony_ci struct S { mediump float a; }; 1297e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1298e5c31af7Sopenharmony_ci void main() 1299e5c31af7Sopenharmony_ci { 1300e5c31af7Sopenharmony_ci out0 = var.a; 1301e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1302e5c31af7Sopenharmony_ci } 1303e5c31af7Sopenharmony_ci "" 1304e5c31af7Sopenharmony_ci end 1305e5c31af7Sopenharmony_ci 1306e5c31af7Sopenharmony_ci case vec2 1307e5c31af7Sopenharmony_ci version 310 es 1308e5c31af7Sopenharmony_ci desc "varying of type vec2 inside struct" 1309e5c31af7Sopenharmony_ci values 1310e5c31af7Sopenharmony_ci { 1311e5c31af7Sopenharmony_ci input vec2 in0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 1312e5c31af7Sopenharmony_ci output vec2 out0 = [ vec2(-1.25, 1.25) | vec2(-25.65, -7.25) | vec2(0.0, 1.0) | vec2(2.25, 2.25) | vec2(3.4, 9.5) | vec2(16.0, 32.0) ]; 1313e5c31af7Sopenharmony_ci } 1314e5c31af7Sopenharmony_ci vertex "" 1315e5c31af7Sopenharmony_ci #version 310 es 1316e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1317e5c31af7Sopenharmony_ci struct S { mediump vec2 a; }; 1318e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1319e5c31af7Sopenharmony_ci void main() 1320e5c31af7Sopenharmony_ci { 1321e5c31af7Sopenharmony_ci var.a = in0; 1322e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1323e5c31af7Sopenharmony_ci } 1324e5c31af7Sopenharmony_ci "" 1325e5c31af7Sopenharmony_ci fragment "" 1326e5c31af7Sopenharmony_ci #version 310 es 1327e5c31af7Sopenharmony_ci precision highp float; 1328e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1329e5c31af7Sopenharmony_ci struct S { mediump vec2 a; }; 1330e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1331e5c31af7Sopenharmony_ci void main() 1332e5c31af7Sopenharmony_ci { 1333e5c31af7Sopenharmony_ci out0 = var.a; 1334e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1335e5c31af7Sopenharmony_ci } 1336e5c31af7Sopenharmony_ci "" 1337e5c31af7Sopenharmony_ci end 1338e5c31af7Sopenharmony_ci 1339e5c31af7Sopenharmony_ci case vec3 1340e5c31af7Sopenharmony_ci version 310 es 1341e5c31af7Sopenharmony_ci desc "varying of type vec3 inside struct" 1342e5c31af7Sopenharmony_ci values 1343e5c31af7Sopenharmony_ci { 1344e5c31af7Sopenharmony_ci input vec3 in0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 1345e5c31af7Sopenharmony_ci output vec3 out0 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 1346e5c31af7Sopenharmony_ci } 1347e5c31af7Sopenharmony_ci vertex "" 1348e5c31af7Sopenharmony_ci #version 310 es 1349e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1350e5c31af7Sopenharmony_ci struct S { mediump vec3 a; }; 1351e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1352e5c31af7Sopenharmony_ci void main() 1353e5c31af7Sopenharmony_ci { 1354e5c31af7Sopenharmony_ci var.a = in0; 1355e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1356e5c31af7Sopenharmony_ci } 1357e5c31af7Sopenharmony_ci "" 1358e5c31af7Sopenharmony_ci fragment "" 1359e5c31af7Sopenharmony_ci #version 310 es 1360e5c31af7Sopenharmony_ci precision highp float; 1361e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1362e5c31af7Sopenharmony_ci struct S { mediump vec3 a; }; 1363e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1364e5c31af7Sopenharmony_ci void main() 1365e5c31af7Sopenharmony_ci { 1366e5c31af7Sopenharmony_ci out0 = var.a; 1367e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1368e5c31af7Sopenharmony_ci } 1369e5c31af7Sopenharmony_ci "" 1370e5c31af7Sopenharmony_ci end 1371e5c31af7Sopenharmony_ci 1372e5c31af7Sopenharmony_ci case vec4 1373e5c31af7Sopenharmony_ci version 310 es 1374e5c31af7Sopenharmony_ci desc "varying of type vec4 inside struct" 1375e5c31af7Sopenharmony_ci values 1376e5c31af7Sopenharmony_ci { 1377e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 1378e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 1379e5c31af7Sopenharmony_ci } 1380e5c31af7Sopenharmony_ci vertex "" 1381e5c31af7Sopenharmony_ci #version 310 es 1382e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1383e5c31af7Sopenharmony_ci struct S { mediump vec4 a; }; 1384e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1385e5c31af7Sopenharmony_ci void main() 1386e5c31af7Sopenharmony_ci { 1387e5c31af7Sopenharmony_ci var.a = in0; 1388e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1389e5c31af7Sopenharmony_ci } 1390e5c31af7Sopenharmony_ci "" 1391e5c31af7Sopenharmony_ci fragment "" 1392e5c31af7Sopenharmony_ci #version 310 es 1393e5c31af7Sopenharmony_ci precision highp float; 1394e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1395e5c31af7Sopenharmony_ci struct S { mediump vec4 a; }; 1396e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1397e5c31af7Sopenharmony_ci void main() 1398e5c31af7Sopenharmony_ci { 1399e5c31af7Sopenharmony_ci out0 = var.a; 1400e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1401e5c31af7Sopenharmony_ci } 1402e5c31af7Sopenharmony_ci "" 1403e5c31af7Sopenharmony_ci end 1404e5c31af7Sopenharmony_ci 1405e5c31af7Sopenharmony_ci case mat2 1406e5c31af7Sopenharmony_ci version 310 es 1407e5c31af7Sopenharmony_ci desc "varying of type mat2 inside struct" 1408e5c31af7Sopenharmony_ci values 1409e5c31af7Sopenharmony_ci { 1410e5c31af7Sopenharmony_ci input mat2 in0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 1411e5c31af7Sopenharmony_ci output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 1.0) | mat2(-1.25, 1.25, -9.5, -12.2) | mat2(-25.65, -7.25, 14.21, -77.7) | mat2(0.0, 1.0, -1.0, 2.0) | mat2(2.25, 2.25, 22.5, 225.0) | mat2(3.4, 9.5, 19.5, 29.5) | mat2(16.0, 32.0, -64.0, -128.0) ]; 1412e5c31af7Sopenharmony_ci } 1413e5c31af7Sopenharmony_ci vertex "" 1414e5c31af7Sopenharmony_ci #version 310 es 1415e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1416e5c31af7Sopenharmony_ci struct S { mediump mat2 a; }; 1417e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1418e5c31af7Sopenharmony_ci void main() 1419e5c31af7Sopenharmony_ci { 1420e5c31af7Sopenharmony_ci var.a = in0; 1421e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1422e5c31af7Sopenharmony_ci } 1423e5c31af7Sopenharmony_ci "" 1424e5c31af7Sopenharmony_ci fragment "" 1425e5c31af7Sopenharmony_ci #version 310 es 1426e5c31af7Sopenharmony_ci precision highp float; 1427e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1428e5c31af7Sopenharmony_ci struct S { mediump mat2 a; }; 1429e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1430e5c31af7Sopenharmony_ci void main() 1431e5c31af7Sopenharmony_ci { 1432e5c31af7Sopenharmony_ci out0 = var.a; 1433e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1434e5c31af7Sopenharmony_ci } 1435e5c31af7Sopenharmony_ci "" 1436e5c31af7Sopenharmony_ci end 1437e5c31af7Sopenharmony_ci 1438e5c31af7Sopenharmony_ci case mat2x3 1439e5c31af7Sopenharmony_ci version 310 es 1440e5c31af7Sopenharmony_ci desc "varying of type mat2x3 inside struct" 1441e5c31af7Sopenharmony_ci values 1442e5c31af7Sopenharmony_ci { 1443e5c31af7Sopenharmony_ci input mat2x3 in0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1444e5c31af7Sopenharmony_ci output mat2x3 out0 = [ mat2x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1445e5c31af7Sopenharmony_ci } 1446e5c31af7Sopenharmony_ci vertex "" 1447e5c31af7Sopenharmony_ci #version 310 es 1448e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1449e5c31af7Sopenharmony_ci struct S { mediump mat2x3 a; }; 1450e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1451e5c31af7Sopenharmony_ci void main() 1452e5c31af7Sopenharmony_ci { 1453e5c31af7Sopenharmony_ci var.a = in0; 1454e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1455e5c31af7Sopenharmony_ci } 1456e5c31af7Sopenharmony_ci "" 1457e5c31af7Sopenharmony_ci fragment "" 1458e5c31af7Sopenharmony_ci #version 310 es 1459e5c31af7Sopenharmony_ci precision highp float; 1460e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1461e5c31af7Sopenharmony_ci struct S { mediump mat2x3 a; }; 1462e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1463e5c31af7Sopenharmony_ci void main() 1464e5c31af7Sopenharmony_ci { 1465e5c31af7Sopenharmony_ci out0 = var.a; 1466e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1467e5c31af7Sopenharmony_ci } 1468e5c31af7Sopenharmony_ci "" 1469e5c31af7Sopenharmony_ci end 1470e5c31af7Sopenharmony_ci 1471e5c31af7Sopenharmony_ci case mat2x4 1472e5c31af7Sopenharmony_ci version 310 es 1473e5c31af7Sopenharmony_ci desc "varying of type mat2x4 inside struct" 1474e5c31af7Sopenharmony_ci values 1475e5c31af7Sopenharmony_ci { 1476e5c31af7Sopenharmony_ci input mat2x4 in0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1477e5c31af7Sopenharmony_ci output mat2x4 out0 = [ mat2x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1478e5c31af7Sopenharmony_ci } 1479e5c31af7Sopenharmony_ci vertex "" 1480e5c31af7Sopenharmony_ci #version 310 es 1481e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1482e5c31af7Sopenharmony_ci struct S { mediump mat2x4 a; }; 1483e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1484e5c31af7Sopenharmony_ci void main() 1485e5c31af7Sopenharmony_ci { 1486e5c31af7Sopenharmony_ci var.a = in0; 1487e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1488e5c31af7Sopenharmony_ci } 1489e5c31af7Sopenharmony_ci "" 1490e5c31af7Sopenharmony_ci fragment "" 1491e5c31af7Sopenharmony_ci #version 310 es 1492e5c31af7Sopenharmony_ci precision highp float; 1493e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1494e5c31af7Sopenharmony_ci struct S { mediump mat2x4 a; }; 1495e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1496e5c31af7Sopenharmony_ci void main() 1497e5c31af7Sopenharmony_ci { 1498e5c31af7Sopenharmony_ci out0 = var.a; 1499e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1500e5c31af7Sopenharmony_ci } 1501e5c31af7Sopenharmony_ci "" 1502e5c31af7Sopenharmony_ci end 1503e5c31af7Sopenharmony_ci 1504e5c31af7Sopenharmony_ci case mat3x2 1505e5c31af7Sopenharmony_ci version 310 es 1506e5c31af7Sopenharmony_ci desc "varying of type mat3x2 inside struct" 1507e5c31af7Sopenharmony_ci values 1508e5c31af7Sopenharmony_ci { 1509e5c31af7Sopenharmony_ci input mat3x2 in0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1510e5c31af7Sopenharmony_ci output mat3x2 out0 = [ mat3x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25) ]; 1511e5c31af7Sopenharmony_ci } 1512e5c31af7Sopenharmony_ci vertex "" 1513e5c31af7Sopenharmony_ci #version 310 es 1514e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1515e5c31af7Sopenharmony_ci struct S { mediump mat3x2 a; }; 1516e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1517e5c31af7Sopenharmony_ci void main() 1518e5c31af7Sopenharmony_ci { 1519e5c31af7Sopenharmony_ci var.a = in0; 1520e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1521e5c31af7Sopenharmony_ci } 1522e5c31af7Sopenharmony_ci "" 1523e5c31af7Sopenharmony_ci fragment "" 1524e5c31af7Sopenharmony_ci #version 310 es 1525e5c31af7Sopenharmony_ci precision highp float; 1526e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1527e5c31af7Sopenharmony_ci struct S { mediump mat3x2 a; }; 1528e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1529e5c31af7Sopenharmony_ci void main() 1530e5c31af7Sopenharmony_ci { 1531e5c31af7Sopenharmony_ci out0 = var.a; 1532e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1533e5c31af7Sopenharmony_ci } 1534e5c31af7Sopenharmony_ci "" 1535e5c31af7Sopenharmony_ci end 1536e5c31af7Sopenharmony_ci 1537e5c31af7Sopenharmony_ci case mat3 1538e5c31af7Sopenharmony_ci version 310 es 1539e5c31af7Sopenharmony_ci desc "varying of type mat3 inside struct" 1540e5c31af7Sopenharmony_ci values 1541e5c31af7Sopenharmony_ci { 1542e5c31af7Sopenharmony_ci input mat3 in0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 1543e5c31af7Sopenharmony_ci output mat3 out0 = [ mat3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 9.9) | mat3(0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0, -9.9) | mat3(3.4, 9.5, 19.5, 29.5, 16.0, 32.0, -64.0, -128.0, 256.0) ]; 1544e5c31af7Sopenharmony_ci } 1545e5c31af7Sopenharmony_ci vertex "" 1546e5c31af7Sopenharmony_ci #version 310 es 1547e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1548e5c31af7Sopenharmony_ci struct S { mediump mat3 a; }; 1549e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1550e5c31af7Sopenharmony_ci void main() 1551e5c31af7Sopenharmony_ci { 1552e5c31af7Sopenharmony_ci var.a = in0; 1553e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1554e5c31af7Sopenharmony_ci } 1555e5c31af7Sopenharmony_ci "" 1556e5c31af7Sopenharmony_ci fragment "" 1557e5c31af7Sopenharmony_ci #version 310 es 1558e5c31af7Sopenharmony_ci precision highp float; 1559e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1560e5c31af7Sopenharmony_ci struct S { mediump mat3 a; }; 1561e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1562e5c31af7Sopenharmony_ci void main() 1563e5c31af7Sopenharmony_ci { 1564e5c31af7Sopenharmony_ci out0 = var.a; 1565e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1566e5c31af7Sopenharmony_ci } 1567e5c31af7Sopenharmony_ci "" 1568e5c31af7Sopenharmony_ci end 1569e5c31af7Sopenharmony_ci 1570e5c31af7Sopenharmony_ci case mat3x4 1571e5c31af7Sopenharmony_ci version 310 es 1572e5c31af7Sopenharmony_ci desc "varying of type mat3x4 inside struct" 1573e5c31af7Sopenharmony_ci values 1574e5c31af7Sopenharmony_ci { 1575e5c31af7Sopenharmony_ci input mat3x4 in0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1576e5c31af7Sopenharmony_ci output mat3x4 out0 = [ mat3x4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1577e5c31af7Sopenharmony_ci } 1578e5c31af7Sopenharmony_ci vertex "" 1579e5c31af7Sopenharmony_ci #version 310 es 1580e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1581e5c31af7Sopenharmony_ci struct S { mediump mat3x4 a; }; 1582e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1583e5c31af7Sopenharmony_ci void main() 1584e5c31af7Sopenharmony_ci { 1585e5c31af7Sopenharmony_ci var.a = in0; 1586e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1587e5c31af7Sopenharmony_ci } 1588e5c31af7Sopenharmony_ci "" 1589e5c31af7Sopenharmony_ci fragment "" 1590e5c31af7Sopenharmony_ci #version 310 es 1591e5c31af7Sopenharmony_ci precision highp float; 1592e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1593e5c31af7Sopenharmony_ci struct S { mediump mat3x4 a; }; 1594e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1595e5c31af7Sopenharmony_ci void main() 1596e5c31af7Sopenharmony_ci { 1597e5c31af7Sopenharmony_ci out0 = var.a; 1598e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1599e5c31af7Sopenharmony_ci } 1600e5c31af7Sopenharmony_ci "" 1601e5c31af7Sopenharmony_ci end 1602e5c31af7Sopenharmony_ci 1603e5c31af7Sopenharmony_ci case mat4x2 1604e5c31af7Sopenharmony_ci version 310 es 1605e5c31af7Sopenharmony_ci desc "varying of type mat4x2 inside struct" 1606e5c31af7Sopenharmony_ci values 1607e5c31af7Sopenharmony_ci { 1608e5c31af7Sopenharmony_ci input mat4x2 in0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1609e5c31af7Sopenharmony_ci output mat4x2 out0 = [ mat4x2(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7) ]; 1610e5c31af7Sopenharmony_ci } 1611e5c31af7Sopenharmony_ci vertex "" 1612e5c31af7Sopenharmony_ci #version 310 es 1613e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1614e5c31af7Sopenharmony_ci struct S { mediump mat4x2 a; }; 1615e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1616e5c31af7Sopenharmony_ci void main() 1617e5c31af7Sopenharmony_ci { 1618e5c31af7Sopenharmony_ci var.a = in0; 1619e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1620e5c31af7Sopenharmony_ci } 1621e5c31af7Sopenharmony_ci "" 1622e5c31af7Sopenharmony_ci fragment "" 1623e5c31af7Sopenharmony_ci #version 310 es 1624e5c31af7Sopenharmony_ci precision highp float; 1625e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1626e5c31af7Sopenharmony_ci struct S { mediump mat4x2 a; }; 1627e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1628e5c31af7Sopenharmony_ci void main() 1629e5c31af7Sopenharmony_ci { 1630e5c31af7Sopenharmony_ci out0 = var.a; 1631e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1632e5c31af7Sopenharmony_ci } 1633e5c31af7Sopenharmony_ci "" 1634e5c31af7Sopenharmony_ci end 1635e5c31af7Sopenharmony_ci 1636e5c31af7Sopenharmony_ci case mat4x3 1637e5c31af7Sopenharmony_ci version 310 es 1638e5c31af7Sopenharmony_ci desc "varying of type mat4x3 inside struct" 1639e5c31af7Sopenharmony_ci values 1640e5c31af7Sopenharmony_ci { 1641e5c31af7Sopenharmony_ci input mat4x3 in0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1642e5c31af7Sopenharmony_ci output mat4x3 out0 = [ mat4x3(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0) ]; 1643e5c31af7Sopenharmony_ci } 1644e5c31af7Sopenharmony_ci vertex "" 1645e5c31af7Sopenharmony_ci #version 310 es 1646e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1647e5c31af7Sopenharmony_ci struct S { mediump mat4x3 a; }; 1648e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1649e5c31af7Sopenharmony_ci void main() 1650e5c31af7Sopenharmony_ci { 1651e5c31af7Sopenharmony_ci var.a = in0; 1652e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1653e5c31af7Sopenharmony_ci } 1654e5c31af7Sopenharmony_ci "" 1655e5c31af7Sopenharmony_ci fragment "" 1656e5c31af7Sopenharmony_ci #version 310 es 1657e5c31af7Sopenharmony_ci precision highp float; 1658e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1659e5c31af7Sopenharmony_ci struct S { mediump mat4x3 a; }; 1660e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1661e5c31af7Sopenharmony_ci void main() 1662e5c31af7Sopenharmony_ci { 1663e5c31af7Sopenharmony_ci out0 = var.a; 1664e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1665e5c31af7Sopenharmony_ci } 1666e5c31af7Sopenharmony_ci "" 1667e5c31af7Sopenharmony_ci end 1668e5c31af7Sopenharmony_ci 1669e5c31af7Sopenharmony_ci case mat4 1670e5c31af7Sopenharmony_ci version 310 es 1671e5c31af7Sopenharmony_ci desc "varying of type mat4 inside struct" 1672e5c31af7Sopenharmony_ci values 1673e5c31af7Sopenharmony_ci { 1674e5c31af7Sopenharmony_ci input mat4 in0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 1675e5c31af7Sopenharmony_ci output mat4 out0 = [ mat4(-1.25, 1.25, -9.5, -12.2, -25.65, -7.25, 14.21, -77.7, 0.0, 1.0, -1.0, 2.0, 2.25, 2.25, 22.5, 225.0) ]; 1676e5c31af7Sopenharmony_ci } 1677e5c31af7Sopenharmony_ci vertex "" 1678e5c31af7Sopenharmony_ci #version 310 es 1679e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1680e5c31af7Sopenharmony_ci struct S { mediump mat4 a; }; 1681e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1682e5c31af7Sopenharmony_ci void main() 1683e5c31af7Sopenharmony_ci { 1684e5c31af7Sopenharmony_ci var.a = in0; 1685e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1686e5c31af7Sopenharmony_ci } 1687e5c31af7Sopenharmony_ci "" 1688e5c31af7Sopenharmony_ci fragment "" 1689e5c31af7Sopenharmony_ci #version 310 es 1690e5c31af7Sopenharmony_ci precision highp float; 1691e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1692e5c31af7Sopenharmony_ci struct S { mediump mat4 a; }; 1693e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1694e5c31af7Sopenharmony_ci void main() 1695e5c31af7Sopenharmony_ci { 1696e5c31af7Sopenharmony_ci out0 = var.a; 1697e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1698e5c31af7Sopenharmony_ci } 1699e5c31af7Sopenharmony_ci "" 1700e5c31af7Sopenharmony_ci end 1701e5c31af7Sopenharmony_ci 1702e5c31af7Sopenharmony_ci case int 1703e5c31af7Sopenharmony_ci version 310 es 1704e5c31af7Sopenharmony_ci desc "varying of type int inside struct" 1705e5c31af7Sopenharmony_ci values 1706e5c31af7Sopenharmony_ci { 1707e5c31af7Sopenharmony_ci input int in0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1708e5c31af7Sopenharmony_ci output int out0 = [ -1 | -25 | 1 | 2 | 3 | 16 ]; 1709e5c31af7Sopenharmony_ci } 1710e5c31af7Sopenharmony_ci vertex "" 1711e5c31af7Sopenharmony_ci #version 310 es 1712e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1713e5c31af7Sopenharmony_ci struct S { mediump int a; }; 1714e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1715e5c31af7Sopenharmony_ci void main() 1716e5c31af7Sopenharmony_ci { 1717e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1718e5c31af7Sopenharmony_ci var.a = in0; 1719e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1720e5c31af7Sopenharmony_ci } 1721e5c31af7Sopenharmony_ci "" 1722e5c31af7Sopenharmony_ci fragment "" 1723e5c31af7Sopenharmony_ci #version 310 es 1724e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1725e5c31af7Sopenharmony_ci struct S { mediump int a; }; 1726e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1727e5c31af7Sopenharmony_ci void main() 1728e5c31af7Sopenharmony_ci { 1729e5c31af7Sopenharmony_ci out0 = var.a; 1730e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1731e5c31af7Sopenharmony_ci } 1732e5c31af7Sopenharmony_ci "" 1733e5c31af7Sopenharmony_ci end 1734e5c31af7Sopenharmony_ci 1735e5c31af7Sopenharmony_ci case ivec2 1736e5c31af7Sopenharmony_ci version 310 es 1737e5c31af7Sopenharmony_ci desc "varying of type ivec2 inside struct" 1738e5c31af7Sopenharmony_ci values 1739e5c31af7Sopenharmony_ci { 1740e5c31af7Sopenharmony_ci input ivec2 in0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1741e5c31af7Sopenharmony_ci output ivec2 out0 = [ ivec2(-1, 1) | ivec2(-25, 25) | ivec2(1, 1) | ivec2(2, 3) | ivec2(16, 17) ]; 1742e5c31af7Sopenharmony_ci } 1743e5c31af7Sopenharmony_ci vertex "" 1744e5c31af7Sopenharmony_ci #version 310 es 1745e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1746e5c31af7Sopenharmony_ci struct S { mediump ivec2 a; }; 1747e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1748e5c31af7Sopenharmony_ci void main() 1749e5c31af7Sopenharmony_ci { 1750e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1751e5c31af7Sopenharmony_ci var.a = in0; 1752e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1753e5c31af7Sopenharmony_ci } 1754e5c31af7Sopenharmony_ci "" 1755e5c31af7Sopenharmony_ci fragment "" 1756e5c31af7Sopenharmony_ci #version 310 es 1757e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1758e5c31af7Sopenharmony_ci struct S { mediump ivec2 a; }; 1759e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1760e5c31af7Sopenharmony_ci void main() 1761e5c31af7Sopenharmony_ci { 1762e5c31af7Sopenharmony_ci out0 = var.a; 1763e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1764e5c31af7Sopenharmony_ci } 1765e5c31af7Sopenharmony_ci "" 1766e5c31af7Sopenharmony_ci end 1767e5c31af7Sopenharmony_ci 1768e5c31af7Sopenharmony_ci case ivec3 1769e5c31af7Sopenharmony_ci version 310 es 1770e5c31af7Sopenharmony_ci desc "varying of type ivec3 inside struct" 1771e5c31af7Sopenharmony_ci values 1772e5c31af7Sopenharmony_ci { 1773e5c31af7Sopenharmony_ci input ivec3 in0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1774e5c31af7Sopenharmony_ci output ivec3 out0 = [ ivec3(-1, 1, -2) | ivec3(-25, 25, -3) | ivec3(1, 1, 1) | ivec3(2, 3, 4) | ivec3(16, 17, 18) ]; 1775e5c31af7Sopenharmony_ci } 1776e5c31af7Sopenharmony_ci vertex "" 1777e5c31af7Sopenharmony_ci #version 310 es 1778e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1779e5c31af7Sopenharmony_ci struct S { mediump ivec3 a; }; 1780e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1781e5c31af7Sopenharmony_ci void main() 1782e5c31af7Sopenharmony_ci { 1783e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1784e5c31af7Sopenharmony_ci var.a = in0; 1785e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1786e5c31af7Sopenharmony_ci } 1787e5c31af7Sopenharmony_ci "" 1788e5c31af7Sopenharmony_ci fragment "" 1789e5c31af7Sopenharmony_ci #version 310 es 1790e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1791e5c31af7Sopenharmony_ci struct S { mediump ivec3 a; }; 1792e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1793e5c31af7Sopenharmony_ci void main() 1794e5c31af7Sopenharmony_ci { 1795e5c31af7Sopenharmony_ci out0 = var.a; 1796e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1797e5c31af7Sopenharmony_ci } 1798e5c31af7Sopenharmony_ci "" 1799e5c31af7Sopenharmony_ci end 1800e5c31af7Sopenharmony_ci 1801e5c31af7Sopenharmony_ci case ivec4 1802e5c31af7Sopenharmony_ci version 310 es 1803e5c31af7Sopenharmony_ci desc "varying of type ivec4 inside struct" 1804e5c31af7Sopenharmony_ci values 1805e5c31af7Sopenharmony_ci { 1806e5c31af7Sopenharmony_ci input ivec4 in0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1807e5c31af7Sopenharmony_ci output ivec4 out0 = [ ivec4(-1, 1, -2, 2) | ivec4(-25, 25, -3, 3) | ivec4(1, 1, 1, 1) | ivec4(2, 3, 4, 5) | ivec4(16, 17, 18, 19) ]; 1808e5c31af7Sopenharmony_ci } 1809e5c31af7Sopenharmony_ci vertex "" 1810e5c31af7Sopenharmony_ci #version 310 es 1811e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1812e5c31af7Sopenharmony_ci struct S { mediump ivec4 a; }; 1813e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1814e5c31af7Sopenharmony_ci void main() 1815e5c31af7Sopenharmony_ci { 1816e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1817e5c31af7Sopenharmony_ci var.a = in0; 1818e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1819e5c31af7Sopenharmony_ci } 1820e5c31af7Sopenharmony_ci "" 1821e5c31af7Sopenharmony_ci fragment "" 1822e5c31af7Sopenharmony_ci #version 310 es 1823e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1824e5c31af7Sopenharmony_ci struct S { mediump ivec4 a; }; 1825e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1826e5c31af7Sopenharmony_ci void main() 1827e5c31af7Sopenharmony_ci { 1828e5c31af7Sopenharmony_ci out0 = var.a; 1829e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1830e5c31af7Sopenharmony_ci } 1831e5c31af7Sopenharmony_ci "" 1832e5c31af7Sopenharmony_ci end 1833e5c31af7Sopenharmony_ci 1834e5c31af7Sopenharmony_ci case uint 1835e5c31af7Sopenharmony_ci version 310 es 1836e5c31af7Sopenharmony_ci desc "varying of type uint in struct" 1837e5c31af7Sopenharmony_ci values 1838e5c31af7Sopenharmony_ci { 1839e5c31af7Sopenharmony_ci input uint in0 = [ 1 | 2 | 3 | 16 ]; 1840e5c31af7Sopenharmony_ci output uint out0 = [ 1 | 2 | 3 | 16 ]; 1841e5c31af7Sopenharmony_ci } 1842e5c31af7Sopenharmony_ci vertex "" 1843e5c31af7Sopenharmony_ci #version 310 es 1844e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1845e5c31af7Sopenharmony_ci struct S { mediump uint a; }; 1846e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1847e5c31af7Sopenharmony_ci void main() 1848e5c31af7Sopenharmony_ci { 1849e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1850e5c31af7Sopenharmony_ci var.a = in0; 1851e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1852e5c31af7Sopenharmony_ci } 1853e5c31af7Sopenharmony_ci "" 1854e5c31af7Sopenharmony_ci fragment "" 1855e5c31af7Sopenharmony_ci #version 310 es 1856e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1857e5c31af7Sopenharmony_ci struct S { mediump uint a; }; 1858e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1859e5c31af7Sopenharmony_ci void main() 1860e5c31af7Sopenharmony_ci { 1861e5c31af7Sopenharmony_ci out0 = var.a; 1862e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1863e5c31af7Sopenharmony_ci } 1864e5c31af7Sopenharmony_ci "" 1865e5c31af7Sopenharmony_ci end 1866e5c31af7Sopenharmony_ci 1867e5c31af7Sopenharmony_ci case uvec2 1868e5c31af7Sopenharmony_ci version 310 es 1869e5c31af7Sopenharmony_ci desc "varying of type uvec2 inside struct" 1870e5c31af7Sopenharmony_ci values 1871e5c31af7Sopenharmony_ci { 1872e5c31af7Sopenharmony_ci input uvec2 in0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1873e5c31af7Sopenharmony_ci output uvec2 out0 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) ]; 1874e5c31af7Sopenharmony_ci } 1875e5c31af7Sopenharmony_ci vertex "" 1876e5c31af7Sopenharmony_ci #version 310 es 1877e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1878e5c31af7Sopenharmony_ci struct S { mediump uvec2 a; }; 1879e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1880e5c31af7Sopenharmony_ci void main() 1881e5c31af7Sopenharmony_ci { 1882e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1883e5c31af7Sopenharmony_ci var.a = in0; 1884e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1885e5c31af7Sopenharmony_ci } 1886e5c31af7Sopenharmony_ci "" 1887e5c31af7Sopenharmony_ci fragment "" 1888e5c31af7Sopenharmony_ci #version 310 es 1889e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1890e5c31af7Sopenharmony_ci struct S { mediump uvec2 a; }; 1891e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1892e5c31af7Sopenharmony_ci void main() 1893e5c31af7Sopenharmony_ci { 1894e5c31af7Sopenharmony_ci out0 = var.a; 1895e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1896e5c31af7Sopenharmony_ci } 1897e5c31af7Sopenharmony_ci "" 1898e5c31af7Sopenharmony_ci end 1899e5c31af7Sopenharmony_ci 1900e5c31af7Sopenharmony_ci case uvec3 1901e5c31af7Sopenharmony_ci version 310 es 1902e5c31af7Sopenharmony_ci desc "varying of type uvec3 inside struct" 1903e5c31af7Sopenharmony_ci values 1904e5c31af7Sopenharmony_ci { 1905e5c31af7Sopenharmony_ci input uvec3 in0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 1906e5c31af7Sopenharmony_ci output uvec3 out0 = [ uvec3(1, 1, 2) | uvec3(25, 25, 3) | uvec3(1, 1, 1) | uvec3(2, 3, 4) | uvec3(16, 17, 18) ]; 1907e5c31af7Sopenharmony_ci } 1908e5c31af7Sopenharmony_ci vertex "" 1909e5c31af7Sopenharmony_ci #version 310 es 1910e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1911e5c31af7Sopenharmony_ci struct S { mediump uvec3 a; }; 1912e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1913e5c31af7Sopenharmony_ci void main() 1914e5c31af7Sopenharmony_ci { 1915e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1916e5c31af7Sopenharmony_ci var.a = in0; 1917e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1918e5c31af7Sopenharmony_ci } 1919e5c31af7Sopenharmony_ci "" 1920e5c31af7Sopenharmony_ci fragment "" 1921e5c31af7Sopenharmony_ci #version 310 es 1922e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1923e5c31af7Sopenharmony_ci struct S { mediump uvec3 a; }; 1924e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1925e5c31af7Sopenharmony_ci void main() 1926e5c31af7Sopenharmony_ci { 1927e5c31af7Sopenharmony_ci out0 = var.a; 1928e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1929e5c31af7Sopenharmony_ci } 1930e5c31af7Sopenharmony_ci "" 1931e5c31af7Sopenharmony_ci end 1932e5c31af7Sopenharmony_ci 1933e5c31af7Sopenharmony_ci case uvec4 1934e5c31af7Sopenharmony_ci version 310 es 1935e5c31af7Sopenharmony_ci desc "varying of type uvec4 inside struct" 1936e5c31af7Sopenharmony_ci values 1937e5c31af7Sopenharmony_ci { 1938e5c31af7Sopenharmony_ci input uvec4 in0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 1939e5c31af7Sopenharmony_ci output uvec4 out0 = [ uvec4(1, 1, 2, 2) | uvec4(25, 25, 3, 3) | uvec4(1, 1, 1, 1) | uvec4(2, 3, 4, 5) | uvec4(16, 17, 18, 19) ]; 1940e5c31af7Sopenharmony_ci } 1941e5c31af7Sopenharmony_ci vertex "" 1942e5c31af7Sopenharmony_ci #version 310 es 1943e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1944e5c31af7Sopenharmony_ci struct S { mediump uvec4 a; }; 1945e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 1946e5c31af7Sopenharmony_ci void main() 1947e5c31af7Sopenharmony_ci { 1948e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 1949e5c31af7Sopenharmony_ci var.a = in0; 1950e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1951e5c31af7Sopenharmony_ci } 1952e5c31af7Sopenharmony_ci "" 1953e5c31af7Sopenharmony_ci fragment "" 1954e5c31af7Sopenharmony_ci #version 310 es 1955e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1956e5c31af7Sopenharmony_ci struct S { mediump uvec4 a; }; 1957e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 1958e5c31af7Sopenharmony_ci void main() 1959e5c31af7Sopenharmony_ci { 1960e5c31af7Sopenharmony_ci out0 = var.a; 1961e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1962e5c31af7Sopenharmony_ci } 1963e5c31af7Sopenharmony_ci "" 1964e5c31af7Sopenharmony_ci end 1965e5c31af7Sopenharmony_ci 1966e5c31af7Sopenharmony_ci case float_vec3 1967e5c31af7Sopenharmony_ci version 310 es 1968e5c31af7Sopenharmony_ci desc "varyings of type float and vec3 inside struct" 1969e5c31af7Sopenharmony_ci values 1970e5c31af7Sopenharmony_ci { 1971e5c31af7Sopenharmony_ci input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 1972e5c31af7Sopenharmony_ci output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 1973e5c31af7Sopenharmony_ci input vec3 in1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 1974e5c31af7Sopenharmony_ci output vec3 out1 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 1975e5c31af7Sopenharmony_ci } 1976e5c31af7Sopenharmony_ci vertex "" 1977e5c31af7Sopenharmony_ci #version 310 es 1978e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 1979e5c31af7Sopenharmony_ci struct S { mediump float a; highp vec3 b; }; 1980e5c31af7Sopenharmony_ci layout(location = 0) out S var; 1981e5c31af7Sopenharmony_ci void main() 1982e5c31af7Sopenharmony_ci { 1983e5c31af7Sopenharmony_ci var.a = in0; 1984e5c31af7Sopenharmony_ci var.b = in1; 1985e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 1986e5c31af7Sopenharmony_ci } 1987e5c31af7Sopenharmony_ci "" 1988e5c31af7Sopenharmony_ci fragment "" 1989e5c31af7Sopenharmony_ci #version 310 es 1990e5c31af7Sopenharmony_ci precision highp float; 1991e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 1992e5c31af7Sopenharmony_ci struct S { mediump float a; highp vec3 b; }; 1993e5c31af7Sopenharmony_ci layout(location = 0) in S var; 1994e5c31af7Sopenharmony_ci void main() 1995e5c31af7Sopenharmony_ci { 1996e5c31af7Sopenharmony_ci out0 = var.a; 1997e5c31af7Sopenharmony_ci out1 = var.b; 1998e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 1999e5c31af7Sopenharmony_ci } 2000e5c31af7Sopenharmony_ci "" 2001e5c31af7Sopenharmony_ci end 2002e5c31af7Sopenharmony_ci 2003e5c31af7Sopenharmony_ci case float_uvec2_vec3 2004e5c31af7Sopenharmony_ci version 310 es 2005e5c31af7Sopenharmony_ci desc "varyings of type float and vec3 inside struct" 2006e5c31af7Sopenharmony_ci values 2007e5c31af7Sopenharmony_ci { 2008e5c31af7Sopenharmony_ci input float in0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 2009e5c31af7Sopenharmony_ci output float out0 = [ -1.25 | -25.65 | 1.0 | 2.25 | 3.4 | 16.0 ]; 2010e5c31af7Sopenharmony_ci input uvec2 in1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; 2011e5c31af7Sopenharmony_ci output uvec2 out1 = [ uvec2(1, 1) | uvec2(25, 25) | uvec2(1, 1) | uvec2(2, 3) | uvec2(16, 17) | uvec2(8, 7) ]; 2012e5c31af7Sopenharmony_ci input vec3 in2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 2013e5c31af7Sopenharmony_ci output vec3 out2 = [ vec3(-1.25, 1.25, -9.5) | vec3(-25.65, -7.25, 14.21) | vec3(0.0, 1.0, -1.0) | vec3(2.25, 2.25, 22.5) | vec3(3.4, 9.5, 19.5) | vec3(16.0, 32.0, -64.0) ]; 2014e5c31af7Sopenharmony_ci } 2015e5c31af7Sopenharmony_ci vertex "" 2016e5c31af7Sopenharmony_ci #version 310 es 2017e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 2018e5c31af7Sopenharmony_ci struct S { mediump float a; highp uvec2 b; highp vec3 c; }; 2019e5c31af7Sopenharmony_ci layout(location = 0) flat out S var; 2020e5c31af7Sopenharmony_ci void main() 2021e5c31af7Sopenharmony_ci { 2022e5c31af7Sopenharmony_ci ${VERTEX_SETUP} 2023e5c31af7Sopenharmony_ci var.a = in0; 2024e5c31af7Sopenharmony_ci var.b = in1; 2025e5c31af7Sopenharmony_ci var.c = in2; 2026e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 2027e5c31af7Sopenharmony_ci } 2028e5c31af7Sopenharmony_ci "" 2029e5c31af7Sopenharmony_ci fragment "" 2030e5c31af7Sopenharmony_ci #version 310 es 2031e5c31af7Sopenharmony_ci precision highp float; 2032e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 2033e5c31af7Sopenharmony_ci struct S { mediump float a; highp uvec2 b; highp vec3 c; }; 2034e5c31af7Sopenharmony_ci layout(location = 0) flat in S var; 2035e5c31af7Sopenharmony_ci void main() 2036e5c31af7Sopenharmony_ci { 2037e5c31af7Sopenharmony_ci out0 = var.a; 2038e5c31af7Sopenharmony_ci out1 = var.b; 2039e5c31af7Sopenharmony_ci out2 = var.c; 2040e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 2041e5c31af7Sopenharmony_ci } 2042e5c31af7Sopenharmony_ci "" 2043e5c31af7Sopenharmony_ci end 2044e5c31af7Sopenharmony_ci end 2045e5c31af7Sopenharmony_ci 2046e5c31af7Sopenharmony_ci group interpolation "Varying interpolation modes" 2047e5c31af7Sopenharmony_ci case smooth 2048e5c31af7Sopenharmony_ci version 310 es 2049e5c31af7Sopenharmony_ci desc "varying of type vec4" 2050e5c31af7Sopenharmony_ci values 2051e5c31af7Sopenharmony_ci { 2052e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2053e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2054e5c31af7Sopenharmony_ci } 2055e5c31af7Sopenharmony_ci vertex "" 2056e5c31af7Sopenharmony_ci #version 310 es 2057e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 2058e5c31af7Sopenharmony_ci layout(location = 0) smooth out vec4 var; 2059e5c31af7Sopenharmony_ci void main() 2060e5c31af7Sopenharmony_ci { 2061e5c31af7Sopenharmony_ci var = in0; 2062e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 2063e5c31af7Sopenharmony_ci } 2064e5c31af7Sopenharmony_ci "" 2065e5c31af7Sopenharmony_ci fragment "" 2066e5c31af7Sopenharmony_ci #version 310 es 2067e5c31af7Sopenharmony_ci precision highp float; 2068e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 2069e5c31af7Sopenharmony_ci layout(location = 0) smooth in vec4 var; 2070e5c31af7Sopenharmony_ci void main() 2071e5c31af7Sopenharmony_ci { 2072e5c31af7Sopenharmony_ci out0 = var; 2073e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 2074e5c31af7Sopenharmony_ci } 2075e5c31af7Sopenharmony_ci "" 2076e5c31af7Sopenharmony_ci end 2077e5c31af7Sopenharmony_ci 2078e5c31af7Sopenharmony_ci case centroid 2079e5c31af7Sopenharmony_ci version 310 es 2080e5c31af7Sopenharmony_ci desc "varying of type vec4" 2081e5c31af7Sopenharmony_ci values 2082e5c31af7Sopenharmony_ci { 2083e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2084e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2085e5c31af7Sopenharmony_ci } 2086e5c31af7Sopenharmony_ci vertex "" 2087e5c31af7Sopenharmony_ci #version 310 es 2088e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 2089e5c31af7Sopenharmony_ci layout(location = 0) centroid out vec4 var; 2090e5c31af7Sopenharmony_ci void main() 2091e5c31af7Sopenharmony_ci { 2092e5c31af7Sopenharmony_ci var = in0; 2093e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 2094e5c31af7Sopenharmony_ci } 2095e5c31af7Sopenharmony_ci "" 2096e5c31af7Sopenharmony_ci fragment "" 2097e5c31af7Sopenharmony_ci #version 310 es 2098e5c31af7Sopenharmony_ci precision highp float; 2099e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 2100e5c31af7Sopenharmony_ci layout(location = 0) centroid in vec4 var; 2101e5c31af7Sopenharmony_ci void main() 2102e5c31af7Sopenharmony_ci { 2103e5c31af7Sopenharmony_ci out0 = var; 2104e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 2105e5c31af7Sopenharmony_ci } 2106e5c31af7Sopenharmony_ci "" 2107e5c31af7Sopenharmony_ci end 2108e5c31af7Sopenharmony_ci 2109e5c31af7Sopenharmony_ci case flat 2110e5c31af7Sopenharmony_ci version 310 es 2111e5c31af7Sopenharmony_ci desc "varying of type vec4" 2112e5c31af7Sopenharmony_ci values 2113e5c31af7Sopenharmony_ci { 2114e5c31af7Sopenharmony_ci input vec4 in0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2115e5c31af7Sopenharmony_ci output vec4 out0 = [ vec4(-1.25, 1.25, -9.5, -12.2) | vec4(-25.65, -7.25, 14.21, -77.7) | vec4(0.0, 1.0, -1.0, 2.0) | vec4(2.25, 2.25, 22.5, 225.0) | vec4(3.4, 9.5, 19.5, 29.5) | vec4(16.0, 32.0, -64.0, -128.0) ]; 2116e5c31af7Sopenharmony_ci } 2117e5c31af7Sopenharmony_ci vertex "" 2118e5c31af7Sopenharmony_ci #version 310 es 2119e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 2120e5c31af7Sopenharmony_ci layout(location = 0) flat out vec4 var; 2121e5c31af7Sopenharmony_ci void main() 2122e5c31af7Sopenharmony_ci { 2123e5c31af7Sopenharmony_ci var = in0; 2124e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 2125e5c31af7Sopenharmony_ci } 2126e5c31af7Sopenharmony_ci "" 2127e5c31af7Sopenharmony_ci fragment "" 2128e5c31af7Sopenharmony_ci #version 310 es 2129e5c31af7Sopenharmony_ci precision highp float; 2130e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 2131e5c31af7Sopenharmony_ci layout(location = 0) flat in vec4 var; 2132e5c31af7Sopenharmony_ci void main() 2133e5c31af7Sopenharmony_ci { 2134e5c31af7Sopenharmony_ci out0 = var; 2135e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 2136e5c31af7Sopenharmony_ci } 2137e5c31af7Sopenharmony_ci "" 2138e5c31af7Sopenharmony_ci end 2139e5c31af7Sopenharmony_ci end 2140e5c31af7Sopenharmony_ci 2141e5c31af7Sopenharmony_ci group usage "Varying usage in shaders" 2142e5c31af7Sopenharmony_ci case readback_1 2143e5c31af7Sopenharmony_ci version 310 es 2144e5c31af7Sopenharmony_ci desc "read back (an already written) varying in the vertex shader" 2145e5c31af7Sopenharmony_ci values 2146e5c31af7Sopenharmony_ci { 2147e5c31af7Sopenharmony_ci input float in0 = [ 1.0 | 0.0 | -2.0 | 10.0 ]; 2148e5c31af7Sopenharmony_ci output float out0 = [ 3.0 | 0.0 | -6.0 | 30.0 ]; 2149e5c31af7Sopenharmony_ci } 2150e5c31af7Sopenharmony_ci vertex "" 2151e5c31af7Sopenharmony_ci #version 310 es 2152e5c31af7Sopenharmony_ci precision highp float; 2153e5c31af7Sopenharmony_ci ${VERTEX_DECLARATIONS} 2154e5c31af7Sopenharmony_ci layout(location = 0) out float var1; 2155e5c31af7Sopenharmony_ci layout(location = 1) out float var2; 2156e5c31af7Sopenharmony_ci 2157e5c31af7Sopenharmony_ci void main() 2158e5c31af7Sopenharmony_ci { 2159e5c31af7Sopenharmony_ci var1 = in0; 2160e5c31af7Sopenharmony_ci var2 = var1 + in0; 2161e5c31af7Sopenharmony_ci ${VERTEX_OUTPUT} 2162e5c31af7Sopenharmony_ci } 2163e5c31af7Sopenharmony_ci "" 2164e5c31af7Sopenharmony_ci fragment "" 2165e5c31af7Sopenharmony_ci #version 310 es 2166e5c31af7Sopenharmony_ci precision highp float; 2167e5c31af7Sopenharmony_ci ${FRAGMENT_DECLARATIONS} 2168e5c31af7Sopenharmony_ci layout(location = 0) in float var1; 2169e5c31af7Sopenharmony_ci layout(location = 1) in float var2; 2170e5c31af7Sopenharmony_ci 2171e5c31af7Sopenharmony_ci void main() 2172e5c31af7Sopenharmony_ci { 2173e5c31af7Sopenharmony_ci out0 = var1 + var2; 2174e5c31af7Sopenharmony_ci ${FRAGMENT_OUTPUT} 2175e5c31af7Sopenharmony_ci } 2176e5c31af7Sopenharmony_ci "" 2177e5c31af7Sopenharmony_ci end 2178e5c31af7Sopenharmony_ci end 2179e5c31af7Sopenharmony_ciend 2180