Perturbed normals are encoded in normal map pixels as RGB vectors. To obtain a perturbed normal conversion from RGB to unit vector is required. The problem appears when one (or more) of RGB channel has a value of 128 which should exactly be 0 in converted vector. But in this case, converted vector not 0 but close to 0, more specifically: 0.003921 or -0.003921.
Below is the normal map baked in Blender which has this specific cases:
For example, pixel value of (128, 128, 255) should be converted to (0,0,1) but it it has values of (0.003921, -0.003921, 0.999985).
Perturbed normals are encoded in normal map pixels as RGB vectors. To obtain a perturbed normal conversion from RGB to unit vector is required. The problem appears when one (or more) of RGB channel has a value of 128 which should exactly be 0 in converted vector. But in this case, converted vector not 0 but close to 0, more specifically: 0.003921 or -0.003921.
Below is the normal map baked in Blender which has this specific cases:![simple5_DX_values](https://user-images.githubusercontent.com/20316762/88567639-10fd4080-d038-11ea-8c48-0206ef411935.png)
For example, pixel value of (128, 128, 255) should be converted to (0,0,1) but it it has values of (0.003921, -0.003921, 0.999985).