Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / deepRvalue.frag
1 #version 120\r
2 \r
3 uniform sampler2D sampler;\r
4 \r
5 vec4 v1 = vec4(2.0, 3.0, 5.0, 7.0);\r
6 vec4 v2 = vec4(11.0, 13.0, 17.0, 19.0);\r
7 vec4 v3 = vec4(23.0, 29.0, 31.0, 37.0);\r
8 vec4 v4 = vec4(41.0, 43.0, 47.0, 53.0);\r
9 \r
10 struct str {\r
11     int a;\r
12     vec2 b[3];\r
13     bool c;\r
14 };\r
15 \r
16 void main()\r
17 {\r
18     mat4 m = mat4(v1, v2, v3, v4);\r
19 \r
20     mat4 mm  = matrixCompMult(m, m);\r
21     float f = mm[1].w; // should be 19 * 19 = 361\r
22 \r
23     // do a deep access to a spontaneous r-value\r
24     float g = matrixCompMult(m, m)[2].y;  // should be 29 * 29 = 841\r
25 \r
26     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\r
27 \r
28     float i = texture2D(sampler, vec2(0.5,0.5)).y;\r
29 \r
30     i += (i > 0.1 ? v1 : v2)[3];\r
31 \r
32     str t;\r
33     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\r
34 \r
35     gl_FragColor = vec4(f, g, h, i);\r
36 }\r