summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/glslang/src/Test/spv.conversion.frag
blob: 1a13279763fcc73dedbf220eb57f6f1be27e86d9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#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);
}