Where there is light, there should be shadows, but sadly this does not occur as naturally in games as it does in the real world. In modern games, there are usually at least two sources of realtime shadows: ambient occlusion, which tries to account for overall reductions in illumination usually based on close-range surroundings, and direct shadowing.
Ambient occlusion, when it was introduced in Crysis, was a significantly expensive effect all by itself. These days, high-quality screen-space ambient occlusion is no longer a huge performance drain. However, new techniques such as voxel ambient occlusion or occlusion based on distance fields, which set out to fix issues inherent in screen space methods, once again come with a significant performance impact at this point in time.
With direct shadows, contact hardening is a difficult effect to replicate in games. This describes the fact that shadow outlines appear sharper and more defined close to the shadow caster, and progressively softer the further the point where the shadow is cast moves away from it. There are a number of different implementations of this behaviour around (e.g., PCSS), but it’s never a cheap effect to replicate.