#extension GL_EXT_buffer_reference : require #extension GL_EXT_nonuniform_qualifier : require layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in; layout(set = 0, binding = 0) uniform sampler samplers[]; layout(set = 0, binding = 1) uniform texture2D textures[]; layout(set = 0, binding = 2, rgba32f) uniform image2D images[]; layout(set = 1, binding = 0) uniform parameters { uint input_id1; uint input_id2; uint output_id; } params; void main() { ivec2 coords = ivec2(gl_GlobalInvocationID.xy); float t = 0.5; vec3 color_1 = imageLoad(images[nonuniformEXT(params.input_id1)], coords).xyz; vec3 color_2 = imageLoad(images[nonuniformEXT(params.input_id2)], coords).xyz; vec3 out_color = (t * color_1) + ((1.0 - t) * color_2); imageStore(images[nonuniformEXT(params.output_id)], coords, vec4(out_color, 1.0)); }