зеркало из https://github.com/stride3d/xkslang.git
113 строки
2.0 KiB
GLSL
113 строки
2.0 KiB
GLSL
#version 140
|
|
|
|
bool u_b;
|
|
bvec2 u_b2;
|
|
bvec3 u_b3;
|
|
bvec4 u_b4;
|
|
|
|
int u_i;
|
|
ivec2 u_i2;
|
|
ivec3 u_i3;
|
|
ivec4 u_i4;
|
|
|
|
float u_f;
|
|
vec2 u_f2;
|
|
vec3 u_f3;
|
|
vec4 u_f4;
|
|
|
|
bool i_b;
|
|
bvec2 i_b2;
|
|
bvec3 i_b3;
|
|
bvec4 i_b4;
|
|
|
|
flat in int i_i;
|
|
flat in ivec2 i_i2;
|
|
flat in ivec3 i_i3;
|
|
flat in ivec4 i_i4;
|
|
|
|
in float i_f;
|
|
in vec2 i_f2;
|
|
in vec3 i_f3;
|
|
in vec4 i_f4;
|
|
|
|
void main()
|
|
{
|
|
bool b = bool(u_i) ^^ bool(u_f);
|
|
bvec2 b2 = bvec2(u_i, u_f);
|
|
bvec3 b3 = bvec3(u_i, u_f, i_i);
|
|
bvec4 b4 = bvec4(u_i, u_f, i_i, i_f);
|
|
|
|
int i = int(u_f) + int(b);
|
|
ivec2 i2 = ivec2(u_f2) + ivec2(b2);
|
|
ivec3 i3 = ivec3(u_f3) + ivec3(b3);
|
|
ivec4 i4 = ivec4(u_f4) + ivec4(b4);
|
|
|
|
float f = i;
|
|
vec2 f2 = i2;
|
|
vec3 f3 = i3;
|
|
vec4 f4 = i4;
|
|
|
|
f += (float(i) + float(b));
|
|
f2 -= vec2(i2) + vec2(b2);
|
|
f3 /= vec3(i3) + vec3(b3);
|
|
f4 += vec4(i4) + vec4(b4);
|
|
|
|
f4 += vec4(bvec4(i_i4));
|
|
f4 += vec4(bvec4(u_f4));
|
|
|
|
f += f - i;
|
|
f2 += vec2(f, i) + i2;
|
|
f3 += i3 + vec3(f, i, f);
|
|
f4 += vec4(b, i, f, i) + i4;
|
|
|
|
f2 += vec2(f, i) * i;
|
|
f3 += vec3(f, i, f) + i;
|
|
f4 += i - vec4(b, i, f, i);
|
|
|
|
i2 += ivec2(f, i);
|
|
i3 += ivec3(f, i, f);
|
|
i4 += ivec4(b, i, f, i);
|
|
|
|
if (f < i || i < f ||
|
|
f2 == i2 ||
|
|
i3 != f3)
|
|
f = (b ? i : f2.x) + (b2.x ? f3.x : i2.y);
|
|
|
|
gl_FragColor =
|
|
b ||
|
|
b2.x ||
|
|
b2.y ||
|
|
b3.x ||
|
|
b3.y ||
|
|
b3.z ||
|
|
b4.x ||
|
|
b4.y ||
|
|
b4.z ||
|
|
b4.w ? vec4(
|
|
i +
|
|
i2.x +
|
|
i2.y +
|
|
i3.x +
|
|
i3.y +
|
|
i3.z +
|
|
i4.x +
|
|
i4.y +
|
|
i4.z +
|
|
i4.w +
|
|
f +
|
|
f2.x +
|
|
f2.y +
|
|
f3.x +
|
|
f3.y +
|
|
f3.z +
|
|
f4.x +
|
|
f4.y +
|
|
f4.z +
|
|
f4.w) : vec4(1.0);
|
|
|
|
// with constants...
|
|
ivec4 cv2 = ivec4(1.0);
|
|
bvec4 cv5 = bvec4(cv2);
|
|
gl_FragColor += float(cv5);
|
|
}
|