title: GLSL normal vector transformation
body: <p>In this glsl shader sample some vertex normal converted to the view space by transform: <code>vec4(vertNormal,1.0)).xyz</code>
  Why we need to do this kind of the transformation?</p>
  
  <pre><code>#version 430
  layout (location=0) in vec3 vertPos;
  layout (location=1) in vec3 vertNormal;
  
  void main(void)
  { 
  ...
  
  
  // convert vertex position to view space
  vec4 P = mv_matrix * vec4(vertPos,1.0); // looks good
  
  // convert normal to view space
  vec3 N = normalize((norm_matrix * vec4(vertNormal,1.0)).xyz); // why to vec4 and back to vec3?
  ...
  }
  </code></pre>