30 lines
1.1 KiB
Plaintext
30 lines
1.1 KiB
Plaintext
#version 450
|
|
|
|
layout(set = 0, binding = 0) buffer Pos {
|
|
float values[ ];
|
|
};
|
|
|
|
layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
|
|
|
|
void main()
|
|
{
|
|
// PRACTICE (how to get 6144 to the shader without hard coding?)
|
|
const uint row_stride = 6144 * 4;
|
|
|
|
uint pixel_x = gl_GlobalInvocationID.x;
|
|
uint pixel_y = gl_GlobalInvocationID.y;
|
|
|
|
// const int iXCoord = int(gl_WorkGroupID.x * 8 + gl_LocalInvocationID.x);
|
|
|
|
// original colors
|
|
float fOriginalRed = values[ pixel_x * 4 + pixel_y * row_stride];
|
|
float fOriginalGreen = values[ pixel_x * 4 + pixel_y * row_stride + 1];
|
|
float fOriginalBlue = values[ pixel_x * 4 + pixel_y * row_stride + 2];
|
|
float fOriginalAlpha = values[ pixel_x * 4 + pixel_y * row_stride + 3];
|
|
|
|
// swap red & green channels (and unnormalize)
|
|
values[pixel_x * 4 + pixel_y * row_stride] = clamp(fOriginalRed * 255, 0, 255);
|
|
values[pixel_x * 4 + pixel_y * row_stride + 1] = clamp(fOriginalGreen * 255, 0, 255);
|
|
values[pixel_x * 4 + pixel_y * row_stride + 2] = clamp(fOriginalBlue * 255, 0, 255);
|
|
values[pixel_x * 4 + pixel_y * row_stride + 3] = clamp(255, 0, 255);
|
|
} |