12 float dx = (2.0f * x) / width - 1.0f;
13 float dy = 1.0f - (2.0f * y) / height;
16 glm::mat4 mv = glm::inverse(projMat*viewMat);
18 glm::vec4 near = glm::vec4(dx, dy, -1, 1.0);
19 glm::vec4 far = glm::vec4(dx, dy, 1, 1.0);
21 glm::vec4 near_world = mv * near;
22 glm::vec4 far_world = mv * far;
24 if (near_world.w != 0.0)
26 near_world /= near_world.w;
29 if (far_world.w != 0.0)
31 far_world /= far_world.w;
35 ray.
origin =
Vec3f(near_world.x, near_world.y, near_world.z);
36 ray.
direction =
Vec3f(far_world.x - near_world.x, far_world.y - near_world.y, far_world.z - near_world.z).normalize();