As I understand it, compress 3 channel normal to 2 channel works as following. Instead of storing x, y and z, we store x and y. Z can then be calculated as sqrt(1 - x^2 - y^2).
My question is how can we know the sign of Z?
If the normal is geometry normal, than we can assume the Z is always facing towards camera. But what if the normal is the final normal, e.g. after-normal-mapping normal? They can point to anywhere.
I'm too lazy to go through unity shader files to find out the answer myself and it will do more damage if I come to an incorrect conclusion. I know I can get more insights here.