Face Displacement
2018 Face Displacement Overhaul
What has changed?
The previous approach computed a scale factor based on the camera. This value multiplied by the displacement scale would get added to the depth, when projecting the geometry onto the plane we end up putting on screen. NOTE: the scale would change with every camera change, but be constant for that projection.
The new approach no longer computes a scale based on the camera. Instead, the displacement scale is multiplied by the smallest possible value that should produce a difference in the z-buffer after projecting all the geometry onto the view plane. This value is add to the depth value. This is a constant offset relative to the projection. Additionally, face displacement also makes use of a hardware feature referred to as slope-scale biasing. This feature adds to the displacement based on the angle of a surface relative to the view vector - larger angle, greater additional displacement, smaller angle, less additional displacement. This allows face displacement to vary across the screen for a particular projection.
For more information, check out our forum post.