lt_viewmat.inv_lookat(lpos, ltarg, gph::Vec3(0, 1, 0));
shadow_mat = lt_projmat * lt_viewmat * viewmat.inverse();
//shadow_mat = viewmat.inverse() * lt_viewmat * lt_projmat;
lt_viewmat.inv_lookat(lpos, ltarg, gph::Vec3(0, 1, 0));
shadow_mat = lt_projmat * lt_viewmat * viewmat.inverse();
//shadow_mat = viewmat.inverse() * lt_viewmat * lt_projmat;