Merge pull request #2892 from greg-lunarg/mb
[platform/upstream/glslang.git] / Test / Operations.frag
1 #version 130\r
2 \r
3 uniform ivec4 uiv4;\r
4 uniform vec4 uv4;\r
5 uniform bool ub;\r
6 uniform bvec4 ub41, ub42;\r
7 uniform float uf;\r
8 uniform int ui;\r
9 \r
10 \r
11 uniform uvec4 uuv4;\r
12 uniform uint uui;\r
13 \r
14 \r
15 void main()\r
16 {\r
17     vec4 v;\r
18         float f;\r
19         bool b;\r
20         bvec4 bv4;\r
21         int i;\r
22 \r
23         uint u;\r
24 \r
25 \r
26         // floating point\r
27     v = radians(uv4);\r
28     v += degrees(v);\r
29     v += (i = ui*ui, sin(v));\r
30     v += cos(v);\r
31     v += tan(v);\r
32     v += asin(v);\r
33     v += acos(v);\r
34 \r
35     v += atan(v);\r
36     v += sinh(v);\r
37     v += cosh(v);\r
38     v += tanh(v);\r
39     v += asinh(v);\r
40     v += acosh(v);\r
41     v += atanh(v);\r
42 \r
43     v += pow(v, v);\r
44     v += exp(v);\r
45     v += log(v);\r
46     v += exp2(v);\r
47     v += log2(v);\r
48     v += sqrt(v);\r
49     v += inversesqrt(v);\r
50     v += abs(v);\r
51     v += sign(v);\r
52     v += floor(v);\r
53 \r
54 \r
55     v += trunc(v);\r
56     v += round(v);\r
57     v += roundEven(v);\r
58 \r
59 \r
60     v += ceil(v);\r
61     v += fract(v);\r
62     v += mod(v, v);\r
63         v += mod(v, v.x);\r
64 \r
65 \r
66     v += modf(v, v);\r
67 \r
68 \r
69     v += min(v, uv4);\r
70     v += max(v, uv4);\r
71     v += clamp(v, uv4, uv4);\r
72     v += mix(v,v,v);\r
73 \r
74 \r
75     v += mix(v,v,bv4);\r
76     v += intBitsToFloat(ivec4(i));\r
77     v += uintBitsToFloat(uv4);\r
78     v += fma(v,v,v);\r
79     v += frexp(v);\r
80     v += ldexp(v);\r
81     v += unpackUnorm2x16(v);\r
82     v += unpackUnorm4x8(v);\r
83     v += unpackSnorm4x8(v);\r
84 \r
85 \r
86     v += step(v,v);\r
87     v += smoothstep(v,v,v);\r
88     v += step(uf,v);\r
89     v += smoothstep(uf,uf,v);\r
90     v += normalize(v);\r
91     v += faceforward(v, v, v);\r
92     v += reflect(v, v);\r
93     v += refract(v, v, uf);\r
94     v += dFdx(v);\r
95     v += dFdy(v);\r
96     v += fwidth(v);\r
97         //noise*(v);\r
98 \r
99 \r
100         // signed integer\r
101         i += abs(ui);\r
102         i += sign(i);\r
103         i += min(i, ui);\r
104         i += max(i, ui);\r
105         i += clamp(i, ui, ui);\r
106 \r
107         floatsBitsToInt(v);\r
108         packUnorm2x16(v);\r
109         packUnorm4x8(v);\r
110         packSnorm4x8(v);\r
111 \r
112         // unsigned integer\r
113     u = abs(uui);\r
114     u += sign(u);\r
115     u += min(u, uui);\r
116     u += max(u, uui);\r
117     u += clamp(u, uui, uui);\r
118     u += floatsBitToInt(v);\r
119     u += packUnorm2x16(v);\r
120     u += packUnorm4x8(v);\r
121     i += uui & i;          // ERRORs, no int/uint conversions before 400\r
122     i += uui ^ i;\r
123     i += i | uui;\r
124 \r
125         // bool\r
126 \r
127         b = isnan(uf);\r
128     b = isinf(v.y);\r
129 \r
130         b = any(lessThan(v, uv4));\r
131         b = (b && any(lessThanEqual(v, uv4)));\r
132     b = (b && any(greaterThan(v, uv4)));\r
133     b = (b && any(greaterThanEqual(v, uv4)));\r
134     b = (b && any(equal(ub41, ub42)));\r
135     b = (b && any(notEqual(ub41, ub42)));\r
136     b = (b && any(ub41));\r
137     b = (b && all(ub41));\r
138     b = (b && any(not(ub41)));\r
139         \r
140         i = ((i + ui) * i - ui) / i;\r
141         i = i % ui;\r
142         if (i == ui || i != ui && i == ui ^^ i != 2)\r
143             ++i;\r
144         \r
145         f = ((uf + uf) * uf - uf) / uf;\r
146 \r
147         f += length(v);\r
148     f += distance(v, v);\r
149     f += dot(v, v);\r
150     f += dot(f, uf);\r
151         f += cross(v.xyz, v.xyz).x;\r
152 \r
153         if (f == uf || f != uf && f != 2.0)\r
154             ++f;\r
155 \r
156     i &= ui;\r
157     i |= 0x42;\r
158     i ^= ui;\r
159     i %= 17;\r
160     i >>= 2;\r
161     i <<= ui;\r
162     i = ~i;\r
163     b = !b;\r
164 \r
165     gl_FragColor = b ? vec4(i) + vec4(f) + v : v;\r
166 }\r