1#ifndef TATOOINE_RENDERING_ORTHOGRAPHIC_CAMERA_H
2#define TATOOINE_RENDERING_ORTHOGRAPHIC_CAMERA_H
13template <arithmetic Real>
31 vec3 const& up, Real
const left,
32 Real
const right, Real
const bottom,
33 Real
const top, Real
const near, Real
const far,
48 Real
const left, Real
const right,
49 Real
const bottom, Real
const top,
50 Real
const near, Real
const far,
51 std::size_t
const res_x,
52 std::size_t
const res_y)
56 Vec4<std::size_t>{0, 0, res_x, res_y},
64 Real
const left, Real
const right,
65 Real
const bottom, Real
const top,
66 Real
const near, Real
const far,
79 Real
const left, Real
const right,
80 Real
const bottom, Real
const top,
81 Real
const near, Real
const far,
82 std::size_t
const res_x,
83 std::size_t
const res_y)
87 Vec4<std::size_t>{0, 0, res_x, res_y},
95 vec3 const& up, Real
const height,
96 Real
const near, Real
const far,
101 -height / 2 * Real(viewport[2]) * Real(viewport[3]),
102 height / 2 * Real(viewport[2]) * Real(viewport[3]),
114 vec3 const& up, Real
const height,
115 Real
const near, Real
const far,
116 std::size_t
const res_x,
117 std::size_t
const res_y)
121 -height / 2 * Real(res_x) / Real(res_y),
122 height / 2 * Real(res_x) / Real(res_y),
135 Real
const near, Real
const far,
138 near, far, viewport} {}
143 Real
const near, Real
const far, std::size_t
const res_x,
144 std::size_t
const res_y)
151 Vec4<std::size_t>{0, 0, res_x, res_y}} {}
158 Real
const bottom, Real
const top,
159 Real
const near, Real
const far) {
160 set_projection_matrix(
165 Real
const far = -100) {
166 set_projection_matrix(-height / 2 * this->aspect_ratio(),
167 height / 2 * this->aspect_ratio(), -height / 2, height / 2,
171 auto width()
const {
return 2 / this->projection_matrix()(0, 0); }
172 auto height()
const {
return 2 / this->projection_matrix()(1, 1); }
173 auto depth()
const {
return -2 / this->projection_matrix()(2, 2); }
auto constexpr orthographic_matrix(Real const left, Real const right, Real const bottom, Real const top, Real const near, Real const far)
Definition: matrices.h:69
Interface for camera implementations.
Definition: camera.h:19
auto constexpr eye() const -> auto
Definition: camera.h:78
auto constexpr viewport() const -> auto const &
Returns number of pixels of plane in x-direction.
Definition: camera.h:63
auto set_projection_matrix(mat4 const &projection_matrix) -> void
Definition: camera.h:280
Definition: orthographic_camera.h:14
constexpr orthographic_camera(vec3 const &eye, vec3 const &lookat, Real const left, Real const right, Real const bottom, Real const top, Real const near, Real const far, std::size_t const res_x, std::size_t const res_y)
Definition: orthographic_camera.h:78
~orthographic_camera()=default
constexpr orthographic_camera(vec3 const &eye, vec3 const &lookat, vec3 const &up, Real const left, Real const right, Real const bottom, Real const top, Real const near, Real const far, Vec4< std::size_t > const &viewport)
Definition: orthographic_camera.h:30
constexpr orthographic_camera(vec3 const &eye, vec3 const &lookat, vec3 const &up, Real const height, Real const near, Real const far, Vec4< std::size_t > const &viewport)
Definition: orthographic_camera.h:94
auto constexpr viewport() const -> auto const &
Returns number of pixels of plane in x-direction.
Definition: camera.h:63
constexpr orthographic_camera(vec3 const &eye, vec3 const &lookat, vec3 const &up, Real const left, Real const right, Real const bottom, Real const top, Real const near, Real const far, std::size_t const res_x, std::size_t const res_y)
Definition: orthographic_camera.h:45
orthographic_camera(vec3 const &eye, vec3 const &lookat, Real const height, Real const near, Real const far, Vec4< std::size_t > const &viewport)
Definition: orthographic_camera.h:134
auto width() const
Definition: orthographic_camera.h:171
orthographic_camera(vec3 const &eye, vec3 const &lookat, Real const height, Real const near, Real const far, std::size_t const res_x, std::size_t const res_y)
Definition: orthographic_camera.h:142
auto constexpr set_projection_matrix(Real const left, Real const right, Real const bottom, Real const top, Real const near, Real const far)
Definition: orthographic_camera.h:157
auto height() const
Definition: orthographic_camera.h:172
auto depth() const
Definition: orthographic_camera.h:173
Real real_type
Definition: orthographic_camera.h:16
constexpr orthographic_camera(vec3 const &eye, vec3 const &lookat, vec3 const &up, Real const height, Real const near, Real const far, std::size_t const res_x, std::size_t const res_y)
Definition: orthographic_camera.h:113
auto constexpr set_projection_matrix(Real const height, Real const near=100, Real const far=-100)
Definition: orthographic_camera.h:164
constexpr orthographic_camera(vec3 const &eye, vec3 const &lookat, Real const left, Real const right, Real const bottom, Real const top, Real const near, Real const far, Vec4< std::size_t > const &viewport)
Definition: orthographic_camera.h:63