In the Deferred and Deferred+ rendering paths, Unity stores normals in the G-buffer.
By default, Unity encodes each normal in the RGB channel of a normal texture, using 8 bits each for x, y and z. The values are quantized with the loss of accuracy. This increases performance, especially on mobile GPUs, but might lead to color banding artifacts on smooth surfaces.
To improve the quality of the normals, you can enable the Accurate G-buffer normals property in the Universal Renderer asset. Follow these steps:
When you set Accurate G-buffer normals to On, Unity uses octahedron encoding. The values of normal vectors are more accurate, but the encoding and decoding operations put extra load on the GPU. The precision of the encoded normal vectors is similar to the precision of the sampled values in the Forward rendering path.
The following illustration shows the visual difference between the two options when the Camera is very close to the GameObject:
This option does not support the following: