Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / matrix.frag
1 #version 130
2
3 //#define TEST_POST_110
4
5 uniform mat3 colorTransform;
6 varying vec3 Color;
7 uniform mat4 m, n;
8
9 #ifdef TEST_POST_110
10 uniform mat4x3 um43;
11 uniform mat3x4 un34;
12 #else
13 uniform mat4 um43;
14 uniform mat4 un34;
15 #endif
16
17 varying vec4 v;
18
19 #ifdef TEST_POST_110
20 varying vec3 u;
21 #else
22 varying vec4 u;
23 #endif
24
25 void main()
26 {
27     gl_FragColor = vec4(un34[1]);
28     gl_FragColor += vec4(Color * colorTransform, 1.0);
29
30     if (m != n)
31         gl_FragColor += v;
32    else {
33         gl_FragColor += m * v;
34         gl_FragColor += v * (m - n);
35    }
36
37 #ifdef TEST_POST_110
38     mat3x4 m34 = outerProduct(v, u);
39     m34 += mat4(v.x);
40     m34 += mat4(u, u.x, u, u.x, u, u.x, u.x);
41 #else
42     mat4 m34 = mat4(v.x*u.x, v.x*u.y, v.x*u.z, v.x*u.w,
43                     v.y*u.x, v.y*u.y, v.y*u.z, v.y*u.w,
44                     v.z*u.x, v.z*u.y, v.z*u.z, v.z*u.w,
45                     v.w*u.x, v.w*u.y, v.w*u.z, v.w*u.w);
46     m34 += mat4(v.x);
47     m34 += mat4(u, u.x, u, u.x, u, u.x, u.x);
48
49 #endif
50
51     if (m34 == un34)
52         gl_FragColor += m34 * u;
53     else
54         gl_FragColor += (un34 * um43) * v;
55
56     mat4x2 m42 = mat4x2(42);
57     if (m42 == mat4x2(42, 0, 0, 42, 0, 0, 0, 0)) {
58         gl_FragColor += v;
59     }
60 }