spv.precision.frag 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #version 310 es
  2. precision mediump float;
  3. in lowp float lowfin;
  4. in mediump float mediumfin;
  5. in highp vec4 highfin;
  6. highp int uniform_high;
  7. mediump int uniform_medium;
  8. lowp int uniform_low;
  9. bvec2 ub2;
  10. out mediump vec4 mediumfout;
  11. highp float global_highp;
  12. lowp vec2 foo(mediump vec3 mv3)
  13. {
  14. return highfin.xy;
  15. }
  16. bool boolfun(bvec2 bv2)
  17. {
  18. return bv2 == bvec2(false, true);
  19. }
  20. struct S {
  21. highp float a;
  22. lowp float b;
  23. };
  24. in S s;
  25. void main()
  26. {
  27. lowp int sum = uniform_medium + uniform_high;
  28. sum += uniform_high;
  29. sum += uniform_low;
  30. // test maxing precisions of args to get precision of builtin
  31. lowp float arg1 = 3.2;
  32. mediump float arg2 = 1023908.2;
  33. lowp float d = distance(lowfin, mediumfin);
  34. global_highp = length(highfin);
  35. highp vec4 local_highp = vec4(global_highp);
  36. mediumfout = vec4(sin(d)) + arg2 + local_highp;
  37. sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x;
  38. mediumfout += vec4(sum);
  39. if (boolfun(ub2))
  40. ++mediumfout;
  41. mediumfout *= s.a;
  42. mediumfout *= s.b;
  43. }