yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

Jeff BolzImplement GL_EXT_long_vector (#4132)b937eae5

main
2.9 KiB128 linesraw
1#version 450 core
2#extension GL_KHR_memory_scope_semantics : enable
3#extension GL_EXT_long_vector : enable
4#extension GL_EXT_shader_explicit_arithmetic_types : enable
5#extension GL_EXT_buffer_reference : enable
6#extension GL_EXT_expect_assume : enable
7
8layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
9
10void main()
11{
12    vector<float, 5> vf;
13    float f;
14    vector<uint32_t, 5> vu;
15    uint32_t u;
16    vector<int32_t, 5> vi;
17    int32_t i;
18    vector<float16_t, 5> vf16;
19    float16_t f16;
20    vector<bool, 5> vb;
21    bool b;
22
23    vf = max(vf, vf);
24    vf = smoothstep(f, f, vf);
25    vf = smoothstep(vf, vf, vf);
26
27    vf16 = smoothstep(vf16, vf16, vf16);
28
29    // 8.1
30    vf = radians(vf);
31    vf = degrees(vf);
32    vf = sin(vf);
33    vf = cos(vf);
34    vf = tan(vf);
35    vf = asin(vf);
36    vf = acos(vf);
37    vf = atan(vf);
38    vf = atan(vf, vf);
39    vf = sinh(vf);
40    vf = cosh(vf);
41    vf = tanh(vf);
42    vf = asinh(vf);
43    vf = acosh(vf);
44    vf = atanh(vf);
45
46    // 8.2
47    vf = pow(vf, vf);
48    vf = exp(vf);
49    vf = log(vf);
50    vf = exp2(vf);
51    vf = log2(vf);
52    vf = sqrt(vf);
53    vf = inversesqrt(vf);
54
55    // 8.3
56    vf = abs(vf);
57    vf = sign(vf);
58    vf = floor(vf);
59    vf = trunc(vf);
60    vf = round(vf);
61    vf = roundEven(vf);
62    vf = ceil(vf);
63    vf = fract(vf);
64    vf = mod(vf, f);
65    vf = mod(vf, vf);
66    vf = modf(vf, vf);
67    vf = min(vf, f);
68    vf = min(vf, vf);
69    vf = max(vf, f);
70    vf = max(vf, vf);
71    vf = clamp(vf, f, f);
72    vf = clamp(vf, vf, vf);
73    vf = mix(vf, vf, f);
74    vf = mix(vf, vf, vf);
75    vf = mix(vf, vf, vb);
76    vf = step(vf, vf);
77    vf = step(f, vf);
78    vf = smoothstep(vf, vf, vf);
79    vf = smoothstep(f, f, vf);
80    vb = isnan(vf);
81    vb = isinf(vf);
82    vi = floatBitsToInt(vf);
83    vu = floatBitsToUint(vf);
84    vf = intBitsToFloat(vi);
85    vf = uintBitsToFloat(vu);
86    vf = fma(vf, vf, vf);
87    vf = frexp(vf, vi);
88    vf = ldexp(vf, vi);
89
90    // 8.5
91    f = length(vf);
92    f = distance(vf, vf);
93    f = dot(vf, vf);
94    vf = normalize(vf);
95    vf = faceforward(vf, vf, vf);
96    vf = reflect(vf, vf);
97    vf = refract(vf, vf, f);
98
99    // 8.7
100    vb = lessThan(vf, vf);
101    vb = lessThanEqual(vf, vf);
102    vb = greaterThan(vf, vf);
103    vb = greaterThanEqual(vf, vf);
104    vb = equal(vf, vf);
105    vb = notEqual(vf, vf);
106    b = any(vb);
107    b = all(vb);
108    vb = not(vb);
109
110    // 8.8
111    vu = uaddCarry(vu, vu, vu);
112    vu = usubBorrow(vu, vu, vu);
113    umulExtended(vu, vu, vu, vu);
114    imulExtended(vi, vi, vi, vi);
115    vu = bitfieldExtract(vu, i, i);
116    vu = bitfieldInsert(vu, vu, i, i);
117    vu = bitfieldReverse(vu);
118    vi = bitCount(vu);
119    vi = findLSB(vu);
120    vi = findMSB(vu);
121
122    // GL_EXT_shader_integer_mix
123    vu = mix(vu, vu, vb);
124    vb = mix(vb, vb, vb);
125
126    // GL_EXT_expect_assume
127    vu = expectEXT(vu, vu);
128}