Deathrey:
Roughness is not something that you author once and for all. It is context-dependent.
PBR shading is correct enough. But it is only correct within a given fragment. When you are setting roughness of the surface, it represents microsurface data, that you cannot otherwise input with a normal. With landscape, one fragment can equally be 1 millimeter when surface is close, and 10 meters, when viewing vista. So when you author your roughness, it remains valid only as long as your macrosurface(geometry/normals) does not bleed into microsurface level(single fragment). Which is exactly what happens with landscape(In fact any granular surfaces) and it is also one of the dominant reasons, why sci-fi setting instantly looks gorgeous, but any natural surfaces, such as wood or rock, tend to give you white specular sheen. You need to account for all details you have averaged out while lodding down(includes both geometry normals and normal maps) and add them to roughness. There are ways to deal with it, such as normal variance from mipchain to roughness, but that imposes quite a bit of complications. The most simple and efficient is artistic approach to adjust roughness with distance(screen size? and/or angle?) by some fancy function.
TLDR: Increase roughness with distance-angle.
Hello,
My example is with roughness set to 1 as mentioned above, so there’s really no artistic control there since maximum roughness is already not enough which is why workarounds mostly involve reducing specular (which is wrong).