How would you properly cancel out motion blur caused by camera movement?
For example, when you move your camera 10 units right:
an object that wasn't moving will get blurred 10 units left,
an object that was moving 10 units left will get blurred 20 units left,
an object that was moving 10 units right (same as the camera) will have no blur applied.
Now the standard approach seems to be to apply a "counter force" to the motion vectors, equivalent to the camera's movement.
So now when you move your camera 10 units right, you apply a counter force of "10 units right" to the motion vectors, and now:
an object that wasn't moving will have no blur applied,
an object that was moving 10 units left will get blurred 10 units left,
an object that was moving 10 units right (same as the camera) will get blurred 10 units right.
The problem is in the third scenario: an object moving in lockstep with the camera gets blurred in the direction of the camera movement! In practice this means that in a first person shooter, for example, the gun model gets blurred when you turn your camera. In a platformer, the player character gets blurred every time you move.
I've made some simple videos in Unity to illustrate the problem, but it's interesting to note that this is a problem common to all game engines. In Borderlands 3 (UE4) for example, you can disable camera motion blur while keeping object motion blur on - and when you do so, and get in a vehicle and drive, the vehicle gets blurred in the direction you're driving in.
What's the truly proper way to cancel out camera motion blur, I wonder?