#version 310 es | |
precision mediump float; | |
in lowp float lowfin; | |
in mediump float mediumfin; | |
in highp vec4 highfin; | |
highp int uniform_high; | |
mediump int uniform_medium; | |
lowp int uniform_low; | |
bvec2 ub2; | |
out mediump vec4 mediumfout; | |
highp float global_highp; | |
lowp vec2 foo(mediump vec3 mv3) | |
{ | |
return highfin.xy; | |
} | |
bool boolfun(bvec2 bv2) | |
{ | |
return bv2 == bvec2(false, true); | |
} | |
struct S { | |
highp float a; | |
lowp float b; | |
}; | |
in S s; | |
void main() | |
{ | |
lowp int sum = uniform_medium + uniform_high; | |
sum += uniform_high; | |
sum += uniform_low; | |
// test maxing precisions of args to get precision of builtin | |
lowp float arg1 = 3.2; | |
mediump float arg2 = 1023908.2; | |
lowp float d = distance(lowfin, mediumfin); | |
global_highp = length(highfin); | |
highp vec4 local_highp = vec4(global_highp); | |
mediumfout = vec4(sin(d)) + arg2 + local_highp; | |
sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x; | |
mediumfout += vec4(sum); | |
if (boolfun(ub2)) | |
++mediumfout; | |
mediumfout *= s.a; | |
mediumfout *= s.b; | |
} |