Is there an efficient way to achieve color blending in compute shaders? What I want is a function like imageStore, but instead of replacing a value - applying a blend operation to it, e.g. addition. It is not possible to do something like this with atomics due to them only operating on 32bit integers.
If there is no such function, why have noone made an extension for this yet? It seems rather useful for compute shader lighting, and some post-processing effects.
If there is no such function, why have noone made an extension for this yet?

Just because something might be &quot;useful&quot; doesn't mean it would be possible or cheap.
GPU hardware achieves blending by using an entirely separate piece of hardware, one that preserves the order of the fragment values generated by unordered fragment shader executions. These execution units, commonly called &quot;ROPs&quot;, are distinct hardware from fragment shaders.
CS's can't just do that. They have a fundamentally unordered execution model, and what you're talking about requires at least some ordering between them. That's not simple or cheap to implement, even if it's possible at all.
The closest you can get to that is fragment_shader_interlock, which can force parts of FS execution to be ordered by primitive order and to execute critical sections that prevent overlapping executions. But as the name suggests, that's a feature of fragment shaders (and not one universally supported), not a feature of compute shaders.
Also, it doesn't really make sense to use a compute shader for post-processing effects, since FS's are perfectly capable of dealing with that sort of thing, and actually have access to ROPs.