#version 310 es | |
layout(local_size_x = 4, local_size_y = 4) in; | |
shared float foo[4][4]; | |
layout(binding = 0, std430) buffer SSBO | |
{ | |
float out_data[]; | |
}; | |
void work() | |
{ | |
foo[gl_LocalInvocationID.x][gl_LocalInvocationID.y] = float(gl_LocalInvocationIndex); | |
memoryBarrierShared(); | |
barrier(); | |
float x = 0.0; | |
x += foo[gl_LocalInvocationID.x][0]; | |
x += foo[gl_LocalInvocationID.x][1]; | |
x += foo[gl_LocalInvocationID.x][2]; | |
x += foo[gl_LocalInvocationID.x][3]; | |
out_data[gl_GlobalInvocationID.x] = x; | |
} | |
void main() | |
{ | |
work(); | |
} | |