#version 450

layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout (set = 1, binding = 0, rgba8) uniform writeonly image2D outImage;
layout (set = 2, binding = 0) uniform UBO
{
	float time;
} ubo;

void main()
{
    vec2 size = imageSize(outImage);
	vec2 coord = gl_GlobalInvocationID.xy;
    vec2 uv = coord / size;

    vec3 col = 0.5 + 0.5*cos(ubo.time + uv.xyx + vec3(0, 2, 4));

    imageStore(outImage, ivec2(coord), vec4(col, 1.0));
}