This weekend I added motion blur in my engine. Initially I didn't want to have this effect at all. Usually I find it ugly/noisy and makes me a bit sick. There is one game however where I actually like it: Syndicate (2012) !
In this game, the effect is only based on the camera motion, and only when moving very fast. So it triggers only in specific conditions, and doesn't impact gameplay much.
So that's what I did ! I went with the same idea: camera based only, no per-pixel velocity buffer computation at all. It's cheap also, I render it at half-resolution then composite it back up.
I generate mips and use textureGrad with anisotropy to make it a non-uniform blur, needing only 7 taps per pixel. Final result is really good, and cost 0.4ms (downsample, mip, effect, blit back up).
Ho yeah, forgot to mention: to keep it simple to integrate I run it after the depth of field, which avoid blur discontinuities at mesh edges. This is wrong, but looks okay in motion.
@froyok I relied on textureGrad and anisotropic level for the blur in the water reflection on the witness and was really annoyed AMD disabled anisotropic filtering at the driver level after we shipped, breaking the effect.