Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / matrix2.frag
1 #version 150\r
2 \r
3 uniform mat3 colorTransform;\r
4 varying vec3 Color;\r
5 uniform mat4 m, n;\r
6 \r
7 uniform mat4x3 um43;\r
8 uniform mat3x4 un34;\r
9 uniform mat2 um2;\r
10 uniform mat3 um3;\r
11 uniform mat4 um4;\r
12 \r
13 varying vec4 v;\r
14 \r
15 varying vec3 u;\r
16 \r
17 out vec4 FragColor;\r
18 \r
19 void main()\r
20 {\r
21     mat3x4 m34 = outerProduct(v, u);\r
22 \r
23     m34 += mat3x4(4.3);\r
24 \r
25     FragColor = vec4(Color, 1.0);\r
26     FragColor *= vec4(FragColor * m34, 1.0);\r
27 \r
28     m34 *= v.x;\r
29 \r
30     mat4 m44 = mat4(un34);\r
31 \r
32     m44 += m34 * um43;\r
33 \r
34     FragColor += (-m44) * v;\r
35 \r
36     FragColor *= matrixCompMult(m44, m44);\r
37 \r
38     m34 = transpose(um43);\r
39     FragColor *= vec4(FragColor * m34, 1.0);\r
40     FragColor *= vec4(determinant(um4));\r
41     mat2 inv = inverse(um2);\r
42     FragColor *= vec4(inv[0][0], inv[1][0], inv[0][1], inv[1][1]);\r
43     mat3 inv3 = inverse(um3);\r
44     FragColor *= vec4(inv3[2][1]);\r
45 \r
46     mat4 inv4 = inverse(um4);\r
47     FragColor *= inv4;\r
48 \r
49     FragColor = vec4(FragColor * matrixCompMult(un34, un34), FragColor.w);\r
50     m34 *= colorTransform;\r
51 }\r