#version 310 es layout(local_size_x = 4, local_size_y = 1, local_size_z = 1) in; layout(binding = 0, std430) readonly buffer SSBO { float in_data[]; } _22; layout(binding = 1, std430) writeonly buffer SSBO2 { float out_data[]; } _44; shared float sShared[4]; void main() { uint ident = gl_GlobalInvocationID.x; float idata = _22.in_data[ident]; sShared[gl_LocalInvocationIndex] = idata; memoryBarrierShared(); barrier(); _44.out_data[ident] = sShared[(4u - gl_LocalInvocationIndex) - 1u]; }