Color banding artifact fix
Fixed color banding artifact on landscape and especially on the water. Normal-and-height textures now store more precise height and less precise normals, but changes in lighting is not noticeable. Texture format now is:
R - normal X
G - normal Y
B - height low byte
A - height high byte
Normal Z component is reconstructed on-the-fly from the XY components by simple formula: Z = sqrt(1.0 - X*X - Y*Y) (keep in mind that normal vectors are always have the unit length, and facing up, so we don't need sign). Using sqrt() function in the fragment shader on modern hardware doesn't affect the performance.
Height now have 16 bit precision, it calculated from two bytes very simply: h = B + A / 256. Having 16-bit height precision in the fragment shader fixes many artifacts, the most noticeable of which is a color banding on the shallow water.
The banding on mountains was less noticeable (look at the green areas), but now it is fixed completely: