FPPS4/shaders/FLIP_LINE_A8R8G8B8_SRGB.comp

49 lines
914 B
Plaintext

#version 450
layout (local_size_x = 16, local_size_y = 16) in;
layout (binding = 0) readonly buffer Host
{
uint data[];
} host;
layout (binding = 1, rgba8) writeonly uniform image2D resultImage;
layout (push_constant) uniform constants
{
vec4 gamma;
ivec2 Width;
} cfg;
void main()
{
ivec2 pixelCoords = ivec2(gl_GlobalInvocationID.xy);
int offset = (pixelCoords.y*cfg.Width.y)+pixelCoords.x;
uint pack=host.data[offset];
//const uvec4 shift = uvec4(16,8,0,24);
//const uvec4 mask4 = uvec4(255,255,255,255);
//uvec4 pix_int=(uvec4(pack,pack,pack,pack) >> shift) & mask4;
//0,8,16,24
//R,G, B,A
//16,8,0,24
//BGRA
//vec4 pixel = vec4(pix_int) / mask4;
vec4 pixel=unpackUnorm4x8(pack);
pixel=pixel.bgra;
pixel = pow(pixel, cfg.gamma);
imageStore(resultImage, pixelCoords, pixel);
}