#version 430

layout(binding = 0, rgba8) writeonly uniform image2D image_data;

uniform float roll;

layout (local_size_x = 16, local_size_y = 16, local_size_z = 1) in;

// source/ details: http://wili.cc/blog/opengl-cs.html
void main()
{
    ivec2 storePos = ivec2(gl_GlobalInvocationID.xy);

    float localCoef = length(vec2(ivec2(gl_LocalInvocationID.xy)-8)/8.0);
    float globalCoef = sin(float(gl_WorkGroupID.x+gl_WorkGroupID.y)*0.1 + roll)*0.5;
    imageStore(image_data, storePos, vec4(vec2(1.0-globalCoef*localCoef),1.0,1.0));
}
