summaryrefslogtreecommitdiff
path: root/gfx/camera.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2026-02-28 13:30:46 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2026-02-28 13:41:37 +0000
commit6b407b2778c69314ba034e9ea265697a51f331d4 (patch)
tree7ee7d605a5b6d526fa8edef7359f4601242c4989 /gfx/camera.cpp
parentAllow specifying all three partition functions independently (diff)
downloadilt-6b407b2778c69314ba034e9ea265697a51f331d4.tar.bz2
ilt-6b407b2778c69314ba034e9ea265697a51f331d4.tar.xz
ilt-6b407b2778c69314ba034e9ea265697a51f331d4.zip
Use RelativeDistance in Camera near/fear and expose member variables
Diffstat (limited to 'gfx/camera.cpp')
-rw-r--r--gfx/camera.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/gfx/camera.cpp b/gfx/camera.cpp
index 3bb785d..db748e9 100644
--- a/gfx/camera.cpp
+++ b/gfx/camera.cpp
@@ -4,13 +4,13 @@
#include <maths.h>
#include <ray.h>
-Camera::Camera(GlobalPosition3D pos, Angle fov, Angle aspect, GlobalDistance near, GlobalDistance far) :
+Camera::Camera(GlobalPosition3D pos, Angle fov, Angle aspect, RelativeDistance near, RelativeDistance far) :
Camera {pos, fov, aspect, near, far, glm::lookAt({}, ::north, ::up),
glm::perspective(fov, aspect, static_cast<RelativeDistance>(near), static_cast<RelativeDistance>(far))}
{
}
-Camera::Camera(GlobalPosition3D pos, Angle fov, Angle aspect, GlobalDistance near, GlobalDistance far,
+Camera::Camera(GlobalPosition3D pos, Angle fov, Angle aspect, RelativeDistance near, RelativeDistance far,
const glm::mat4 & view, const glm::mat4 & projection) :
Frustum {pos, view, projection}, fov {fov}, aspect {aspect}, forward {::north}, up {::up}, near {near}, far {far}
{
@@ -58,9 +58,8 @@ Camera::extentsAtDist(const GlobalDistance dist) const
}
return {target, dist};
};
- const auto depth = -(2.F * (static_cast<float>(dist - near)) * static_cast<float>(far))
- / (static_cast<float>(dist) * (static_cast<float>(near - far)))
- - 1.F;
+ const auto depth
+ = -(2.F * (static_cast<float>(dist) - near) * far) / (static_cast<float>(dist) * (near - far)) - 1.F;
static constexpr const std::array extents {-1.F, 1.F};
static constexpr const auto cartesianExtents = extents * extents;
return cartesianExtents * [&depth, this, &clampToSeaFloor](const auto & extent) {