30 lines
780 B
GLSL
30 lines
780 B
GLSL
#version 460
|
|
#extension GL_EXT_shader_explicit_arithmetic_types : enable
|
|
|
|
layout (local_size_x=64, local_size_y=1, local_size_z=1) in;
|
|
|
|
layout (set=0, binding=0, std430) readonly buffer SignificandBlock {{
|
|
{significand_type} significands[];
|
|
}};
|
|
layout (set=0, binding=1, std430) readonly buffer ExponentsBlock {{
|
|
{exponent_type} exponents[];
|
|
}};
|
|
layout (set=0, binding=2, std430) buffer ResultsBlock {{
|
|
{significand_type} results[];
|
|
}};
|
|
|
|
layout (push_constant, std430) uniform PushConstantBlock {{
|
|
uint count;
|
|
}};
|
|
|
|
void main()
|
|
{{
|
|
const uint idx = gl_LocalInvocationIndex;
|
|
if (idx < count) {{
|
|
const {significand_type} s = significands[idx];
|
|
const {exponent_type} e = exponents[idx];
|
|
const {significand_type} r = ldexp(s, e);
|
|
results[idx] = r;
|
|
}}
|
|
}}
|