28 lines
709 B
Plaintext
28 lines
709 B
Plaintext
#version 430 core
|
|
|
|
layout (local_size_x = 128, local_size_y = 1, local_size_z = 1) in;
|
|
|
|
layout (r16i, binding = 0) readonly uniform iimageBuffer ImageIn;
|
|
layout (r16i, binding = 1) writeonly uniform iimageBuffer ImageOut;
|
|
|
|
layout (location = 0) uniform int GlobalOffset;
|
|
layout (location = 1) uniform int WindowLength;
|
|
|
|
void main()
|
|
{
|
|
int x = int(gl_GlobalInvocationID.x);
|
|
|
|
int offset = GlobalOffset + x * WindowLength;
|
|
|
|
float sum = 0;
|
|
//int sum = 0;
|
|
float scale = 1.0 / float(WindowLength);
|
|
for (int i = 0; i < WindowLength; i++) {
|
|
ivec4 v = imageLoad(ImageIn, offset + i);
|
|
sum += float(abs(v.x)) * scale;
|
|
//sum = max(abs(v.x), sum);
|
|
}
|
|
|
|
imageStore(ImageOut, x, ivec4(int(sum)));
|
|
}
|