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
|
#version 450 core
#extension GL_KHR_memory_scope_semantics : enable
#extension GL_EXT_long_vector : enable
#extension GL_EXT_shader_explicit_arithmetic_types : enable
#extension GL_EXT_buffer_reference : enable
#extension GL_EXT_expect_assume : enable
layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
void main()
{
vector<float64_t, 5> vf;
float64_t f;
vector<uint64_t, 5> vu;
vector<int64_t, 5> vi;
vector<int32_t, 5> vi32;
vector<bool, 5> vb;
bool b;
// 8.1
// 8.2
vf = sqrt(vf);
vf = inversesqrt(vf);
// 8.3
vf = abs(vf);
vf = sign(vf);
vf = floor(vf);
vf = trunc(vf);
vf = round(vf);
vf = roundEven(vf);
vf = ceil(vf);
vf = fract(vf);
vf = mod(vf, f);
vf = mod(vf, vf);
vf = modf(vf, vf);
vf = min(vf, f);
vf = min(vf, vf);
vf = max(vf, f);
vf = max(vf, vf);
vf = clamp(vf, f, f);
vf = clamp(vf, vf, vf);
vf = mix(vf, vf, f);
vf = mix(vf, vf, vf);
vf = mix(vf, vf, vb);
vf = step(vf, vf);
vf = step(f, vf);
vf = smoothstep(vf, vf, vf);
vf = smoothstep(f, f, vf);
vb = isnan(vf);
vb = isinf(vf);
vi = doubleBitsToInt64(vf);
vu = doubleBitsToUint64(vf);
vf = int64BitsToDouble(vi);
vf = uint64BitsToDouble(vu);
vf = fma(vf, vf, vf);
vf = frexp(vf, vi32);
vf = ldexp(vf, vi32);
// 8.5
f = length(vf);
f = distance(vf, vf);
f = dot(vf, vf);
vf = normalize(vf);
vf = faceforward(vf, vf, vf);
vf = reflect(vf, vf);
vf = refract(vf, vf, f);
// 8.7
vb = lessThan(vf, vf);
vb = lessThanEqual(vf, vf);
vb = greaterThan(vf, vf);
vb = greaterThanEqual(vf, vf);
vb = equal(vf, vf);
vb = notEqual(vf, vf);
}
|