yum-mirror/glslang

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

Jeff BolzImplement GL_EXT_long_vector (#4132)b937eae5

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