1#version 450
2
3flat in ivec4 uiv4;
4in vec4 uv4;
5bool ub;
6bvec4 ub41, ub42;
7in float uf;
8flat in int ui;
9flat in uvec4 uuv4;
10flat in uint uui;
11
12out vec4 FragColor;
13
14void main()
15{
16    vec4 v;
17	float f;
18	bool b;
19	bvec4 bv4;
20	int i;
21	uint u;
22
23	// floating point
24    v = radians(uv4);
25    v += degrees(v);
26    v += (i = ui*ui, sin(v));
27    v += cos(v);
28    v += tan(v);
29    v += asin(v);
30    v += acos(v);
31
32    v += atan(v);
33    v += sinh(v);
34    v += cosh(v);
35    v += tanh(v);
36    v += asinh(v);
37    v += acosh(v);
38    v += atanh(v);
39
40    v += pow(v, v);
41    v += exp(v);
42    v += log(v);
43    v += exp2(v);
44    v += log2(v);
45    v += sqrt(v);
46    v += inversesqrt(v);
47    v += abs(v);
48    v += sign(v);
49    v += floor(v);
50
51    v += trunc(v);
52    v += round(v);
53    v += roundEven(v);
54
55    v += ceil(v);
56    v += fract(v);
57    v += mod(v, v);
58	v += mod(v, v.x);
59
60    v += modf(v, v);
61
62    v += min(v, uv4);
63    v += max(v, uv4);
64    v += clamp(v, uv4, uv4);
65    v += mix(v,v,v);
66
67    v += mix(v,v,ub41);
68    v += mix(v,v,f);
69//spv    v += intBitsToFloat(ui);
70//    v += uintBitsToFloat(uui);
71//    i += floatBitsToInt(f);
72//    u += floatBitsToUint(f);
73    v += fma(v, uv4, v);
74
75    v += step(v,v);
76    v += smoothstep(v,v,v);
77    v += step(uf,v);
78    v += smoothstep(uf,uf,v);
79    v += normalize(v);
80    v += faceforward(v, v, v);
81    v += reflect(v, v);
82    v += refract(v, v, uf);
83    v += dFdx(v);
84    v += dFdy(v);
85    v += fwidth(v);
86
87	// signed integer
88	i += abs(ui);
89	i += sign(i);
90	i += min(i, ui);
91	i += max(i, ui);
92	i += clamp(i, ui, ui);
93
94	// unsigned integer
95    u += min(u, uui);
96    u += max(u, uui);
97    u += clamp(u, uui, uui);
98
99	//// bool
100	b = isnan(uf);
101    b = isinf(f);
102	b = any(lessThan(v, uv4));
103	b = (b && any(lessThanEqual(v, uv4)));
104    b = (b && any(greaterThan(v, uv4)));
105    b = (b && any(greaterThanEqual(v, uv4)));
106    b = (b && any(equal(ub41, ub42)));
107    b = (b && any(notEqual(ub41, ub42)));
108    b = (b && any(ub41));
109    b = (b && all(ub41));
110    b = (b && any(not(ub41)));
111
112	i = ((i + ui) * i - ui) / i;
113	i = i % ui;
114	if (i == ui || i != ui && i == ui ^^ i != 2)
115	    ++i;
116
117	f = ((uf + uf) * uf - uf) / uf;
118
119	f += length(v);
120    f += distance(v, v);
121    f += dot(v, v);
122    f += dot(f, uf);
123	f += cross(v.xyz, v.xyz).x;
124
125	if (f == uf || f != uf && f != 2.0)
126	    ++f;
127
128    i &= ui;
129    i |= 0x42;
130    i ^= ui;
131    i %= 17;
132    i >>= 2;
133    i <<= ui;
134    i = ~i;
135    b = !b;
136
137    FragColor = b ? vec4(i) + vec4(f) + v : v;
138
139    mat4 m1 = mat4(1.0), m2 = mat4(0.0);
140    FragColor += (b ? m1 : m2)[1];
141}
142