Now, let us try to ameliorate these renderings. A simple way is to renormalize the normal which one has taken from the normal-map.
In fact, and principally because of texture filtering, the normal vector that one obtains is no longer obliged to have a length of 1.
This could create a few problems for a vector which is supposed to have a unitary length. The normalisation therefore permits giving
the normal vector a length of 1. This renormalisation is created by:
vec3 bump = normalize( texture2D(normalMap, texCoord).xyz * 2.0 - 1.0 );
Load the bump_map_uncompressed_normalized.xml file in order to see the renormalisation effect: this gives the picture in figure 5:
Fig. 5 - Uncompressed bump map with renormalisationCompared to figure 2, the quality rendered is practically perfect. Now Let us see what will happen if one renormalizes the normal
which has come from the compressed normal-map. For that, load the bump_map_compressed_normalized.xml file into Hyperion:
Fig. 6 - Compressed bump map (DXT5) with renormalisationThe specular reflections appear but the limits of the compression blocks are always visible.