blob: 259db869021ff8a0c4cb55358cc838f51359fa06 [file] [log] [blame]
#version 310 es
layout(binding = 0, std140)
uniform U_block_1_ubo {
uvec4 inner[4];
} v;
layout(binding = 1, rgba32ui) uniform highp writeonly uimage2D dst_image2d;
shared uvec4 outputs[8][32];
uniform highp sampler2D src_image2d;
uvec4 tint_v4f32_to_v4u32(vec4 value) {
return uvec4(clamp(value, vec4(0.0f), vec4(4294967040.0f)));
}
void main_inner(uvec3 lid, uint tint_local_index) {
if ((tint_local_index < 256u)) {
outputs[(tint_local_index / 32u)][(tint_local_index % 32u)] = uvec4(0u);
}
barrier();
int init = int(lid.z);
{
int S = init;
while(true) {
int v_1 = S;
uvec4 v_2 = v.inner[3u];
if ((v_1 < int(v_2.x))) {
} else {
break;
}
{
uint v_3 = uint(S);
S = int((v_3 + uint(8)));
}
continue;
}
}
{
int s_group = 0;
while(true) {
int v_4 = s_group;
uvec4 v_5 = v.inner[3u];
if ((v_4 < int(v_5.z))) {
} else {
break;
}
uvec4 v_6 = v.inner[3u];
outputs[lid.z][lid.x] = tint_v4f32_to_v4u32(texelFetch(src_image2d, ivec2(uvec2(uint(int(v_6.x)))), 0));
barrier();
uvec4 result = outputs[lid.z][lid.x];
uvec4 v_7 = v.inner[3u];
uvec2 v_8 = uvec2(uint(int(v_7.x)));
uvec4 v_9 = result;
imageStore(dst_image2d, ivec2(v_8), v_9);
{
uint v_10 = uint(s_group);
s_group = int((v_10 + uint(8)));
}
continue;
}
}
}
layout(local_size_x = 32, local_size_y = 1, local_size_z = 8) in;
void main() {
main_inner(gl_LocalInvocationID, gl_LocalInvocationIndex);
}