37 static CameraData from(
const glm::mat4& view,
const glm::mat4& projection,
const glm::vec3& position) {
40 camera.projection = projection;
41 camera.position = position;
42 camera.viewProjection = projection * view;
43 camera.invProjection = glm::inverse(projection);
44 camera.invView = glm::inverse(view);
45 camera.invViewProj = glm::inverse(camera.viewProjection);
49 if (projection[3][3] == 0.0f) {
50 camera.
zNear = projection[3][2] / (projection[2][2] - 1.0f);
51 camera.
zFar = projection[3][2] / (projection[2][2] + 1.0f);
53 camera.
zNear = (projection[3][2] + 1.0f) / projection[2][2];
54 camera.
zFar = (projection[3][2] - 1.0f) / projection[2][2];