If I understod correctly;
Mat4 rotationMatrix(Vec4(perpVec1, 0.0f), Vec4(perpVec2, 0.0f), Vec4(lightDir, 0.0f), Vec4(0.0f, 0.0f, 0.0f, 1.0f)); // again, column major
Vec4 corners[8] = { Vec4(-1.0f, -1.0f, 1.0f, 1.0f), Vec4(-1.0f, -1.0f, -1.0f, 1.0f), Vec4(-1.0f, 1.0f, 1.0f, 1.0f), Vec4(-1.0f, 1.0f, -1.0f, 1.0f),
Vec4(1.0f, -1.0f, 1.0f, 1.0f), Vec4(1.0f, -1.0f, -1.0f, 1.0f), Vec4(1.0f, 1.0f, 1.0f, 1.0f), Vec4(1.0f, 1.0f, -1.0f, 1.0f) };
const Mat4 inverseVPMatrix = glm::inverse(viewProjectionMatrix); // the cameras view-projection matrix
for (uint32_t i = 0; i < 8; i++)
{
corners[i] = corners[i] * inverseVPMatrix;
corners[i] /= corners[i].w;
}
for (uint32_t i = 0; i < 8; i++)
corners[i] = corners[i] * rotationMatrix;
Looking at the corners after multiplying with the inverse VPMatrix and dividing by w, the values all seem to be in the range of [-2.0, 2.0]. which can't be right?