Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
Loading...
Searching...
No Matches
foray_camera.hpp
Go to the documentation of this file.
1#pragma once
2#include "../../foray_glm.hpp"
3#include "../../util/foray_managedubo.hpp"
4#include "../foray_component.hpp"
5#include <array>
6
7namespace foray::scene::ncomp {
10 {
11 public:
13
14 inline glm::mat4& ProjectionMat() { return mProjectionMatrix; }
15
17
18 void SetProjectionMatrix(float verticalFov, float aspect, float near, float far);
19
20 virtual void UpdateUbo(CameraUboBlock& uboblock);
21 virtual void OnResized(VkExtent2D extent) override;
22
23 inline static float CalculateAspect(const VkExtent2D extent);
24
25 FORAY_PROPERTY_R(UpDirection)
26 FORAY_PROPERTY_V(VerticalFov)
27 FORAY_PROPERTY_V(Aspect)
30
31 protected:
32 float mVerticalFov = 0;
33 float mAspect = 0.f;
34 float mNear = 0;
35 float mFar = 0;
36 glm::vec3 mUpDirection = glm::vec3(0.f, 1.f, 0.f);
37 glm::mat4 mProjectionMatrix = glm::mat4(1);
38 };
39
40 inline float Camera::CalculateAspect(const VkExtent2D extent)
41 {
42 return (float)extent.width / (float)extent.height;
43 }
44} // namespace foray
Definition foray_component.hpp:57
Definition foray_component.hpp:82
Defines a camera with projection matrix.
Definition foray_camera.hpp:10
float mNear
Definition foray_camera.hpp:34
float mVerticalFov
Definition foray_camera.hpp:32
virtual void OnResized(VkExtent2D extent) override
Invoked when the primary render resolution changes.
float mFar
Definition foray_camera.hpp:35
glm::mat4 mProjectionMatrix
Definition foray_camera.hpp:37
float mAspect
Definition foray_camera.hpp:33
glm::vec3 mUpDirection
Definition foray_camera.hpp:36
glm::mat4 & ProjectionMat()
Definition foray_camera.hpp:14
void SetProjectionMatrix(float verticalFov, float aspect, float near, float far)
virtual void UpdateUbo(CameraUboBlock &uboblock)
static float CalculateAspect(const VkExtent2D extent)
Definition foray_camera.hpp:40
#define FORAY_PROPERTY_V(member)
Getter+Setter shorthand for value types.
Definition foray_basics.hpp:81
#define FORAY_PROPERTY_R(member)
Getter+Setter shorthand for reference types.
Definition foray_basics.hpp:86
Definition foray_scene_declares.hpp:10
Uniform buffer object layout for camera matrices.
Definition foray_camerauboblock.hpp:7