30 lines
529 B
Plaintext
30 lines
529 B
Plaintext
|
#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();
|
||
|
}
|
||
|
|