deepRvalue.frag 907 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #version 120
  2. uniform sampler2D sampler;
  3. vec4 v1 = vec4(2.0, 3.0, 5.0, 7.0);
  4. vec4 v2 = vec4(11.0, 13.0, 17.0, 19.0);
  5. vec4 v3 = vec4(23.0, 29.0, 31.0, 37.0);
  6. vec4 v4 = vec4(41.0, 43.0, 47.0, 53.0);
  7. struct str {
  8. int a;
  9. vec2 b[3];
  10. bool c;
  11. };
  12. void main()
  13. {
  14. mat4 m = mat4(v1, v2, v3, v4);
  15. mat4 mm = matrixCompMult(m, m);
  16. float f = mm[1].w; // should be 19 * 19 = 361
  17. // do a deep access to a spontaneous r-value
  18. float g = matrixCompMult(m, m)[2].y; // should be 29 * 29 = 841
  19. float h = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true).b[1][1]; // should be 5.0
  20. float i = texture2D(sampler, vec2(0.5,0.5)).y;
  21. i += (i > 0.1 ? v1 : v2)[3];
  22. str t;
  23. i += (t = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true)).b[2].y; // should be 7.0
  24. gl_FragColor = vec4(f, g, h, i);
  25. }