Material optimization

The biggest problem with landscape is having too many layers, not textures. While there are limits to the number of texture samplers you can have on landscape, having too many layers will reach that limit. But since most landscape textures will be loaded at once, using shared samplers and controlling your layer count to no more than 3-4 layers will indeed curb the rendering costs. Shared samplers will group all the shared textures into one gigantic texture array and call them at once, so again, at the cost of memory, you can save draw calls and computation. And with DX 12, there’s no need to worry so much about draw calls anyways. The rendering costs of handling blending physical and surface details between 4 different layers will kill you before anything else does.

I suggest keeping normals as standard uncompressed normal maps: this might cost two extra textures memory wise, but you’re getting the quality of a texture 4 times as large doing so. You can pack all of your roughness channels into one 3-channel texture, your height maps into one 3-channel texture, and standard 3-channel textures for colorful texture maps (or use the basic coloring method with just one channel for whatever monochromatic surfaces you might have). So for 4 independent textures, that translates to 4 normal maps, 4 diffuse textures, and 3 channel-packed maps to store roughness and height information for a combined total of 11 textures. And of course, you can always exchange texture data with detail texture maps, masks, add some detail normals as well, take away certain maps you might not need, whatever you need to do. And if you do go the route of using shared samplers, you will have the ability to boot up to 128 textures at once, so, I don’t really see textures as being a problem unless you start using ridiculous 2K and 4K sizes. Some characters on the PS4 had 6 @ 2K texture maps to render, though, so if you’re targeting mid to low-range PCs, 2K textures might not even be such a huge deal.