Intel's driver doesn't like type casting, so the filter wouldn't compile on my laptop with Intel graphics.
Now it should work.
I think that some Linux drivers (especially from intel) are even pickier. So who knows if it works there without additional modifications. I don't have linux outside of a VM any more, so I can't test it...
I'm updating the original post with the updated version too. There shouldn't be any reason for the older one to exist.
This version is slightly different. It's slightly better organized (the stuff I added...), the defaults are more sensible (not as much saturation boost, not quite as sharp), and of course my laptop likes the fragment shader now.