#version 440 core layout(std430) buffer; layout(set=0, binding=0) writeonly buffer pointoffsetSum{ highp uvec4 data[]; } uPointoffsetSum; layout(set=0, binding=1) readonly buffer pointoffset{ highp uvec4 data[]; } uPointoffset; layout(set=0, binding=2) uniform constBuffer { ivec4 point; // point size } uConstant; layout (constant_id = 3) const int UNIT = 128; layout (constant_id = 4) const int LOCAL_SIZE = 1; layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; void main() { int tId = int(gl_LocalInvocationID.x); int size = (uConstant.point.x + 3) / 4; int curOffset = 0; uvec4 threadBuffer[UNIT]; uint sum = 0; for (int i=0; i