   normal matrices in current GL versions
  Given that gl_**Matrix special variables are no longer available in GLSL shaders, we have to computed our own ModelView matrices in application code, passing them into shaders via Uniform variables. This is all good. I'm just interested to hear how other people are creating their Normal matrices.  Obviously doing this in the shader transpose(inverse(mat3(modelview)))  is slow and not feasible.  So this means it too must be passed in via a uniform.  What seems to be the standard for creating these Normal matrices?  Do people incrementally update their Normal Matrices simultaneously with the ModelView matrices ?  or do they calculate them from scratch before render time?  Or is there something I'm overlooking?To me, it seems most efficient (although a hassle) to create the Normal and ModelView matrices together - as you rotate the modelview matrix, you rotate the Normal matrix the opposite direciton - but am I doing it wrong?(the transpose can be taken before passing to the shader, alternatively it can be worked on as a row-major matrix).thanks for the inputrewolf   
  This may surprise you, but you probably don't need a "normal matrix".As long as you don't use an uneven glScale, then you can just go ahead and use the modelview matrix.This is what I do//normal.w must be 0.0 to kill off translationvec3 resultNormal;resultNormal = vec3(ModelviewMatrix * vec4(InNormal, 0.0));;  :D thanks for pointing that out!pfft who uses non-uniform scaling anyways :P   ;  Just realised why it's okay. Rotation matrices are orthogonal => inverse == transpose.  And a uniform scaling won't change that, but a non-uniform scaling will remove the orthonormality of the columns => no longer an orthogonal matrix.MATHS IS GOOD thanks again   