Dynamic shadows artifacts

This is more or less universal problem for shadow mapping algorithms.
A bit more details under the spoiler.

[SPOILER]Shadow mapping typically works by rendering the scene depth from point of view of the shadowcasting light.

https://i.imgur.com/otsoosf.jpg

Coordinates of scene pixels/fragments are then transformed into coordinate space of the light and their Z coordinate is compared to the depth, stored in shadowmap.

https://i.imgur.com/fklO3PY.jpg

If pixel’s Z coordinate in light space is larger than depth, stored in shadowmap, it is in shadow. Otherwise, it is not.

https://i.imgur.com/RDSCLyD.jpg

**Everything would be cool, if all screen pixels would always map to a corresponding shadow map texels. In reality they don’t and quite a few neighboring pixels would be mapped to a single shadow map texel. That means that when comparing Z coordinate of a pixel in lightspace, with a depth stored in shadowmap, there will be certain error, and some pixels would be falsely shadowed, while others would be erroneously unshadowed. This effect is commonly known as shadow acne. **

https://i.imgur.com/MDFpjiK.jpg

The most straightforward way of dealing with it, is to add a certain fixed value to the shadowmap depth, reliably pushing problematic pixels out of the shadow. While such method efficiently deals with the issue, it also reduces the shadowed area on the objects. If overdone, it cause object’s shadow to be smaller than the object, resulting in objects levitating above the surface look.
This approach is implemented in UE4 and you can tweak it with a value called Shadow Bias on each light.

https://i.imgur.com/GO2duip.jpg

However, when you add shadow filtering for smoother shadow edges, the problem worsens considerably. Now for a single pixel you would need to test it against several neighboring shadowmap texels, and when doing so, you are still using light-space Z coordinate value of the the original pixel, which greatly inflates the error.

https://i.imgur.com/aAo7eRD.jpg

To compensate, you would need to increase the bias considerably.

https://i.imgur.com/x4uJA5I.jpg

There are few ways of dealing with it.

Firstly, reducing shadow filter size would reduce the amount of biasing required. It can be done by setting quality presets.

Secondly, slope scaled depth bias can be implemented.

https://i.imgur.com/xPa0sFu.jpg

The idea is to add little amount of bias on the surfaces, that are perpendicular to the light and large amount of bias on the surfaces, which are parallel to the light.

https://i.imgur.com/8meQuXM.jpg

Slope-scaled depth bias is not implemented in UE4

The last common tool in dealing with the issue is receiver plane depth bias. In the essence, it works somewhat like slope scaled depth bias, but the amount of bias applied varies per each shadow filter sample taken instead of per shadow texel, resulting in even greater precision.

Receiver plane depth bias is implemented for PCSS shadows, but not for ordinary percentage closer shadow filtering, which is default.

Implementation of Slope scaled depth bias can be done by using a special shader for shadow depth rendering, or by setting slope bias in rasterizer state, the latter one being more tricky, but preferable. Both would require engine code adjustments and tug along certain complications.

Receiver plane depth bias can be implemented in shader files alone, without need to build the engine from source.

The essence of this thread is request to have slope-scaled depth bias and/or receiver plane depth bias as a part of stock UE4.[/SPOILER]