blob: 3b5e5123f7b3655ce5a3d6c11e593ed643d62f42 [file] [log] [blame]
John Kessenichf6eae2a2016-01-22 17:47:22 -07001#version 140
John Kessenich39374da2015-05-15 21:32:46 +00002
John Kessenich6c292d32016-02-15 20:58:50 -07003bool u_b;
4bvec2 u_b2;
5bvec3 u_b3;
6bvec4 u_b4;
John Kessenich39374da2015-05-15 21:32:46 +00007
John Kessenich6c292d32016-02-15 20:58:50 -07008int u_i;
9ivec2 u_i2;
10ivec3 u_i3;
11ivec4 u_i4;
John Kessenich39374da2015-05-15 21:32:46 +000012
John Kessenich6c292d32016-02-15 20:58:50 -070013float u_f;
14vec2 u_f2;
15vec3 u_f3;
16vec4 u_f4;
17
18bool i_b;
19bvec2 i_b2;
20bvec3 i_b3;
21bvec4 i_b4;
John Kessenich39374da2015-05-15 21:32:46 +000022
23flat in int i_i;
24flat in ivec2 i_i2;
25flat in ivec3 i_i3;
26flat in ivec4 i_i4;
27
28in float i_f;
29in vec2 i_f2;
30in vec3 i_f3;
31in vec4 i_f4;
32
33void main()
34{
35 bool b = bool(u_i) ^^ bool(u_f);
36 bvec2 b2 = bvec2(u_i, u_f);
37 bvec3 b3 = bvec3(u_i, u_f, i_i);
38 bvec4 b4 = bvec4(u_i, u_f, i_i, i_f);
39
40 int i = int(u_f) + int(b);
41 ivec2 i2 = ivec2(u_f2) + ivec2(b2);
42 ivec3 i3 = ivec3(u_f3) + ivec3(b3);
43 ivec4 i4 = ivec4(u_f4) + ivec4(b4);
44
45 float f = i;
46 vec2 f2 = i2;
47 vec3 f3 = i3;
48 vec4 f4 = i4;
49
50 f += (float(i) + float(b));
51 f2 -= vec2(i2) + vec2(b2);
52 f3 /= vec3(i3) + vec3(b3);
53 f4 += vec4(i4) + vec4(b4);
54
55 f4 += vec4(bvec4(i_i4));
56 f4 += vec4(bvec4(u_f4));
57
58 f += f - i;
59 f2 += vec2(f, i) + i2;
60 f3 += i3 + vec3(f, i, f);
61 f4 += vec4(b, i, f, i) + i4;
62
63 f2 += vec2(f, i) * i;
64 f3 += vec3(f, i, f) + i;
65 f4 += i - vec4(b, i, f, i);
66
67 i2 += ivec2(f, i);
68 i3 += ivec3(f, i, f);
69 i4 += ivec4(b, i, f, i);
70
71 if (f < i || i < f ||
72 f2 == i2 ||
73 i3 != f3)
74 f = (b ? i : f2.x) + (b2.x ? f3.x : i2.y);
75
76 gl_FragColor =
77 b ||
78 b2.x ||
79 b2.y ||
80 b3.x ||
81 b3.y ||
82 b3.z ||
83 b4.x ||
84 b4.y ||
85 b4.z ||
86 b4.w ? vec4(
87 i +
88 i2.x +
89 i2.y +
90 i3.x +
91 i3.y +
92 i3.z +
93 i4.x +
94 i4.y +
95 i4.z +
96 i4.w +
97 f +
98 f2.x +
99 f2.y +
100 f3.x +
101 f3.y +
102 f3.z +
103 f4.x +
104 f4.y +
105 f4.z +
106 f4.w) : vec4(1.0);
107
108 // with constants...
109 ivec4 cv2 = ivec4(1.0);
110 bvec4 cv5 = bvec4(cv2);
111 gl_FragColor += float(cv5);
112}