| #version 450 |
| layout(local_size_x = 1) in; |
| |
| layout(binding = 0, std430) buffer SSBO |
| { |
| float res; |
| int ires; |
| uint ures; |
| |
| vec4 f32; |
| ivec4 s32; |
| uvec4 u32; |
| |
| mat2 m2; |
| mat3 m3; |
| mat4 m4; |
| }; |
| |
| void main() |
| { |
| float tmp; |
| vec2 v2; |
| vec3 v3; |
| vec4 v4; |
| int itmp; |
| |
| res = round(f32.x); |
| res = roundEven(f32.x); |
| res = trunc(f32.x); |
| res = abs(f32.x); |
| ires = abs(s32.x); |
| res = sign(f32.x); |
| ires = sign(s32.x); |
| res = floor(f32.x); |
| res = ceil(f32.x); |
| res = fract(f32.x); |
| res = radians(f32.x); |
| res = degrees(f32.x); |
| res = sin(f32.x); |
| res = cos(f32.x); |
| res = tan(f32.x); |
| res = asin(f32.x); |
| res = acos(f32.x); |
| res = atan(f32.x); |
| res = sinh(f32.x); |
| res = cosh(f32.x); |
| res = tanh(f32.x); |
| res = asinh(f32.x); |
| res = acosh(f32.x); |
| res = atanh(f32.x); |
| res = atan(f32.x, f32.y); |
| res = pow(f32.x, f32.y); |
| res = exp(f32.x); |
| res = log(f32.x); |
| res = exp2(f32.x); |
| res = log2(f32.x); |
| res = sqrt(f32.x); |
| res = inversesqrt(f32.x); |
| |
| res = length(f32.x); |
| res = distance(f32.x, f32.y); |
| res = normalize(f32.x); |
| res = faceforward(f32.x, f32.y, f32.z); |
| res = reflect(f32.x, f32.y); |
| res = refract(f32.x, f32.y, f32.z); |
| |
| res = length(f32.xy); |
| res = distance(f32.xy, f32.zw); |
| v2 = normalize(f32.xy); |
| v2 = faceforward(f32.xy, f32.yz, f32.zw); |
| v2 = reflect(f32.xy, f32.zw); |
| v2 = refract(f32.xy, f32.yz, f32.w); |
| |
| v3 = cross(f32.xyz, f32.yzw); |
| |
| res = determinant(m2); |
| res = determinant(m3); |
| res = determinant(m4); |
| m2 = inverse(m2); |
| m3 = inverse(m3); |
| m4 = inverse(m4); |
| |
| res = modf(f32.x, tmp); |
| // ModfStruct |
| |
| res = min(f32.x, f32.y); |
| ures = min(u32.x, u32.y); |
| ires = min(s32.x, s32.y); |
| res = max(f32.x, f32.y); |
| ures = max(u32.x, u32.y); |
| ires = max(s32.x, s32.y); |
| |
| res = clamp(f32.x, f32.y, f32.z); |
| ures = clamp(u32.x, u32.y, u32.z); |
| ires = clamp(s32.x, s32.y, s32.z); |
| |
| res = mix(f32.x, f32.y, f32.z); |
| res = step(f32.x, f32.y); |
| res = smoothstep(f32.x, f32.y, f32.z); |
| res = fma(f32.x, f32.y, f32.z); |
| |
| res = frexp(f32.x, itmp); |
| // FrexpStruct |
| res = ldexp(f32.x, itmp); |
| |
| ures = packSnorm4x8(f32); |
| ures = packUnorm4x8(f32); |
| ures = packSnorm2x16(f32.xy); |
| ures = packUnorm2x16(f32.xy); |
| ures = packHalf2x16(f32.xy); |
| // packDouble2x32 |
| |
| v2 = unpackSnorm2x16(u32.x); |
| v2 = unpackUnorm2x16(u32.x); |
| v2 = unpackHalf2x16(u32.x); |
| v4 = unpackSnorm4x8(u32.x); |
| v4 = unpackUnorm4x8(u32.x); |
| // unpackDouble2x32 |
| |
| s32 = findLSB(s32); |
| s32 = findLSB(u32); |
| s32 = findMSB(s32); |
| s32 = findMSB(u32); |
| |
| // interpolateAtSample |
| // interpolateAtOffset |
| |
| // NMin, NMax, NClamp |
| } |