X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcamera.cpp;h=8804d115b36574cdab2618fb441f0d1a50958696;hb=4d0ef1687987a0801469c7262f81efd36636605a;hp=fbf10bca2e1391a9f88522c0ba5ab9fe040475f1;hpb=ac8765b510707d77cac9620778f40ddf3a4ad2a2;p=blank.git diff --git a/src/camera.cpp b/src/camera.cpp index fbf10bc..8804d11 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -52,6 +52,15 @@ void Camera::Clip(float near, float far) { UpdateProjection(); } +Ray Camera::Aim() const { + const glm::mat4 inv_vp(glm::inverse(vp)); + glm::vec4 from = inv_vp * glm::vec4(0.0f, 0.0f, -1.0f, 1.0f); + from /= from.w; + glm::vec4 to = inv_vp * glm::vec4(0.0f, 0.0f, 1.0f, 1.0f); + to /= to.w; + return Ray{ glm::vec3(from), glm::normalize(glm::vec3(to - from)) }; +} + void Camera::Update(int dt) { FPSController::Update(dt);