These are 3 various shaders I have created in Unreal Engine,
1- Parallax Occlusion Mapping Shader
2- Bump Offset Shader
3- Simple 2D Texture Shader
The purpose of these two techniques is to bring the environment closer to realism rather than the plain 2D texture maps with normal maps. They are for improving surface shapes beyond normal mapping and traditional ways to bring more realism into the environment, and both techniques use a heightmap to define the shape of the surface more clearly.
The shaders are complicated as they have advanced parameters in other areas such as roughness, AO, and other nods.
- Bump Offset mapping adjusts the UV coordinates of the surface based on the view angle and depending on the heightmap. It's fairly a cheaper technique compared to Parallax Occlusion Mapping, but it lacks details in glancing angles.
- On the other hand, Parallax Occlusion Mapping traces rays to recreate the surface shape. It creates better results at glancing angles - but it could also be significantly more expensive. It also has self-shadowing for self-occlusion in real-time to bring an environment much closer to realism.
To even go beyond for the optimization purpose, texture maps could be packed as RMA, ARM or custom packaging based on resource management techniques.
Texture Maps have been used from Quixel Megascans.
Material - Parallax Occlusion Mapping in the Editor