public void SetShadowCasterMVPs(Matrix4[] mvp)
 {
     if (mvp.Length > 10) throw new ArgumentException("Can only add 10 shadowMaps.");
     // bias the mvp matrix so that it works on the texture
     Matrix4[] mvpWithBias = mvp.Select(m => m * BiasMatrix).ToArray();
     GL.UniformMatrix4(GetUniformID("depthBiasMVPs"), mvpWithBias.Length, false, mvpWithBias.SelectMany(m => m.Flatten()).ToArray());
 }