11 glm::mat4 projectionMatrix;
13 glm::mat4 inverseProjectionMatrix;
14 glm::mat4 inverseViewMatrix;
16 float alignmentBufferForPreviousVec3;
17 glm::vec2 framebufferResolution;
18 glm::vec2 renderResolution;
19 glm::vec2 renderScale;
41 static void SetupRenderPasses();
45 void CaptureMousePick(
int x,
int y);
47 uint64_t GetRenderOutput();
50 void OffsetRotation(
float pitch,
float yaw);
51 void OffsetPosition(glm::vec3 offset);
52 void SetPosition(glm::vec3 newPosition);
53 void ResizeViewport(uint32_t width, uint32_t height);
54 void UpdateProjectionMatrix();
55 void UpdateViewMatrix();
56 glm::mat4& GetProjectionMatrix();
57 glm::mat4& GetViewMatrix();
61 glm::vec3 GetPosition()
const;
62 glm::vec3 GetForward()
const;
63 glm::vec3 GetRight()
const;
64 glm::vec3 GetUp()
const;
66 bool isGridEnabled =
true;
67 bool isBoundingSphereGizmoEnabled =
false;
68 bool isBoundingBoxGizmoEnabled =
false;
69 bool isColliderGizmoEnabled =
true;
70 bool captureThisFrame =
false;
78 std::array<Grindstone::GraphicsAPI::Buffer*, 3> globalUniformBufferObject;
79 std::array<Grindstone::GraphicsAPI::DescriptorSet*, 3> globalDescriptorSet;
83 std::array<GraphicsAPI::Image*, 3> renderTarget;
84 std::array<GraphicsAPI::Image*, 3> depthTarget;
87 std::array<GraphicsAPI::DescriptorSet*, 3> descriptorSet;
96 > gizmoRenderCallbacks;
99 std::array<GraphicsAPI::Image*, 3> mousePickRenderTarget{};
100 std::array<GraphicsAPI::Framebuffer*, 3> mousePickFramebuffer{};
101 std::array<GraphicsAPI::DescriptorSet*, 3> mousePickDescriptorSet{};
102 std::array<GraphicsAPI::Buffer*, 3> mousePickMatrixBuffer{};
103 std::array<GraphicsAPI::Buffer*, 3> mousePickResponseBuffer{};
106 glm::mat4 projection;
108 glm::vec3 position = glm::vec3();
109 glm::vec3 eulerAngles = glm::vec3();
110 glm::quat rotation = glm::quat();
111 uint32_t width = 800;
112 uint32_t height = 600;
113 float fieldOfView = glm::radians(80.0f);
114 float nearPlaneDistance = 0.1f;
115 float farPlaneDistance = 150.f;